Unity渲染基础

渲染

1.何为渲染?算法

全部咱们能看到的东西都是须要进行渲染的。
好比:天空盒,场景模型,角色模型,特效......
若是没有渲染,游戏世界将是一片黑暗。app

2.各版本渲染区别布局

Unity4.X:渲染使用的事AutoDesk的Beast技术;
Unity5.X:渲染使用的事Enlighten引擎;
Unity5.6后:渲染使用的仍是Enlighten引擎,可是有了升级;性能

3.移动端渲染学习

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

4.PC主机端渲染3d

PC主机端(国外的大型单机游戏)大可能是真实的模拟现实中的效果来进行渲染的,使用了不少种类型的贴图(Unity的标准着色器中有支持10种贴图类型)。
PBR:基于物理规则的渲染方式。
GI:全局光照,用于模拟光的互动和反弹等复杂行为的算法。code

核心要点

1.标准着色器orm

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

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.Unity5.x 新 Shader
2.Unity5.x 标准 Shader(用于 PBR 渲染)
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 诞生

1.背景了解

  • 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 渲染。

2.经常使用贴图介绍

1.两种标准 Shader

Unity5.x 中的标准 Shader 有两个:
Standard:标准着色器
Standard(Specular setup):标准着色器(镜面)

2.Albedo 贴图

Albedo:反照率[贴图];用于体现模型的纹理,颜色。

反照率贴图自己是一张颜色与纹理的贴图。

该选项有贴图属性,也有颜色属性。

两个属性能够单独使用,也能够组合使用;

当颜色属性为纯白色时,则不影响贴图的效果;

当颜色属性为其余颜色时,则叠加贴图效果。

3.Metallic 贴图

金属度[贴图];用于体现模型的金属高光反射;

金属度贴图自己是一张灰白图,越白的地方,金属度越强烈,越黑的地方金属度越低。

Smoothness:平滑度

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

4.Normal Map 贴图

Normal Map:法线贴图;用于增长模型的细节;

法线贴图自己是一张蓝色的凹凸图。

5.Occlusion 贴图

Occlusion:AO 贴图;

AO 贴图自己是一张灰白图。

主要用于改善阴影,给场景(模型)更多的深度,有助于更好的表现模型的细节。

6.Specular

Specular:镜面[贴图],相似于“Metallic 金属度”贴图。

PBR 贴图的制做方式不一样,最终关于“金属部分”的表现,出现了两种类型的贴图,Metallic 和 Specular。

7.Detail Albedo x2

Detail Albedo x2:细节反照率[贴图];

做用是对主 Albedo 贴图的一个细节深刻表现;

8.Normal Map x2

Normal Map x2:细节法线[贴图];

做用是对主 Normal Map 贴图的一个细节深刻表现;

9.Detail Mask

Detail Mask:细节遮罩[贴图];

这个贴图是配合“次贴图区域”中的 Detail Albedo,Normal Map 两张贴图配合使用的,次贴图区域中的这两张不少是平铺的贴图,效果会做用于模型的所有,咱们使用 Detail Mask 将一些不须要被“次贴图”影响的部分独立出来。

10.Emission贴图

Emission:自发光[贴图],让模型自发光;

Unity里面可以做为光源存在的除了灯光组件和天空盒,标准Shader里面的Emission贴图也是能够做为一种光源的。

11.Height Map贴图

Height Map:视差[贴图],比Normal Map更有立体感的一种贴图方式;

主要用于地面,建筑等效果的体现。

PBR效果

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

PBR质感表现之金属材质

1.金属度的重要性

在 Unity5.x 中,金属度是相对而言是最关键的一个可调整参数。

咱们在 Unity 中模拟现实生活中的东西,不少时候都须要控制它们的金属度。

2.代码修改 Shader 参数

1.Shader 源代码下载

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

2.相关 API

获取 Shader 中参数的值:

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

修改 Shadder 中参数的值:

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

2.金属度总结

1.两个参数

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

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

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

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

PBR 质感表现之玻璃质感

两个参数

Albedo 有两个参数,贴图和颜色面板,颜色面板里面的 Alpha 通道是 0~255。

Albedo 贴图是一张纯色纹理图,贴图是能够存 Alpha 通道的。

颜色面板里面的 Alpha 通道,调整的时候,整个模型都是统一的一种效果;

贴图则能够分区域控制透明度的高与低,使得模型透明效果更有层次。

画面加强以后期屏幕渲染特效

1.后期屏幕渲染特效

1.概念介绍

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

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

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

①人物角色的化妆就比如咱们在 Unity 中用 Shader 材质球美化模型;

②拍照时各类辅助的灯光比如 Unity 中的灯光系统,营造氛围;

③拍照完毕后,后期还须要用 PS 制做修改一些地方,这一步的操做,在咱们的游戏开发过程当中对应的就是“后期屏幕渲染特效”。

2.ImageEffects

1.ImageEffects 介绍

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

资源包导入步骤以下:

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

2.注意事项

①摄像机特效资源包导入后,Component 最后一项会出现“Image Effects”选项,经过这个菜单,能够给选中的摄像机游戏物体添加相应的特效。

②这个摄像机特效资源包中全部的特效,分红九大类[见图],30 多个特效脚本。

③摄像机特效是容许效果叠加的,也就是说咱们能够在摄像机上合理的组合使用多个后期屏幕渲染特效。

④另外 Unity 的资源商店里也有大量的第三方后期屏幕渲染特效资源。

3.场景美化案例

1.Antialiasing[抗锯齿特效]

位置:Image Effects --> Other --> Antialiasing

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

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

2.Bloom[泛光特效]

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

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

Mode:模式,基础模式和复杂模式。

Threshold:阈值,控制泛光的范围。

3.Screen Space Ambient Obscurance[屏幕空间环境 AO 效果]

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

能够实时模拟场景中的环境遮挡效果。

4.Noise And Scratches[噪音和划痕特效]

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

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

Unity5.6.0 新版渲染功能介绍

1.标准 Shader 更新

1.Emission 参数

5.5.1 版:Emission 贴图的的属性功能是直接展示在面板上的;

5.6.0 版:Emission 贴图须要勾选“复选框”才能够展示相关属性。

2.Advanced Options 区域

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

2.Lighting 面板更新

1.版本更新对比

环境光区域:新版和旧版是一致的,未发生改变。

实时渲染区域:旧版有渲染分辨率和 CPU 使用量的参数,新版本去掉了这两个参数。

烘焙渲染区域:新版本将烘焙(光照贴图方式)的的参数单独提取成了一个新的区域,Lightmapping Settings。总体参数和旧版几乎一致。

3.Light Explorer 新功能

1.Light Explorer [灯光管理器]

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