5

记一记Unity3D关于渲染那些基础东西

 3 years ago
source link: https://zhuanlan.zhihu.com/p/64860469
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

记一记Unity3D关于渲染那些基础东西

爱好玩游戏!huozk.com

游戏世界的美丽源自于渲染…

1、何为渲染?

所有我们能看到的东西都是需要进行渲染的。比如:天空盒,场景模型,角色模型,特效……

如果没有渲染,游戏世界将是一片黑暗。

2、各版本渲染区别

  • Unity4.X:渲染使用的事 AutoDesk 的 Beast 技术;
  • Unity5.X:渲染使用的事 Enlighten 引擎;
  • Unity5.6后:渲染使用的还是 Enlighten 引擎,但是有了升级;

3、移动端渲染

移动端的模型大多是使用两张类型的贴图作为渲染的素材:一张是漫反射贴图,一张是法线贴图。

4、PC 主机端渲染

PC 主机端(国外的大型单机游戏)大多是真实的模拟现实中的效果来进行渲染的,使用了很多种类型的贴图(Unity 的标准着色器中有支持10种贴图类型)。

  • PBR:基于物理规则的渲染方式。
  • GI:全局光照,用于模拟光的互动和反弹等复杂行为的算法。

1、标准着色器

Unity5.X 后提供了两个标准着色器(Shader)。使用这两个Shader我们可以实现大部分物体的渲染。

2、Lighting面板

主要对场景中的灯光渲染进行统一的设置。场景灯光分:实时和烘焙。

3、反射探头

主要用于实现模型的反射。

4、灯光探头组

主要用于在烘焙后的场景中模型实时光的效果。

Shader

1、Shader 的重要性

shader 好比是画家手中的画笔和颜料。如果画家没有了这两样东西后,根本就没办法画出好的作品。

在 Unity 中所有看到的一切,都离不开 Shader 的渲染,无论是天空盒,场景,角色模型,特效;这些我们之所以能在游戏中看到它们,它们能显示出一个五彩缤纷的虚拟世界,其中都是 Shader 在起作用。

2、Shader 的学习步骤

  • Unity 内置 Shader 的使用;
  • 3D 数学基础学习;
  • 渲染管线的渲染步骤;
  • 在 Unity 内开发满足自己需求的 Shader。

天空盒与内置 Shader 介绍

1、颜色空间

两种颜色空间:

  • Gamma 空间:移动端,页游,HoloLens,性能比较低的硬件设备。
  • Linear 空间:PC 端,主机端。

Unity 默认的颜色空间(Color Space)设置选项是选择为 Gamma,但是如果我们使用 PBR 渲染流程(标准着色器)就必须将颜色空间修改为 Linear。

修改颜色空间:

Edit --> Project Settings --> Player --> Other Settings -->Rendering -->Color Space --> Linear

2、天空盒

天空盒的作用

用于渲染显示天空和周围的环境;作为场景中的辅助光源;

制作天空盒

导入“HDR 环境贴图”素材图片;将 HDR 贴图的 “Texture Shape” 修改为 Cube;创建一个材质球,材质球选择 Shader 为 Skybox/Cubemap;将贴图素材赋予给材质球。

使用天空盒

Lighting 面板上的 Skybox 选项设置要使用的天空盒。直接将天空盒拖拽到场景中。

天空盒材质参数调整

  • Exposure:调整贴图的亮度。
  • Rotation:旋转贴图,很多时候贴图上有太阳,我们可以通过旋转让贴图上的太阳和场景里面的方向光重叠。

内置 Shader

Unity 中内置的 Shader 分可以分为三组,他们具备不同的作用和使用场合:

  1. 1.Unity5.x 新 Shader
  2. 2.Unity5.x 标准 Shader(用于 PBR 渲染)
  3. 3.Unity4.x 旧版 Shader(用于支持旧版项目的渲染)

标准Shader之四大渲染模式

1、四大渲染模式

  1. Opaque(不透明):用于渲染所有不透明的物体,这类物体在场景中是最多的。60% 的比例。
  2. Cutout(镂空):用于渲染有镂空的物体,这类物体在场景中并不太多。5% 的比例。
  3. Fade(隐现):用于渲染实现物体的渐隐和渐现。这类物体在场景中也不多。5% 的比例。
  4. Transparent(透明):用于渲染有透明效果的物体,这类物体在场景中也比较多。30% 的比例。

2、标准 Shader 功能布局

  1. 渲染模式区域:当创建完一个材质球,并设置 Shader 为标准着色器后,第一步就需要根据这个材质球要渲染的物体的特性(不透明物体,透明物体)设置不同的渲染模式。
  2. 主贴图区域:用于设置 Shader 的主要贴图,使用这个区域的贴图和设置项控制模型最终的渲染效果。80% 的模型,我们只需要设置这个位置的贴图就够用了。
  3. 次贴图区域:用于设置 Shader 的次要贴图,用于给模型增加细节。一般不会用到这个位置的设置项。但是一些需要近距离观察的模型,设置完上方的主贴图,再设置下方的次要贴图,能增加模型的精致度。

标准Shader之十种贴图类型

1、标准 Shader 诞生

Unity4.x 阶段,Unity 老被拿来和 UrealEngine(虚幻)进行对比,得到的结论就是 Unity 是“渣画质”,Ureal 是“高大上”。但是相对而言 Unity 易于学习,开发速度快,跨平台多,就业岗位多,却也是 Ureal 比不了的。

Unity4.x 阶段的画面渲染使用的是 AutoDesk 的 Beast 技术;Unity5.x阶段彻底放弃了 Beast 技术,改为使用和 UrealEngine 一样的一款第三方渲染引擎 Enlighten 来进行画面渲染。

Unity 为了配合这个新的渲染引擎,推出了“标准 Shader”。

理论上,我们可以使用 Unity5 制作出和 UrealEngine 差不多的画面效果。

2、标准 Shader 的优点

使用一个 Shader 完成大部分场景模型的渲染;无论是人物角色,金属,塑料,皮革,布料,玻璃,建筑……;都可以使用一个标准 Shader 来完成渲染。

3、标准 Shader 贴图

标准 Shader 使用的是 PBR 渲染,基于现实物理效果的渲染表现形式。一个模型能不能使用标准 Shader 来进行渲染,是在做这个模型的贴图的时候决定的。有没有按照 PBR 贴图的制作规范和模式来制作,决定了该模型是否可以使用标准 Shader 渲染。

常用贴图介绍

1、两种标准 Shader

Unity5.x 中的标准 Shader 有两个:

  • Standard:标准着色器
  • Standard(Specular setup):标准着色器(镜面)

2、Albedo (反射贴图):用于体现模型的纹理,颜色。反射贴图本身是一张颜色与纹理的贴图。该选项有贴图属性,也有颜色属性。两个属性可以单独使用,也可以组合使用;

  • 当颜色属性为纯白色时,则不影响贴图的效果;
  • 当颜色属性为其他颜色时,则叠加贴图效果。

3、Metallic (金属贴图):用于体现模型的金属高光反射;金属贴图本身是一张灰白图,越白的地方,金属感越强烈,越黑的地方金属感越低。

Smoothness(平滑度):介于 0 和 1 之间的一个值,越小,平滑度越低,越大,平滑度越高。

4、Normal Map (法线贴图):用于增加模型的细节;法线贴图本身是一张蓝色的凹凸图。

5、Occlusion (AO 贴图):AO 贴图本身是一张灰白图。主要用于改善阴影,给场景(模型)更多的深度,有助于更好的表现模型的细节。

6、Specular(镜面贴图):类似于“Metallic 金属度”贴图。PBR 贴图的制作方式不同,最终关于“金属部分”的表现,出现了两种类型的贴图,Metallic 和 Specular。

7、Detail Albedo x2(细节反照贴图):作用是对主 Albedo 贴图的一个细节深入表现。

8、Normal Map x2(细节法线贴图):作用是对主 Normal Map 贴图的一个细节深入表现。

9、Detail Mask(细节遮罩贴图):这个贴图是配合“次贴图区域”中的 Detail Albedo,Normal Map 两张贴图配合使用的,次贴图区域中的这两张很多是平铺的贴图,效果会作用于模型的全部,我们使用 Detail Mask 将一些不需要被“次贴图”影响的部分独立出来。

10、Emission(自发光贴图):让模型自发光。Unity 里面能够作为光源存在的除了灯光组件和天空盒,标准 Shader 里面的 Emission 贴图也是可以作为一种光源的。

11、Height Map(视差贴图):比Normal Map更有立体感的一种贴图方式;主要用于地面,建筑等效果的体现。

12、PBR效果

  1. 3dMax/Maya 制作模型白模
  2. Substance Painter 制作PBR贴图
  3. Unity5.X 进行合成使用

PBR 质感表现

金属材质

1、金属度的重要性

在 Unity5.x 中,金属度是相对而言是最关键的一个可调整参数。我们在 Unity 中模拟现实生活中的东西,很多时候都需要控制它们的金属度。

2、代码修改 Shader 参数

Shader 源代码下载:

Unity 每次版本更新的时候,不单单会更新 Unity,配套的资源也是会一块更新的,比如版本配套的 Shader 源代码。[见图]

相关 API:

获取 Shader 中参数的值:

material.GetFloat("参数名"); //获取小数类型值
material.GetColor("参数名"); //获取颜色类型值;  
material.GetTexture("参数名"); //获取贴图类型值;

修改 Shadder 中参数的值:

material.SetFloat("参数名",值); //设置小数类型值;  
material.SetColor("参数名",颜色值); //设置颜色类型值; 
material.SetTexture("参数名",贴图); //设置贴图类型值;

3、金属度总结

两个参数:

Metallic 有两个参数,贴图和滑块条,滑块条控制的参数是 0~1。

金属度贴图是一张黑白图,就是用这些黑到白的颜色,存储 0~1 相关的信息值。

滑块条是调整的整体,调整的时候,整个模型都是统一的一种效果;

贴图则可以分区域控制金属度的高与低,使得模型金属效果更有层次。

玻璃质感

两个参数:Albedo 有两个参数,贴图和颜色面板,颜色面板里面的 Alpha 通道是 0~255;Albedo 贴图是一张纯色纹理图,贴图是可以存 Alpha 通道的;

颜色面板里面的 Alpha 通道,调整的时候,整个模型都是统一的一种效果;贴图则可以分区域控制透明度的高与低,使得模型透明效果更有层次。

画面增强之后期屏幕渲染特效

后期屏幕渲染特效

1、概念介绍

后期屏幕渲染特效,也叫做摄像机特效。

后期屏幕渲染特效是我们游戏画面后期处理时使用的特效,是作用于游戏场景中的摄像机游戏物体上的。

比如现实生活中摄影师拍照:

  1. 人物角色的化妆就好比我们在 Unity 中用 Shader 材质球美化模型;
  2. 拍照时各种辅助的灯光好比 Unity 中的灯光系统,营造氛围;
  3. 拍照完毕后,后期还需要用 PS 制作修改一些地方,这一步的操作,在我们的游戏开发过程中对应的就是“后期屏幕渲染特效”。

2、ImageEffects

ImageEffects 介绍:ImageEffects 是 Unity 中附带的资源包之一,资源包存放了大量的摄像机特效,摄像机特效相关的脚本只能挂载到摄像机上进行使用。

资源包导入步骤如下:

Project 面板右键 –> Import Package –> Effects

注意事项:

  1. 摄像机特效资源包导入后,Component 最后一项会出现 “Image Effects” 选项,通过这个菜单,可以给选中的摄像机游戏物体添加相应的特效。
  2. 这个摄像机特效资源包中所有的特效,分成九大类[见图],30 多个特效脚本。
  3. 摄像机特效是允许效果叠加的,也就是说我们可以在摄像机上合理的组合使用多个后期屏幕渲染特效。
  4. 另外 Unity 的资源商店里也有大量的第三方后期屏幕渲染特效资源。

3、场景美化案例

Antialiasing(抗锯齿特效)

位置:Image Effects –> Other –> Antialiasing

电脑显卡渲染出来的 3D 模型物体,物体的边缘会出现锯齿,影响视觉体验。可以使用“抗锯齿特效”平衡这些锯齿。

Technique:抗锯齿算法,这里有七种类型的算法可供选择使用。

Bloom(泛光特效)

位置:Image Effects –> Bloom and Glow –> Bloom

泛光是一种增强版辉光,光晕效果。

  • Mode:模式,基础模式和复杂模式。
  • Threshold:阈值,控制泛光的范围。

Screen Space Ambient Obscurance(屏幕空间环境 AO 效果)

位置:Image Effects –> Rendering –> Screen Space AO

可以实时模拟场景中的环境遮挡效果。

Noise And Scratches(噪音和划痕特效)

位置:Image Effects –> Noise –> Noise and Scratches

给场景效果添加噪点和划痕,可以用于模拟老电影的画面效果。

Unity5.6.0 新版渲染功能介绍

标准 Shader 更新

Emission 参数

  • 5.5.1 版:Emission 贴图的的属性功能是直接展现在面板上的;
  • 5.6.0 版:Emission 贴图需要勾选“复选框”才可以展现相关属性。

Advanced Options 区域:5.6.0 比 5.5.1 新增了一个 Advanced Options(高级选项)区域。

Lighting 面板更新

版本更新对比

  • 环境光区域:新版和旧版是一致的,未发生改变。
  • 实时渲染区域:旧版有渲染分辨率和 CPU 使用量的参数,新版本去掉了这两个参数。
  • 烘焙渲染区域:新版本将烘焙(光照贴图方式)的的参数单独提取成了一个新的区域,Lightmapping Settings。整体参数和旧版几乎一致。

Light Explorer 新功能

Light Explorer (灯光管理器):给场景中的灯光,反射探头,灯光探头组,静态自发光物体提供了一个统一的控制和管理的面板。

-EOF-

关注微信公众号:huozk-com,查看更多关于技术、游戏、折腾的内容。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK