我是靠谱客的博主 美好马里奥,最近开发中收集的这篇文章主要介绍UE3采用多进程编译Shader,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在UE3中使用UE3ShaderCompileWorker.exe来辅助编译Shader。引擎运行后会检查是否需要编译Shader,这时候会创建 多个编译线程,这些线程都可以去Job队列中取出需要处理的Job,通过这些Job对象就可以启动UE3ShaderCompileWorker.exe 来编译Shader,IO其实还是在引擎所在程序的线程中创建临时输入文件WorkerInput.bin,这其中就包含了Job相关的信息。在 UE3ShaderCompileWorker.exe中会读取这些数据,然后将结果输出到临时文件WorkerOutput.bin中。在此期间,引擎 所在进程的编译线程会每隔一段时间检查是否已经编译完成。

      为什么要这么做?

      因为多线程直接使用API编译Shader会很慢,还可能产生错误。比如说在编译线程中调用DX的API D3DXCompileShader去编译。为了回避这个问题,所以UE3专门创建了这个UE3ShaderCompileWorker.exe来帮助编 译。据称使用UE3ShaderCompileWorker.exe这种多进程的编译方式,在多核电脑上,编译一些大的材质,比如Default材质,与 其相关的Shader将近1000个,速度会将近快7倍。一些小的材质,相关Shader大约10个左右也能快4倍的样子。对于一些微型的材质则不会有速 度上的提升。

      UE3ShaderCompileWorker.exe工程代码位于DevelopmentToolsShaderCompileWorker ShaderCompileWorker.sln。其实将这其中的代码放到编译线程中就是多线程编译了。

最后

以上就是美好马里奥为你收集整理的UE3采用多进程编译Shader的全部内容,希望文章能够帮你解决UE3采用多进程编译Shader所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部