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

 浅笑那段情2502918773 发布于 2023-02-07 10:04

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

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

shadow2D deprecated after version 120

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

1 个回答
  • 你的头衔远离基础.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的维基站点上进行了详尽的描述.

    2023-02-07 10:06 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有