Ember

revinsgirgr

Feb 10th, 2014
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.83 KB | None | 0 0
  1. // POINT LIGHT DIFFUSE //
  2.  
  3. // THIS //
  4.  
  5.                         // DIFFUSE
  6.                         //I = kd * I * (l dot n)
  7.  
  8.                         float plX = plLoc[s][0] * radius;
  9.                         float plY = plLoc[s][1] * radius;
  10.                         float plZ = plLoc[s][2] * radius;
  11.  
  12.                         //magnitudes, for normalizing stuff
  13.                         float lightMag = sqrt(((plX - x)*(plX - x)) + ((plY - y)*(plY - y)) + ((plZ - z)*(plZ - z)));
  14.                         float normMag = sqrt((x*x) + (y*y) + (z*z));
  15.  
  16.                         //dot product...
  17.                         float lightVec = (plX - x) / lightMag;
  18.                         float normVec = (x) / normMag;
  19.                         double LdotN = (lightVec * normVec);
  20.  
  21.                         lightVec = (plY - y) / lightMag;
  22.                         normVec = (y) / normMag;
  23.                         LdotN += (lightVec * normVec);
  24.  
  25.                         lightVec = (plZ - z) / lightMag;
  26.                         normVec = (z) / normMag;
  27.                         LdotN += (lightVec * normVec);
  28.                         //(end dot product)
  29.  
  30.                         if(LdotN > 0) {
  31.                             colors[q] += (LdotN * kd[q] * plColor[s][q]);  //update color
  32.                         }
  33.  
  34. // BECOMES THIS //
  35.  
  36.                         // DIFFUSE
  37.                         //I = kd * I * (l dot n)
  38.  
  39.                         float3 lightVec = float3(plLoc[s][0] * radius, plLoc[s][1] * radius, plLoc[s][2] * radius);
  40.                         lightVec = normalize(lightVec);
  41.                         float3 normal = normalize(float3(x, y, z));
  42.                         //dot product...
  43.                         float LdotN = dot(lightVec, normal);
  44.  
  45.                         colors[q] += (LdotN * kd[q] * plColor[s][q]);  //update color
Advertisement
Add Comment
Please, Sign In to add comment