IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> Unity 渲染路径理解 -> 正文阅读

[游戏开发]Unity 渲染路径理解

Unity 常用的渲染路径

备注

前向渲染

标签:

{"LightMode" = "ForwardBase"}

原理:

每进行一次前向渲染, 都需要渲染该对象的渲染图元,并计算两个缓冲区的信息。深度缓冲区, 颜色缓冲区。

流程:

深度缓冲区判断判断片元是否可见

如果可见:更新颜色缓冲区的颜色值

不可见:说明片元不可见

每个逐像素光源,都要进行上面的一次完整渲染流程。

缺点:

有N个物体, M个光源, 那么需要M*N个pass

逐像素:Fragment处理

逐顶点:Vertex 处理

逐像素处理的光源:平行光和被标记为Important的光源

逐顶点处理的光源:Not Important 的光源

备注: 逐像素光源小于QualitySetting中的逐像素光源数量,会有更多的光源进行逐像素处理

BassPass:

处理逐像素的平行光, 所有的逐顶点光源和SH

可实现的效果:

1 光照纹理

2 环境光

3 自发光

4 阴影【平行光的】

Additional Pass:

其他影响该物体的逐像素光源,一个光源执行一次pass

可实现的效果

默认情况不支持阴影,可使用 #pragma multi_compile_fwadd_fullshadows

需要注意的点:

1 编译指令:#pragma multi_compile _fwdbase 用于unity为相应类型的pass生成所需要的shader变种,用于处理不同条件下的渲染逻辑

2 Bass Pass可以处理光照纹理 lightmap

3 Bass Pass中渲染的平行光默认支持阴影。 Additional Pass 默认是没有阴影效果的,可以使用#pragma multi_compile_fwadd_fullshadows 编译指令。 unity内部会生成更多的shader变种

4 环境光和自发光,是在BassPass中计算的,只会计算一次。 如果在Additional Pass中计算的话, 就会计算多次,产生叠加的效果【并不是所需要的】

5 Additional Pass开启了混合模式,可以和上一次光照结果在帧缓存中叠加。因为 我们希望多个光源的效果是叠加上去的。 使用 Blend One One

6 前向渲染中,通常会定义一个BassPass(也可以定义多次),以及一个Additional Pass?

延迟渲染

会使用额外的缓冲区 G-buffer (Geometry)

原理:会有两个pass

第一个pass : 深度处理, 把可见的片元存储在G-buffer中,不进行光照处理

第二个pass:根据G-buffer中的信息,进行光照计算处理

优点:

和光源个数无关,通常就只有两个pass

效率不会依赖于场景复杂程度,和屏幕空间大小有关,缓冲区的信息可以理解成一张2D图像

缺点:

1 不支持真正的抗锯齿 ( anti-aliasing)?

2 不能处理半透明物体

3 对显卡有要求

1 第一个pass 用于渲染G缓冲。这个pass中,物体的漫反射颜色, 高光反射颜色,平滑度,法线 , 自发光和深度等信息渲染到屏幕空间的G缓冲区中。 对于每个物体来说 这个pass仅执行一次

2 第二个pass ,用于计算真正的光照模型。 利用上一个pass中的渲染数据来计算最终的光照颜色,在存储到帧缓存中

第二个pass计算光照时,默认使用unity内置的standard光照模型。如果要使用其他的, 需要替换原有的Internal -? DeferredShading.shader文件?

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2021-11-22 12:40:53  更:2021-11-22 12:41:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 23:35:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码