HLSL渲染到Unity中的纹理/流输出

时间:2015-09-01 23:41:04

标签: unity3d shader gpgpu hlsl

我正在尝试在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+中是否有流输出。是否有转换反馈选项?

0 个答案:

没有答案