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文件

Unity 渲染路径理解相关推荐

  1. Unity 性能优化:降同屏Tris、动态合批降DC、遮罩剔除、渲染路径

    前言: 元宵节快到了,想要做一个上千盏孔明灯的场景,由于不懂建模,于是在Asset Story找了一套模型,结果找的灯笼模型精细度超标,当在游戏场景中实例化出四百个孔明灯时,帧率只有十帧左右 为了使得 ...

  2. Unity Shader入门精要 | 渲染路径、光源类型和阴影

    目录 渲染路径 前向渲染 (Forward Rendering) 顶点照明渲染 (Vertex Lit Rendering) 延迟渲染 (Deferred Rendering) 光源类型 平行光 (D ...

  3. 如何在unity的前向渲染路径ForwardBase中同时使用逐顶点和逐像素光源

    前言:问题来自于<Unity Shader入门精要>中,第195页.书中给出了如何在forwardbase和forwardadd中计算逐像素光照,并没有给出如何同时进行逐顶点的光照,因此当 ...

  4. web性能优化——关键渲染路径(上)

    文章同步更新于 Github blog 从收到 HTML.CSS 和 JavaScript 字节到对其进行必需的处理,从而将它们转变成渲染的像素这一过程中有一些中间步骤,优化性能其实就是了解这些步骤中 ...

  5. unity渲染层级关系小结

    http://blog.csdn.net/meegomeego/article/details/42060389 最近连续遇到了几个绘制图像之间相互遮挡关系不正确的问题,网上查找的信息比较凌乱,所以这 ...

  6. js修改背景图片路径_前端面试题————关键渲染路径(Critical Rendering Path)...

    前端面试,总是会被问到这样一类问题: 为什么最好把 CSS 的<link>标签放在<head></head>之间?为什么最好把 JS 的<script> ...

  7. 直播笔记 | Unity中路径的疑难杂症剖析

    本文首发于洪流学堂微信公众号. 洪流学堂,学Unity快人几步 你好,我是郑洪智,你的技术探路者. 昨天我们直播剖析了Unity中路径的疑难杂症,以下是直播内容精华部分笔记. 完整录播:https:/ ...

  8. 灯管渲染路径 ForwardBase与ForwardAdd

    渲染路径--Forward渲染路径 一渲染细节: 根据影响物体的光源不同,正向渲染用单个或者多个通道来渲染物体: 在正向渲染中光源本身也会根据他们的设置和强度受到不同的对待. 实现细节: 渲染通道:F ...

  9. 学习笔记07渲染路径+阴影

    写的超牛逼! unity shader base pass and additional pass - rexzhao - 博客园 (cnblogs.com) 总的来说就是光照计算方式有很多,有的可以 ...

最新文章

  1. 如何在一个空的datafame中append新的dataframe
  2. 百度前端技术学院2017学习总结
  3. not in SQL语句转化为 not exists
  4. this ts 方法获取_vue+typescript项目中用this.$refs和原生方法获取的dom有什么区别
  5. [SHOI2012]魔法树 链剖
  6. Qt_QDir_常见的操作
  7. 终极解码播放mkv声音小的解决
  8. 【Web crawler】simulated DFS web crawler
  9. ArcGIS制图表达Representation实战篇2-河流渐变与符号旋转
  10. for循环如果先--_97-for循环嵌套 输出反倒直角三角形
  11. 三维重建之环境搭建1-VS2017安装
  12. shl归纳推理测试题库_逻辑推理测试题及答案-shl逻辑推理测试题目及答案
  13. 布局java ee企业级开发_布局JavaEE企业级开发:寻觅框架和开发模式的完美整合...
  14. jQuery 中的 Deferred 和 Promises
  15. 【报告分享】2021年中国智能运动健身行业研究报告-艾瑞咨询(附下载)
  16. js设置延时加载事件
  17. c语言——数字特征值题
  18. HTMLCSS实现经典登录注册页面
  19. 前端物联网的起点 node-red 项目的开启
  20. js大数字类型(超过16位)失真问题

热门文章

  1. 在婚礼上(一个成年男人)
  2. IDEA搭建Vue项目
  3. COM 80040154报错
  4. 1291亿美元,当Zoom市值超过了IBM之后
  5. tracert路由跟踪命令分析判断
  6. Accounts(简介)
  7. 作为产品经理,你目前薪资多少呢?
  8. 【MQTT学习1】MQTT协议的基本了解
  9. mysql 日期的前一天_mysql当前日期前一天
  10. UDP协议 sendto 和 recvfrom 浅析与示例