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:

相关推荐
做cv的小昊11 小时前
计算机图形学:【Games101】学习笔记08——光线追踪(辐射度量学、渲染方程与全局光照、蒙特卡洛积分与路径追踪)
图像处理·笔记·学习·计算机视觉·游戏引擎·图形渲染·概率论
玖玥拾11 小时前
Cocos学习笔记:序列化、配置文件与数据驱动
游戏引擎·cocos2d
RReality12 小时前
【Unity UGUI】血条 / 进度条(HP Bar)
ui·unity·游戏引擎·图形渲染
mxwin20 小时前
Unity Shader URP:法线如何进行光照计算
unity·游戏引擎·shader
郝学胜-神的一滴20 小时前
中级OpenGL教程 009:用环境光告别模型死黑
前端·c++·unity·godot·图形渲染·opengl·unreal
一锅炖出任易仙1 天前
创梦汤锅学习日记day30
学习·ai·ue5·游戏引擎
mxwin1 天前
Unity URP 中的法线生成完全指南
unity·游戏引擎
游乐码1 天前
Unity基础(十五)LineRender画线功能
unity·游戏引擎
玖玥拾1 天前
Cocos学习笔记:瓦片地图与坐标转换
游戏引擎·cocos2d
小贺儿开发1 天前
Unity3D 图片循环查看器
unity·工具·图片·列表·循环·ugui·互动