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