源战役客户端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

75 lines
2.0 KiB

  1. using UnityEngine;
  2. using UnityEngine.Rendering;
  3. using System;
  4. [ExecuteInEditMode, ImageEffectAllowedInSceneView]
  5. public class FXAAEffect : MonoBehaviour {
  6. const int luminancePass = 0;
  7. const int fxaaPass = 1;
  8. // public enum LuminanceMode { Alpha, Green, Calculate }
  9. // public LuminanceMode luminanceSource;
  10. [Range(0.0312f, 0.0833f)]
  11. public float contrastThreshold = 0.0312f;
  12. [Range(0.063f, 0.333f)]
  13. public float relativeThreshold = 0.063f;
  14. [Range(0f, 1f)]
  15. public float subpixelBlending = 1f;
  16. // [HideInInspector]
  17. public Shader fxaaShader;
  18. public bool lowQuality;
  19. // public bool gammaBlending;
  20. [NonSerialized]
  21. Material fxaaMaterial;
  22. RenderTexture luminanceTex;
  23. void OnRenderImage (RenderTexture source, RenderTexture destination) {
  24. if (fxaaMaterial == null) {
  25. fxaaMaterial = new Material(fxaaShader);
  26. fxaaMaterial.hideFlags = HideFlags.HideAndDontSave;
  27. }
  28. fxaaMaterial.SetFloat("_ContrastThreshold", contrastThreshold);
  29. fxaaMaterial.SetFloat("_RelativeThreshold", relativeThreshold);
  30. fxaaMaterial.SetFloat("_SubpixelBlending", subpixelBlending);
  31. if (lowQuality) {
  32. fxaaMaterial.EnableKeyword("LOW_QUALITY");
  33. }
  34. else {
  35. fxaaMaterial.DisableKeyword("LOW_QUALITY");
  36. }
  37. // if (gammaBlending) {
  38. // fxaaMaterial.EnableKeyword("GAMMA_BLENDING");
  39. // }
  40. // else {
  41. // fxaaMaterial.DisableKeyword("GAMMA_BLENDING");
  42. // }
  43. // if (luminanceSource == LuminanceMode.Calculate) {
  44. // fxaaMaterial.DisableKeyword("LUMINANCE_GREEN");
  45. // luminanceTex = RenderTexture.GetTemporary(
  46. // source.width, source.height, 0, source.format
  47. // );
  48. // Graphics.Blit(source, luminanceTex, fxaaMaterial, luminancePass);
  49. // Graphics.Blit(luminanceTex, destination, fxaaMaterial, fxaaPass);
  50. // RenderTexture.ReleaseTemporary(luminanceTex);
  51. // }
  52. // else {
  53. // if (luminanceSource == LuminanceMode.Green) {
  54. // fxaaMaterial.EnableKeyword("LUMINANCE_GREEN");
  55. // }
  56. // else {
  57. // fxaaMaterial.DisableKeyword("LUMINANCE_GREEN");
  58. // }
  59. Graphics.Blit(source, destination, fxaaMaterial, fxaaPass);
  60. // }
  61. }
  62. }