Brak opisu
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.

FilmGrain.cs 3.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. using System;
  2. namespace UnityEngine.Rendering.Universal
  3. {
  4. /// <summary>
  5. /// Presets for the <see cref="FilmGrain"/> effect.
  6. /// </summary>
  7. public enum FilmGrainLookup
  8. {
  9. /// <summary>
  10. /// Thin grain preset.
  11. /// </summary>
  12. Thin1,
  13. /// <summary>
  14. /// Thin grain preset.
  15. /// </summary>
  16. Thin2,
  17. /// <summary>
  18. /// Medium grain preset.
  19. /// </summary>
  20. Medium1,
  21. /// <summary>
  22. /// Medium grain preset.
  23. /// </summary>
  24. Medium2,
  25. /// <summary>
  26. /// Medium grain preset.
  27. /// </summary>
  28. Medium3,
  29. /// <summary>
  30. /// Medium grain preset.
  31. /// </summary>
  32. Medium4,
  33. /// <summary>
  34. /// Medium grain preset.
  35. /// </summary>
  36. Medium5,
  37. /// <summary>
  38. /// Medium grain preset.
  39. /// </summary>
  40. Medium6,
  41. /// <summary>
  42. /// Large grain preset.
  43. /// </summary>
  44. Large01,
  45. /// <summary>
  46. /// Large grain preset.
  47. /// </summary>
  48. Large02,
  49. /// <summary>
  50. /// Custom grain preset.
  51. /// </summary>
  52. /// <seealso cref="FilmGrain.texture"/>
  53. Custom
  54. }
  55. /// <summary>
  56. /// A volume component that holds settings for the Film Grain effect.
  57. /// </summary>
  58. [Serializable, VolumeComponentMenu("Post-processing/Film Grain")]
  59. [SupportedOnRenderPipeline(typeof(UniversalRenderPipelineAsset))]
  60. [URPHelpURL("Post-Processing-Film-Grain")]
  61. public sealed class FilmGrain : VolumeComponent, IPostProcessComponent
  62. {
  63. /// <summary>
  64. /// The type of grain to use. You can select a preset or provide your own texture by selecting Custom.
  65. /// </summary>
  66. [Tooltip("The type of grain to use. You can select a preset or provide your own texture by selecting Custom.")]
  67. public FilmGrainLookupParameter type = new FilmGrainLookupParameter(FilmGrainLookup.Thin1);
  68. /// <summary>
  69. /// Use this to set the strength of the Film Grain effect.
  70. /// </summary>
  71. [Tooltip("Use the slider to set the strength of the Film Grain effect.")]
  72. public ClampedFloatParameter intensity = new ClampedFloatParameter(0f, 0f, 1f);
  73. /// <summary>
  74. /// Controls the noisiness response curve based on scene luminance. Higher values mean less noise in light areas.
  75. /// </summary>
  76. [Tooltip("Controls the noisiness response curve based on scene luminance. Higher values mean less noise in light areas.")]
  77. public ClampedFloatParameter response = new ClampedFloatParameter(0.8f, 0f, 1f);
  78. /// <summary>
  79. /// A tileable texture to use for the grain. The neutral value is 0.5 where no grain is applied
  80. /// </summary>
  81. [Tooltip("A tileable texture to use for the grain. The neutral value is 0.5 where no grain is applied.")]
  82. public NoInterpTextureParameter texture = new NoInterpTextureParameter(null);
  83. /// <inheritdoc/>
  84. public bool IsActive() => intensity.value > 0f && (type.value != FilmGrainLookup.Custom || texture.value != null);
  85. /// <inheritdoc/>
  86. [Obsolete("Unused #from(2023.1)", false)]
  87. public bool IsTileCompatible() => true;
  88. }
  89. /// <summary>
  90. /// A <see cref="VolumeParameter"/> that holds a <see cref="FilmGrainLookup"/> value.
  91. /// </summary>
  92. [Serializable]
  93. public sealed class FilmGrainLookupParameter : VolumeParameter<FilmGrainLookup>
  94. {
  95. /// <summary>
  96. /// Creates a new <see cref="FilmGrainLookupParameter"/> instance.
  97. /// </summary>
  98. /// <param name="value">The initial value to store in the parameter.</param>
  99. /// <param name="overrideState">The initial override state for the parameter.</param>
  100. public FilmGrainLookupParameter(FilmGrainLookup value, bool overrideState = false) : base(value, overrideState) { }
  101. }
  102. }