在Unity 3D中,shader是何时编译的,在何时加载入显存中的?
2015-11-10 18:20
603 查看
在Unity 3D中,shader是何时编译的,在何时加载入显存中的?
是某一对象在实例化时,加载其相关的material与shader还是游戏开始时?添加评论
分享
按时间排序按投票排序
4 个回答
赞同9反对,不会显示你的姓名
![](https://oscdn.geek-share.com/Uploads/Images/Content/201511/ac85d903057c5ccad6012a3d0c87b170.png)
侯帅英,一个想站着把钱给挣了的游戏人
李委函、邓方、郝鹏程 等人赞同
Editor中:修改shader并保存时立即编译。
Runtime下,无论哪个平台,都是在进入场景时加载shader object内容到内存,但是首次实际调用渲染时才编译,编译完成之后会cache下来。
有两种优化方法:
1. 调用Shader.WarmupAllShaders(),自动编译该场景中用到的所有shader。该方法在Unity5中已经废弃。
2. 在项目设置的GraphicsSettings中,可以导出ShaderVariantCollection,并在Preloaded Shader中导入,这样的话就可以在载入场景时一并编译需要预加载的shader,这样的优化在移动平台上用得比较多。
具体见:
Unity - Manual: Optimizing Shader Load Time
发布于 2015-05-08 3
条评论 感谢
分享
收藏 • 没有帮助 •
举报
• 作者保留权利
赞同1
反对,不会显示你的姓名
![](https://oscdn.geek-share.com/Uploads/Images/Content/201605/5511d216af6dfd010e882ab38ab23ed3.jpg)
钱康来,会写点shader的小弱鸡
知乎用户 赞同
你在编辑器里,每次修改、保存的时候就会自动编译(unity是监视Asset文件改动的)
移动平台的话,感觉是载入场景的时候,按需编译、加载的,不过不是十分确定
Unity - Scripting API: 这个文档里有一些说明:Usually
graphics drivers do not actually prepare shaders until they are first needed. However when some object is first rendered with a previously unused shader, there can be a hiccup because the driver is compiling/optimizing the shader. This can be quite noticeable,
especially on mobile platforms.
编辑于 2015-05-08 添加评论 感谢
分享
收藏 • 没有帮助 •
举报
• 作者保留权利
赞同1
反对,不会显示你的姓名
![](https://oscdn.geek-share.com/Uploads/Images/Content/201611/8289973ed7d40ec04230ac66706bf73b.jpg)
十字傷,游戏程序员
A希亿 赞同
是在加载材质时後编译的
发布于 2015-05-07 添加评论 感谢
分享
收藏 • 没有帮助 •
举报
• 作者保留权利
赞同0
反对,不会显示你的姓名
![](https://oscdn.geek-share.com/Uploads/Images/Content/201611/8289973ed7d40ec04230ac66706bf73b.jpg)
知乎用户,核桃他爹/发现再不逗逼也就老了
编译时间不知道。
用于渲染的话私以为不存在【载入】这个词,在GPU开始做渲染的计算时,shader就是一段代码而已。
相关文章推荐
- Unity Optimizing Shader Load Time
- 游戏开发设计模式之状态模式 & 有限状态机 & c#委托事件(unity3d 示例实现)
- 不同Assembly中使用 BinaryFormatter 序列化的问题
- Unity3d中 Awake 和 Start的区别
- [Unity热更新]lua基础(二)
- unity残影效果的实现
- Unity3D研究院之深入理解Unity脚本的执行顺序(六十二)
- 【Unity Bug】System.Collections.Generic.ICollection`1.CopyTo 错误
- 干掉Unity3D
- Unity3D之物体跟随鼠标移动和旋转
- 关于unity截屏的方法
- 初学unity,关于解决有向匀速运动的问题
- Unity和虚幻的比较
- Unity和虚幻的比较
- 【Unity】自定义过场动画Splash Image
- Unity3D-Mecanim动画系统-MatchTarget()目标匹配
- 用Unity做游戏,你需要深入了解一下IL2CPP
- Unity's Life cycle
- Mesh Renderer详解
- Unity3D中MeshRenderer的使用