gamma校正是因为显示器颜色通常是非线性的,所以要想看到电脑中正常定义的颜色,必须进行伽马校正, gamma空间就是模拟电视屏幕之类上的(也就是现在通用的)色彩空间,这种色彩空间在直接显示图片的时候效果正常,但如果进行颜色混合,混合的效果就不正确,因为它采用的是非线性采样 sRGB是RGB是一种的一种特定类型,就是一般用的,色彩宽度小 线性混合是正确的混合 gamma混合会导致光混合地方更亮,而产生不正确的颜色(虽然可能艺术效果更好) 线性光照是指照明具有所有线性输入场景的过程。通常纹理存在预先应用给它们的伽玛值,这意味着当纹理在材质采样时,其是非线性的。如果这些纹理被使用于标准光照方程式,它将导致不正确的方程式,其期望使用前所有输入线性化。

当使用伽玛空间光照,颜色和纹理提供给着色器将应用其伽玛校正。当它们被用在高亮度的颜色着色器,实际上更亮,那么他们就应该用于线性照明。这意思是灯光强度增加,表面将以非线性方式增亮。这将导致在更多地方照明太亮,并给予模型和场景一个褪色的感觉。当使用线性照明,随着光照强度的增加,从表面的反应仍然是线性的。这导致更加真实的表面着色以及更好的表面颜色反应。

具体还可以参考这里

http://www.ceeger.com/Manual/LinearLighting.html

2.27.2016补充

还是补充在这里吧

就是关于shader中的光照

关于逐顶点光照(Per-vertex Lighting)效果差不多,速度快 其实区别不大     每顶点光照是标准的Direct3D/OpenGL光照模式,通过计算每个顶点的光照来完成。Lighting on命令开启光照。而我们知道,光照被材质块,颜色材质和平行高光等命令所影响。

关于逐像素光照(Per-pixel Lighting)效果更好,速度稍慢     每像素光照管线通过多次通道渲染对象来完成。Unity渲染对象一次来获取阴影色和任何顶点光照。然后再在额外的并行通道中渲染出每像素光照的效果。

下面是对比图

unity 实现调色盘 unity色彩空间_unity

unity 实现调色盘 unity色彩空间_gamma_02

左 逐顶点                   右逐像素