HARD SHADOWS
UMBRA - Fully Shadowed Region.
When the light is Point Light or Directional Light Source then we have only umbra
PENUMBRA - Partially Shadowed Region
When the light is Area Light Source then we have both umbra and penumbra
Definition OF SHADOWS: comparative darkness given by shelter from direct light; patch of shade projected by a body intercepting light
PSEUDO CODE:
for each light source
if face is a back face with respect to light source i.e Check N.L < 0
inShadow = TRUE;
else
inShadow = FALSE;
p = p + εL // L is the light ray and ε is epsilon value and is near to
zero so that image look clear otherwise there will be black spots on the
image
shadowRay = from intersection point p to light source;
for each object in the scene
inShadow = intersectObject(shadowRay);
if inShadow is TRUE
break out of loop;//if even a single object is in the way then why
do we need to check for other objects in the scene
return inShadow;
C++ CODE:
if(normal.dot(L) < 0){
inShadow = true;
}
else{
inShadow = false;
float epsilon = 0.000009;
SbVec3f shadowRayDirection = lights[j].getLocation() - point;
SbVec3f shadowRayStart = point + epsilon * shadowRayDirection ;
for(int z =0 ; z<(int)objects.size();z++){
if(objects[z].getTransparency() > 0){
}
else{
float shadowT=objects[z].intersection(shadowRayStart,shadowRayDirection);
if(shadowT >= 0){
inShadow = true;
break;
}
}
}
}
NOTE: I am considering if the object is transparent then it will not
cause shadow


No comments:
Post a Comment