Skip to content

性能相关优化和Shader代码书写 #2

@jk20012001

Description

@jk20012001
  • 1. Shadowmap关闭状态改用uniform动态分支, 不能一直clear
  • 2. shadow macros shadow map shader if performance optimize cocos/cocos-engine#11178
    慎用if, 即便是只判断uniform也可能不是动态分支,(某些低端机如小米6 vivox9上会编译成静态展开,所有分支都要走), 尽量还是用宏, 就算用if也一定要只判断uniform, 非uniform的放在uniform条件内部if(uniform) { if(非uniform) {} }
  • 3. 背光面不要计算shadow和lighting,直接跳过, 怕动态分支的话至少跳过计算shadow
  • 4. https://github.com/cocos-creator/3d-tasks/issues/8570
  • 5. UpdateShadowUBO等函数中的ds->update, 需要放到更好一点的位置去调用, (最晚的位置在bind descriptorset之前), 可使用GlobalDSManager来绑定相关数据
  • 6. SPOTLIGHTINGMAP改名为SPOTSHADOWMAP
  • 7. #pragma optimize (on) 开启glsl编译代码优化? 或使用工具glsl_optimizer
  • 8. vs output的varying数据字节数一旦超过76(19个float), m1等新芯片上metal性能狂跌3成
  • 9. webgl1.0切2.0之后性能暴涨, 或者webgl/gles在ios上切metal之后性能暴涨, 当找不到瓶颈时可尝试切换
  • 10. 不同透明度会影响 GPU blender 效率。多个不同透明度物体叠加显示比多个相同透明度物体叠加显示时GPU算力消耗高

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions