Unity中颜色空间Gamma与Linear


前言

Unity中颜色空间Gamma与Linear


一、人眼对光照的自适应

1、光照强度与人眼所见的关系

在下图中,先打开一盏灯,再打开一盏灯,光照强度在现实中应该是增加两倍,但是我们眼睛看见的却只是变亮了一点。

在这里插入图片描述

人眼看见的亮度,会呈现一个下凹曲线,不会与实际亮度值相同

在这里插入图片描述

2、巧合的是,早期的电子脉冲显示屏也符合这条曲线

在这里插入图片描述

达到屏幕的电子脉冲是线性的,但是屏幕显示的却和人眼一样呈现下凹
在这里插入图片描述

3、这两条曲线都巧合的符合 y = x2.2(Gamma2.2空间)

在这里插入图片描述


二、Gamma矫正

1、没矫正前,人眼看电子脉冲显示屏,看见的颜色会更暗

  • y2 = y2.2 = (x2.2)2.2
    在这里插入图片描述

2、所以有了Gamma矫正,让人眼看显示屏的效果和看现实一样

在这里插入图片描述

  • 矫正使用的是 y = x0.45

我们在Unity纹理中,看见的 sRGB 就是Gamma0.45所在的空间

在这里插入图片描述


三、Unity中的Gamma空间

在这里插入图片描述

在这里插入图片描述

  • 在Gamma空间下,原始贴图不管是不是sRGB。在存储时,统一认为sRGB
  • 在该贴图进入Shader着色器后,没有进行颜色修正,导致采样的结果是存在误差的
  • 所以,Gamma空间下看见的颜色会 过亮 或 过曝

在Gamma空间下,是不是sRGB都是一个色
在这里插入图片描述


四、Unity中的Linear空间

在这里插入图片描述

在这里插入图片描述

  • 在Linear空间下,作为颜色贴图的纹理需要勾选 sRGB,这样才会开启移除Gamma矫正
  • 在Linear空间下,作为控制数值的纹理不需要勾选 sRGB,这样采样的值才会和原本的一样
  • Linear空间与Gamma空间,不同在 进入Shader前的移除Gamma矫正 和 Shader输出后的Gamma矫正,这样可以消除Shader采样时的误差

不勾选sRGB的话,最后输出的颜色就会过亮
在这里插入图片描述
在Linear空间下
勾选sRGB:
在这里插入图片描述
不勾选sRGB:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

楠溪泽岸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值