Hello . 大家好,今天我们来聊点与颜色有关的事,我是木偶心没。用过unreal的小伙伴应该都会注意到,我们在unreal里面进行贴图设置的时候,对于basecolor都需要勾选上sRGB。为什么需要勾选?每张贴图都需要勾选么?如果不做勾选会怎么样?这就需要用我们的gamma校正和线性空间来破案了。接下来就一起来看这篇Unreal中关于颜色的技术分享。
Gamma校正
首先什么是gamma校正。官方解释,RGB值与功率并非简单的线性关系,而是幂函数关系,这个函数的指数称作Gamma值,一般为2.2(power2.2),而这个换算过程,称为Gamma校正。官方来源,开发gamma编码是用来抵消阴极射线管(CRT)显示器的输入和输出特性,电子枪的电流,也是光的亮度,与输入的正极电压的变化是非线性的。通过gamma压缩来改变输入信号抵消了这个非线性,因此输出图像就能有预期的亮度。
画图来理解就是如下,
如果我们有一张线性的照片,如果我们显示器也是线性的,那经过显示器输出的图像就应该和真实的图像是一样的;
但是实际上我们的显示器根本不按套路来,它的gamma值是2.2,所以如果我们的图片是线性的,那么从gamma为2.2的显示器中输出出来就是下面这个样子
可以看到结果有明显的色彩失真,所以如果我们把照片的gamma值设置成1/2.2的话,经过两次调整,结果就是正确的啦
在进行gamma校正的方式就是采样进行输入的时候,Gamma=1/2.2,调亮Gamma;
在显示输出的时候Gamma=2.2,调暗Gamma。
线性空间
一般在图片的渲染中存在两个颜色空间,第一个是Gamma(非线性)的颜色空间;然后是Linear(线性)颜色空间。Gamma使用的是进行了校正的颜色表;而linear使用的是一个线性的完整颜色表,而且渲染中用到的光线也是线性空间的,所以我们在进行计算的时候要在线性空间中进行,输入和输出需要进行gamma校正。
最好的办法就是在图片输入的时候采用sRGB格式,目的是为了告诉linear color space,需要对输入的颜色进行power2.2校正切换到线性空间,然后再进行shader计算,计算完毕以后再通过power1/2.2切换回gamma空间。所以解决了我们刚开始提的在unreal中的basecolor需要勾选sRGB选项。而非sRGB纹理则会直接在shader中进行计算,比如normal和mask。
所以以上就解释了我们在导入贴图的时候需要注意到的问题,只有勾选了引擎才会进行正确的像素计算;一般basecolor才需要勾选;对于basecolor来说,不勾选GPU就不会进行gamma校正,而直接使用存储的值进行渲染,但同时也不会得到真实的效果。
来源:Thepoly公众号
热门课程
专业讲师指导 快速摆脱技能困惑相关文章
多种教程 总有一个适合自己专业问题咨询
你担心的问题,火星帮你解答腾讯游戏美术春招已经启动啦!25、26、27、28届均有机会投递,实习岗位有动画、特效、3D场景/角色、2D场景/角色、技术美......
刚入学的同学,在第一次学到新软件的时候,经常会被各种快捷键整懵。但是网上download的快捷键记忆图,不一定就是合适的。这里......
官方宣布3月共134款新游戏版号过审,网传68家游戏公司超1000岗位
提前了解行业趋势,关注热门游戏和新技术如AI、UE5等;或通过了解和参加线上、线下行业游戏大赛或交流峰会,增加行业信息来源,积......
今天要分享的是武汉校区剪包专场招聘会,企业代表是曾就读于武汉校区2210期的剪包学长,这次代表公司返校,招聘视频拍摄剪辑岗位。
AI时代找不到工作怎么办?瞄准这6个常青树行业,火星全专业可匹配!
科技在创新,社会在发展,自动化、机器人和AI人工智能的应用,让很多重复性高、低技能要求的传统工作岗位正在被逐步取代,这是一个无......
一般发生在下半年,如果公司上半年业绩未达标,有些公司可能会在年中发起招聘需求,为团队储备一些新人,到年底以“试用期不通过”为理......