diff options
Diffstat (limited to 'Valheim_r202102_v0.141.2/Valheim/assembly_sunshafts/UnityStandardAssets.ImageEffects/MotionBlur.cs')
-rw-r--r-- | Valheim_r202102_v0.141.2/Valheim/assembly_sunshafts/UnityStandardAssets.ImageEffects/MotionBlur.cs | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/Valheim_r202102_v0.141.2/Valheim/assembly_sunshafts/UnityStandardAssets.ImageEffects/MotionBlur.cs b/Valheim_r202102_v0.141.2/Valheim/assembly_sunshafts/UnityStandardAssets.ImageEffects/MotionBlur.cs new file mode 100644 index 0000000..4f34fc8 --- /dev/null +++ b/Valheim_r202102_v0.141.2/Valheim/assembly_sunshafts/UnityStandardAssets.ImageEffects/MotionBlur.cs @@ -0,0 +1,52 @@ +using UnityEngine; + +namespace UnityStandardAssets.ImageEffects; + +[ExecuteInEditMode] +[AddComponentMenu("Image Effects/Blur/Motion Blur (Color Accumulation)")] +[RequireComponent(typeof(Camera))] +public class MotionBlur : ImageEffectBase +{ + [Range(0f, 0.92f)] + public float blurAmount = 0.8f; + + public bool extraBlur; + + private RenderTexture accumTexture; + + protected override void Start() + { + base.Start(); + } + + protected override void OnDisable() + { + base.OnDisable(); + Object.DestroyImmediate(accumTexture); + } + + private void OnRenderImage(RenderTexture source, RenderTexture destination) + { + if (accumTexture == null || accumTexture.width != source.width || accumTexture.height != source.height) + { + Object.DestroyImmediate(accumTexture); + accumTexture = new RenderTexture(source.width, source.height, 0); + accumTexture.hideFlags = HideFlags.HideAndDontSave; + Graphics.Blit(source, accumTexture); + } + if (extraBlur) + { + RenderTexture temporary = RenderTexture.GetTemporary(source.width / 4, source.height / 4, 0); + accumTexture.MarkRestoreExpected(); + Graphics.Blit(accumTexture, temporary); + Graphics.Blit(temporary, accumTexture); + RenderTexture.ReleaseTemporary(temporary); + } + blurAmount = Mathf.Clamp(blurAmount, 0f, 0.92f); + base.material.SetTexture("_MainTex", accumTexture); + base.material.SetFloat("_AccumOrig", 1f - blurAmount); + accumTexture.MarkRestoreExpected(); + Graphics.Blit(source, accumTexture, base.material); + Graphics.Blit(accumTexture, destination); + } +} |