Unity3D Compute shader 新解粒子堆积矩阵【二】

Unity3D Compute shader 新解粒子堆积矩阵【二】

1.Compute Shader都出来了好些年了,幸好Unity3D 加入了该特性,当然U3D本着易开发操作平台,在u3d中实现compute shader起来是相当轻松的。

2.除了Compute Shader,还有 Vertex shader,Geometry shader,Fragment shader ; Tesselation shader,Domain shader,Hull Shader ,如果你觉得有一种都想学或者饥渴而不是去厌倦的话,你将来绝对会牛X的,那么请先受小弟一拜。



注意注意:请不要邪恶的复制我!!!不然割了你的小XXX。

http://blog.csdn.net/baidu_26153715/article/details/45674547 恬纳微晰 所有。。。

你可以转载啊,转前请留翔。。不用谢。。。


  • 彩色立方体

    记得2015.3.0那天,我使用了全身力气搜尽了Compute Shader的资料,没有发现它的一点有用的线索,那时度娘要卖萌,收到的尽是什么恶心的新闻,于是借助了隔壁老王的VPN神器,在谷歌上找到了一篇Unity ComputeShader的文章http://kylehalladay.com/blog/tutorial/2014/06/27/Compute-Shaders-Are-Nifty.html(就是它,你使劲戳它秒进),至于然后呢我就直接洗洗睡吧。

  • 立方体原始外貌

    我当时有进过微软官网的,因为这毕竟是DX!!,所以进了官网溜达了一转,然后又不小心出来了,”出来了”!。。。对!。。当时就是这么出来的,因为笔记本触摸板真TMD的机智,机智的触摸到了 ← 它。最后,我就趟了睡了。

  • 立方体疯狂的移动?

我开始有点不淡定了,为嘛这样子,ComputeShader为嘛这么欺负人,因为我对这张图看了不下5遍/day的节奏,这道坎卡死了,当然我最后看懂了,因为我始终是以应试教育的思想把它作为单纯的数字坐标,于是我想微软有那么傻B吗,弄一坨数学翔,他其实就是在欧几里坐标空间内分了许多小方块(线程组),再加上自身的SV_GroupThreadID不就是每个线程的空间坐标吗!!!?? (应试教育牛逼啊,本来都是TMD简单的东西却也能让一个自以为数学好的人拉翔)


关键技术实现

  1. 立方体的颜色

    你猜这是几维的UV坐标?(就是这个o.uv)

    ,如果前面都理解,那么64意义是把UV定在(0,1)区间。

    这个嘛!就是传说中的UV坐标颜色。

  2. 立方体的点位置

    如果前面你都理解了,那么点的位置不就是欧几里坐标吗?

    关键是,你得像数组一样把数组每个元素都存有坐标到buffer才是,,,,

    那怎么一个一个的元素遍历?

    如果你把它理解了,那 就对了,不过SV_GroupIndex是在一个组内的点编号。

    问题是,我们这儿要的是权威的所有点的编号,哈哈哈,我不告诉你。

    不过,如果你的Dispatch为(1,1,1),那么SV_GroupIndex就相当于所有点的唯一编号。

  3. 移动立方体?能姨妈?

我就这么移动,就这么任性!

 C#中的任性

 Compute Shader中的任性

当然,一定要随性子来,想怎么移就怎么移。

留给喜欢看疯骚的代码的伙伴

  1. Use in C#

  2. Use in ComputeShader

  3. Use in Shader

时间: 2024-10-15 05:57:16

Unity3D Compute shader 新解粒子堆积矩阵【二】的相关文章

Unity3D Compute Shader 新解 简单体绘制技术与点吸引【三】

Unity3D Compute Shader 新解体绘制技术与吸收[三] 1.Compute Shader是一个DX11的大特点,显然它真的开放了GPU的运算 2.Compute Shader的价值也是非常大的,在科学.工程.医学.各种应用上显而易见 3.GPU的浮点运算和精度比CPU高几个数量级,而且GPU的并行运算的结构.指令不会冗长的等待 这几天听了恩雅的 "Waters Show The Hidden Heart"音乐,当时耳机烂成一坨,我就像他们放Hi歌一样放了出来,于是有人

unity3d 从零开始compute shader

开始用compute shader 我喜欢vertex/fragment shaders的简单,他们只是做一件事(把顶点和颜色输出到屏幕上去),他们做得非常好,但是有时这种简单限制了你,当你的cpu拼了命的循环那些矩阵,算出并储存在贴图上... Compute Shader 解决了这个问题,我将在今天说明它的基础,我将通过一个unity自己的例子告诉你,使用structured buffer的数据在compute shader中工作 Compute Shader能用来控制粒子群的位置 什么是co

【原创翻译】初识Unity中的Compute Shader

一直以来都想试着自己翻译一些东西,现在发现翻译真的很不容易,如果你直接把作者的原文按照英文的思维翻译过来,你会发现中国人读起来很是别扭,但是如果你想完全利用中国人的语言方式来翻译,又怕自己理解的不到位,反而与作者的愿意相悖.所以我想很多时候,国内的译者也是无奈吧,下次再看到译作也会抱着一些感同身受的态度去读.这是我第一次翻译整篇文章,能力有限,望见谅,翻译不好的地方也希望大家指出来. 其实ComputeShader在Unity中出现已经有蛮长的一段时间了,因为自己一直对Shader比较感兴趣,所

聊聊如何正确向Compute Shader传递数组

0x00 前言 前一段时间去英国出差,发现Unity Brighton 办公室的手绘地图墙很漂亮,在这里分享给大家. 在这篇文章中,我们选择了过去几周Unity官方社区交流群以及UUG社区群中比较有代表性的几个问题,总结在这里和大家进行分享.主要涵盖了UGUI.Lighting.Profiler.Shader Graph.SRP.Compute Shader.GLES等领域. 同时,也欢迎大家加入我们这个讨论干货的官方技术群,交流看法分享经验. Unity官方社区交流群:629212643 0x

OpenGL 之 Compute Shader(通用计算并行加速)

平常我们使用的Shader有顶点着色器.几何着色器.片段着色器,这几个都是为光栅化图形渲染服务的,OpenGL 4.3之后新出了一个Compute Shader,用于通用计算并行加速,现在对其进行介绍. 介绍Compute Shader之前需要先介绍一下ImageTexture: 普通的Texture在GLSL中只能进行读取(sampler采样获取数据),写入则必须在Fragment Shader中写入帧缓冲绑定的附件Texture当前像素中,不能随意指定位置写入,并且不能同时读写同一张纹理(我

使用Compute Shader加速Irradiance Environment Map的计算

Irradiance Environment Map基本原理 Irradiance Environment Map(也叫Irradiance Map或Diffuse Environment Map),属于Image Based Lighting技术中的一种. Irradiance Map的详细定义可参考GPU Gems 2  Chapter 10."Real-Time Computation of Dynamic Irradiance Environment Maps".简单说来就是一

Unity3D 灰度shader(改编自NGUI)

原创文章如需转载请注明:转载自 脱莫柔Unity3D学习之旅 QQ群:[119706192] 本文链接地址: 灰度shader 废话不多说,直接图解流程: 1.原图 2.改动shader 打开NGUI自带的shader:(Unlit - Transparent Colored) 将代码A: fixed4 frag (v2f i) : COLOR { fixed4 col = tex2D(_MainTex, i.texcoord) * i.color; return col; } 改为代码B: f

Unity3D新手教学,让你十二小时,从入门到掌握!(三 ) [转]

版权声明:本文为Aries原创文章,转载请标明出处.如有不足之处欢迎提出意见或建议,联系QQ531193915 这一讲,我会教大家如何写碰撞检测的代码,然后还会教大家如何使用我介绍给大家的第一个Unity的插件. 那么,废话不多说,我先介绍插件如何下载和安装. VS For Unity 下载链接 进入这个页面,按编译器版本进行下载,我用的是2010,所以要下载这个. 安装就不用我教了,下面开始看我是如何导入Unity VS的. 点击Import之后我们会发现并没有发生什么,但是接下来我们按一下刷

Unity3D新手教学,让你十二小时,从入门到掌握!(二) [转]

版权声明:本文为Aries原创文章,转载请标明出处.如有不足之处欢迎提出意见或建议,联系QQ531193915 继续上一讲的内容,首先呢, 为了接下来要做的小游戏,在这里我要小小的修改一下移动的代码. public class PlayerMove : MonoBehaviour { //定义移动的速度 public float MoveSpeed = 8f; void Start () { } void Update () { //如果按下W或上方向键 if(Input.GetKey(KeyC