相关疑难解决方法(0)

GLSL sampler2DShadow已弃用过120版?用什么?

我一直在努力为我的阴影贴图实现百分比更接近的过滤,如Nvidia GPU Gems所述

当我尝试使用统一的sampler2DShadow和shadow2D或shadow2DProj对阴影贴图进行采样时,GLSL编译失败并给出错误

shadow2D deprecated after version 120
Run Code Online (Sandbox Code Playgroud)

我将如何在GLSL 330+中实施等效解决方案?我目前只使用二进制纹理样本和泊松采样,但楼梯混叠非常糟糕.

opengl glsl

4
推荐指数
1
解决办法
8081
查看次数

具有延迟渲染的阴影贴图

我正在尝试实现阴影贴图技术,但在使其发挥作用时遇到一些问题。

我在灯光位置有一个相机,这是我得到的阴影贴图。所有顶点均已乘以每个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);
}
Run Code Online (Sandbox Code Playgroud)

输出(相机几乎处于光线的相同位置):

在此输入图像描述

我只是想看看每个顶点的投影是否与相机的位置垂直,但看起来并非如此。所有这一切的目的是比较:

if ( texture(shadowMap, ShadowCoord.xy).z <  ( ShadowCoord.z-bias ) )
Run Code Online (Sandbox Code Playgroud)

但它也不起作用。

我将不胜感激任何帮助。谢谢。

opengl deferred-rendering shadow-mapping

2
推荐指数
1
解决办法
2442
查看次数

使用shadow2D时Opengl阴影痤疮

我正在尝试在opengl中实现阴影贴图.它工作正常,但是别名是可见的,所以我决定使用sampler2Dshadow和shadow2D,因为我已经读过它作为简单的抗锯齿解决方案.但是一旦我使用它,它会在整个场景中产生非常显着的阴影痤疮.请注意,当使用带有texture2D的sampler2D时,没有.这是有意的吗?如果是这样,我应该如何解决它?

这是使用sampler2DShadow时的外观: 1

这是处理阴影的片段着色器的一部分:

    float theta = clamp(dot(normalize(lightVector), normalize(vertNormal)), 0, 1);
    float bias = 0.005*tan(acos(theta));
    float visibility = 1.0;
    if ( shadow2D(shadowTex, shadowCoord).z < shadowCoord.z - bias){
        visibility = 0.5;
    }
    color = vec4(color.xyz * visibility, 1);
Run Code Online (Sandbox Code Playgroud)

opengl glsl

1
推荐指数
1
解决办法
2751
查看次数

标签 统计

opengl ×3

glsl ×2

deferred-rendering ×1

shadow-mapping ×1