Fisheye.cs 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. using System;
  2. using UnityEngine;
  3. namespace UnityStandardAssets.ImageEffects
  4. {
  5. [ExecuteInEditMode]
  6. [RequireComponent (typeof(Camera))]
  7. [AddComponentMenu ("Image Effects/Displacement/Fisheye")]
  8. public class Fisheye : PostEffectsBase
  9. {
  10. [Range(0.0f, 1.5f)]
  11. public float strengthX = 0.05f;
  12. [Range(0.0f, 1.5f)]
  13. public float strengthY = 0.05f;
  14. public Shader fishEyeShader = null;
  15. private Material fisheyeMaterial = null;
  16. public override bool CheckResources ()
  17. {
  18. CheckSupport (false);
  19. fisheyeMaterial = CheckShaderAndCreateMaterial(fishEyeShader,fisheyeMaterial);
  20. if (!isSupported)
  21. ReportAutoDisable ();
  22. return isSupported;
  23. }
  24. void OnRenderImage (RenderTexture source, RenderTexture destination)
  25. {
  26. if (CheckResources()==false)
  27. {
  28. Graphics.Blit (source, destination);
  29. return;
  30. }
  31. float oneOverBaseSize = 80.0f / 512.0f; // to keep values more like in the old version of fisheye
  32. float ar = (source.width * 1.0f) / (source.height * 1.0f);
  33. fisheyeMaterial.SetVector ("intensity", new Vector4 (strengthX * ar * oneOverBaseSize, strengthY * oneOverBaseSize, strengthX * ar * oneOverBaseSize, strengthY * oneOverBaseSize));
  34. Graphics.Blit (source, destination, fisheyeMaterial);
  35. }
  36. }
  37. }