【unity】ComputeShader的学习使用

ComputeShader

文章目录

  • ComputeShader
  • 一、学习链接
  • 二、案例学习
    • 1.FallingSand
    • 2.Fluid_2D


一、学习链接

王江荣:Compute Shader的基础介绍与使用

用GPU代替CPU进行计算:

  1. 定义核函数:可以定义很多个,最终会在GPU中被执行
#pragma kernel CSMain
  1. 定义纹理:RWTexture2D可读写,默认的Texture2D只可读
RWTexture2D<float4> Result;
  1. 定义线程组,其中定义了线程的数量
[numthreads(8,8,1)]
  1. uint3 id : SV_DispatchThreadID
    大佬博客讲的很详细,简而言之就是可以根据内置进行多线程处理每个像素,在dispatch时,根据纹理大小和线程数量进行设置线程组数量:dispatch(1024/8, 1024/8, 1)

二、案例学习

1.FallingSand

关键代码解析:
简而言之在ComputeShader里将每个像素根据RGB通道的不同进行设置为障碍和沙子,然后在核函数里判断是否能向下移动,如果遇到障碍物则加上水平位移。

	if(p.x == 1){//move down//向下移动int2 direction = int2( 0 , -1 );int2 pID_new = pID+direction;//*(10*p.y);float4 p_new = GetResultPixel(pID_new);//if not empty - move horizontal//若下一个像素不为空,那么将其随机水平位移if(p_new.x > 0 || p_new.z > 0){//这里_Time类似一个随机数种子//sign函数将其约束到-1 至 1direction = int2(sign(random(float2(pID) + _Time)-0.5f) , -1 );pID_new = pID+direction;p_new = GetResultPixel(pID_new);}//if empty - assign//若为空则赋值if(p_new.x == 0 && p_new.z == 0){Result[pID_new] = p;Result[pID] = float4(0,0,0,1);}}

2.Fluid_2D

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/136379.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小程序发成绩

在这个数字化快速发展的时代&#xff0c;让学生能够方便快捷地获取自己的成绩已经成为一项基本的需求。那么&#xff0c;如何实现这一目标呢&#xff1f;对于许多老师来说&#xff0c;可能首先想到的是使用各种代码或者Excel来发布成绩查询。今天&#xff0c;我们就来探讨一下这…

Salesforce使用的数据库是什么

Salesforce使用了多种不同的数据库技术来支持其云端CRM&#xff08;客户关系管理&#xff09;服务。其中最显著的数据库技术是它自己的多租户数据库系统&#xff0c;称为"Salesforce数据库"或"Force.com数据库"。以下是关于Salesforce数据库的一些关键特点…

基于SSM的劳务外包管理系统的设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

人工智能-深度学习之延后初始化

到目前为止&#xff0c;我们忽略了建立网络时需要做的以下这些事情&#xff1a; 我们定义了网络架构&#xff0c;但没有指定输入维度。 我们添加层时没有指定前一层的输出维度。 我们在初始化参数时&#xff0c;甚至没有足够的信息来确定模型应该包含多少参数。 有些读者可…

RK3568平台开发系列讲解(音视频篇)RTMP 推流

🚀返回专栏总目录 文章目录 一、RTMP 的工作原理二、RTMP 流媒体服务框架2.1、Nginx 流媒体服务器2.2、FFmpeg 推流沉淀、分享、成长,让自己和他人都能有所收获!😄 📢目前常见的视频监控和视频直播都是使用了 RTMP、RTSP、HLS、MPEG-DASH、 WebRTC流媒体传输协议等。 R…

基于SSM的图书管理借阅系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

k8s configMap挂载(项目配置文件放到configMap中,不同环境不同配置)

背景说明 项目对接配置文件加密&#xff0c;比如数据库密码、redis密码等。但是密文只能放到指定的配置文件中(important.properties)&#xff0c;该配置文件又不能接收环境变量&#xff0c;所以就很难区分不同环境的不同配置&#xff08;不同环境的数据库密码、redis密码一般…

easyscholar配置秘钥连接Zotero-style,更方便的了解文献!

如果你不知道什么是easyScholar,以及怎么安装easyScholar? 请参见文章 easyScholar 一、easyscholar配置秘钥 1.首先打开easyscholar插件&#xff0c;并登录 2.点击自定义数据集 3.依次点击 用户信息-开放接口 4.点击刷新 5.在Zoter中 编辑-首选项-高级-编辑器 6.点击…

C语言中一维指针、二维指针和三维指针

指针可以指向一份普通类型的数据&#xff0c;例如 int、double、char 等&#xff0c;也可以指向一份指针类型的数据&#xff0c;例如 int *、double *、char * 等。 如果一个指针指向的是另外一个指针&#xff0c;我们就称它为二级指针&#xff0c;或者指向指针的指针。 假设…

MongoDB分页排序问题,本页排序与结果集排序

项目中有使用到MongoDB&#xff0c;由于比较高频查询与写入&#xff0c;出现了每次查询的结果集都会变的问题。 描述 我使用的是skiplimit的分页方式,模拟mysql的 limit 0,10去分页 由于出现了结果集变化的问题&#xff0c;我想着使用排序去固定返回的结果集&#xff0c;结果…

[论文阅读]PV-RCNN++

PV-RCNN PV-RCNN: Point-Voxel Feature Set Abstraction With Local Vector Representation for 3D Object Detection 论文网址&#xff1a;PV-RCNN 论文代码&#xff1a;PV-RCNN 简读论文 这篇论文提出了两个用于3D物体检测的新框架PV-RCNN和PV-RCNN,主要的贡献如下: 提出P…

虚拟机网络没有有效的ip配置

虚拟机网络没有有效的ip配置&#xff1a; 原因猜测&#xff1a;或许是之前使用的操作系统把网络给占了。 解决方法&#xff1a;点击虚拟机的 遍历->网络编辑器->移除不要的网络&#xff0c;然后添加网络。&#xff08;下面的图就是我把虚拟网络全部移除&#xff0c;然后…

zookeeper:服务器有几种状态?

四种&#xff1a; looking(选举中&#xff09;、leading(leader)、following( follower)、 observer(观察者角色&#xff09;

数字图像处理 基于numpy库的傅里叶变换

一、傅里叶变换 图像可以用两个域表示:空间域和频域。空间域是图像最常见的表示形式,其中像素值表示图像中每个点的亮度或颜色。另一方面,频域将图像表示为不同频率和幅度的正弦波的集合。 傅里叶变换(一种图像处理中使用的数学技术)可以通过分析图像的频率分量并揭示隐藏…

4个杀手级Pycharm高效插件

本文将介绍4个学习Python的人都应该安装的Pycharm插件&#xff0c;通过这些插件提高工作效率并使Pycharm看起来更美观。 1、简介 Pycharm是Python最受欢迎的集成开发环境之一。它具有良好的代码助手、漂亮的主题和快捷方式&#xff0c;使编写代码变得简单快捷。 话虽如此&…

Linux进程控制(2)

Linux进程控制(2) &#x1f4df;作者主页&#xff1a;慢热的陕西人 &#x1f334;专栏链接&#xff1a;Linux &#x1f4e3;欢迎各位大佬&#x1f44d;点赞&#x1f525;关注&#x1f693;收藏&#xff0c;&#x1f349;留言 本博客主要内容讲解了进程等待收尾内容和进程的程序…

PTA古风排版

中国的古人写文字&#xff0c;是从右向左竖向排版的。本题就请你编写程序&#xff0c;把一段文字按古风排版。 输入格式&#xff1a; 输入在第一行给出一个正整数N&#xff08;<100&#xff09;&#xff0c;是每一列的字符数。第二行给出一个长度不超过1000的非空字符串&a…

安卓常见设计模式7------适配器模式(Kotlin版)(RecycleView adapter 模板代码)

1. W1 是什么&#xff0c;什么是适配器模式&#xff1f;​ 适配器模式&#xff08;Adapter Pattern&#xff09;是一种常见的设计模式&#xff0c;它用于将一个类的接口转换成另一个客户端所期望的接口。在 Android 中&#xff0c;适配器模式通常用于将数据与视图进行绑定&…

基于若依的ruoyi-nbcio流程管理系统仿钉钉流程json转bpmn的flowable的xml格式(简单支持发起人与审批人的流程)续

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 之前生产的xml&#xff0c;在bpmn设计里编辑有些内容不正确&#xff0c;包括审批人&#xff0c;关联表单等…