您的位置:首页 > 移动开发

Some stuff about depth texture based shadow mapping

2014-03-11 20:37 375 查看
  //       Tex coord is actually the vertices projected to the near projection plane of the light projection space.

 //        Depth texture is just like mapped to the near projection plane(a quad ranges from -1.0 to 1.0 according to

 //   the x and ycoordinate axes of the light projection space). And shadow texcoord is just used to sample the

 //   depth texture and map correct texels to the corresponding fragment.

 //        In depth texture, color of objects and surfaces that light CANNOT arrive is definitely white(vec4(1.0)) or

 //   black(vec4(vec3(0.0), 1.0)) depends on your hardware. Color of those light can arrive is a gray-scale color

//   (depth-distance from light source).

//  NOTICE: with GL_TEXTURE_COMPARE_MODE GL_COMPARE_REF_TO_TEXTURE and

                          GL_TEXTURE_COMPARE_FUNC  GL_LEQUAL, depth texture sampling color will be like above.

 //        so the function "textureProj()" works with the following rule:

 //       1. if the color of the sampled texel is white(or black), it can be considered that this fragment is in the

 //   shadow;

 //       2. if the color of the sampled texel is a gray-scale color, the corresponding fragment is being illuminated.

 //   shade normally with lighting.

 //       So key is to transform vertices into light projection space, project them to the near plane of the light

 //   Projection frustum, and then use them as texcoords, and run further steps in fragment shader with textureProj().

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  OpenGL