0


图形渲染性能优化

variable rate shading

conditional render

设置可见性等, 不需要重新build command buffer

indirect draw

  1. glMultiDraw* - 直接支持多次绘制
  2. glMultiDrawIndirect - 间接多次绘制

multithreading

多线程录制

实例化渲染

lod

texture array

小对象剔除

投影到屏幕上的对象太小就不绘制

texture gather

一次能采样4个像素, 减少采样函数调用

texture shadow 版本

由于返回的是浮点数,能减少采样的调用

在GLSL中,使用 #pragma unroll 指令来建议编译器展开循环

  1. 循环展开不是性能优化的万能解
  2. 需要根据具体场景和硬件特性评估
  3. 建议进行实际性能测试
  4. 考虑代码可维护性和可读性
  5. 现代GPU编译器已经相当智能,可能自动进行优化

texture altas

  1. 使用建议:
  2. 适用场景:
  3. 大量小纹理(如UI元素、图标)
  4. 需要批量渲染的2D游戏
  5. 粒子系统
  6. 不适用场景:
  7. 大型独立纹理
  8. 需要频繁更新的纹理
  9. 分辨率差异很大的纹理
  10. 最佳实践:
  11. 合理分组相关纹理
  12. 预留适当padding
  13. 考虑mipmap需求
  14. 监控内存和性能指标
  15. 总结:
  16. Texture Atlas能带来显著的性能优势,主要体现在:
  17. 减少状态切换和draw calls
  18. 提高内存访问效率
  19. 更好的缓存利用
  20. 减少内存碎片
  21. 但需要合理使用并注意相关限制和实现细节。

合并draw call

内存池和cache 命中率

纹理压缩

  1. / 使用压缩纹理格式
  2. VkFormat compressedFormat = VK_FORMAT_BC7_SRGB_BLOCK;createTexture(compressedFormat, width, height);

多线程的视椎体剔除

simd

标签: vulkan

本文转载自: https://blog.csdn.net/artisans/article/details/144014422
版权归原作者 不如学也 所有, 如有侵权,请联系我们删除。

“图形渲染性能优化”的评论:

还没有评论