tutorials 0

在GPU避免分支的方法

在GPU避免分支的方法Unity TechnologiesOrigianl Authored by Brandon Fogerty(XR Graphics Engineer at Unity Technologies.) Additional Organized by JP.Lee(李正彪)leegoonz@163.com概要这边来稿文章中,希望了解如何编写GPU着色器友好型代码,以避免和分支相关的性能费用。“分支”有着什么意义?使用明确的 if / then随时都可以产生分支。编译器遇到条件会作出命令。GPU可去的地方有两处。因此需要决定要使用哪种代码路径。以下示例展示了在汇编GPU里面运行的示例。运算变量设置为幻数7,则添加该数字。否则的话要减掉。 为什么要避免分支?为了增加CPU使用率,大多数计算机都尝试在管线上执行尽可能多的任务。汇编指令按顺序执行,CPU会尝试在尽可能多的CPU内核上执行尽可能多的指令。举个简单的例子。想象一下,在Twilight Zone内,我们就是世界上最高效的程序员! 用两行代码写了电子游戏! CPU会尽可能在每一个CPU内核上各执行一个,共计两个光荣的指令。这是计算机能够更有效的运行代码。 但是在分支时,计算机可能会花时间准备未运行的代码结果。从结论上看处理器时间被浪费,影响了游戏或应用程序的应答能力。CPU 侧分枝误诊通常会导致周期遗漏超过40次。– Charles Sanglimsuwan (集成开发人员相关工程师)运气不错,最新的CPU处理器速度惊人,实际分支预测出色,因此分支错失几乎不会有问题。但是GPU仍然存在性能问题。 GPU尝试并行解决大量计算,因此大部分GPU不支持分支预测GPU为什么会发生性能问题?GPU为生成美丽的图像,喜欢并行进行很多工作!GPU为进行多种固有的结果计算,进行了精心设计,解决了通过单一滤镜(例如:着色器程序)实施的多种输入和相关的问题。这就是渲染经常使用GPU(Graphics processor units)的原因。通过几个Shader程序运行位置,法线,贴图坐标等具有不同属性的固有顶点,该Shader程序输出在画面上表现的大量固有像素颜色。举个例子,显示器是1080 […]

tools 0

OthorCulledGPU_LightMapper_Manager

•Overview. 根据针对场景lightmap效果改善的调查结果,发现现在美术在制作的时候效率非常低 首先来理解一下照明美术的特性吧。 因为没有完全使用实时GI,所以需要进行烘焙 这个时候需要进行非常多的修改制作 照明美术的作业需要非常细致,并且结果直接关系到最终的用户体验,因此可以支持反复预览查看的制作环境是一个非常重要的核心要素 现在古剑的业务工作流中很多要素是自动化的 以前也提过很多次,好的品质是需要将自动化减少到最小的 带着匠人精神自己一个细节一个要素的开关各个选项,去观察每个照明的值以及物件的GI相关设定值带来的变化,美术同学根据自己的理解完成最终效果 制作这个工具的根本原因是现在的工作环境,无法在短时间内让美术同学及时确认到场景的照明设置结果,从而保证品质 除去几个程序组提及的问题之外,如果这个工具可以帮助美术同学在每个区域都能达到高品质的话,那我们就来把这个功能做出来吧 •Inspection list. 使用金街场景进行了实验 金街场景整体在全部Visible的基本环境内针对特定区域画面进行了实验,Progressive GPU light-mapper平均需要2分30秒~3分钟左右。 通常为了准确确认感觉,在计算阶段需要将时间缩短至15秒~30秒。 现在Local场景的Contribution GI是全部关掉的状态。 意思就是照明美术无法在本地确认应用GI效果的结果。 Contribution GI关掉的原因据程序组所说,是因为某个需求设置为关闭状态,只在烘焙服务器运行时自动打开。 Contribution GI选项如果是开着的状态,会使 CPU占有率增加,影响某个部门的业务。 •Contribution GI option risk […]

tutorials 0

Unified shader works.

Unified shader works. Organization / Netease Pangu Studio Technical Art Team Unit.Author / JP.LeeDirect Contact / hzlizhengbiao@corp.netease.com Overview.Milestone TASK 任务Achievement goal 成就目标1 Month2 Month3 Month Shader Layout 着色器布局 Ground , […]