|
|
我这几天一直被用GLSL编写Shadow Maps所困扰着。请各位达人帮帮忙,看我问题出在什么地方。
我的方法和别人的方法也都一样。首先在应用程序里计算出textureMatrix。
textureMatrix = biasMatrix * lightProjectionMatrix * lightViewMatrix * cameraViewInvertMatrix;
然后把这个texture matrix传到顶点着色器中计算纹理坐标:
varying vec4 texCoord;
...
texCoord = texture * gl_ModelViewMatrix * gl_Vertex;
texCoord = texCoord / texCoord.w //for homogenueous
最后把计算出来的纹理坐标传到片元着色器中,和深度图进行比较,进行阴影着色。
varying vec4 texCoord;
uniform sampler2DShadow shadowMap;
bool isInShadow()
{
float depth = shadow2DProj(shadowMap, texCoord).r;
if (depth == 1.0)
return false;
else
return true;
}
我觉得我的方法都是正确的,包括计算出来的矩阵也都是正确的。但是,绘制的结果却始终不正确。
谁能告诉我,我到底错在什么地方了。非常感谢~~~~~~~~~~~~ |
|