Keine Beschreibung
Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

FogScaler.cs 3.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. namespace UnityEngine.AdaptivePerformance
  2. {
  3. /// <summary>
  4. /// A scaler used by <see cref="AdaptivePerformanceIndexer"/> for adjusting build-in fog.
  5. /// </summary>
  6. public class AdaptiveFog : AdaptivePerformanceScaler
  7. {
  8. AdaptivePerformanceScalerSettingsBase m_AdaptiveFog = new AdaptivePerformanceScalerSettingsBase
  9. {
  10. name = "Adaptive Fog",
  11. enabled = false,
  12. scale = 1.0f,
  13. visualImpact = ScalerVisualImpact.Medium,
  14. target = ScalerTarget.GPU,
  15. minBound = 0,
  16. maxBound = 1,
  17. maxLevel = 10
  18. };
  19. /// <summary>
  20. /// A scaler setting used by <see cref="AdaptivePerformanceIndexer"/> to adjust the application update rate using <see cref="Application.targetFrameRate"/>.
  21. /// </summary>
  22. public AdaptivePerformanceScalerSettingsBase AdaptiveFogSetting
  23. {
  24. get { return m_AdaptiveFog; }
  25. set { m_AdaptiveFog = value; }
  26. }
  27. bool m_DefaultFog;
  28. float m_DefaultFarClipPlane = -1;
  29. float m_DefaultDensity = 0;
  30. /// <summary>
  31. /// Ensures settings are applied during startup.
  32. /// </summary>
  33. protected override void Awake()
  34. {
  35. base.Awake();
  36. ApplyDefaultSetting(AdaptiveFogSetting);
  37. }
  38. /// <summary>
  39. /// Callback when scaler gets disabled and removed from indexer
  40. /// </summary>
  41. protected override void OnDisabled()
  42. {
  43. RenderSettings.fogDensity = m_DefaultDensity;
  44. RenderSettings.fog = m_DefaultFog;
  45. if (!Camera.main || m_DefaultFarClipPlane == -1)
  46. return;
  47. Camera.main.farClipPlane = m_DefaultFarClipPlane;
  48. }
  49. /// <summary>
  50. /// Callback when scaler gets enabled and added to the indexer
  51. /// </summary>
  52. protected override void OnEnabled()
  53. {
  54. m_DefaultFog = RenderSettings.fog;
  55. m_DefaultDensity = RenderSettings.fogDensity;
  56. if (!Camera.main)
  57. return;
  58. m_DefaultFarClipPlane = Camera.main.farClipPlane;
  59. }
  60. /// <summary>
  61. /// Callback for any level change.
  62. /// </summary>
  63. protected override void OnLevel()
  64. {
  65. if (ScaleChanged())
  66. {
  67. Debug.Log(Scale);
  68. if (RenderSettings.fogMode == FogMode.Linear)
  69. {
  70. if (!Camera.main || Scale == 0)
  71. return;
  72. if (m_DefaultFarClipPlane == -1)
  73. m_DefaultFarClipPlane = Camera.main.farClipPlane;
  74. Camera.main.farClipPlane = Scale * 1000;
  75. RenderSettings.fogEndDistance = Camera.main.farClipPlane;
  76. }
  77. else
  78. {
  79. RenderSettings.fog = Scale == 0 ? false : true;
  80. RenderSettings.fogDensity = m_DefaultDensity * Scale;
  81. }
  82. }
  83. }
  84. }
  85. }