使用示例_在Unity中使用ComputeShader示例

写这篇的缘由是最近老师给了一个UE4的工程,是一个海水模拟的Demo,实现了二十年前一篇paper的算法,paper的地址是:

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.161.9102&rep=rep1&type=pdf​citeseerx.ist.psu.edu

不过由于我还不够熟悉UE4,加之UE4各种版本满天飞,不同插件基于不同版本开发实在混乱。。。老师给的工程跑不起来,但至少看看代码还是能知道在干啥的,于是尝试在Unity里复现一下这个工程。这篇文章主要介绍Unity Compute Shader的用法流程,而不是IFFT模拟海水的算法,因为受限于贫瘠的数学水平,目前我还没理解这个算法到底在干什么。。。

阅读此文前你应该知道

  • 基本的Unity操作及编写C#脚本
  • 一种Shader语言,GLSL / HLSL / Unity 的Shaderlab也行

阅读此文后你会了解

  • 在Unity中使用Compute Shader的流程
  • 使用Compute Shader时要注意的问题

此文环境

  • Unity 2019.4.11f1
  • Windows 10

什么是Compute Shader

这要从GPU开始说起。GPU相比于CPU的一个特点是它特化了向量、矩阵和浮点运算能力,以众多核心数和大显存来实现极高的并行程度从而完成光栅化流程渲染。因此,我们可以利用GPU的能力做一些别的事情,不是要它的完整光栅化流程,而是它的高性能浮点和向量运算能力。由此诞生了Compute Shader,即专注于运算的Shader。

使用Compute Shader的基本流程

要使用Compute Shader的能力,朴素的想法让我们关注三件事情:

  • 如何进行数据传输,这包括把我要进行运算的数据传给Compute Shader和取出运算结果
  • 如何编写Computer Shader里的具体运算指令
  • 如何用C#脚本控制Compute Shader运行

下面就来分别讲述这三个事情

数据传输

如果你写过普通的shader,就知道传统光栅化管线的shader往往是对输入的texture等数据进行操作,结果输出一个

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值