Ale*_*iba 3 shader textures unity-game-engine
在 Unity 中,我有 2 个纹理形式的图像,我将它们合并在一起(一个叠加另一个)。我在 Compute 中执行此操作Shader并将结果放在RenderTexture. 我希望这RenderTexture是输出相机看到的一切。
我发现文章说要使用ReplacementShader相机的属性,但我无法使其正常工作。
目前,我只是将 放在RenderTexture覆盖UIRawImage整个 UI Canvas 上,以便填充整个相机。然而,这有很大的滞后性,显然是一个次优的解决方案。
那么如何将Rendertexture计算Shader结果直接输出到相机上呢?谢谢。
你可能可以使用OnRenderImage
Unity 在相机完成渲染后调用的事件函数,允许您修改相机的最终图像。
使用着色器将源纹理复制到目标渲染纹理。
并做类似的事情
// This script goes onto your according Camera
public class RenderReplacement : MonoBehaviour
{
public RenderTexture replacement;
void OnRenderImage(RenderTexture src, RenderTexture dest)
{
// To overwrite the entire screen
Graphics.Blit(replacement, null);
// Or to overwrite only what this specific Camera renders
//Graphics.Blit(replacement, dest);
}
}
Run Code Online (Sandbox Code Playgroud)
在哪里
dest
目的地RenderTexture。将其设置为直接nullblit到 screen。请参阅说明以获取更多信息。
请注意,如 API 中所述,该 Camera 已完成渲染后OnRenderImage调用。因此,为了提高效率 - 因为我们基本上放弃了渲染 - 只需通过禁用所有图层来确保相机基本上不会渲染任何内容,例如让它只渲染单一颜色背景