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

来源:互联网 发布:基因工程中数据分析 编辑:程序博客网 时间:2024/05/23 01:59

Unity3D Compute Shader 新解体绘制技术与吸收【三】

1.Compute Shader是一个DX11的大特点,显然它真的开放了GPU的运算
2.Compute Shader的价值也是非常大的,在科学、工程、医学、各种应用上显而易见
3.GPU的浮点运算和精度比CPU高几个数量级,而且GPU的并行运算的结构、指令不会冗长的等待


这几天听了恩雅的 "Waters Show The Hidden Heart"音乐,当时耳机烂成一坨,我就像他们放Hi歌一样放了出来,于是有人按捺不住了,说放的哀曲,当时我那个心碎啊。

http://blog.csdn.net/baidu_26153715/article/details/45752349 by 恬纳微晰
要是我、我就忍不住啦!


Compute Shader 效果初步预览

  • 从外部看起走
    这里写图片描述
    每个点都有颜色,不知你发现没有
    感觉怎个世界都可以用点形容

  • 从内部看起走
    这里写图片描述

    每个点真的都有独特的颜色,只不过走近看就没了
    这像素世界,假的看晕了

  • 立方体的塌陷之点的又吸又喷
    这里写图片描述
    哇哦!一堆点点都塌陷了
    一堆疯狂的点,无孔不入

Come on, hava a look

  • Find the center of the Cube Particles
    这里写图片描述
    这看起来也许很怪,为什么有那种干扰的线条,嗷!

                                          -也许是我的Camera离得太近无法焦距吧!

    但我们能够看清那明显的圆锥形的光柱,记住了,圆锥的顶点就在那儿
    那这张呢?
    这里写图片描述
    显而易见,光柱看不见了,实在是太远了。

    那么,立方体中间的点是怎么找到的,如果你会数那么就这样做
    这里写图片描述
    对,我可以这么说,立方体的所有点点的id在 xyz=(64,64,64)范围内,一共这里写图片描述

      哟,感脚有点不对,怎么总点数不是他的2倍数目!大哥,那是一维中才要得

    那么中心点的id(叫她坐标吧!)为(32,32,32),现在你可以数了。
    1只羊、2只羊、3只羊、4只羊、、喜洋洋、、灰太狼、、14滴羊、要挂滴羊、、哟…数哪儿了
    哈哈哈,其实是可以算的,不过我用计算器算的,我的算术一点都不好,
    这里写图片描述
    这。。。这这。。还是可以滴。。。。

  • 圆锥柱体颜色
    用过Shader语言中的Debug吗?说实话,debug是个不怎么好的函数,所以最好的方式就是用颜色显示,而且还能从rgb中看出xyz分布情况。
    这里写图片描述
    这儿我采用了pow(rgb,奇数),一 pow 就清晰了,我的目的就是想找到立方体的中心点
    这儿为什么是奇数,如果想看,也不妨,小二快上图:
    这里写图片描述
    很明显黑的地方rgb<=0;其实 rgb也>=-1。。。

The technology

  • 先看一个图
    这里写图片描述
    我觉得这也是好的说明在GPU上做运算。

  • 在 Compute Shader中做 点又吸又喷
    这里写图片描述

    这里写图片描述
    很明显第一句是求到吸的位置的向量
    第二句就是位移到那个位置,这里采用了位移在加速上的2次积分
    在Compute Shader中简单的运算后就成下面这样了:
    这里写图片描述
    这里写图片描述

  • 体点绘制-build in shader
    哎哟,喝了点啤酒,感觉头闷了,
    这里写图片描述
    那么你可以从上面得到下面效果
    这里写图片描述

留给代码都能看得很Hi的人

  • Use in C#
    这里写图片描述

  • Use in Compute Shader
    这里写图片描述

  • Use in Shader

    这里写图片描述

  • 晋级
    晋级的东西,那就叼了,不是简单的用用点表示,可以用模型数据或网格来代替点;不简单是用用又吸又喷,而是做水体物理模拟;不简单是透射样体绘制,而是基于高级光照模型渲染的体算法。

2 0