人眼对光的敏感度在不同亮度上是不一样的,人眼会对暗的区域变化更加敏感。如果用8位空间来存储像素,0-1区间可以表示256种亮度,但是我们不会一半表示暗的,一半表示亮的(即暗和亮都是128种颜色)。因为我们应该花更多的空间去存储暗的区域,换句话说,暗的需要被区分成更多种。
编码:当摄影设备储存照片时对像素进行编码,如果使用0.45的编码伽马对输入的亮度进行编码,那么0.5像素对应的亮度不是0.5,可能是0.22,因为 0.5 约等于 0.22的 0.45次方。 伽马曲线:输出 = 输入的gamma次方。
解码:图片放在显示器里显示的时候,我们需要解码,使得输出的亮度和捕捉到的亮度一样,是线性的。每种显示设备都有自己的Gamma值。设备输出亮度 = 电压的Gamma次幂。Gamma等于1是一种理想的线性状态。过去,多数监视器是阴极射线管显示器(CRT)。这些监视器有一个物理特性就是两倍的输入电压产生的不是两倍的亮度。产生约为输入电压的2.2次幂的亮度,这叫做监视器Gamma。非常巧合,不需要任何调整,CRT显示器补偿了图像捕捉设备的伽马曲线。
Unity默认的空间是伽马空间,伽马空间下渲染会导致很多非线性空间下的计算,如果要把伽马空间转换到线性空间,就需要伽马校正。如果直接输出渲染而不进行任何处理,在经过显示器的显示伽马处理后,会导致图像整体偏