我正在尝试在Unity 5中实现HLSL着色器,它取代了球体的顶点。
我尝试解决的问题是如何有效地将信息从一个帧传递到另一个帧,以便我可以“保存”。计算出的每个顶点的速度。
在Nvidia dev site上,我发现了一篇讨论GPU流体动力学模拟的有趣文章。在那篇文章中,他们说:
但是,在GPU上,片段处理器的输出始终写入帧缓冲区。将帧缓冲区视为无法直接读取的二维数组。有两种方法可以将帧缓冲区的内容转换为可以读取的纹理:
- 复制到纹理(CTT)从帧缓冲区复制到纹理。
- 渲染到纹理(RTT)使用纹理作为帧缓冲区,以便GPU可以直接写入它。
我记得读过(消息来源)在Unity中,Traceback (most recent call last):
File "espn.py", line 9, in <module>
matches = x.find('Matches').text
AttributeError: 'NoneType' object has no attribute 'text'
是一个FBO,但经过几个小时的搜索,我仍然不明白如何实现这个(如果这是正确的方法)为达到这个)。我目前的想法是,我会创建2个通道,一个用于计算现有速度的新速度,然后是第二个用于操纵网格。
我考虑过编写GPGPU Shader,但我非常希望所有这些功能都包含在一个Shader中。
我走到了尽头,有人可以指出我正确的方向。
澄清:
在RenderTexture
我可以渲染/输出我想要的任何渲染纹理:
渲染纹理也可以从计算着色器写入,如果它们设置了“随机访问”标志(DX11中的“无序访问视图”),请参阅RenderTexture.enableRandomWrite。 http://docs.unity3d.com/Manual/ComputeShaders.html
另请注意:
DirectX10引入了一项称为流输出的新功能,该功能对于实现粒子系统非常有用。 OpenGL遵循3.0版本,具有相同的功能,并将其命名为Transform Feedback。 http://ogldev.atspace.co.uk/www/tutorial28/tutorial28.html
我可以在普通着色器中执行此操作吗? Unity 5.1+中是否有流输出。是否有转换反馈选项?