UPL9-17-h——应用场景
UPL9-17-h——应用场景
实际开发中 Compute Shader 的应用
Compute Shader 的本质是一个通用 GPU 并行计算程序,
它不是专门画图的,而是让你在 GPU 上自己定义数据的输入、计算和输出
它能够处理任何可并行的问题
比如:
- 大量独立元素的计算(像素、粒子、顶点、节点等等)
- 各元素的处理计算逻辑相似的情况
- 不依赖严格计算顺序的逻辑(或可通过原子操作、同步与内存屏障函数 控制顺序)
等等
Compute Shader 在图形计算相关的应用
-
后处理效果
模糊、Bloom、锐化、边缘检测、景深、色调映射等等
-
光照计算
全局光照、预计算辐射,反射探针更新,环境光遮蔽等等
-
粒子系统
上万粒子的物理模拟与更新
-
GPU 剔除
大量模型实例在 GPU 上筛选可见与否,提高渲染性能
-
体积渲染
体积雾、云、烟、体积光等等
-
地形、水面模拟
GPU 波浪、流体高度场更新等等
-
程序纹理生成
在 GPU 上生成噪声纹理、发现图、流动贴图等等
-
GPU 蒙皮
在 GPU 侧计算骨骼动画等等
等等
Compute Shader 在逻辑计算相关的应用
-
并行排序
大数据排序,比如粒子系统深度排序等
-
并行扫描
计算求和、积分、统计等数学计算,比如求粒子总数、累积距离等等
-
矩阵、向量运算
通用线性代数、图算法、AI 模型加速等等,比如自定义神经网络
-
图像处理
任意滤镜、去噪、分割、边缘检测
-
距离场计算
让几何体生成距离场、距离贴图,比如碰撞检测、粒子吸附等等
等等
Compute Shader 在物理、仿真、AI 领域的相关应用
-
流体模拟
用于实现烟、水、气流、火焰相关的求解计算
-
布料模拟
GPU 并行计算点约束系统
-
刚体粒子
GPU 粒子间相互作用
-
AI 路径搜索
群体移动规则,比如避让、聚合、对齐等
-
神经网络、深度学习加速
简化版 CNN(卷积神经网络) / MLP(多层感知机) 前向传播
等等
Compoute Shader 在编辑器拓展中的应用
-
大规模数据离线预计算
如光照贴图、环境探针辐射、Bake LUT (烘焙颜色映射表)
-
纹理压缩、转换、烘焙
GPU 上生成 mipmap、法线贴图等等纹理
-
网格分析与处理
顶点去重、法线重计算、顶点 AO(环境光遮蔽)烘焙
-
图像处理工具
利用 ComputeShader 在 Unity 编辑器中批量处理贴图
等等
项目中的典型用法
-
移动端优化
利用
ComputeShader来计算一些高开销内容
比如:GPU模糊、Bloom效果、粒子模拟、流光特效、屏幕空间特效等等 -
VR、AR项目
双目渲染前的镜头畸变校正,用 Compute Shader 批处理每像素变换
-
开放世界
用 ComputeShader 处理 GPU Culling (剔除) + LOD + Instance Batch,实时地形烘焙,环境特效等
- GPU Culling:先筛掉摄像机看不到的
- LOD:对剩下的决定细节等级
- Instance Batch:对同类的打包合并一起画,减少 DrawCall
-
工业仿真
用 ComputeShader 处理 粒子、流体、温度场、应力场可视化
-
电影级后期
用 ComputeShader 处理 高精度模糊、Color LUT、DOF、TAA、Motion Blur、Bloom 多
pass
