opengles dither

在管线的om阶段有这样一个操作 dither

抖动

它的存在是为了解决 高精度数据写入低精度rt时的band artifacts

 https://en.wikipedia.org/wiki/Dither

感觉这是一种常用的提升精度的方法,和仿色也类似,在hdr那边也见过这种使用

https://www.khronos.org/opengl/wiki/Per-Sample_Processing

它抖的算法是这样的

相邻两个像素 a,b 

一个向下取整,一个向上取整。这样交替

取整的事情是这样理解的 比如8bits 传入颜色0.8967xxxx精度很高的float 

向上/下取“整”

算法0.8967xxxx X255 =206.286xxxx

这个精度能表示的离206.286最近的两个整数 206,207,这两个值 根据屏幕像素坐标交替

(这里涉及的就是整型rt--fixed point 在ogl上的流程,shader里都是浮点数计算 一直到srgb那步 做完 做float到fix的转换 转换方法 floatX(2^b-1))

使用方式只有一个

enable/disable

如果关了 它就默认全取一样的 就不能交替了

所以看上去对于浮点rt srgb和dither这步都没啥必要了

原文地址:https://www.cnblogs.com/minggoddess/p/13204197.html