This commit is contained in:
Build Bot
2026-05-18 01:20:38 +08:00
parent d67630c144
commit f7310caea0
28 changed files with 3756 additions and 0 deletions

View File

@@ -0,0 +1,41 @@
---
title: GPU的BVH以及排序相关实现心得史上最简洁GPU原理论述
source: 游戏开发技术教程 (微信公众号)
url: https://mp.weixin.qq.com/s/FJxTDw9KdVwZx0RfojdYCg
date: 2026-05-06
tags: [GPU, BVH, ComputeShader, 碰撞检测, GPU排序]
---
# GPU的BVH以及排序相关实现心得史上最简洁GPU原理论述
## 核心内容
作者在Unity中实现了GPU版本的BVHBounding Volume Tree碰撞检测以及双调排序和radix-sort两种GPU排序算法。
## GPU原理简述
- **GPU架构**grid → block → warp 三级结构
- **SIMT**单指令多线程一个warp默认32线程
- **分支发散divergence**同一个warp内的线程必须执行相同指令不同warp/block的线程可以独立执行不同逻辑分支
- **Bank Conflict**同一个warp的两个线程同时访问同一bank的不同地址时访问会被串行化
- **内存层次**全局内存RWStructuredBuffer和共享内存groupshared— 共享内存访问速度更快但只能在block内共享
## 关键见解
1. GPU完全可以做条件分支计算前提是同一warp内的线程走相同分支
2. Compute Shader本质上是低级的GPGPU编程语言能力远不止"shader"
3. BVH每一帧都重新构造以处理运动物体并防止树木退化
4. 双调排序实现简单几行shader代码就能搞定
5. Radix-sort效率更高包含sweep upreduce和sweep down前缀和两个过程
## 相关链接
- 知乎GPU BVH系列https://zhuanlan.zhihu.com/p/707169090
- 作者的知乎专栏游戏开发https://zhuanlan.zhihu.com/column/c_1861690729694359552
## 技术细节
- 实现的是2D版本BVH支持100万量级无明显卡顿
- 使用instancing drawing渲染大量quadUnity缺省渲染太卡
- 作者显卡有19个SM每个SM支持2048线程最高并行约4万线程
- 碰撞结果回传CPU方案异步+分发器模式