unity 开根号_Unity 实现 GPU-Driven 的 N-body simulation

80fe4dace17d2eaa3455cc7314b1dd85.png

前言

之前在看 DirectX 12 的示例代码的时候,看到一个用 GPU 跑的 N-body simulation 的效果,感觉很酷炫,然后偶然发现 Unity 居然支持使用 Compute shader,于是便尝试在 Unity 上复刻了一个。

Compute Shader

Compute Shader 是运行在 GPU 上的程序,但是不同于 Vertex Shader 与 Pixel Shader 之类运行于 Graphic pipeline 上的程序,不会直接参与图形绘制,而是做一些计算并输出。可以完成一部分传统由 CPU 完成的工作从而减轻 CPU 开销,特别适合用于做各种并行的计算。Unity 中可以直接创建 Computer Shader ,并且使用类 ComputeShader 来访问调用。

Compute Buffer

我们往往需要使用 Compute Shader 的计算做过作为实际图形渲染的参数,因此需要 StructuredBuffer 之类的中间缓冲用于交换数据,这些缓冲在脚本层被抽象为类 ComputeBuffer。

初始化 Compute Buffer

首先我们定义粒子的数据结构,每个粒子拥有自己的当前坐标、速度、颜色。

a64156f1bc74670de647189d41a969d3.png

然后再在脚本中初始化数据

bdccb21d475cf23c0389528a61bc1d48.png

将指定数目粒子随机均匀分

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值