Gamma校正

在Day21时,尝试讲解内建Skybox Shader是怎麽写的,後来踩到了一些坑,里面就碰到几个我不知道的知识点:

  • Gamma
  • HDR
  • GPU Instancing

今天要来理解甚麽是Gamma

目标

  • (在电脑图学中)甚麽是Gamma?

Gamma

在网路或书籍中,会找到Gamma是代指一个值,Gamma Correction是利用这个值进行的操作,所以要理解的是「为什麽要执行Gamma Correction」?

Gamma Correction

就我们所知的物理世界,只要光线加强一倍,亮度也会加强一倍,这个就是线性,从以前阴极射像管(大屁股萤幕)的时代,显示图像的电压增加一倍,亮度并不会增加一倍,也就是说并不是线性的。後来找到亮度增加的量等於等於电压的增加量的2.2次方,这就是Gamma值。

from wiki

把这个2.2的Gamma平衡到物理世界的亮度,就是Gamma校正(Gamma Correction),那麽要怎麽校正了?

其实下图就可以很直观的理解,给出一个次方为1/2.2的Gamma空间,与萤幕的2.2次方的Gamma空间相互处理就可以得出线性的空间了

from 到底什么是伽马校正 Gamma Correction?——节选自《高兴说显示进阶篇之三》

sRGB

简单说一下甚麽是sRGB,全名是standard Red Green Blue,而sRGB当初创建就是为了解决上述显示器的所说的问题,它的颜色空间会对应到Gamma 1/2.2的空间中

Unity

把上面的知识延伸到Unity上。

大机率会碰到一个问题,「素材进入引擎後,可能显示不对」,又或着是说,怪怪的,就有可能是Gamma的问题,可能是素材import进引擎後,没有做Gamma校正,又或是,根本不用做。

假设素材是sRGB的,那我们要先把它转回线性空间,就是取消「Gamma校正」,统一素材的颜色空间,并统一的交由Unity的渲染引擎做事。

Reference


<<:  Day29_CSS3

>>:  Day 27 - 客制化 ListRowPresenter 来实作 Loop Banner 效果 Part3

Day 30 聊聊一些 JS 几个常听到的名词

API 常听到工程师在工作场域中说要取得什麽 API,那这个 API 表示的是什麽意思呢? API ...

[Day20] 扩展你的设计:剖析回应可使用的元件并加以运用

现在,你应该有了一个能妥善处理各种意外情形。 且能妥善引导使用者满足他们主要需求的对话流了。 在今...

(Day 21) ES6 class 语法糖

前言 前面有花几篇介绍了,原型链以及使用建构式、以及使用 Object.create() 建立多层原...

【Day27】清除轨迹 ─ Windows篇

哈罗~ 铁人赛终於接近尾声啦(๑´∀ˋ๑) 在 Day14 & Day15 我们介绍了系统入...

请益 关於 excel vba 误差线

在excel-组合图表( 折线图+散布图) 设定 散布图中的 误差线 可设定成 水平误差线 请问 各...