slate AAA优化

1.  ui frame的3部分

slate AAA优化

 

 

1.  hud

slate AAA优化

 

 缓存

slate AAA优化

 

 2. draw window

slate AAA优化

 

 

slate AAA优化

 

 widget树的层级的上面和下面都要计算。

(1)弄平

slate AAA优化

 

 递归调用每个容器,容器包容器包容器,递归进入容器

更多的代码要执行,更多的表要查询,cpu缓存没有命中,修改:

slate AAA优化

 

 widget tree是代码执行这些widget的task graph的表示

更少层 更少的函数调用 更少的递归

(2)hittestInvisible和selfHittestInvisible而不是visible。widget不加入hittest grid,子孙不被hittest。

slate AAA优化

 

 

(3)删掉tick函数,事件驱动

slate AAA优化

 

 

3. slate prepass

slate AAA优化

 

 slate AAA优化

 

 widget geometry影响它层级向上的和向下的。

slate AAA优化

 

 

(1)用collapse代替hidden,去掉整个task graph分支。

slate AAA优化

 

 hidden还有geometry,还有重新计算它和它的子孙的geometry。

 (2)invalidation box

slate AAA优化

 

 容器 缓存geometry和可见性。有时有问题,用代码解决。

4.高级ui

slate AAA优化

 

 用smeshWidget直接用材质渲染2d mesh。

slate AAA优化

 

 instance

slate AAA优化

 

 在render batch,你可以用一个渲染的instance数量去渲染一个mesh的多个instance,把那个buffer传给材质shader。在一个buffer里渲染许多instance。

用于粒子发射器

slate AAA优化

 

 

slate AAA优化

 

 在gpu上渲染的。

 

相同的widget用instance,如图,小地图中的同样的icon:

slate AAA优化

 

 

slate AAA优化

 

 render geometry是gpu控制的,不需要prepass。

相比普通的,减少了层数,发送的render command数目。

slate AAA优化

 

 用在所有的复杂widget上。同样东西多个widget或持续移动的东西。

slate AAA优化

 

 不能用sequence工具。不同的工作流,在shader里layout。美术要依赖程序去改这些bespoke 定制的widget。

5. 总结

slate AAA优化

 

 

 

https://www.youtube.com/watch?v=OyY3OYbNK7s

上一篇:华为交换机-S系列和E系列交换机如何修改本地用户的密码


下一篇:C# $符号的使用