summaryrefslogtreecommitdiff
path: root/Valheim_r202102_v0.141.2/Valheim/assembly_sunshafts/UnityStandardAssets.ImageEffects/MotionBlur.cs
diff options
context:
space:
mode:
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.cs52
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);
+ }
+}