diff options
author | chai <215380520@qq.com> | 2024-03-13 11:00:58 +0800 |
---|---|---|
committer | chai <215380520@qq.com> | 2024-03-13 11:00:58 +0800 |
commit | 6ce8b9e22fc13be34b442c7b6af48b42cd44275a (patch) | |
tree | b38119d2acf0a982cb67e381f146924b9bfc3b3f /RTP_LODmanager.cs |
+init
Diffstat (limited to 'RTP_LODmanager.cs')
-rw-r--r-- | RTP_LODmanager.cs | 378 |
1 files changed, 378 insertions, 0 deletions
diff --git a/RTP_LODmanager.cs b/RTP_LODmanager.cs new file mode 100644 index 0000000..e14bd77 --- /dev/null +++ b/RTP_LODmanager.cs @@ -0,0 +1,378 @@ +using UnityEngine; + +public class RTP_LODmanager : MonoBehaviour +{ + public TerrainShaderLod RTP_LODlevel; + + public bool RTP_SHADOWS = true; + + public bool RTP_SOFT_SHADOWS = true; + + public bool show_first_features; + + public bool show_add_features; + + public bool RTP_NOFORWARDADD; + + public bool RTP_NO_DEFERRED; + + public bool RTP_FULLFORWARDSHADOWS; + + public bool RTP_NOLIGHTMAP; + + public bool RTP_NODIRLIGHTMAP; + + public bool RTP_NODYNLIGHTMAP; + + public bool NO_SPECULARITY; + + public bool RTP_ADDSHADOW; + + public bool RTP_CUT_HOLES; + + public bool FIX_REFRESHING_ISSUE = true; + + public bool RTP_USE_COLOR_ATLAS_FIRST; + + public bool RTP_USE_COLOR_ATLAS_ADD; + + public RTPFogType RTP_FOGTYPE; + + public bool ADV_COLOR_MAP_BLENDING_FIRST; + + public bool ADV_COLOR_MAP_BLENDING_ADD; + + public bool RTP_UV_BLEND_FIRST = true; + + public bool RTP_UV_BLEND_ADD = true; + + public bool RTP_DISTANCE_ONLY_UV_BLEND_FIRST = true; + + public bool RTP_DISTANCE_ONLY_UV_BLEND_ADD = true; + + public bool RTP_NORMALS_FOR_REPLACE_UV_BLEND_FIRST = true; + + public bool RTP_NORMALS_FOR_REPLACE_UV_BLEND_ADD = true; + + public bool RTP_SUPER_DETAIL_FIRST = true; + + public bool RTP_SUPER_DETAIL_ADD = true; + + public bool RTP_SUPER_DETAIL_MULTS_FIRST; + + public bool RTP_SUPER_DETAIL_MULTS_ADD; + + public bool RTP_SNOW_FIRST; + + public bool RTP_SNOW_ADD; + + public bool RTP_SNW_CHOOSEN_LAYER_COLOR_FIRST; + + public bool RTP_SNW_CHOOSEN_LAYER_COLOR_ADD; + + public int RTP_SNW_CHOOSEN_LAYER_COLOR_NUM_FIRST = 7; + + public int RTP_SNW_CHOOSEN_LAYER_COLOR_NUM_ADD = 7; + + public bool RTP_SNW_CHOOSEN_LAYER_NORMAL_FIRST; + + public bool RTP_SNW_CHOOSEN_LAYER_NORMAL_ADD; + + public int RTP_SNW_CHOOSEN_LAYER_NORMAL_NUM_FIRST = 7; + + public int RTP_SNW_CHOOSEN_LAYER_NORMAL_NUM_ADD = 7; + + public RTPLodLevel MAX_LOD_FIRST = RTPLodLevel.PM; + + public RTPLodLevel MAX_LOD_FIRST_PLUS4 = RTPLodLevel.SIMPLE; + + public RTPLodLevel MAX_LOD_ADD = RTPLodLevel.PM; + + public bool RTP_SHARPEN_HEIGHTBLEND_EDGES_PASS1_FIRST = true; + + public bool RTP_SHARPEN_HEIGHTBLEND_EDGES_PASS2_FIRST; + + public bool RTP_SHARPEN_HEIGHTBLEND_EDGES_PASS1_ADD = true; + + public bool RTP_SHARPEN_HEIGHTBLEND_EDGES_PASS2_ADD; + + public bool RTP_HEIGHTBLEND_AO_FIRST; + + public bool RTP_HEIGHTBLEND_AO_ADD; + + public bool RTP_EMISSION_FIRST; + + public bool RTP_EMISSION_ADD; + + public bool RTP_FUILD_EMISSION_WRAP_FIRST; + + public bool RTP_FUILD_EMISSION_WRAP_ADD; + + public bool RTP_HOTAIR_EMISSION_FIRST; + + public bool RTP_HOTAIR_EMISSION_ADD; + + public bool RTP_SHOW_OVERLAPPED; + + public bool RTP_TRIPLANAR_FIRST; + + public bool RTP_TRIPLANAR_ADD; + + public bool RTP_NORMALGLOBAL; + + public bool RTP_TESSELLATION; + + public bool RTP_TESSELLATION_SAMPLE_TEXTURE; + + public bool RTP_HEIGHTMAP_SAMPLE_BICUBIC = true; + + public bool RTP_DETAIL_HEIGHTMAP_SAMPLE; + + public bool RTP_TREESGLOBAL; + + public bool RTP_USE_BUMPMAPS_FIRST = true; + + public bool RTP_USE_BUMPMAPS_ADD = true; + + public bool RTP_USE_PERLIN_FIRST; + + public bool RTP_USE_PERLIN_ADD; + + public bool RTP_COLOR_MAP_BLEND_MULTIPLY_FIRST = true; + + public bool RTP_COLOR_MAP_BLEND_MULTIPLY_ADD = true; + + public bool RTP_SIMPLE_FAR_FIRST = true; + + public bool RTP_SIMPLE_FAR_ADD = true; + + public bool RTP_CROSSPASS_HEIGHTBLEND; + + public int[] UV_BLEND_ROUTE_NUM_FIRST = new int[8] { 0, 1, 2, 3, 4, 5, 6, 7 }; + + public int[] UV_BLEND_ROUTE_NUM_ADD = new int[8] { 0, 1, 2, 3, 4, 5, 6, 7 }; + + public bool RTP_HARD_CROSSPASS = true; + + public bool RTP_MAPPED_SHADOWS_FIRST; + + public bool RTP_MAPPED_SHADOWS_ADD; + + public bool RTP_VERTICAL_TEXTURE_FIRST; + + public bool RTP_VERTICAL_TEXTURE_ADD; + + public bool RTP_ADDITIONAL_FEATURES_IN_FALLBACKS = true; + + public bool RTP_4LAYERS_MODE; + + public int numLayers; + + public int numLayersProcessedByFarShader = 8; + + public bool ADDPASS_IN_BLENDBASE; + + public bool RTP_GLITTER_FIRST; + + public bool RTP_GLITTER_ADD; + + public bool RTP_WETNESS_FIRST; + + public bool RTP_WETNESS_ADD; + + public bool RTP_WET_RIPPLE_TEXTURE_FIRST; + + public bool RTP_WET_RIPPLE_TEXTURE_ADD; + + public bool RTP_CAUSTICS_FIRST; + + public bool RTP_CAUSTICS_ADD; + + public bool RTP_VERTALPHA_CAUSTICS; + + public bool SIMPLE_WATER_FIRST; + + public bool SIMPLE_WATER_ADD; + + public bool RTP_USE_EXTRUDE_REDUCTION_FIRST; + + public bool RTP_USE_EXTRUDE_REDUCTION_ADD; + + private Shader terrain_shader; + + private Shader terrain_shader_far; + + private Shader terrain_shader_add; + + private Shader terrain2geom_shader; + + private Shader terrain_geomBlend_shader; + + private Shader terrain2geom_geomBlend_shader; + + private Shader terrain_geomBlend_GeometryBlend_BumpedDetailSnow; + + private Shader geomblend_GeometryBlend_WaterShader_2VertexPaint_HB; + + private Shader geomBlend_GeometryBlend_WaterShader_FlowMap_HB; + + private Shader terrain_geomBlendActual_shader; + + public bool dont_sync; + + private void Awake() + { + RefreshLODlevel(); + } + + public void RefreshLODlevel() + { + ReliefTerrain[] array = (ReliefTerrain[])Object.FindObjectsOfType(typeof(ReliefTerrain)); + ReliefTerrain reliefTerrain = null; + for (int i = 0; i < array.Length; i++) + { + if ((bool)array[i].GetComponent(typeof(Terrain))) + { + reliefTerrain = array[i]; + break; + } + } + if (reliefTerrain != null && reliefTerrain.globalSettingsHolder != null) + { + if (terrain_shader == null) + { + terrain_shader = Shader.Find("Relief Pack/ReliefTerrain-FirstPass"); + } + if (terrain_shader_add == null) + { + terrain_shader_add = Shader.Find("Hidden/Relief Pack/ReliefTerrain-AddPass"); + } + } + else + { + if (terrain_shader == null) + { + terrain_shader = Shader.Find("Hidden/TerrainEngine/Splatmap/Lightmap-FirstPass"); + } + if (terrain_shader_add == null) + { + terrain_shader_add = Shader.Find("Hidden/TerrainEngine/Splatmap/Lightmap-AddPass"); + } + if (terrain_shader == null) + { + terrain_shader = Shader.Find("Nature/Terrain/Diffuse"); + } + if (terrain_shader_add == null) + { + terrain_shader_add = Shader.Find("Hidden/TerrainEngine/Splatmap/Diffuse-AddPass"); + } + } + if (terrain_shader_far == null) + { + terrain_shader_far = Shader.Find("Hidden/Relief Pack/ReliefTerrain-FarOnly"); + } + if (terrain2geom_shader == null) + { + terrain2geom_shader = Shader.Find("Relief Pack/Terrain2Geometry"); + } + if (terrain_geomBlend_shader == null) + { + terrain_geomBlend_shader = Shader.Find("Hidden/Relief Pack/ReliefTerrainGeometryBlendBase"); + } + if (terrain2geom_geomBlend_shader == null) + { + terrain2geom_geomBlend_shader = Shader.Find("Hidden/Relief Pack/ReliefTerrain2GeometryBlendBase"); + } + if (terrain_geomBlend_GeometryBlend_BumpedDetailSnow == null) + { + terrain_geomBlend_GeometryBlend_BumpedDetailSnow = Shader.Find("Relief Pack - GeometryBlend/Bumped Detail Snow"); + } + if (geomblend_GeometryBlend_WaterShader_2VertexPaint_HB == null) + { + geomblend_GeometryBlend_WaterShader_2VertexPaint_HB = Shader.Find("Relief Pack - GeometryBlend/Water/2 Layers/ HeightBlend"); + } + if (geomBlend_GeometryBlend_WaterShader_FlowMap_HB == null) + { + geomBlend_GeometryBlend_WaterShader_FlowMap_HB = Shader.Find("Relief Pack - GeometryBlend/Water/ FlowMap - HeightBlend"); + } + int maximumLOD = 700; + if (RTP_LODlevel == TerrainShaderLod.POM) + { + if (RTP_SHADOWS) + { + if (RTP_SOFT_SHADOWS) + { + Shader.EnableKeyword("RTP_POM_SHADING_HI"); + Shader.DisableKeyword("RTP_POM_SHADING_MED"); + Shader.DisableKeyword("RTP_POM_SHADING_LO"); + } + else + { + Shader.EnableKeyword("RTP_POM_SHADING_MED"); + Shader.DisableKeyword("RTP_POM_SHADING_HI"); + Shader.DisableKeyword("RTP_POM_SHADING_LO"); + } + } + else + { + Shader.EnableKeyword("RTP_POM_SHADING_LO"); + Shader.DisableKeyword("RTP_POM_SHADING_MED"); + Shader.DisableKeyword("RTP_POM_SHADING_HI"); + } + Shader.DisableKeyword("RTP_PM_SHADING"); + Shader.DisableKeyword("RTP_SIMPLE_SHADING"); + } + else if (RTP_LODlevel == TerrainShaderLod.PM) + { + Shader.DisableKeyword("RTP_POM_SHADING_HI"); + Shader.DisableKeyword("RTP_POM_SHADING_MED"); + Shader.DisableKeyword("RTP_POM_SHADING_LO"); + Shader.EnableKeyword("RTP_PM_SHADING"); + Shader.DisableKeyword("RTP_SIMPLE_SHADING"); + } + else + { + Shader.DisableKeyword("RTP_POM_SHADING_HI"); + Shader.DisableKeyword("RTP_POM_SHADING_MED"); + Shader.DisableKeyword("RTP_POM_SHADING_LO"); + Shader.DisableKeyword("RTP_PM_SHADING"); + Shader.EnableKeyword("RTP_SIMPLE_SHADING"); + } + if (terrain_shader != null) + { + terrain_shader.maximumLOD = maximumLOD; + } + if (terrain_shader_far != null) + { + terrain_shader_far.maximumLOD = maximumLOD; + } + if (terrain_shader_add != null) + { + terrain_shader_add.maximumLOD = maximumLOD; + } + if (terrain2geom_shader != null) + { + terrain2geom_shader.maximumLOD = maximumLOD; + } + if (terrain_geomBlend_shader != null) + { + terrain_geomBlend_shader.maximumLOD = maximumLOD; + } + if (terrain2geom_geomBlend_shader != null) + { + terrain2geom_geomBlend_shader.maximumLOD = maximumLOD; + } + if (terrain_geomBlend_GeometryBlend_BumpedDetailSnow != null) + { + terrain_geomBlend_GeometryBlend_BumpedDetailSnow.maximumLOD = maximumLOD; + } + if (geomblend_GeometryBlend_WaterShader_2VertexPaint_HB != null) + { + geomblend_GeometryBlend_WaterShader_2VertexPaint_HB.maximumLOD = maximumLOD; + } + if (geomBlend_GeometryBlend_WaterShader_FlowMap_HB != null) + { + geomBlend_GeometryBlend_WaterShader_FlowMap_HB.maximumLOD = maximumLOD; + } + } +} |