InTerra_TracksCameraSettings.cs 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. using UnityEngine;
  2. #if USING_HDRP
  3. using UnityEngine.Rendering.HighDefinition;
  4. #endif
  5. #if USING_URP
  6. using UnityEngine.Rendering.Universal;
  7. #endif
  8. namespace InTerra
  9. {
  10. public class InTerra_TracksCameraSettings
  11. {
  12. public static void SetTrackCamera(Camera trackCamera)
  13. {
  14. var updaterScript = InTerra_Data.GetUpdaterScript();
  15. var trackGlobalData = InTerra_Data.GetGlobalData();
  16. trackCamera.transform.rotation = Quaternion.Euler(-90f, 0f, 0f);
  17. trackCamera.clearFlags = CameraClearFlags.Color;
  18. trackCamera.backgroundColor = new Color(0, 0, 0, 0);
  19. trackCamera.cullingMask = 1 << trackGlobalData.trackLayer;
  20. trackCamera.orthographic = true;
  21. trackCamera.orthographicSize = 40;
  22. if (updaterScript.TrackTexture == null)
  23. {
  24. InTerra_Data.CreateTrackRenderTexture();
  25. }
  26. trackCamera.forceIntoRenderTexture = true;
  27. trackCamera.targetTexture = updaterScript.TrackTexture;
  28. trackCamera.cullingMask = 1 << trackGlobalData.trackLayer;
  29. trackCamera.allowHDR = false;
  30. trackCamera.allowDynamicResolution = false;
  31. trackCamera.targetTexture = updaterScript.TrackTexture;
  32. #if USING_HDRP
  33. if (!trackCamera.TryGetComponent<HDAdditionalCameraData>(out HDAdditionalCameraData hd))
  34. {
  35. InTerra_Data.Updater.AddComponent<HDAdditionalCameraData>();
  36. }
  37. var hdAdditionalCameraData = trackCamera.GetComponent<HDAdditionalCameraData>();
  38. hdAdditionalCameraData.clearColorMode = new HDAdditionalCameraData.ClearColorMode();
  39. hdAdditionalCameraData.clearColorMode = HDAdditionalCameraData.ClearColorMode.Color;
  40. hdAdditionalCameraData.backgroundColorHDR = new Color(0, 0, 0, 0);
  41. hdAdditionalCameraData.clearDepth = false;
  42. hdAdditionalCameraData.volumeLayerMask = 0;
  43. hdAdditionalCameraData.probeLayerMask = 0;
  44. hdAdditionalCameraData.customRenderingSettings = true;
  45. var fsm = hdAdditionalCameraData.renderingPathCustomFrameSettingsOverrideMask.mask;
  46. var fs = hdAdditionalCameraData.renderingPathCustomFrameSettings;
  47. fsm[(uint)FrameSettingsField.LitShaderMode] = true;
  48. fsm[(uint)FrameSettingsField.MSAAMode] = true;
  49. fsm[(uint)FrameSettingsField.Decals] = true;
  50. fsm[(uint)FrameSettingsField.TransparentPrepass] = true;
  51. fsm[(uint)FrameSettingsField.TransparentPostpass] = true;
  52. fsm[(uint)FrameSettingsField.RayTracing] = true;
  53. fsm[(uint)FrameSettingsField.CustomPass] = true;
  54. fsm[(uint)FrameSettingsField.MotionVectors] = true;
  55. fsm[(uint)FrameSettingsField.Refraction] = true;
  56. fsm[(uint)FrameSettingsField.Distortion] = true;
  57. fsm[(uint)FrameSettingsField.Postprocess] = true;
  58. fsm[(uint)FrameSettingsField.CustomPass] = true;
  59. fsm[(uint)FrameSettingsField.AfterPostprocess] = true;
  60. fsm[(uint)FrameSettingsField.ShadowMaps] = true;
  61. fsm[(uint)FrameSettingsField.ContactShadows] = true;
  62. fsm[(uint)FrameSettingsField.ScreenSpaceShadows] = true;
  63. fsm[(uint)FrameSettingsField.Shadowmask] = true;
  64. fsm[(uint)FrameSettingsField.SSR] = true;
  65. fsm[(uint)FrameSettingsField.SSGI] = true;
  66. fsm[(uint)FrameSettingsField.SSAO] = true;
  67. fsm[(uint)FrameSettingsField.Transmission] = true;
  68. fsm[(uint)FrameSettingsField.AtmosphericScattering] = true;
  69. fsm[(uint)FrameSettingsField.LightLayers] = true;
  70. fsm[(uint)FrameSettingsField.ExposureControl] = true;
  71. fsm[(uint)FrameSettingsField.ReflectionProbe] = true;
  72. fsm[(uint)FrameSettingsField.PlanarProbe] = true;
  73. fsm[(uint)FrameSettingsField.ReplaceDiffuseForIndirect] = true;
  74. fsm[(uint)FrameSettingsField.SkyReflection] = true;
  75. fsm[(uint)FrameSettingsField.DirectSpecularLighting] = true;
  76. fsm[(uint)FrameSettingsField.SubsurfaceScattering] = true;
  77. fsm[(uint)FrameSettingsField.FullResolutionCloudsForSky] = true;
  78. fsm[(uint)FrameSettingsField.VolumetricClouds] = true;
  79. fsm[(uint)FrameSettingsField.AsyncCompute] = true;
  80. fsm[(uint)FrameSettingsField.FPTLForForwardOpaque] = true;
  81. fsm[(uint)FrameSettingsField.BigTilePrepass] = true;
  82. fsm[(uint)FrameSettingsField.ComputeLightVariants] = true;
  83. fsm[(uint)FrameSettingsField.ComputeMaterialVariants] = true;
  84. bool setFSetting = false;
  85. fs.litShaderMode = LitShaderMode.Forward;
  86. fs.SetEnabled(FrameSettingsField.LitShaderMode, setFSetting);
  87. fs.SetEnabled(FrameSettingsField.MSAAMode, setFSetting);
  88. fs.SetEnabled(FrameSettingsField.Decals, setFSetting);
  89. fs.SetEnabled(FrameSettingsField.TransparentPrepass, setFSetting);
  90. fs.SetEnabled(FrameSettingsField.TransparentPostpass, setFSetting);
  91. fs.SetEnabled(FrameSettingsField.RayTracing, setFSetting);
  92. fs.SetEnabled(FrameSettingsField.CustomPass, setFSetting);
  93. fs.SetEnabled(FrameSettingsField.MotionVectors, setFSetting);
  94. fs.SetEnabled(FrameSettingsField.Refraction, setFSetting);
  95. fs.SetEnabled(FrameSettingsField.Distortion, setFSetting);
  96. fs.SetEnabled(FrameSettingsField.Postprocess, setFSetting);
  97. fs.SetEnabled(FrameSettingsField.CustomPass, setFSetting);
  98. fs.SetEnabled(FrameSettingsField.AfterPostprocess, setFSetting);
  99. fs.SetEnabled(FrameSettingsField.ShadowMaps, setFSetting);
  100. fs.SetEnabled(FrameSettingsField.ContactShadows, setFSetting);
  101. fs.SetEnabled(FrameSettingsField.ScreenSpaceShadows, setFSetting);
  102. fs.SetEnabled(FrameSettingsField.Shadowmask, setFSetting);
  103. fs.SetEnabled(FrameSettingsField.SSR, setFSetting);
  104. fs.SetEnabled(FrameSettingsField.SSGI, setFSetting);
  105. fs.SetEnabled(FrameSettingsField.SSAO, setFSetting);
  106. fs.SetEnabled(FrameSettingsField.Transmission, setFSetting);
  107. fs.SetEnabled(FrameSettingsField.AtmosphericScattering, setFSetting);
  108. fs.SetEnabled(FrameSettingsField.LightLayers, setFSetting);
  109. fs.SetEnabled(FrameSettingsField.ExposureControl, setFSetting);
  110. fs.SetEnabled(FrameSettingsField.ReflectionProbe, setFSetting);
  111. fs.SetEnabled(FrameSettingsField.PlanarProbe, setFSetting);
  112. fs.SetEnabled(FrameSettingsField.ReplaceDiffuseForIndirect, setFSetting);
  113. fs.SetEnabled(FrameSettingsField.SkyReflection, setFSetting);
  114. fs.SetEnabled(FrameSettingsField.DirectSpecularLighting, setFSetting);
  115. fs.SetEnabled(FrameSettingsField.SubsurfaceScattering, setFSetting);
  116. fs.SetEnabled(FrameSettingsField.FullResolutionCloudsForSky, setFSetting);
  117. fs.SetEnabled(FrameSettingsField.VolumetricClouds, setFSetting);
  118. fs.SetEnabled(FrameSettingsField.AsyncCompute, setFSetting);
  119. fs.SetEnabled(FrameSettingsField.FPTLForForwardOpaque, setFSetting);
  120. fs.SetEnabled(FrameSettingsField.BigTilePrepass, setFSetting);
  121. fs.SetEnabled(FrameSettingsField.ComputeLightVariants, setFSetting);
  122. fs.SetEnabled(FrameSettingsField.ComputeMaterialVariants, setFSetting);
  123. fs.SetEnabled(FrameSettingsField.CustomPass, true);
  124. hdAdditionalCameraData.renderingPathCustomFrameSettingsOverrideMask.mask = fsm;
  125. hdAdditionalCameraData.renderingPathCustomFrameSettings = fs;
  126. #endif
  127. #if USING_URP
  128. if (!trackCamera.TryGetComponent<UniversalAdditionalCameraData>(out UniversalAdditionalCameraData c))
  129. {
  130. InTerra_Data.Updater.AddComponent<UniversalAdditionalCameraData>();
  131. }
  132. var additionalCameraData = trackCamera.GetComponent<UniversalAdditionalCameraData>();
  133. additionalCameraData.antialiasing = AntialiasingMode.None;
  134. additionalCameraData.volumeLayerMask = 0;
  135. additionalCameraData.renderShadows = false;
  136. additionalCameraData.renderPostProcessing = false;
  137. additionalCameraData.renderType = CameraRenderType.Base;
  138. #endif
  139. trackCamera.enabled = true;
  140. }
  141. }
  142. }