UPL9-17-h——应用场景

实际开发中 Compute Shader 的应用

Compute Shader 的本质是一个通用 GPU 并行计算程序,
它不是专门画图的,而是让你在 GPU 上自己定义数据的输入、计算和输出
它能够处理任何可并行的问题

比如:

  1. 大量独立元素的计算(像素、粒子、顶点、节点等等)
  2. 各元素的处理计算逻辑相似的情况
  3. 不依赖严格计算顺序的逻辑(或可通过原子操作、同步与内存屏障函数 控制顺序)

等等

Compute Shader 在图形计算相关的应用

  1. 后处理效果

    模糊、Bloom、锐化、边缘检测、景深、色调映射等等

  2. 光照计算

    全局光照、预计算辐射,反射探针更新,环境光遮蔽等等

  3. 粒子系统

    上万粒子的物理模拟与更新

  4. GPU 剔除

    大量模型实例在 GPU 上筛选可见与否,提高渲染性能

  5. 体积渲染

    体积雾、云、烟、体积光等等

  6. 地形、水面模拟

    GPU 波浪、流体高度场更新等等

  7. 程序纹理生成

    在 GPU 上生成噪声纹理、发现图、流动贴图等等

  8. GPU 蒙皮

    在 GPU 侧计算骨骼动画等等

等等

Compute Shader 在逻辑计算相关的应用

  1. 并行排序

    大数据排序,比如粒子系统深度排序等

  2. 并行扫描

    计算求和、积分、统计等数学计算,比如求粒子总数、累积距离等等

  3. 矩阵、向量运算

    通用线性代数、图算法、AI 模型加速等等,比如自定义神经网络

  4. 图像处理

    任意滤镜、去噪、分割、边缘检测

  5. 距离场计算

    让几何体生成距离场、距离贴图,比如碰撞检测、粒子吸附等等

等等

Compute Shader 在物理、仿真、AI 领域的相关应用

  1. 流体模拟

    用于实现烟、水、气流、火焰相关的求解计算

  2. 布料模拟

    GPU 并行计算点约束系统

  3. 刚体粒子

    GPU 粒子间相互作用

  4. AI 路径搜索

    群体移动规则,比如避让、聚合、对齐等

  5. 神经网络、深度学习加速

    简化版 CNN(卷积神经网络) / MLP(多层感知机) 前向传播

等等

Compoute Shader 在编辑器拓展中的应用

  1. 大规模数据离线预计算

    如光照贴图、环境探针辐射、Bake LUT (烘焙颜色映射表)

  2. 纹理压缩、转换、烘焙

    GPU 上生成 mipmap、法线贴图等等纹理

  3. 网格分析与处理

    顶点去重、法线重计算、顶点 AO(环境光遮蔽)烘焙

  4. 图像处理工具

    利用 ComputeShader 在 Unity 编辑器中批量处理贴图

等等

项目中的典型用法

  1. 移动端优化

    利用 ComputeShader 来计算一些高开销内容
    比如:GPU模糊、Bloom效果、粒子模拟、流光特效、屏幕空间特效等等

  2. VR、AR项目

    双目渲染前的镜头畸变校正,用 Compute Shader 批处理每像素变换

  3. 开放世界

    用 ComputeShader 处理 GPU Culling (剔除) + LOD + Instance Batch,实时地形烘焙,环境特效等

    • GPU Culling:先筛掉摄像机看不到的
    • LOD:对剩下的决定细节等级
    • Instance Batch:对同类的打包合并一起画,减少 DrawCall
  4. 工业仿真

    用 ComputeShader 处理 粒子、流体、温度场、应力场可视化

  5. 电影级后期

    用 ComputeShader 处理 高精度模糊、Color LUT、DOF、TAA、Motion Blur、Bloom 多 pass