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简单的东西却也能让一个自以为数学好的人拉翔)
关键技术实现
- 立方体的颜色
你猜这是几维的UV坐标?(就是这个o.uv)
,如果前面都理解,那么64意义是把UV定在(0,1)区间。
这个嘛!就是传说中的UV坐标颜色。
- 立方体的点位置
如果前面你都理解了,那么点的位置不就是欧几里坐标吗?
关键是,你得像数组一样把数组每个元素都存有坐标到buffer才是,,,,
那怎么一个一个的元素遍历?
如果你把它理解了,那 就对了,不过SV_GroupIndex是在一个组内的点编号。
问题是,我们这儿要的是权威的所有点的编号,哈哈哈,我不告诉你。
不过,如果你的Dispatch为(1,1,1),那么SV_GroupIndex就相当于所有点的唯一编号。
- 移动立方体?能姨妈?
我就这么移动,就这么任性!
C#中的任性
Compute Shader中的任性
当然,一定要随性子来,想怎么移就怎么移。
留给喜欢看疯骚的代码的伙伴
- Use in C#
- Use in ComputeShader
- Use in Shader