请选择 进入手机版 | 继续访问电脑版

Unity3D 浅谈美术那些事 - PBR技术

2020-10-16 11:18 136 0 编辑:互联网 删除
【版权申明】:

  本网站部分内容摘录或转载属于信息来源,如有侵权请与本站联系,我们将第一时间进行处理。任何媒体、网站或个人从本网站下载使用,必须保留本网信息来源,并自行承担版权等法律责任。

  浅析常常出现的理论知识 - PBR(Physically Based Rendering )技术。

  首先我们需要了解定义:这是一种新的渲染方式,万物皆以美为主,PBR 并不是“一项”技术,它是由一系列技术的集合,基于物理的渲染过程。PBR 它也是一种着色和渲染技术,用于更精确的描述光如何与物体表面互动。

  PBR的优势:

  (1)方法论和算法基于精确的计算公式,免除创作表面的猜想过程。

  (2)在任何光照环境都能表现出正确的结果。

  (3)为不同的艺术家,提供统一的工作流程。

  我们来讲一下 PBR 流程和传统区别:其实 PBR 就是不再使用 Specular Map ,在 PBR 里是Glossness(光泽可以理解成高光粗糙度)和Metallicity(金属),后面两张基本都是灰度图,需要在游戏引擎中调节效果,据其他网上说法,一般公司会根据项目发一张材质球的表,所有的 Albedo , Glossness , Metallicity 的值的范围都在上面,根据物品的物理属性来调整就行。

  从 Unity3D 5.x 开始有两个标准着色器,一个名为Standard,我们称它为标准着色器的标准版,另一个名为Standard(Specular Setup),我们称它为标准着色器的高光版,它们共同组成了一个完整的PBS光照明模型,且非常易于使用。其实这两个 Shader 基本差不多,只是有细微的属性参数上的区别。标准版这边的 _Metallic(金属性)、_MetallicGlossMap(金属光泽贴图),被高光版的 _SpecColor(高光颜色)、_SpecGlossMap(高光颜色法线贴图)所代替。标准着色器主要是针对硬质表面(也就是建筑材质)而设计的,可以处理大多数现实世界的材质,例如石头、陶瓷、铜器、银器或橡胶等。同时,它也可以非常出色地处理一些非硬质表面的材质,例如皮肤、头发或布料等。

  附注:PBS细析:基于物理的着色(Physically Based Shading,简称PBS)就是以某种方式模拟现实中材质和光照的相互作用的一种着色方法。这种方法在需要光照和材质更加直观和逼真地协同工作的场合下优势非常明显。基于物理的着色模拟了光线在现实中的行为,实现了在不同的光照条件下的逼真效果。为实现这种效果需要遵循各种物理原理,包括能量守恒(也就是物体反射出去的光量不可能超过所接收的光量),Fresnel反射(所有表面反射在掠射角(grazing angles)处更加强烈),以及物体表面是如何自我遮挡等原理。

  官方标准材质文档链接:

  https://docs.unity.cn/cn/current/Manual/StandardShaderMaterialParameters.html

  Unity 引擎标准着色器的关键属性与流程

  01金属工作流(不易出错,省内存,但是白边现象更明显)

  Base Color( RGB-sRGB )

  包含信息:绝缘体,反射颜色。金属,反射率。最亮色不应超越 240RGB ;最暗色应在 30-50RBG 之间;Base Color 不要包含其他光照信息,比如 Amblient Occlusion ;金属反射率应该在 70%-100% 之间。也就是RGB 范围在 180-255。

  Matallic Map( Grayscale-Linear )

  描述哪些区域是金属,那些是绝缘体。1 表示纯金属,0 表示绝缘体。如果Matalic Map 的灰度值低于 235 ,那么对应的 BaseColor 的反射率也应该降低一些。

  Roughness Map( Grayscale-Linear )

  描述表面引起光纤漫反射的不规则程度。这将改变光纤的方向,但是不会改变光线的强度。光滑表面会有小而亮的高光,而粗糙表面将会出现大而暗淡的高光。在这个灰度图里面, 0 代表光滑表面,而 1 代表粗糙表面。Roughness Map 是一个“有故事”的贴图,它会告诉你这个表面经历过那些严酷(或者平和)的环境。而公用的贴图为环境光吸收,法线和高度贴图。

  02Specular工作流

  下面会讲述一下镜面反射工作流,其实Specular包含了全部的绝缘体 F0 信息,1.0 的 Diffuse 和 1.0 的 Specular 将会使得反射折射能量大于输入能量,这违背了能量守恒定律。也就是说在绘制贴图时,你无法预览结果。

  Diffuse( RGB-sRGB )

  包含 Albedo Color ,但是不包含任何反射率信息。纯金属为黑色,因为纯金属没有颜色,油漆和锈迹是需要带有颜色的。基础颜色应不包含光照信息,除了 Micro-Occlusion。黑色不应低于 30-50sRGB ,亮色不应高于 240sRGB。

  Specular( RGB-sRGB )

  
灰度值,表示非金属 F0 。RGB 值,表示金属吸收的不同波长的光线这种贴图允许使用不同的 F0 值来表现非金属。

  Glossiness

  与 Roughness 相反, 0 代表粗糙表面,而 1 代表光滑表面。

  03Ambient Occlusion

  表示有多少环境光,可以被表面上的一个点吸收。AO 应该只影响 Diffuse 部分,而不应该阻塞Specular部分。

  04Height Map

  用于视差映射,通过增加可见的深度感来提高渲染的真实性。

  05Normal Map

  不论PBR还是非PBR,NormalMap都是用来模拟表面细节,同时还会影响Roughness和Glossiness映射。

  标准着色器源代码的剖析

  01两个Shader源文件

  Stardard.shader 着色器源文件 - 标准着色器的标准版

  StardardSpecular.shader 着色器源文件 - 标准着色器的高光版

  02七个CG头文件

  UnityStandardBRDF.cginc头文件 - 用于存放标准着色器处理BRDF材质属性相关的函数与宏

  UnityStandardConfig.cginc头文件 - 用于存放标准着色器配置相关的代码(其实里面就几个宏)

  UnityStandardCore.cginc头文件 - 用于存放标准着色器的主要代码(如顶点着色函数、片段着色函数等相关函数)

  UnityStandardInput.cginc头文件 - 用于存放标准着色器输入结构相关的工具函数与宏

  UnityStandardMeta.cginc头文件 - 用于存放标准着色器meta通道中会用到的工具函数与宏

  UnityStandardShadow.cginc头文件 - 用于存放标准着色器阴影贴图采样相关的工具函数与宏

  UnityStandardUtils.cginc头文件 - 用于存放标准着色器共用的一些工具函数

  StandardShaderGUI.cs脚本文件 - 定义了特定的自定义编辑器UI界面

  其实在学习成长路上,也不乏有各路大神精彩分享与学习。如果想深入学习的了解,下面的文章也可以很好的学习阅读!

  [1]【基于物理的渲染(PBR)白皮书】(三)迪士尼原则的BRDF与BSDF相关总结:

  https://zhuanlan.zhihu.com/p/60977923

  [2] 理解PBR:从原理到实现(上)

  https://blog.csdn.net/Neil3D/article/details/83783638

  [3] 理解PBR:从原理到实现(下)

  https://blog.csdn.net/Neil3D/article/details/84112481

  学无止境,欢迎大家来留言讨论学习。最后,感谢琳云科技官方一如既往的支持~~

  如果你喜欢本文的话,在官网 unity.cn 或 Unity Connect App 搜索关键词“PBR技术” 就可以找到这篇文章,还可以收藏起来,慢慢学习哦。

  想要你的创意被更多人看见吗? 快快加入Unity社区, 在社区内分享经验,你也有机会获得Unity官方推荐哦!

  博客发布入口:unity.cn/articles - “写文章"

  

  点击关键词

  获取更多信息

  Unity 产品服务:

  游戏领域 - | | | | | |

  XR领域 - |

  电影与娱乐领域 -

  工业领域(ATM、AEC) -

  Unity 教育 - |创想家

  Unity 人才联盟 -

  Unity 技术精讲

收藏 邀请

呵呵

点赞

鄙视

打酱油

震惊
此篇文章已有0人参与评论

请发表评论

全部评论

精彩阅读

网站地图-手机版- 虚拟99


本站内容来自互联网与用户分享,如有侵权请联系我们删除!  
联系QQ:363312702@qq.com  投诉举报邮箱:xuni99@qq.com 赣公网安备36112102000044号 赣ICP备17001544号
虚拟99所登载广告内容均为客户个人或企业单方意见及表达方式,广告实际内容与本站无关。 不允许任何形式的转载以及拷贝,违者必究!
温馨提示:虚拟99仅提供互联网信息平台发布、展示、储存服务,所有产品及展示信息均由注册用户自行发布,内容数据不代表本站立场,仅供参考阅读。
风险提醒:虚拟99对用户自主发布的信息真实性无法考究,涉及资金交易问题请谨慎!  虚拟99无法提供资金安全保障,请注意投资风险,提高警惕谨防诈骗!