我一直在努力为我的阴影贴图实现百分比更接近的过滤,如Nvidia GPU Gems所述
当我尝试使用统一的sampler2DShadow和shadow2D或shadow2DProj对阴影贴图进行采样时,GLSL编译失败并给出错误
shadow2D deprecated after version 120
我将如何在GLSL 330+中实施等效解决方案?我目前只使用二进制纹理样本和泊松采样,但楼梯混叠非常糟糕.
你的头衔远离基础.sampler2DShadow
是不是过时了.在GLSL 1.30唯一改变的是,像功能混乱texture1D
,texture2D
,textureCube
,shadow2D
,等全部替换的过载texture (...)
.
texture (...)
相当于shadow2D (...)
:float texture(sampler2DShadow sampler,
vec3 P,
[float bias]);
使用此重载进行查找的纹理坐标是:P.st
和用于深度比较的参考值是P.r
.对于绑定到阴影采样器纹理图像单元的纹理/采样器对象启用纹理比较(GL_TEXTURE_COMPARE_MODE
== GL_COMPARE_REF_TO_TEXTURE?
)时,此重载仅适用; 否则结果是不确定的.
从GLSL 1.30开始,你需要使用不同的纹理查找功能的唯一一次是当你做一些根本不同的事情时(例如纹理投影=> textureProj
,请求精确的LOD => textureLod
,通过整数坐标/样本索引获取纹理元素= > texelFetch
,等).具有比较的纹理查找(阴影采样器)在根本上不被认为足以需要其自己的专用纹理查找功能.
这一切都在OpenGL的维基站点上进行了详尽的描述.