纹理局部颜色 accumulation/blur
Texture local color accumulation/blur
简单来说,我希望我的自定义着色器能够在最后一帧期间访问它自己的输出,以便通过颜色累积获得伪运动模糊。尽管运动模糊根本不是正确的术语。
请考虑以下几点:我有一个网格,其纹理大部分是透明的。纹理偏移不断变化。我现在想构建一个着色器,纹理不会跳跃,而是从它所在的位置慢慢消失。全屏模糊效果不行;模糊必须只保留在物体上,并且需要与相机运动无关。
到目前为止,我的想法是定义一个包含最后一帧生成的纹理的 RenderTexture,但由于 RenderTexture 是由相机渲染的,因为我只想要特定于网格的纹理,所以我不会'知道如何实现。
我也曾尝试在着色器中使用 GrabPass { }
,但是这似乎再次抓住了整个渲染屏幕而不是纹理。
我可能误解了着色器的工作原理;如果渲染整个屏幕是唯一的选择,那么我可以将我的 material 分配给一个平面并以这种方式渲染纹理,但是我不确定如何,或者更确切地说:在我的代码中的哪个位置,我会这样做。创建一个原始平面和一个相机只是为了让着色器工作似乎也需要很多东西才能实现效果,最初,我认为实现起来很简单。 耸肩
如有任何帮助或指点,我们将不胜感激,
- s_m_w
编辑:这是我想要实现的非常快速的模拟图:
我通过操作纹理偏移来实现当前效果。第二个效果中的"blur"需要独立于相机移动。
我认为您必须将效果渲染到 RenderTexture 上。
您可以在代码中创建一个相机。您可以将其渲染目标设置为您的 RenderTexture,并且您可以使用 OpenGL 命令 (GL class) 方便地渲染全屏四边形。基本上,您可以在代码中设置完整的效果渲染基础结构。
第 1 帧:
将 EffectShader 源纹理设置为 RenderTexture1。
渲染到 RenderTexture2 上。
使用 RenderTexture2 使用 ObjectShader 为您的对象着色。
第2帧:
将 EffectShader 源纹理设置为 RenderTexture2。
渲染到 RenderTexture1 上。
使用 RenderTexture1 使用 ObjectShader 为您的对象着色。
重复。
简单来说,我希望我的自定义着色器能够在最后一帧期间访问它自己的输出,以便通过颜色累积获得伪运动模糊。尽管运动模糊根本不是正确的术语。
请考虑以下几点:我有一个网格,其纹理大部分是透明的。纹理偏移不断变化。我现在想构建一个着色器,纹理不会跳跃,而是从它所在的位置慢慢消失。全屏模糊效果不行;模糊必须只保留在物体上,并且需要与相机运动无关。
到目前为止,我的想法是定义一个包含最后一帧生成的纹理的 RenderTexture,但由于 RenderTexture 是由相机渲染的,因为我只想要特定于网格的纹理,所以我不会'知道如何实现。
我也曾尝试在着色器中使用 GrabPass { }
,但是这似乎再次抓住了整个渲染屏幕而不是纹理。
我可能误解了着色器的工作原理;如果渲染整个屏幕是唯一的选择,那么我可以将我的 material 分配给一个平面并以这种方式渲染纹理,但是我不确定如何,或者更确切地说:在我的代码中的哪个位置,我会这样做。创建一个原始平面和一个相机只是为了让着色器工作似乎也需要很多东西才能实现效果,最初,我认为实现起来很简单。 耸肩
如有任何帮助或指点,我们将不胜感激,
- s_m_w
编辑:这是我想要实现的非常快速的模拟图:
我通过操作纹理偏移来实现当前效果。第二个效果中的"blur"需要独立于相机移动。
我认为您必须将效果渲染到 RenderTexture 上。 您可以在代码中创建一个相机。您可以将其渲染目标设置为您的 RenderTexture,并且您可以使用 OpenGL 命令 (GL class) 方便地渲染全屏四边形。基本上,您可以在代码中设置完整的效果渲染基础结构。
第 1 帧: 将 EffectShader 源纹理设置为 RenderTexture1。 渲染到 RenderTexture2 上。 使用 RenderTexture2 使用 ObjectShader 为您的对象着色。
第2帧: 将 EffectShader 源纹理设置为 RenderTexture2。 渲染到 RenderTexture1 上。 使用 RenderTexture1 使用 ObjectShader 为您的对象着色。
重复。