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; } } }