图形 2.6 伽马校正

参考视频:图形 2.6 伽马校正
Gamma校正与线性工作流入门讲解
在这里插入图片描述
gamma本质上是对输入值用指数函数进行映射。(如gamma2.2就是f(x)=x^2.2的意思)
gamma矫正原因:人眼感受到的光强变化和实际的变化不一致
(上面是人眼感受到的均匀的灰阶,下图是物理上均匀变化的灰阶)

所以需要一条gamma曲线将物理灰阶转换为美术灰阶。如下图所示,
X轴为物理光强线性增加的灰阶,y轴是人眼感受到的均匀的灰阶(实际上是非线性的)

__
我们的显示器基本遵循着SRGB标准,SRGB标准位于gamma2.2空间,相当于数据在经过显示器显示之前会经过一次gamma2.2函数压缩(变暗),因此为了抵消显示器的gamma2.2效果,所以在导出bmp/jpg/png等格式的图片时会经过一次gamma0.45变换(变亮),这样做也能存储更多的暗部信息。图片经过gamma0.45(gamma矫正)变换后存储在磁盘中,读取时经过显示器gamma2.2(degamma)变换,两次gamma正好抵消,就能得到原始的图片颜色数据
——
ps中,8位每通道模式为非线性空间,相当于在gamma2.2(下压曲线)中,横坐标为ps里输入的数据,纵坐标为实际光能量。因此可以看到(0.5,0.5,0.5)实际对应的是光能量为0.2的“美术中灰”。
32位每通道为线性空间,因此线性工作流应该在32位每通道下进行,在此空间进行线性计算(如高斯模糊等),完成后最终转为为8位每通道模式导出
——
unity中如果设置渲染空间为gamma,则unity不会对数据输入输出做任何处理,需要自己手动处理。
如果设置为linear(线性空间),则unity会根据贴图的设置对贴图进行处理:如果勾选srgb,则将其转换为线性数据(gamma2.2),否则不做处理。最后输出进行一次gamma0.45操作(为了跟显示器的gamma2.2抵消)
——
一般来讲,用于存储颜色的贴图为非线性数据,如albedo贴图,相当于原始线性数据经过了一次degamma处理(gammma0.45,变亮);用于存储值的贴图为线性数据,如法线,粗糙度,金属度贴图等

作业

linear空间下正常渲染(左边lit shader,右边自己手写的)
在这里插入图片描述
转换为gamma空间后变暗(原始的albedo是degamma后上拱的曲线,其他贴图是线性数据)
在这里插入图片描述
在gamma空间中按线性工作流处理
处理方法(对上一节的代码进行修改):
1.对albedo贴图进行gamma处理转换为线性数据
在这里插入图片描述
2.最后的颜色demma一次以和显示器的gamma矫正抵消。
在这里插入图片描述
在这里插入图片描述
(学习别人的作业后发现可以用LinearToGammaSpace函数和GammaToLinearSpace函数进行转换,这才是正确的做法)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值