Unity Shader 伽马校正详解

探讨了真实世界亮度与图像亮度之间的转换过程,解析了线性空间和Gamma空间下的颜色计算原理,强调了在线性空间下进行颜色计算的重要性。

真实世界亮度(线性)     图像亮度   真实亮度在图像差值递减
0.1                                      0.35            0.35
0.2                                      0.48            0.13
0.3                                      0.58            0.1
0.4                                      0.66            0.08
0.5                                      0.73            0.07
0.6                                      0.79            0.06
0.7                                      0.85            0.06
0.8                                      0.90            0.05
0.9                                      0.95            0.05
1                                          1                0.05

线性空间:
真实世界亮度0.2 -> gamma变亮编码到图像0.48 -> gamma矫正变暗解压到线性(真实) 0.2 参与线性计算
->编码到颜色缓冲0.48 ->显示器gamma矫正到0.2。

1. 亮度0.2,存储到gamma图变成0.48爆亮。
2. 通过勾选图片sRGB,采样时unity自动矫正pow(0.48, 2.2) = 0.2,线性值参与计算。
3. pow(0.2, 1/2.2)=0.48存入颜色缓存。
4. 显示器gamma矫正pow(0.48, 2.2)=0.2显示正常。

线性空间总结:
真实世界正常颜色 -> 图片(变亮) -> sRGB采样矫正变暗(正常颜色) shader计算 -> 放入颜色缓存(变亮) -> 屏幕gamma矫正变暗输出(正常颜色)

gamma空间总结:
真实世界正常颜色 -> 图片(变亮) -> shader计算 -> 放入颜色缓存 -> 屏幕gamma矫正变暗输出(正常颜色)

gamma空间线性空间


为什么要在线性空间下计算颜色值?
当计算出了亮度0.5时:
1. 在线性空间下存入颜色缓存为0.73,屏幕矫正显示为0.5,亮度正常。
2. 在gamma空间下存入颜色缓存为0.5,屏幕矫正显示为0.22,亮度变暗。
因此需要在线性空间下进行颜色计算。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值