Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // POINT LIGHT DIFFUSE //
- // THIS //
- // DIFFUSE
- //I = kd * I * (l dot n)
- float plX = plLoc[s][0] * radius;
- float plY = plLoc[s][1] * radius;
- float plZ = plLoc[s][2] * radius;
- //magnitudes, for normalizing stuff
- float lightMag = sqrt(((plX - x)*(plX - x)) + ((plY - y)*(plY - y)) + ((plZ - z)*(plZ - z)));
- float normMag = sqrt((x*x) + (y*y) + (z*z));
- //dot product...
- float lightVec = (plX - x) / lightMag;
- float normVec = (x) / normMag;
- double LdotN = (lightVec * normVec);
- lightVec = (plY - y) / lightMag;
- normVec = (y) / normMag;
- LdotN += (lightVec * normVec);
- lightVec = (plZ - z) / lightMag;
- normVec = (z) / normMag;
- LdotN += (lightVec * normVec);
- //(end dot product)
- if(LdotN > 0) {
- colors[q] += (LdotN * kd[q] * plColor[s][q]); //update color
- }
- // BECOMES THIS //
- // DIFFUSE
- //I = kd * I * (l dot n)
- float3 lightVec = float3(plLoc[s][0] * radius, plLoc[s][1] * radius, plLoc[s][2] * radius);
- lightVec = normalize(lightVec);
- float3 normal = normalize(float3(x, y, z));
- //dot product...
- float LdotN = dot(lightVec, normal);
- colors[q] += (LdotN * kd[q] * plColor[s][q]); //update color
Advertisement
Add Comment
Please, Sign In to add comment