Unity's Rendering Pipeline
来源:互联网 发布:网络机顶盒被禁用了吗 编辑:程序博客网 时间:2024/05/21 18:31
Unity中的Render Path影响光源和阴影的处理。光源如何应用以及Shader中的哪个Passes被使用依赖于哪个Rendering Path被使用。Shader中的每一个Pass 通过Pass的Tags标签和他的光源类型相互通信。
Unity支持3中渲染方式:
(1)Vertex Lit Rendering path (定义了Vertex,VertexLMRGBM以及VertexLM 3种Pass)
(2)Forward Rendering path(定义了ForwordBase和FowordAdd 2种Passes)
(3)Deferred Rendering path(定义了PrepareBase和PrepareFinal 2种Passes)
(一)Vertex Rendering Path(针对所有的PC/Mac平台,OpenGLES1.1和2.0设备)
速度最快,硬件支持最广(console不支持).所有的光照基于顶点级别,这种渲染方式不支持逐像素的效果.例如:shadows,normal mapping,light cookies,highly detailed specular highlights是不支持的.
Vertex Pass用于non-lightmapped objects,所有光源一次渲染,使用OpenGL和D3D中固定管线的光照模型(Blinn-Phong光照模型)
VertexLMRGBM用于lightmapped objects,lightmaps使用RGBM压缩(针对大多数桌面设备和console),非实时光照,pass将纹理和lightmap相组合。
VertexLMM针对lightmapped objects,lightmap使用2次LDR压缩(针对mobile和老的PC设备),非实时光源,pass将纹理和lightmap相组合。
(二)Forward Rendering path(针对ShaderModel 2.0+的PC/MAC平台,OpenGLES2.0,以及PS3,360)
对每个物体执行一次或者多次Pass的渲染,具体依赖于照射于物体的光源。
最亮的几个光源使用per-pixel模式渲染,然后,最多4个点光源以per-vertex方式渲染,其余的光源以Spherical Harmonics方式渲染。
一个光源是否是per-pixel的依赖于以下几条:
1)光源设置的Render Mode被设置为Not Important的总是per-vertex或者SH模式渲染
2)最亮的平行光源总是以per-pixel模式渲染。
3)光源设置为Important的总是以per-pixel方式渲染
4)如果以上符合条件的per-pixel光源的数量小于项目Quality Setting中的pixel Light Count的数量,更多的光源会以per-pixel模式渲染,为了减少整体亮度。
渲染的顺序如下:
1)Base Pass 针对一个Per-pixel的平行光源和所有per-pixel以及SH的光源(可以有阴影)
2)剩下的其他per-pixel光源,在Additional Pass中渲染,每个Pass渲染一个光源。(不会产生阴影)
*因此Foward Rendering 只支持一个带阴影的平行光源。
- Unity's Rendering Pipeline
- Unity's Rendering Pipeline
- Unity3D翻译——Unity's Rendering Pipeline
- Android's 2D Canvas Rendering Pipeline
- Android's 2D Canvas Rendering Pipeline
- Unity渲染管线细节(Rendering Pipeline Details)
- DirectX Rendering Pipeline
- DirectX Rendering Pipeline
- OpenGL Rendering Pipeline
- 3 rendering pipeline
- OpenGL Rendering Pipeline
- The Rendering Pipeline
- OpenGL Rendering Pipeline
- chromium rendering pipeline
- DirectX Rendering Pipeline
- CH2 The Graphics Rendering Pipeline —— Real-time Rendering
- Real-Time Rendering (1) - 渲染管线(Rendering Pipeline)
- Real-Time Rendering-第二章 The Graphics Rendering Pipeline
- spring02
- hadoop MapReduce join
- RTFM
- intent-filter 之 data (保存)
- QWidget 总结 (转载)
- Unity's Rendering Pipeline
- 《swift 快速编程语言》系列:Welcome to Swift
- 自定义qq空间分享按钮
- 来自苹果的编程语言——Swift简介
- 利用Response.Flush和iframe实现”服务器推”技术
- 《Python核心编程》第9章 文件和输入输出 练习
- Handler的使用
- 黑马程序员--Java集合
- Java问答:终极父类(2)—下篇