影视和引擎当中的PBR材质和线性色彩空间

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/shenmifangke/article/details/84891844

pbr

Pbr材质应该都熟悉吧,就是如今游戏影视广泛应用的物理材质,pbr有很多种实现方式,而且不同的pbr有不同的特点。如今pbr总是和线性空间联系在一起,虽然两者并不是绝对依赖,但都是为了让渲染更加真实更加理性化的方式。

pbr在非固有色贴图上需要更明确定义贴图是是线性的,原因是一般固有色贴图需要人的感知,而且因为历史遗留问题,大多数固有色贴图都是需要人眼感知的,人眼感知就会产生gamma校正问题,技术就不细说了,因为很多技术博客都提到了,通俗点的说法就是人眼看到物体的颜色其实已经经过视觉和大脑的处理了,并不是物体以前的颜色了。

Untiy3d默认使用左侧gamma方式容易曝光,右侧是线性的,不容易曝光

 

线性空间下物体效果,最大的优势就是光照的自然,特别是在光影在物体表面的衰减上

下面是对比图

离线渲染下也是非线性空间下的物体容易过度曝光,或者灰蒙蒙的

 

 

所以固有色通常标记为srgb,表示这是人眼里看到的颜色,这样计算机就能将这类图片在内部转换成线性的,来让整个场景贴图计算更符合自然

而非srgb贴图,通常是可视化制作出来的(比如如今的substance painter之类),

实时渲染

Unity3d总的线性空间和图片srgb设置

Unity3d默认是gamma空间,这是因为线性空间需要支持OpenGL ES 3.0,部分手机和苹果机不支持

Unreal4当中的默认就是线性空间,这也是为什么很多ue4项目质感很不错的

贴图处理格式还是要制作者根据实际情况调整

离线渲染

(这里以maya2016 arnold4为例)

以前老版本设置比较繁琐,这也是为什么以前很多渲染项目中效果不如引擎中的,不仅需要自己改色彩空间,设置图片是否是线性还需要再连节点(因为以前版本arnold不能识别maya中的贴图信息)。但是2017以后arnold5已整合如maya默认即线性空间,只需要关系图片是raw还是srgb了。

 

可以看出线性空间和PRB都是必要的。

 

制作环节

这里要说下一般有颜色的贴图都是srgb的

法线贴图是线性的,但以前软件一般都能自动把法线贴图认对,很多制作人员可以手绘法线贴图,这是为什么呢,因为熟练...

还有以前使用的HDR环境贴图其实也是线性的,有人问那么mask贴图或者3s贴图等是线性的吗?答案就要看你的制作环境了,如果如今在pbr相关dcc软件中制作,那么这些贴图都是线性的,如果是以前的素材,那八成都是srgb的了,因为以前软件多为非线性空间,贴图效果都靠对着凑,所以如今在线性空间里都是可以算srgb的,虽然大多数贴图还是要重新凑。

 

一般制作人除非项目指定某种金属(或者高精度项目),其实并不需要关心哪种颜色代表的是金属度多少多少,粗糙度多少多少,因为我们只需要在相关软件里观察调整质感导出贴图,在其他软件里放上,或渲染或实时,整体效果是对的就可以了。现在相关贴图软件比如sp,sd之类直接就能在正确的线性空间下预览pbr材质的效果。

 

 

猜你喜欢

转载自blog.csdn.net/shenmifangke/article/details/84891844