Rap*_*yer 3 opengl mapping glsl shadow deferred
我目前正在实现延迟渲染管道,但我仍然坚持使用阴影贴图。我已经成功地将其实施到前向管道中。
我所做的步骤是:
编辑:使用新结果图像更新代码:
float checkShadow(vec3 position) {
// get position in light view
mat4 invView = inverse(cameraView);
vec4 pEyeDir = sunBias * sunProjection * sunView * invView * vec4(position, 1.0);
// light view clip space
pEyeDir = pEyeDir / pEyeDir.w;
// get uv coordinates
vec2 sTexCoords = pEyeDir.xy * 0.5 + 0.5;
float bias = 0.0001;
float depth = texture(sunDepthTex, sTexCoords).r - bias;
float shadow = 1.0f;
if(pEyeDir.z * 0.5 + 0.5 > depth)
{
shadow = 0.3f;
}
return shadow;
Run Code Online (Sandbox Code Playgroud)
}
这里有一些对于上面的代码很重要的变量:
vec3 position = texture(positionTex, uv).rgb;
Run Code Online (Sandbox Code Playgroud)
另外,我在某些相机位置得到深色背景(网格保持不变),只有当我将阴影值乘以最终颜色时才会发生。

根据要求,以下是位置和太阳深度纹理:

好吧,我修好了。问题是因为光深度的大小与 gbuffer 纹理的大小不同。
要使用不同的纹理大小,我必须将它们标准化
coords = (coords / imageSize ) * windowSize;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1112 次 |
| 最近记录: |