【发布时间】:2015-12-27 19:28:29
【问题描述】:
简单来说,我希望我的自定义着色器能够在最后一帧期间访问其自己的输出,以便通过颜色累积实现伪运动模糊。尽管运动模糊根本不是正确的术语。
考虑以下情况:我有一个纹理大部分是透明的网格。纹理偏移不断变化。我现在想构建一个着色器,使用它的纹理不是跳跃,而是从它所在的位置慢慢消失。全屏模糊效果不行;模糊必须只保留在对象上,并且需要独立于相机移动。
到目前为止,我的想法是定义一个 RenderTexture,它包含在最后一帧期间生成的纹理,但是由于 RenderTexture 是由相机渲染的,因为我想要的是特定于网格的纹理,所以我不会知道如何实施。
我也尝试在着色器中使用GrabPass { },但是这似乎又抓住了整个渲染屏幕而不是纹理。
我可能误解了着色器的工作原理;如果渲染整个屏幕是唯一的选择,那么我可以将我的材质分配给一个平面并以这种方式渲染纹理,但是我不确定如何,或者更确切地说:在我的代码中,我会这样做。创建一个原始平面和一个相机只是为了让着色器工作似乎也需要很多东西才能获得一个效果,最初我认为实现起来很简单。 耸耸肩
任何帮助或指点将不胜感激,
-s_m_w
编辑:这是我想要实现的快速模拟图:
我通过操纵纹理偏移来实现当前效果。第二个效果中的“模糊”需要独立于相机移动。
【问题讨论】:
-
你能画出你想要达到的效果吗?我无法想象想要的效果......或者更详细地解释它?
-
@ThomasHilbert 我添加了一个速写,希望能更好地解释它
-
对象本身可以在屏幕上移动还是会保持相对于相机的恒定位置?物体是否可以被在物体和相机之间移动的其他物体所覆盖?那会发生什么?
-
物体可以移动,并且相对于相机不会保持不变,是的,它可以被覆盖,在这种情况下它应该简单地重叠
标签: unity3d textures shader vertex-shader