Direct3D11 像素着色器插值
Direct3D11 Pixel Shader Interpolation
我正在尝试创建两种颜色之间的简单过渡。所以四边形的渲染,顶部边缘颜色为#2c2b35,底部颜色为#1a191f。当我通过简单的像素着色器将其应用于顶点并对其进行插值时,我得到了色带效果,我想知道是否有一个选项可以在没有一些高级像素着色器抖动技术的情况下消除该效果。
我正在附加 a picture 渲染,其中左侧部分在我的应用程序中渲染,右侧部分在 Photoshop 中渲染,并选中 "Dithered" 选项。
提前致谢。
条带是每个渲染引擎都必须在某个时候处理的问题。
在开始实施抖动之前,您应该首先确认您遵循的是正确的 srgb 管道。 (https://en.wikipedia.org/wiki/SRGB)
SRGB 正确:
RGBX8 中的交换链和渲染表面必须包含 SRGB 值。最简单的方法是创建一个 XXXX_UNORM_SRGB 格式的渲染目标视图。
纹理必须在适当时使用 UNORM_SRGB 格式视图(反照率贴图),如果不合适则使用 UNORM(法线贴图)
像光照这样的着色器计算必须是线性的 space.
使用正确格式的纹理和渲染目标会在读写时为您执行转换,但对于常量,您必须手动执行。例如在 #2c2b35 中:0x2c 在 srgb 44(0.1725) 中,但线性值为 0.025
要进行渐变,您必须在着色器中以线性方式进行space,并让渲染目标在写入时将其转换回 srgb。
我正在尝试创建两种颜色之间的简单过渡。所以四边形的渲染,顶部边缘颜色为#2c2b35,底部颜色为#1a191f。当我通过简单的像素着色器将其应用于顶点并对其进行插值时,我得到了色带效果,我想知道是否有一个选项可以在没有一些高级像素着色器抖动技术的情况下消除该效果。
我正在附加 a picture 渲染,其中左侧部分在我的应用程序中渲染,右侧部分在 Photoshop 中渲染,并选中 "Dithered" 选项。
提前致谢。
条带是每个渲染引擎都必须在某个时候处理的问题。
在开始实施抖动之前,您应该首先确认您遵循的是正确的 srgb 管道。 (https://en.wikipedia.org/wiki/SRGB)
SRGB 正确: RGBX8 中的交换链和渲染表面必须包含 SRGB 值。最简单的方法是创建一个 XXXX_UNORM_SRGB 格式的渲染目标视图。 纹理必须在适当时使用 UNORM_SRGB 格式视图(反照率贴图),如果不合适则使用 UNORM(法线贴图) 像光照这样的着色器计算必须是线性的 space.
使用正确格式的纹理和渲染目标会在读写时为您执行转换,但对于常量,您必须手动执行。例如在 #2c2b35 中:0x2c 在 srgb 44(0.1725) 中,但线性值为 0.025
要进行渐变,您必须在着色器中以线性方式进行space,并让渲染目标在写入时将其转换回 srgb。