如何确定unity shader中pass的执行顺序
来源:互联网 发布:chromium linux 64 编辑:程序博客网 时间:2024/04/27 13:36
这周看了《unity3D Shader Lab开发实战详解》的六章内容,让我对unity SubShader中的pass执行规律有了更进一步的了解。
这是我之前的疑问:
SubShader里Pass是以怎样的顺序来执行的?可以灵活定制吗?
unity shader中的pass的执行顺序是依据pass在shader中出现的先后顺序来确定的。
然后通过配制每个pass的LightMode Tag,来选择具体执行哪个pass。
以surface shader举例说明:
surface shader展开来后,可以看到如下pass。
pass{ Tags{"LightMode"="Vertex"} }
pass{ Tags{"LightMode"="ForwardBass"} }
pass{ Tags{"LightMode"="Deferred"} }
这三个pass是相互排斥的,永远只可能执行其中一个pass。
那unity是根据什么来选择执行哪个pass的呢?
unity通过摄像机下的Rendering path来选择相应的pass。
Rendering path=Legacy Vertex Lit时,选择"LightMode"="Vertex"的pass。ForwardBass与Deferred将不会被执行。
Rendering path= ForwardBass时,优先选择"LightMode"="ForwardBass"的pass,ForwardBass不存在时,选择Vertex。Deferred将不会被执行。
Rendering path= Deferred时,优先选择"LightMode"="Deferred"的pass,Deferred不存在时,选择ForwardBass,ForwardBass不存在时选择Vertex。
以上就是passt选择的规律。
还有一些别的pass,如"LightMode"="ShadowCaster"依赖的就不是摄像机的Rendering path,而是Mesh Render里的Cast Shadows了,这里就不一一举例了。
0 0
- 如何确定unity shader中pass的执行顺序
- 多个Filter的执行顺序是如何确定
- Unity之Shader Pass 的通用指令 LOD - 五
- Unity中脚本执行顺序
- Unity脚本的执行顺序
- Unity脚本的执行顺序
- Unity中初始化和销毁的执行顺序
- unity中同一个物体上挂载多个脚本的执行顺序
- Unity之Shader Pass 通道显示贴图的几种方法- 六
- 【猫猫的Unity Shader之旅】之双面材质和多Pass渲染
- Unity Shader 学习笔记 (四) Pass里可用的渲染没置命令
- Unity中各脚本执行顺序
- RBO如何确定使用索引的顺序
- Shader - Pass
- unity执行顺序问题(如何再次执行start方法)
- 在unity中建立最小的shader(Minimal Shader)
- 【Shader】Unity开发shader中要用到的内置状态变量
- unity中shader的Cutout问题
- PHP操作MongoDB
- 【Hibernate框架】关联映射(多对多关联映射)
- c++成员函数之static和const作用
- 创建YUM本地源
- 【YY手机】用AVR单片机制作手机系列教程-制作篇
- 如何确定unity shader中pass的执行顺序
- 如何配置android开发环境
- Node JS(二) 获取网页源代码
- Repeater02-Repeater按钮的ItemCommand事件
- WebView控件之WebSettings各种配置方法源码总结
- win10 python35 安装 opencv
- JAVA多线程
- LightOJ - 1265 Island of Survival 脑洞 概率DP 1月3日
- Activiti 中的 Start event(启动事件元素)介绍