【发布时间】:2014-12-13 17:58:58
【问题描述】:
我正在尝试实现一种阴影贴图技术,但我遇到了一些问题才能让它发挥作用。
我在灯光的位置有一个相机,这是我得到的阴影贴图。所有的顶点都乘以每个modelViewProjectionMatrix。
我还有一个带有顶点世界位置的纹理。这是一个GL_RGBA32F 纹理,因为所有点都乘以每个ModelMatrix 以得到世界空间中的点。
还有着色器:
layout(binding=5) uniform sampler2D shadowMap;
layout(binding=6) uniform sampler2D positionMap;
in vec2 texcoord;
uniform mat uViewProjectionMatrix;
out vec4 color;
void main() {
vec4 pos = texture(positionMap, texcoord);
vec4 ShadowCoord = uViewProjectionMatrix * pos;
ShadowCoord.xy = ShadowCoord.xy * vec2(0.5,0.5) + vec2(0.5,0.5);
float a = texture(shadowMap, ShadowCoord.xy).z;
color = vec4(a, a, a, 1.0);
}
输出(摄像头与灯光几乎在同一位置):
我只是想看看每个顶点的投影是否正确地从相机的位置开始,但看起来不是。 这一切的重点是比较:
if ( texture(shadowMap, ShadowCoord.xy).z < ( ShadowCoord.z-bias ) )
但它也不起作用。
如果有任何帮助,我将不胜感激。 谢谢。
【问题讨论】:
标签: opengl shadow-mapping deferred-rendering