【问题标题】:Fragment shader for multisampled depth textures用于多重采样深度纹理的片段着色器
【发布时间】:2013-11-16 09:34:25
【问题描述】:

对于多重采样深度纹理,片段着色器中哪些操作是理想的?我的意思是,对于 RGBA 纹理,我们可以取来自 texelFetch() 的颜色值的平均值。

多重采样深度纹理的理想着色器代码应该是什么?

【问题讨论】:

    标签: opengl glsl shader


    【解决方案1】:

    多重采样深度纹理首先是 Shader Model 4.1 (DX 10.1) 的功能(多重采样颜色纹理是 DX 10.0)。 OpenGL 没有明确说明这一点,但并非所有 GL3 类硬件都支持它们。也就是说,由于多重采样纹理是 GL 3.2 的特性,所以这个问题在 OpenGL 世界中基本上没有实际意义。 可能千载难逢。

    在任何情况下,假设您的硬件支持多采样深度纹理和颜色纹理之间没有区别。即使深度纹理是整数格式,当您在 sampler2DMS 上使用 texelFetch (...) 对其进行采样时,您也会得到以下形式的单精度 4 分量浮点向量:vec4 (depth.r, depth.r, depth.r, 1.0)

    如果您想要多样本深度解析,您可以将纹素平均在一起,但所有样本之间的深度差异对于快速查找渲染场景中的边缘以实现双边过滤等功能也很有用。

    【讨论】:

    • 什么是双边上采样?
    • 简而言之,它是一种图像处理技术,通过基于图像边缘(深度/法线的不连续性)对插值函数进行加权来减少混叠。通常它是指一类保留边缘细节的图像处理算法。更详尽的总结可以在here找到。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-17
    • 2011-10-04
    • 1970-01-01
    相关资源
    最近更新 更多