summaryrefslogtreecommitdiff
path: root/RTP_LODmanager.cs
diff options
context:
space:
mode:
Diffstat (limited to 'RTP_LODmanager.cs')
-rw-r--r--RTP_LODmanager.cs378
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;
+ }
+ }
+}