using UnityEngine;
public class _MotionBlur_1 : MonoBehaviour
{
public float blurAmount = 0.8f;
public Shader shader;
private Material mat;
public RenderTexture accumTexture;
void Start()
{
mat = new Material(shader);
mat.hideFlags = HideFlags.HideAndDontSave;
}
void OnRenderImage (RenderTexture src, RenderTexture dst)
{
if (accumTexture == null)
{
accumTexture = new RenderTexture(src.width, src.height, 0);
accumTexture.hideFlags = HideFlags.HideAndDontSave;
Graphics.Blit( src, accumTexture );
}
blurAmount = Mathf.Clamp( blurAmount, 0.0f, 1f );
mat.SetTexture("_AccumTex", accumTexture);
mat.SetFloat("_AccumAmt", blurAmount);
Graphics.Blit (src, accumTexture, mat);
Graphics.Blit(accumTexture, dst);
}
}
public class _MotionBlur_1 : MonoBehaviour
{
public float blurAmount = 0.8f;
public Shader shader;
private Material mat;
public RenderTexture accumTexture;
void Start()
{
mat = new Material(shader);
mat.hideFlags = HideFlags.HideAndDontSave;
}
void OnRenderImage (RenderTexture src, RenderTexture dst)
{
if (accumTexture == null)
{
accumTexture = new RenderTexture(src.width, src.height, 0);
accumTexture.hideFlags = HideFlags.HideAndDontSave;
Graphics.Blit( src, accumTexture );
}
blurAmount = Mathf.Clamp( blurAmount, 0.0f, 1f );
mat.SetTexture("_AccumTex", accumTexture);
mat.SetFloat("_AccumAmt", blurAmount);
Graphics.Blit (src, accumTexture, mat);
Graphics.Blit(accumTexture, dst);
}
}
本文介绍了一个Unity中实现运动模糊效果的方法。通过自定义Shader和脚本,可以在游戏中添加平滑的运动模糊视觉效果。该脚本利用了RenderTexture来累积和混合帧之间的图像,从而创建出逼真的运动模糊。
1294

被折叠的 条评论
为什么被折叠?



