using System; using UnityEngine; [Serializable] public class ReliefTerrainGlobalSettingsHolder { public int numTiles; public int numLayers; [NonSerialized] public bool dont_check_weak_references; [NonSerialized] public bool dont_check_for_interfering_terrain_replacement_shaders; [NonSerialized] public Texture2D[] bakeJobArray; public Texture2D[] splats; public Texture2D[] splat_atlases = new Texture2D[3]; public string save_path_atlasA = string.Empty; public string save_path_atlasB = string.Empty; public string save_path_atlasC = string.Empty; public string save_path_terrain_steepness = string.Empty; public string save_path_terrain_height = string.Empty; public string save_path_terrain_direction = string.Empty; public string save_path_Bump01 = string.Empty; public string save_path_Bump23 = string.Empty; public string save_path_Bump45 = string.Empty; public string save_path_Bump67 = string.Empty; public string save_path_Bump89 = string.Empty; public string save_path_BumpAB = string.Empty; public string save_path_HeightMap = string.Empty; public string save_path_HeightMap2 = string.Empty; public string save_path_HeightMap3 = string.Empty; public string save_path_SSColorCombinedA = string.Empty; public string save_path_SSColorCombinedB = string.Empty; public string newPresetName = "a preset name..."; public Texture2D activateObject; private GameObject _RTP_LODmanager; public RTP_LODmanager _RTP_LODmanagerScript; public float RTP_MIP_BIAS; public float MasterLayerBrightness = 1f; public float MasterLayerSaturation = 1f; public float EmissionRefractFiltering = 4f; public float EmissionRefractAnimSpeed = 4f; public RTPColorChannels SuperDetailA_channel; public RTPColorChannels SuperDetailB_channel; public Texture2D Bump01; public Texture2D Bump23; public Texture2D Bump45; public Texture2D Bump67; public Texture2D Bump89; public Texture2D BumpAB; public Texture2D BumpGlobal; public int BumpGlobalCombinedSize = 1024; public Texture2D SSColorCombinedA; public Texture2D SSColorCombinedB; public Texture2D VerticalTexture; public float BumpMapGlobalScale; public Vector3 GlobalColorMapBlendValues; public float _GlobalColorMapNearMIP; public float GlobalColorMapSaturation; public float GlobalColorMapSaturationFar = 1f; public float GlobalColorMapDistortByPerlin = 0.005f; public float GlobalColorMapBrightness; public float GlobalColorMapBrightnessFar = 1f; public float _FarNormalDamp; public float blendMultiplier; public Vector3 terrainTileSize; public Texture2D HeightMap; public Vector4 ReliefTransform; public float DIST_STEPS; public float WAVELENGTH; public float ReliefBorderBlend; public float ExtrudeHeight; public float LightmapShading; public float RTP_AOsharpness; public float RTP_AOamp; public float _occlusionStrength = 1f; public float SHADOW_STEPS; public float WAVELENGTH_SHADOWS; public float SelfShadowStrength; public float ShadowSmoothing; public float ShadowSoftnessFade = 0.8f; public float distance_start; public float distance_transition; public float distance_start_bumpglobal; public float distance_transition_bumpglobal; public float rtp_perlin_start_val; public float _Phong; public float tessHeight = 300f; public float _TessSubdivisions = 1f; public float _TessSubdivisionsFar = 1f; public float _TessYOffset; public float trees_shadow_distance_start; public float trees_shadow_distance_transition; public float trees_shadow_value; public float trees_pixel_distance_start; public float trees_pixel_distance_transition; public float trees_pixel_blend_val; public float global_normalMap_multiplier; public float global_normalMap_farUsage; public float _AmbientEmissiveMultiplier = 1f; public float _AmbientEmissiveRelief = 0.5f; public Texture2D HeightMap2; public Texture2D HeightMap3; public int rtp_mipoffset_globalnorm; public float _SuperDetailTiling; public Texture2D SuperDetailA; public Texture2D SuperDetailB; public float TERRAIN_GlobalWetness; public Texture2D TERRAIN_RippleMap; public float TERRAIN_RippleScale; public float TERRAIN_FlowScale; public float TERRAIN_FlowSpeed; public float TERRAIN_FlowCycleScale; public float TERRAIN_FlowMipOffset; public float TERRAIN_WetDarkening; public float TERRAIN_WetDropletsStrength; public float TERRAIN_WetHeight_Treshold; public float TERRAIN_WetHeight_Transition; public float TERRAIN_RainIntensity; public float TERRAIN_DropletsSpeed; public float TERRAIN_mipoffset_flowSpeed; public float TERRAIN_CausticsAnimSpeed; public Color TERRAIN_CausticsColor; public GameObject TERRAIN_CausticsWaterLevelRefObject; public float TERRAIN_CausticsWaterLevel; public float TERRAIN_CausticsWaterLevelByAngle; public float TERRAIN_CausticsWaterDeepFadeLength; public float TERRAIN_CausticsWaterShallowFadeLength; public float TERRAIN_CausticsTilingScale; public Texture2D TERRAIN_CausticsTex; public Vector4 RTP_LightDefVector; public Texture2D[] Bumps; public float[] FarSpecCorrection; public float[] MIPmult; public float[] MixScale; public float[] MixBlend; public float[] MixSaturation; public float[] RTP_DiffFresnel; public float[] RTP_metallic; public float[] RTP_glossMin; public float[] RTP_glossMax; public float[] RTP_glitter; public float[] GlobalColorBottom; public float[] GlobalColorTop; public float[] GlobalColorColormapLoSat; public float[] GlobalColorColormapHiSat; public float[] GlobalColorLayerLoSat; public float[] GlobalColorLayerHiSat; public float[] GlobalColorLoBlend; public float[] GlobalColorHiBlend; public float[] MixBrightness; public float[] MixReplace; public float[] LayerBrightness; public float[] LayerBrightness2Spec; public float[] LayerAlbedo2SpecColor; public float[] LayerSaturation; public float[] LayerEmission; public Color[] LayerEmissionColor; public float[] LayerEmissionRefractStrength; public float[] LayerEmissionRefractHBedge; public float[] GlobalColorPerLayer; public float[] PER_LAYER_HEIGHT_MODIFIER; public float[] _SuperDetailStrengthMultA; public float[] _SuperDetailStrengthMultASelfMaskNear; public float[] _SuperDetailStrengthMultASelfMaskFar; public float[] _SuperDetailStrengthMultB; public float[] _SuperDetailStrengthMultBSelfMaskNear; public float[] _SuperDetailStrengthMultBSelfMaskFar; public float[] _SuperDetailStrengthNormal; public float[] _BumpMapGlobalStrength; public float[] AO_strength = new float[12] { 1f, 1f, 1f, 1f, 1f, 1f, 1f, 1f, 1f, 1f, 1f, 1f }; public float[] VerticalTextureStrength; public float VerticalTextureGlobalBumpInfluence; public float VerticalTextureTiling; public Texture2D[] Heights; public float[] _snow_strength_per_layer; public ProceduralMaterial[] Substances; public float[] TERRAIN_LayerWetStrength; public float[] TERRAIN_WaterLevel; public float[] TERRAIN_WaterLevelSlopeDamp; public float[] TERRAIN_WaterEdge; public float[] TERRAIN_WaterGloss; public float[] TERRAIN_WaterGlossDamper; public float[] TERRAIN_Refraction; public float[] TERRAIN_WetRefraction; public float[] TERRAIN_Flow; public float[] TERRAIN_WetFlow; public float[] TERRAIN_WaterMetallic; public float[] TERRAIN_WetGloss; public Color[] TERRAIN_WaterColor; public float[] TERRAIN_WaterEmission; public float _snow_strength; public float _global_color_brightness_to_snow; public float _snow_slope_factor; public float _snow_edge_definition; public float _snow_height_treshold; public float _snow_height_transition; public Color _snow_color; public float _snow_gloss; public float _snow_reflectivness; public float _snow_deep_factor; public float _snow_diff_fresnel; public float _snow_metallic; public float _snow_Frost; public float _snow_MicroTiling = 1f; public float _snow_BumpMicro = 0.2f; public Color _SnowGlitterColor = new Color(1f, 1f, 1f, 0.1f); public float _snow_occlusionStrength = 0.5f; public int _snow_TranslucencyDeferredLightIndex; public Color _GlitterColor; public float[] _GlitterStrength; public float _GlitterTiling; public float _GlitterDensity; public float _GlitterFilter; public float _GlitterColorization; public Texture2D _SparkleMap; public bool _4LAYERS_SHADER_USED; public bool flat_dir_ref = true; public bool flip_dir_ref = true; public GameObject direction_object; public bool show_details; public bool show_details_main; public bool show_details_atlasing; public bool show_details_layers; public bool show_details_uv_blend; public bool show_controlmaps; public bool show_controlmaps_build; public bool show_controlmaps_helpers; public bool show_controlmaps_highcost; public bool show_controlmaps_splats; public bool show_vert_texture; public bool show_global_color; public bool show_snow; public bool show_global_bump; public bool show_global_bump_normals; public bool show_global_bump_superdetail; public ReliefTerrainMenuItems submenu; public ReliefTerrainSettingsItems submenu_settings; public ReliefTerrainDerivedTexturesItems submenu_derived_textures; public ReliefTerrainControlTexturesItems submenu_control_textures; public bool show_global_wet_settings; public bool show_global_reflection_settings; public int show_active_layer; public bool show_derivedmaps; public bool show_settings; public bool undo_flag; public bool paint_flag; public float paint_size = 0.5f; public float paint_smoothness; public float paint_opacity = 1f; public Color paintColor = new Color(0.5f, 0.3f, 0f, 0f); public bool preserveBrightness = true; public bool paint_alpha_flag; public bool paint_wetmask; public RaycastHit paintHitInfo; public bool paintHitInfo_flag; public bool cut_holes; private Texture2D dumb_tex; public Color[] paintColorSwatches; public Material use_mat; public ReliefTerrainGlobalSettingsHolder() { Bumps = new Texture2D[12]; Heights = new Texture2D[12]; FarSpecCorrection = new float[12]; MIPmult = new float[12]; MixScale = new float[12]; MixBlend = new float[12]; MixSaturation = new float[12]; RTP_DiffFresnel = new float[12]; RTP_metallic = new float[12]; RTP_glossMin = new float[12]; RTP_glossMax = new float[12]; RTP_glitter = new float[12]; MixBrightness = new float[12]; MixReplace = new float[12]; LayerBrightness = new float[12]; LayerBrightness2Spec = new float[12]; LayerAlbedo2SpecColor = new float[12]; LayerSaturation = new float[12]; LayerEmission = new float[12]; LayerEmissionColor = new Color[12]; LayerEmissionRefractStrength = new float[12]; LayerEmissionRefractHBedge = new float[12]; GlobalColorPerLayer = new float[12]; GlobalColorBottom = new float[12]; GlobalColorTop = new float[12]; GlobalColorColormapLoSat = new float[12]; GlobalColorColormapHiSat = new float[12]; GlobalColorLayerLoSat = new float[12]; GlobalColorLayerHiSat = new float[12]; GlobalColorLoBlend = new float[12]; GlobalColorHiBlend = new float[12]; PER_LAYER_HEIGHT_MODIFIER = new float[12]; _snow_strength_per_layer = new float[12]; Substances = new ProceduralMaterial[12]; _SuperDetailStrengthMultA = new float[12]; _SuperDetailStrengthMultASelfMaskNear = new float[12]; _SuperDetailStrengthMultASelfMaskFar = new float[12]; _SuperDetailStrengthMultB = new float[12]; _SuperDetailStrengthMultBSelfMaskNear = new float[12]; _SuperDetailStrengthMultBSelfMaskFar = new float[12]; _SuperDetailStrengthNormal = new float[12]; _BumpMapGlobalStrength = new float[12]; AO_strength = new float[12]; VerticalTextureStrength = new float[12]; TERRAIN_LayerWetStrength = new float[12]; TERRAIN_WaterLevel = new float[12]; TERRAIN_WaterLevelSlopeDamp = new float[12]; TERRAIN_WaterEdge = new float[12]; TERRAIN_WaterGloss = new float[12]; TERRAIN_WaterGlossDamper = new float[12]; TERRAIN_Refraction = new float[12]; TERRAIN_WetRefraction = new float[12]; TERRAIN_Flow = new float[12]; TERRAIN_WetFlow = new float[12]; TERRAIN_WaterMetallic = new float[12]; TERRAIN_WetGloss = new float[12]; TERRAIN_WaterColor = new Color[12]; TERRAIN_WaterEmission = new float[12]; _GlitterStrength = new float[12]; } public void ReInit(Terrain terrainComp) { if (terrainComp.terrainData.splatPrototypes.Length > numLayers) { Texture2D[] array = new Texture2D[terrainComp.terrainData.splatPrototypes.Length]; Texture2D[] array2 = new Texture2D[terrainComp.terrainData.splatPrototypes.Length]; for (int i = 0; i < splats.Length; i++) { array[i] = splats[i]; array2[i] = Bumps[i]; } splats = array; Bumps = array2; splats[terrainComp.terrainData.splatPrototypes.Length - 1] = terrainComp.terrainData.splatPrototypes[(terrainComp.terrainData.splatPrototypes.Length - 2 >= 0) ? (terrainComp.terrainData.splatPrototypes.Length - 2) : 0].texture; Bumps[terrainComp.terrainData.splatPrototypes.Length - 1] = terrainComp.terrainData.splatPrototypes[(terrainComp.terrainData.splatPrototypes.Length - 2 >= 0) ? (terrainComp.terrainData.splatPrototypes.Length - 2) : 0].normalMap; } else if (terrainComp.terrainData.splatPrototypes.Length < numLayers) { Texture2D[] array3 = new Texture2D[terrainComp.terrainData.splatPrototypes.Length]; Texture2D[] array4 = new Texture2D[terrainComp.terrainData.splatPrototypes.Length]; for (int j = 0; j < array3.Length; j++) { array3[j] = splats[j]; array4[j] = Bumps[j]; } splats = array3; Bumps = array4; } numLayers = terrainComp.terrainData.splatPrototypes.Length; } public void SetShaderParam(string name, Texture2D tex) { if ((bool)tex) { if ((bool)use_mat) { use_mat.SetTexture(name, tex); } else { Shader.SetGlobalTexture(name, tex); } } } public void SetShaderParam(string name, Cubemap tex) { if ((bool)tex) { if ((bool)use_mat) { use_mat.SetTexture(name, tex); } else { Shader.SetGlobalTexture(name, tex); } } } public void SetShaderParam(string name, Matrix4x4 mtx) { if ((bool)use_mat) { use_mat.SetMatrix(name, mtx); } else { Shader.SetGlobalMatrix(name, mtx); } } public void SetShaderParam(string name, Vector4 vec) { if ((bool)use_mat) { use_mat.SetVector(name, vec); } else { Shader.SetGlobalVector(name, vec); } } public void SetShaderParam(string name, float val) { if ((bool)use_mat) { use_mat.SetFloat(name, val); } else { Shader.SetGlobalFloat(name, val); } } public void SetShaderParam(string name, Color col) { if ((bool)use_mat) { use_mat.SetColor(name, col); } else { Shader.SetGlobalColor(name, col); } } public RTP_LODmanager Get_RTP_LODmanagerScript() { return _RTP_LODmanagerScript; } private void CheckLightScriptForDefered() { Light[] array = UnityEngine.Object.FindObjectsOfType(); Light light = null; for (int i = 0; i < array.Length; i++) { if (array[i].type == LightType.Directional) { if (!(array[i].gameObject.GetComponent() == null)) { return; } light = array[i]; } } if ((bool)light) { ReliefShaders_applyLightForDeferred reliefShaders_applyLightForDeferred = light.gameObject.AddComponent(typeof(ReliefShaders_applyLightForDeferred)) as ReliefShaders_applyLightForDeferred; reliefShaders_applyLightForDeferred.lightForSelfShadowing = light; } } public void RefreshAll() { CheckLightScriptForDefered(); ReliefTerrain[] array = UnityEngine.Object.FindObjectsOfType(typeof(ReliefTerrain)) as ReliefTerrain[]; for (int i = 0; i < array.Length; i++) { if (array[i].globalSettingsHolder != null) { Terrain terrain = array[i].GetComponent(typeof(Terrain)) as Terrain; if ((bool)terrain) { array[i].globalSettingsHolder.Refresh(terrain.materialTemplate); } else { array[i].globalSettingsHolder.Refresh(array[i].GetComponent().sharedMaterial); } array[i].RefreshTextures(); } } GeometryVsTerrainBlend[] array2 = UnityEngine.Object.FindObjectsOfType(typeof(GeometryVsTerrainBlend)) as GeometryVsTerrainBlend[]; for (int j = 0; j < array2.Length; j++) { array2[j].SetupValues(); } } public void Refresh(Material mat = null, ReliefTerrain rt_caller = null) { if (splats == null) { return; } if (mat == null && rt_caller != null && rt_caller.globalSettingsHolder == this) { Terrain terrain = rt_caller.GetComponent(typeof(Terrain)) as Terrain; if ((bool)terrain) { rt_caller.globalSettingsHolder.Refresh(terrain.materialTemplate); } else if (rt_caller.GetComponent() != null && rt_caller.GetComponent().sharedMaterial != null) { rt_caller.globalSettingsHolder.Refresh(rt_caller.GetComponent().sharedMaterial); } } use_mat = mat; if (mat != null) { mat.globalIlluminationFlags = MaterialGlobalIlluminationFlags.RealtimeEmissive; } for (int i = 0; i < numLayers; i++) { if (i < 4) { SetShaderParam("_SplatA" + i, splats[i]); } else if (i < 8) { if (_4LAYERS_SHADER_USED) { SetShaderParam("_SplatC" + (i - 4), splats[i]); SetShaderParam("_SplatB" + (i - 4), splats[i]); } else { SetShaderParam("_SplatB" + (i - 4), splats[i]); } } else if (i < 12) { SetShaderParam("_SplatC" + (i - 4), splats[i]); } } CheckAndUpdate(ref RTP_DiffFresnel, 0f, numLayers); CheckAndUpdate(ref RTP_metallic, 0f, numLayers); CheckAndUpdate(ref RTP_glossMin, 0f, numLayers); CheckAndUpdate(ref RTP_glossMax, 1f, numLayers); CheckAndUpdate(ref RTP_glitter, 0f, numLayers); CheckAndUpdate(ref TERRAIN_WaterGloss, 0.1f, numLayers); CheckAndUpdate(ref TERRAIN_WaterGlossDamper, 0f, numLayers); CheckAndUpdate(ref TERRAIN_WaterMetallic, 0.1f, numLayers); CheckAndUpdate(ref TERRAIN_WetGloss, 0.05f, numLayers); CheckAndUpdate(ref TERRAIN_WetFlow, 0.05f, numLayers); CheckAndUpdate(ref MixBrightness, 2f, numLayers); CheckAndUpdate(ref MixReplace, 0f, numLayers); CheckAndUpdate(ref LayerBrightness, 1f, numLayers); CheckAndUpdate(ref LayerBrightness2Spec, 0f, numLayers); CheckAndUpdate(ref LayerAlbedo2SpecColor, 0f, numLayers); CheckAndUpdate(ref LayerSaturation, 1f, numLayers); CheckAndUpdate(ref LayerEmission, 0f, numLayers); CheckAndUpdate(ref FarSpecCorrection, 0f, numLayers); CheckAndUpdate(ref LayerEmissionColor, Color.black, numLayers); CheckAndUpdate(ref LayerEmissionRefractStrength, 0f, numLayers); CheckAndUpdate(ref LayerEmissionRefractHBedge, 0f, numLayers); CheckAndUpdate(ref TERRAIN_WaterEmission, 0f, numLayers); CheckAndUpdate(ref _GlitterStrength, 0f, numLayers); SetShaderParam("terrainTileSize", terrainTileSize); SetShaderParam("RTP_AOamp", RTP_AOamp); SetShaderParam("RTP_AOsharpness", RTP_AOsharpness); SetShaderParam("_occlusionStrength", _occlusionStrength); SetShaderParam("EmissionRefractFiltering", EmissionRefractFiltering); SetShaderParam("EmissionRefractAnimSpeed", EmissionRefractAnimSpeed); SetShaderParam("_VerticalTexture", VerticalTexture); SetShaderParam("_GlobalColorMapBlendValues", GlobalColorMapBlendValues); SetShaderParam("_GlobalColorMapSaturation", GlobalColorMapSaturation); SetShaderParam("_GlobalColorMapSaturationFar", GlobalColorMapSaturationFar); SetShaderParam("_GlobalColorMapDistortByPerlin", GlobalColorMapDistortByPerlin); SetShaderParam("_GlobalColorMapBrightness", GlobalColorMapBrightness); SetShaderParam("_GlobalColorMapBrightnessFar", GlobalColorMapBrightnessFar); SetShaderParam("_GlobalColorMapNearMIP", _GlobalColorMapNearMIP); SetShaderParam("_RTP_MIP_BIAS", RTP_MIP_BIAS); SetShaderParam("_BumpMapGlobalScale", BumpMapGlobalScale); SetShaderParam("_FarNormalDamp", _FarNormalDamp); SetShaderParam("_blend_multiplier", blendMultiplier); SetShaderParam("_TERRAIN_ReliefTransform", ReliefTransform); SetShaderParam("_TERRAIN_ReliefTransformTriplanarZ", ReliefTransform.x); SetShaderParam("_TERRAIN_DIST_STEPS", DIST_STEPS); SetShaderParam("_TERRAIN_WAVELENGTH", WAVELENGTH); SetShaderParam("_TERRAIN_ExtrudeHeight", ExtrudeHeight); SetShaderParam("_TERRAIN_LightmapShading", LightmapShading); SetShaderParam("_TERRAIN_SHADOW_STEPS", SHADOW_STEPS); SetShaderParam("_TERRAIN_WAVELENGTH_SHADOWS", WAVELENGTH_SHADOWS); SetShaderParam("_TERRAIN_SelfShadowStrength", SelfShadowStrength); SetShaderParam("_TERRAIN_ShadowSmoothing", (1f - ShadowSmoothing) * 6f); SetShaderParam("_TERRAIN_ShadowSoftnessFade", ShadowSoftnessFade); SetShaderParam("_TERRAIN_distance_start", distance_start); SetShaderParam("_TERRAIN_distance_transition", distance_transition); SetShaderParam("_TERRAIN_distance_start_bumpglobal", distance_start_bumpglobal); SetShaderParam("_TERRAIN_distance_transition_bumpglobal", distance_transition_bumpglobal); SetShaderParam("rtp_perlin_start_val", rtp_perlin_start_val); Shader.SetGlobalVector("_TERRAIN_trees_shadow_values", new Vector4(trees_shadow_distance_start, trees_shadow_distance_transition, trees_shadow_value, global_normalMap_multiplier)); Shader.SetGlobalVector("_TERRAIN_trees_pixel_values", new Vector4(trees_pixel_distance_start, trees_pixel_distance_transition, trees_pixel_blend_val, global_normalMap_farUsage)); SetShaderParam("_Phong", _Phong); SetShaderParam("_TessSubdivisions", _TessSubdivisions); SetShaderParam("_TessSubdivisionsFar", _TessSubdivisionsFar); SetShaderParam("_TessYOffset", _TessYOffset); Shader.SetGlobalFloat("_AmbientEmissiveMultiplier", _AmbientEmissiveMultiplier); Shader.SetGlobalFloat("_AmbientEmissiveRelief", _AmbientEmissiveRelief); SetShaderParam("_SuperDetailTiling", _SuperDetailTiling); Shader.SetGlobalFloat("rtp_snow_strength", _snow_strength); Shader.SetGlobalFloat("rtp_global_color_brightness_to_snow", _global_color_brightness_to_snow); Shader.SetGlobalFloat("rtp_snow_slope_factor", _snow_slope_factor); Shader.SetGlobalFloat("rtp_snow_edge_definition", _snow_edge_definition); Shader.SetGlobalFloat("rtp_snow_height_treshold", _snow_height_treshold); Shader.SetGlobalFloat("rtp_snow_height_transition", _snow_height_transition); Shader.SetGlobalColor("rtp_snow_color", _snow_color); Shader.SetGlobalFloat("rtp_snow_gloss", _snow_gloss); Shader.SetGlobalFloat("rtp_snow_reflectivness", _snow_reflectivness); Shader.SetGlobalFloat("rtp_snow_deep_factor", _snow_deep_factor); Shader.SetGlobalFloat("rtp_snow_diff_fresnel", _snow_diff_fresnel); Shader.SetGlobalFloat("rtp_snow_metallic", _snow_metallic); Shader.SetGlobalFloat("rtp_snow_Frost", _snow_Frost); Shader.SetGlobalFloat("rtp_snow_MicroTiling", _snow_MicroTiling); Shader.SetGlobalFloat("rtp_snow_BumpMicro", _snow_BumpMicro); Shader.SetGlobalFloat("rtp_snow_occlusionStrength", _snow_occlusionStrength); Shader.SetGlobalFloat("rtp_snow_TranslucencyDeferredLightIndex", _snow_TranslucencyDeferredLightIndex); Shader.SetGlobalColor("_SnowGlitterColor", _SnowGlitterColor); SetShaderParam("TERRAIN_CausticsAnimSpeed", TERRAIN_CausticsAnimSpeed); SetShaderParam("TERRAIN_CausticsColor", TERRAIN_CausticsColor); if ((bool)TERRAIN_CausticsWaterLevelRefObject) { TERRAIN_CausticsWaterLevel = TERRAIN_CausticsWaterLevelRefObject.transform.position.y; } Shader.SetGlobalFloat("TERRAIN_CausticsWaterLevel", TERRAIN_CausticsWaterLevel); Shader.SetGlobalFloat("TERRAIN_CausticsWaterLevelByAngle", TERRAIN_CausticsWaterLevelByAngle); Shader.SetGlobalFloat("TERRAIN_CausticsWaterDeepFadeLength", TERRAIN_CausticsWaterDeepFadeLength); Shader.SetGlobalFloat("TERRAIN_CausticsWaterShallowFadeLength", TERRAIN_CausticsWaterShallowFadeLength); SetShaderParam("TERRAIN_CausticsTilingScale", TERRAIN_CausticsTilingScale); SetShaderParam("TERRAIN_CausticsTex", TERRAIN_CausticsTex); SetShaderParam("_GlitterColor", _GlitterColor); SetShaderParam("_GlitterTiling", _GlitterTiling); SetShaderParam("_GlitterDensity", _GlitterDensity); SetShaderParam("_GlitterFilter", _GlitterFilter); SetShaderParam("_GlitterColorization", _GlitterColorization); SetShaderParam("_SparkleMap", _SparkleMap); if (numLayers > 0) { int num = 512; for (int j = 0; j < numLayers; j++) { if ((bool)splats[j]) { num = splats[j].width; break; } } SetShaderParam("rtp_mipoffset_color", (0f - Mathf.Log(1024f / (float)num)) / Mathf.Log(2f)); if (Bump01 != null) { num = Bump01.width; } SetShaderParam("rtp_mipoffset_bump", (0f - Mathf.Log(1024f / (float)num)) / Mathf.Log(2f)); if ((bool)HeightMap) { num = HeightMap.width; } else if ((bool)HeightMap2) { num = HeightMap2.width; } else if ((bool)HeightMap3) { num = HeightMap3.width; } SetShaderParam("rtp_mipoffset_height", (0f - Mathf.Log(1024f / (float)num)) / Mathf.Log(2f)); num = BumpGlobalCombinedSize; SetShaderParam("rtp_mipoffset_globalnorm", (0f - Mathf.Log(1024f / ((float)num * BumpMapGlobalScale))) / Mathf.Log(2f) + (float)rtp_mipoffset_globalnorm); SetShaderParam("rtp_mipoffset_superdetail", (0f - Mathf.Log(1024f / ((float)num * _SuperDetailTiling))) / Mathf.Log(2f)); SetShaderParam("rtp_mipoffset_flow", (0f - Mathf.Log(1024f / ((float)num * TERRAIN_FlowScale))) / Mathf.Log(2f) + TERRAIN_FlowMipOffset); if ((bool)TERRAIN_RippleMap) { num = TERRAIN_RippleMap.width; } SetShaderParam("rtp_mipoffset_ripple", (0f - Mathf.Log(1024f / ((float)num * TERRAIN_RippleScale))) / Mathf.Log(2f)); if ((bool)TERRAIN_CausticsTex) { num = TERRAIN_CausticsTex.width; } SetShaderParam("rtp_mipoffset_caustics", (0f - Mathf.Log(1024f / ((float)num * TERRAIN_CausticsTilingScale))) / Mathf.Log(2f)); } Shader.SetGlobalFloat("TERRAIN_GlobalWetness", TERRAIN_GlobalWetness); SetShaderParam("TERRAIN_RippleMap", TERRAIN_RippleMap); SetShaderParam("TERRAIN_RippleScale", TERRAIN_RippleScale); SetShaderParam("TERRAIN_FlowScale", TERRAIN_FlowScale); SetShaderParam("TERRAIN_FlowMipOffset", TERRAIN_FlowMipOffset); SetShaderParam("TERRAIN_FlowSpeed", TERRAIN_FlowSpeed); SetShaderParam("TERRAIN_FlowCycleScale", TERRAIN_FlowCycleScale); Shader.SetGlobalFloat("TERRAIN_RainIntensity", TERRAIN_RainIntensity); SetShaderParam("TERRAIN_DropletsSpeed", TERRAIN_DropletsSpeed); SetShaderParam("TERRAIN_WetDropletsStrength", TERRAIN_WetDropletsStrength); SetShaderParam("TERRAIN_WetDarkening", TERRAIN_WetDarkening); SetShaderParam("TERRAIN_mipoffset_flowSpeed", TERRAIN_mipoffset_flowSpeed); SetShaderParam("TERRAIN_WetHeight_Treshold", TERRAIN_WetHeight_Treshold); SetShaderParam("TERRAIN_WetHeight_Transition", TERRAIN_WetHeight_Transition); Shader.SetGlobalVector("RTP_LightDefVector", RTP_LightDefVector); SetShaderParam("_VerticalTextureGlobalBumpInfluence", VerticalTextureGlobalBumpInfluence); SetShaderParam("_VerticalTextureTiling", VerticalTextureTiling); SetShaderParam("_FarSpecCorrection0123", getVector(FarSpecCorrection, 0, 3)); SetShaderParam("_MIPmult0123", getVector(MIPmult, 0, 3)); SetShaderParam("_MixScale0123", getVector(MixScale, 0, 3)); SetShaderParam("_MixBlend0123", getVector(MixBlend, 0, 3)); SetShaderParam("_MixSaturation0123", getVector(MixSaturation, 0, 3)); SetShaderParam("RTP_DiffFresnel0123", getVector(RTP_DiffFresnel, 0, 3)); SetShaderParam("RTP_metallic0123", getVector(RTP_metallic, 0, 3)); SetShaderParam("RTP_glossMin0123", getVector(RTP_glossMin, 0, 3)); SetShaderParam("RTP_glossMax0123", getVector(RTP_glossMax, 0, 3)); SetShaderParam("RTP_glitter0123", getVector(RTP_glitter, 0, 3)); SetShaderParam("_MixBrightness0123", getVector(MixBrightness, 0, 3)); SetShaderParam("_MixReplace0123", getVector(MixReplace, 0, 3)); SetShaderParam("_LayerBrightness0123", MasterLayerBrightness * getVector(LayerBrightness, 0, 3)); SetShaderParam("_LayerSaturation0123", MasterLayerSaturation * getVector(LayerSaturation, 0, 3)); SetShaderParam("_LayerEmission0123", getVector(LayerEmission, 0, 3)); SetShaderParam("_LayerEmissionColorR0123", getColorVector(LayerEmissionColor, 0, 3, 0)); SetShaderParam("_LayerEmissionColorG0123", getColorVector(LayerEmissionColor, 0, 3, 1)); SetShaderParam("_LayerEmissionColorB0123", getColorVector(LayerEmissionColor, 0, 3, 2)); SetShaderParam("_LayerEmissionColorA0123", getColorVector(LayerEmissionColor, 0, 3, 3)); SetShaderParam("_LayerBrightness2Spec0123", getVector(LayerBrightness2Spec, 0, 3)); SetShaderParam("_LayerAlbedo2SpecColor0123", getVector(LayerAlbedo2SpecColor, 0, 3)); SetShaderParam("_LayerEmissionRefractStrength0123", getVector(LayerEmissionRefractStrength, 0, 3)); SetShaderParam("_LayerEmissionRefractHBedge0123", getVector(LayerEmissionRefractHBedge, 0, 3)); SetShaderParam("_GlobalColorPerLayer0123", getVector(GlobalColorPerLayer, 0, 3)); SetShaderParam("_GlobalColorBottom0123", getVector(GlobalColorBottom, 0, 3)); SetShaderParam("_GlobalColorTop0123", getVector(GlobalColorTop, 0, 3)); SetShaderParam("_GlobalColorColormapLoSat0123", getVector(GlobalColorColormapLoSat, 0, 3)); SetShaderParam("_GlobalColorColormapHiSat0123", getVector(GlobalColorColormapHiSat, 0, 3)); SetShaderParam("_GlobalColorLayerLoSat0123", getVector(GlobalColorLayerLoSat, 0, 3)); SetShaderParam("_GlobalColorLayerHiSat0123", getVector(GlobalColorLayerHiSat, 0, 3)); SetShaderParam("_GlobalColorLoBlend0123", getVector(GlobalColorLoBlend, 0, 3)); SetShaderParam("_GlobalColorHiBlend0123", getVector(GlobalColorHiBlend, 0, 3)); SetShaderParam("PER_LAYER_HEIGHT_MODIFIER0123", getVector(PER_LAYER_HEIGHT_MODIFIER, 0, 3)); SetShaderParam("rtp_snow_strength_per_layer0123", getVector(_snow_strength_per_layer, 0, 3)); SetShaderParam("_SuperDetailStrengthMultA0123", getVector(_SuperDetailStrengthMultA, 0, 3)); SetShaderParam("_SuperDetailStrengthMultB0123", getVector(_SuperDetailStrengthMultB, 0, 3)); SetShaderParam("_SuperDetailStrengthNormal0123", getVector(_SuperDetailStrengthNormal, 0, 3)); SetShaderParam("_BumpMapGlobalStrength0123", getVector(_BumpMapGlobalStrength, 0, 3)); SetShaderParam("_SuperDetailStrengthMultASelfMaskNear0123", getVector(_SuperDetailStrengthMultASelfMaskNear, 0, 3)); SetShaderParam("_SuperDetailStrengthMultASelfMaskFar0123", getVector(_SuperDetailStrengthMultASelfMaskFar, 0, 3)); SetShaderParam("_SuperDetailStrengthMultBSelfMaskNear0123", getVector(_SuperDetailStrengthMultBSelfMaskNear, 0, 3)); SetShaderParam("_SuperDetailStrengthMultBSelfMaskFar0123", getVector(_SuperDetailStrengthMultBSelfMaskFar, 0, 3)); SetShaderParam("TERRAIN_LayerWetStrength0123", getVector(TERRAIN_LayerWetStrength, 0, 3)); SetShaderParam("TERRAIN_WaterLevel0123", getVector(TERRAIN_WaterLevel, 0, 3)); SetShaderParam("TERRAIN_WaterLevelSlopeDamp0123", getVector(TERRAIN_WaterLevelSlopeDamp, 0, 3)); SetShaderParam("TERRAIN_WaterEdge0123", getVector(TERRAIN_WaterEdge, 0, 3)); SetShaderParam("TERRAIN_WaterGloss0123", getVector(TERRAIN_WaterGloss, 0, 3)); SetShaderParam("TERRAIN_WaterGlossDamper0123", getVector(TERRAIN_WaterGlossDamper, 0, 3)); SetShaderParam("TERRAIN_Refraction0123", getVector(TERRAIN_Refraction, 0, 3)); SetShaderParam("TERRAIN_WetRefraction0123", getVector(TERRAIN_WetRefraction, 0, 3)); SetShaderParam("TERRAIN_Flow0123", getVector(TERRAIN_Flow, 0, 3)); SetShaderParam("TERRAIN_WetFlow0123", getVector(TERRAIN_WetFlow, 0, 3)); SetShaderParam("TERRAIN_WaterMetallic0123", getVector(TERRAIN_WaterMetallic, 0, 3)); SetShaderParam("TERRAIN_WetGloss0123", getVector(TERRAIN_WetGloss, 0, 3)); SetShaderParam("TERRAIN_WaterColorR0123", getColorVector(TERRAIN_WaterColor, 0, 3, 0)); SetShaderParam("TERRAIN_WaterColorG0123", getColorVector(TERRAIN_WaterColor, 0, 3, 1)); SetShaderParam("TERRAIN_WaterColorB0123", getColorVector(TERRAIN_WaterColor, 0, 3, 2)); SetShaderParam("TERRAIN_WaterColorA0123", getColorVector(TERRAIN_WaterColor, 0, 3, 3)); SetShaderParam("TERRAIN_WaterEmission0123", getVector(TERRAIN_WaterEmission, 0, 3)); SetShaderParam("_GlitterStrength0123", getVector(_GlitterStrength, 0, 3)); SetShaderParam("RTP_AO_0123", getVector(AO_strength, 0, 3)); SetShaderParam("_VerticalTexture0123", getVector(VerticalTextureStrength, 0, 3)); if (numLayers > 4 && _4LAYERS_SHADER_USED) { SetShaderParam("_FarSpecCorrection89AB", getVector(FarSpecCorrection, 4, 7)); SetShaderParam("_MIPmult89AB", getVector(MIPmult, 4, 7)); SetShaderParam("_MixScale89AB", getVector(MixScale, 4, 7)); SetShaderParam("_MixBlend89AB", getVector(MixBlend, 4, 7)); SetShaderParam("_MixSaturation89AB", getVector(MixSaturation, 4, 7)); SetShaderParam("RTP_DiffFresnel89AB", getVector(RTP_DiffFresnel, 4, 7)); SetShaderParam("RTP_metallic89AB", getVector(RTP_metallic, 4, 7)); SetShaderParam("RTP_glossMin89AB", getVector(RTP_glossMin, 4, 7)); SetShaderParam("RTP_glossMax89AB", getVector(RTP_glossMax, 4, 7)); SetShaderParam("RTP_glitter89AB", getVector(RTP_glitter, 4, 7)); SetShaderParam("_MixBrightness89AB", getVector(MixBrightness, 4, 7)); SetShaderParam("_MixReplace89AB", getVector(MixReplace, 4, 7)); SetShaderParam("_LayerBrightness89AB", MasterLayerBrightness * getVector(LayerBrightness, 4, 7)); SetShaderParam("_LayerSaturation89AB", MasterLayerSaturation * getVector(LayerSaturation, 4, 7)); SetShaderParam("_LayerEmission89AB", getVector(LayerEmission, 4, 7)); SetShaderParam("_LayerEmissionColorR89AB", getColorVector(LayerEmissionColor, 4, 7, 0)); SetShaderParam("_LayerEmissionColorG89AB", getColorVector(LayerEmissionColor, 4, 7, 1)); SetShaderParam("_LayerEmissionColorB89AB", getColorVector(LayerEmissionColor, 4, 7, 2)); SetShaderParam("_LayerEmissionColorA89AB", getColorVector(LayerEmissionColor, 4, 7, 3)); SetShaderParam("_LayerBrightness2Spec89AB", getVector(LayerBrightness2Spec, 4, 7)); SetShaderParam("_LayerAlbedo2SpecColor89AB", getVector(LayerAlbedo2SpecColor, 4, 7)); SetShaderParam("_LayerEmissionRefractStrength89AB", getVector(LayerEmissionRefractStrength, 4, 7)); SetShaderParam("_LayerEmissionRefractHBedge89AB", getVector(LayerEmissionRefractHBedge, 4, 7)); SetShaderParam("_GlobalColorPerLayer89AB", getVector(GlobalColorPerLayer, 4, 7)); SetShaderParam("_GlobalColorBottom89AB", getVector(GlobalColorBottom, 4, 7)); SetShaderParam("_GlobalColorTop89AB", getVector(GlobalColorTop, 4, 7)); SetShaderParam("_GlobalColorColormapLoSat89AB", getVector(GlobalColorColormapLoSat, 4, 7)); SetShaderParam("_GlobalColorColormapHiSat89AB", getVector(GlobalColorColormapHiSat, 4, 7)); SetShaderParam("_GlobalColorLayerLoSat89AB", getVector(GlobalColorLayerLoSat, 4, 7)); SetShaderParam("_GlobalColorLayerHiSat89AB", getVector(GlobalColorLayerHiSat, 4, 7)); SetShaderParam("_GlobalColorLoBlend89AB", getVector(GlobalColorLoBlend, 4, 7)); SetShaderParam("_GlobalColorHiBlend89AB", getVector(GlobalColorHiBlend, 4, 7)); SetShaderParam("PER_LAYER_HEIGHT_MODIFIER89AB", getVector(PER_LAYER_HEIGHT_MODIFIER, 4, 7)); SetShaderParam("rtp_snow_strength_per_layer89AB", getVector(_snow_strength_per_layer, 4, 7)); SetShaderParam("_SuperDetailStrengthMultA89AB", getVector(_SuperDetailStrengthMultA, 4, 7)); SetShaderParam("_SuperDetailStrengthMultB89AB", getVector(_SuperDetailStrengthMultB, 4, 7)); SetShaderParam("_SuperDetailStrengthNormal89AB", getVector(_SuperDetailStrengthNormal, 4, 7)); SetShaderParam("_BumpMapGlobalStrength89AB", getVector(_BumpMapGlobalStrength, 4, 7)); SetShaderParam("_SuperDetailStrengthMultASelfMaskNear89AB", getVector(_SuperDetailStrengthMultASelfMaskNear, 4, 7)); SetShaderParam("_SuperDetailStrengthMultASelfMaskFar89AB", getVector(_SuperDetailStrengthMultASelfMaskFar, 4, 7)); SetShaderParam("_SuperDetailStrengthMultBSelfMaskNear89AB", getVector(_SuperDetailStrengthMultBSelfMaskNear, 4, 7)); SetShaderParam("_SuperDetailStrengthMultBSelfMaskFar89AB", getVector(_SuperDetailStrengthMultBSelfMaskFar, 4, 7)); SetShaderParam("TERRAIN_LayerWetStrength89AB", getVector(TERRAIN_LayerWetStrength, 4, 7)); SetShaderParam("TERRAIN_WaterLevel89AB", getVector(TERRAIN_WaterLevel, 4, 7)); SetShaderParam("TERRAIN_WaterLevelSlopeDamp89AB", getVector(TERRAIN_WaterLevelSlopeDamp, 4, 7)); SetShaderParam("TERRAIN_WaterEdge89AB", getVector(TERRAIN_WaterEdge, 4, 7)); SetShaderParam("TERRAIN_WaterGloss89AB", getVector(TERRAIN_WaterGloss, 4, 7)); SetShaderParam("TERRAIN_WaterGlossDamper89AB", getVector(TERRAIN_WaterGlossDamper, 4, 7)); SetShaderParam("TERRAIN_Refraction89AB", getVector(TERRAIN_Refraction, 4, 7)); SetShaderParam("TERRAIN_WetRefraction89AB", getVector(TERRAIN_WetRefraction, 4, 7)); SetShaderParam("TERRAIN_Flow89AB", getVector(TERRAIN_Flow, 4, 7)); SetShaderParam("TERRAIN_WetFlow89AB", getVector(TERRAIN_WetFlow, 4, 7)); SetShaderParam("TERRAIN_WaterMetallic89AB", getVector(TERRAIN_WaterMetallic, 4, 7)); SetShaderParam("TERRAIN_WetGloss89AB", getVector(TERRAIN_WetGloss, 4, 7)); SetShaderParam("TERRAIN_WaterColorR89AB", getColorVector(TERRAIN_WaterColor, 4, 7, 0)); SetShaderParam("TERRAIN_WaterColorG89AB", getColorVector(TERRAIN_WaterColor, 4, 7, 1)); SetShaderParam("TERRAIN_WaterColorB89AB", getColorVector(TERRAIN_WaterColor, 4, 7, 2)); SetShaderParam("TERRAIN_WaterColorA89AB", getColorVector(TERRAIN_WaterColor, 4, 7, 3)); SetShaderParam("TERRAIN_WaterEmission89AB", getVector(TERRAIN_WaterEmission, 4, 7)); SetShaderParam("_GlitterStrength89AB", getVector(_GlitterStrength, 4, 7)); SetShaderParam("RTP_AO_89AB", getVector(AO_strength, 4, 7)); SetShaderParam("_VerticalTexture89AB", getVector(VerticalTextureStrength, 4, 7)); } else { SetShaderParam("_FarSpecCorrection4567", getVector(FarSpecCorrection, 4, 7)); SetShaderParam("_MIPmult4567", getVector(MIPmult, 4, 7)); SetShaderParam("_MixScale4567", getVector(MixScale, 4, 7)); SetShaderParam("_MixBlend4567", getVector(MixBlend, 4, 7)); SetShaderParam("_MixSaturation4567", getVector(MixSaturation, 4, 7)); SetShaderParam("RTP_DiffFresnel4567", getVector(RTP_DiffFresnel, 4, 7)); SetShaderParam("RTP_metallic4567", getVector(RTP_metallic, 4, 7)); SetShaderParam("RTP_glossMin4567", getVector(RTP_glossMin, 4, 7)); SetShaderParam("RTP_glossMax4567", getVector(RTP_glossMax, 4, 7)); SetShaderParam("RTP_glitter4567", getVector(RTP_glitter, 4, 7)); SetShaderParam("_MixBrightness4567", getVector(MixBrightness, 4, 7)); SetShaderParam("_MixReplace4567", getVector(MixReplace, 4, 7)); SetShaderParam("_LayerBrightness4567", MasterLayerBrightness * getVector(LayerBrightness, 4, 7)); SetShaderParam("_LayerSaturation4567", MasterLayerSaturation * getVector(LayerSaturation, 4, 7)); SetShaderParam("_LayerEmission4567", getVector(LayerEmission, 4, 7)); SetShaderParam("_LayerEmissionColorR4567", getColorVector(LayerEmissionColor, 4, 7, 0)); SetShaderParam("_LayerEmissionColorG4567", getColorVector(LayerEmissionColor, 4, 7, 1)); SetShaderParam("_LayerEmissionColorB4567", getColorVector(LayerEmissionColor, 4, 7, 2)); SetShaderParam("_LayerEmissionColorA4567", getColorVector(LayerEmissionColor, 4, 7, 3)); SetShaderParam("_LayerBrightness2Spec4567", getVector(LayerBrightness2Spec, 4, 7)); SetShaderParam("_LayerAlbedo2SpecColor4567", getVector(LayerAlbedo2SpecColor, 4, 7)); SetShaderParam("_LayerEmissionRefractStrength4567", getVector(LayerEmissionRefractStrength, 4, 7)); SetShaderParam("_LayerEmissionRefractHBedge4567", getVector(LayerEmissionRefractHBedge, 4, 7)); SetShaderParam("_GlobalColorPerLayer4567", getVector(GlobalColorPerLayer, 4, 7)); SetShaderParam("_GlobalColorBottom4567", getVector(GlobalColorBottom, 4, 7)); SetShaderParam("_GlobalColorTop4567", getVector(GlobalColorTop, 4, 7)); SetShaderParam("_GlobalColorColormapLoSat4567", getVector(GlobalColorColormapLoSat, 4, 7)); SetShaderParam("_GlobalColorColormapHiSat4567", getVector(GlobalColorColormapHiSat, 4, 7)); SetShaderParam("_GlobalColorLayerLoSat4567", getVector(GlobalColorLayerLoSat, 4, 7)); SetShaderParam("_GlobalColorLayerHiSat4567", getVector(GlobalColorLayerHiSat, 4, 7)); SetShaderParam("_GlobalColorLoBlend4567", getVector(GlobalColorLoBlend, 4, 7)); SetShaderParam("_GlobalColorHiBlend4567", getVector(GlobalColorHiBlend, 4, 7)); SetShaderParam("PER_LAYER_HEIGHT_MODIFIER4567", getVector(PER_LAYER_HEIGHT_MODIFIER, 4, 7)); SetShaderParam("rtp_snow_strength_per_layer4567", getVector(_snow_strength_per_layer, 4, 7)); SetShaderParam("_SuperDetailStrengthMultA4567", getVector(_SuperDetailStrengthMultA, 4, 7)); SetShaderParam("_SuperDetailStrengthMultB4567", getVector(_SuperDetailStrengthMultB, 4, 7)); SetShaderParam("_SuperDetailStrengthNormal4567", getVector(_SuperDetailStrengthNormal, 4, 7)); SetShaderParam("_BumpMapGlobalStrength4567", getVector(_BumpMapGlobalStrength, 4, 7)); SetShaderParam("_SuperDetailStrengthMultASelfMaskNear4567", getVector(_SuperDetailStrengthMultASelfMaskNear, 4, 7)); SetShaderParam("_SuperDetailStrengthMultASelfMaskFar4567", getVector(_SuperDetailStrengthMultASelfMaskFar, 4, 7)); SetShaderParam("_SuperDetailStrengthMultBSelfMaskNear4567", getVector(_SuperDetailStrengthMultBSelfMaskNear, 4, 7)); SetShaderParam("_SuperDetailStrengthMultBSelfMaskFar4567", getVector(_SuperDetailStrengthMultBSelfMaskFar, 4, 7)); SetShaderParam("TERRAIN_LayerWetStrength4567", getVector(TERRAIN_LayerWetStrength, 4, 7)); SetShaderParam("TERRAIN_WaterLevel4567", getVector(TERRAIN_WaterLevel, 4, 7)); SetShaderParam("TERRAIN_WaterLevelSlopeDamp4567", getVector(TERRAIN_WaterLevelSlopeDamp, 4, 7)); SetShaderParam("TERRAIN_WaterEdge4567", getVector(TERRAIN_WaterEdge, 4, 7)); SetShaderParam("TERRAIN_WaterGloss4567", getVector(TERRAIN_WaterGloss, 4, 7)); SetShaderParam("TERRAIN_WaterGlossDamper4567", getVector(TERRAIN_WaterGlossDamper, 4, 7)); SetShaderParam("TERRAIN_Refraction4567", getVector(TERRAIN_Refraction, 4, 7)); SetShaderParam("TERRAIN_WetRefraction4567", getVector(TERRAIN_WetRefraction, 4, 7)); SetShaderParam("TERRAIN_Flow4567", getVector(TERRAIN_Flow, 4, 7)); SetShaderParam("TERRAIN_WetFlow4567", getVector(TERRAIN_WetFlow, 4, 7)); SetShaderParam("TERRAIN_WaterMetallic4567", getVector(TERRAIN_WaterMetallic, 4, 7)); SetShaderParam("TERRAIN_WetGloss4567", getVector(TERRAIN_WetGloss, 4, 7)); SetShaderParam("TERRAIN_WaterColorR4567", getColorVector(TERRAIN_WaterColor, 4, 7, 0)); SetShaderParam("TERRAIN_WaterColorG4567", getColorVector(TERRAIN_WaterColor, 4, 7, 1)); SetShaderParam("TERRAIN_WaterColorB4567", getColorVector(TERRAIN_WaterColor, 4, 7, 2)); SetShaderParam("TERRAIN_WaterColorA4567", getColorVector(TERRAIN_WaterColor, 4, 7, 3)); SetShaderParam("TERRAIN_WaterEmission4567", getVector(TERRAIN_WaterEmission, 4, 7)); SetShaderParam("_GlitterStrength4567", getVector(_GlitterStrength, 4, 7)); SetShaderParam("RTP_AO_4567", getVector(AO_strength, 4, 7)); SetShaderParam("_VerticalTexture4567", getVector(VerticalTextureStrength, 4, 7)); SetShaderParam("_FarSpecCorrection89AB", getVector(FarSpecCorrection, 8, 11)); SetShaderParam("_MIPmult89AB", getVector(MIPmult, 8, 11)); SetShaderParam("_MixScale89AB", getVector(MixScale, 8, 11)); SetShaderParam("_MixBlend89AB", getVector(MixBlend, 8, 11)); SetShaderParam("_MixSaturation89AB", getVector(MixSaturation, 8, 11)); SetShaderParam("RTP_DiffFresnel89AB", getVector(RTP_DiffFresnel, 8, 11)); SetShaderParam("RTP_metallic89AB", getVector(RTP_metallic, 8, 11)); SetShaderParam("RTP_glossMin89AB", getVector(RTP_glossMin, 8, 11)); SetShaderParam("RTP_glossMax89AB", getVector(RTP_glossMax, 8, 11)); SetShaderParam("RTP_glitter89AB", getVector(RTP_glitter, 8, 11)); SetShaderParam("_MixBrightness89AB", getVector(MixBrightness, 8, 11)); SetShaderParam("_MixReplace89AB", getVector(MixReplace, 8, 11)); SetShaderParam("_LayerBrightness89AB", MasterLayerBrightness * getVector(LayerBrightness, 8, 11)); SetShaderParam("_LayerSaturation89AB", MasterLayerSaturation * getVector(LayerSaturation, 8, 11)); SetShaderParam("_LayerEmission89AB", getVector(LayerEmission, 8, 11)); SetShaderParam("_LayerEmissionColorR89AB", getColorVector(LayerEmissionColor, 8, 11, 0)); SetShaderParam("_LayerEmissionColorG89AB", getColorVector(LayerEmissionColor, 8, 11, 1)); SetShaderParam("_LayerEmissionColorB89AB", getColorVector(LayerEmissionColor, 8, 11, 2)); SetShaderParam("_LayerEmissionColorA89AB", getColorVector(LayerEmissionColor, 8, 11, 3)); SetShaderParam("_LayerBrightness2Spec89AB", getVector(LayerBrightness2Spec, 8, 11)); SetShaderParam("_LayerAlbedo2SpecColor89AB", getVector(LayerAlbedo2SpecColor, 8, 11)); SetShaderParam("_LayerEmissionRefractStrength89AB", getVector(LayerEmissionRefractStrength, 8, 11)); SetShaderParam("_LayerEmissionRefractHBedge89AB", getVector(LayerEmissionRefractHBedge, 8, 11)); SetShaderParam("_GlobalColorPerLayer89AB", getVector(GlobalColorPerLayer, 8, 11)); SetShaderParam("_GlobalColorBottom89AB", getVector(GlobalColorBottom, 8, 11)); SetShaderParam("_GlobalColorTop89AB", getVector(GlobalColorTop, 8, 11)); SetShaderParam("_GlobalColorColormapLoSat89AB", getVector(GlobalColorColormapLoSat, 8, 11)); SetShaderParam("_GlobalColorColormapHiSat89AB", getVector(GlobalColorColormapHiSat, 8, 11)); SetShaderParam("_GlobalColorLayerLoSat89AB", getVector(GlobalColorLayerLoSat, 8, 11)); SetShaderParam("_GlobalColorLayerHiSat89AB", getVector(GlobalColorLayerHiSat, 8, 11)); SetShaderParam("_GlobalColorLoBlend89AB", getVector(GlobalColorLoBlend, 8, 11)); SetShaderParam("_GlobalColorHiBlend89AB", getVector(GlobalColorHiBlend, 8, 11)); SetShaderParam("PER_LAYER_HEIGHT_MODIFIER89AB", getVector(PER_LAYER_HEIGHT_MODIFIER, 8, 11)); SetShaderParam("rtp_snow_strength_per_layer89AB", getVector(_snow_strength_per_layer, 8, 11)); SetShaderParam("_SuperDetailStrengthMultA89AB", getVector(_SuperDetailStrengthMultA, 8, 11)); SetShaderParam("_SuperDetailStrengthMultB89AB", getVector(_SuperDetailStrengthMultB, 8, 11)); SetShaderParam("_SuperDetailStrengthNormal89AB", getVector(_SuperDetailStrengthNormal, 8, 11)); SetShaderParam("_BumpMapGlobalStrength89AB", getVector(_BumpMapGlobalStrength, 8, 11)); SetShaderParam("_SuperDetailStrengthMultASelfMaskNear89AB", getVector(_SuperDetailStrengthMultASelfMaskNear, 8, 11)); SetShaderParam("_SuperDetailStrengthMultASelfMaskFar89AB", getVector(_SuperDetailStrengthMultASelfMaskFar, 8, 11)); SetShaderParam("_SuperDetailStrengthMultBSelfMaskNear89AB", getVector(_SuperDetailStrengthMultBSelfMaskNear, 8, 11)); SetShaderParam("_SuperDetailStrengthMultBSelfMaskFar89AB", getVector(_SuperDetailStrengthMultBSelfMaskFar, 8, 11)); SetShaderParam("TERRAIN_LayerWetStrength89AB", getVector(TERRAIN_LayerWetStrength, 8, 11)); SetShaderParam("TERRAIN_WaterLevel89AB", getVector(TERRAIN_WaterLevel, 8, 11)); SetShaderParam("TERRAIN_WaterLevelSlopeDamp89AB", getVector(TERRAIN_WaterLevelSlopeDamp, 8, 11)); SetShaderParam("TERRAIN_WaterEdge89AB", getVector(TERRAIN_WaterEdge, 8, 11)); SetShaderParam("TERRAIN_WaterGloss89AB", getVector(TERRAIN_WaterGloss, 8, 11)); SetShaderParam("TERRAIN_WaterGlossDamper89AB", getVector(TERRAIN_WaterGlossDamper, 8, 11)); SetShaderParam("TERRAIN_Refraction89AB", getVector(TERRAIN_Refraction, 8, 11)); SetShaderParam("TERRAIN_WetRefraction89AB", getVector(TERRAIN_WetRefraction, 8, 11)); SetShaderParam("TERRAIN_Flow89AB", getVector(TERRAIN_Flow, 8, 11)); SetShaderParam("TERRAIN_WetFlow89AB", getVector(TERRAIN_WetFlow, 8, 11)); SetShaderParam("TERRAIN_WaterMetallic89AB", getVector(TERRAIN_WaterMetallic, 8, 11)); SetShaderParam("TERRAIN_WetGloss89AB", getVector(TERRAIN_WetGloss, 8, 11)); SetShaderParam("TERRAIN_WaterColorR89AB", getColorVector(TERRAIN_WaterColor, 8, 11, 0)); SetShaderParam("TERRAIN_WaterColorG89AB", getColorVector(TERRAIN_WaterColor, 8, 11, 1)); SetShaderParam("TERRAIN_WaterColorB89AB", getColorVector(TERRAIN_WaterColor, 8, 11, 2)); SetShaderParam("TERRAIN_WaterColorA89AB", getColorVector(TERRAIN_WaterColor, 8, 11, 3)); SetShaderParam("TERRAIN_WaterEmission89AB", getVector(TERRAIN_WaterEmission, 8, 11)); SetShaderParam("_GlitterStrength89AB", getVector(_GlitterStrength, 8, 11)); SetShaderParam("RTP_AO_89AB", getVector(AO_strength, 8, 11)); SetShaderParam("_VerticalTexture89AB", getVector(VerticalTextureStrength, 8, 11)); } if (splat_atlases.Length == 2) { Texture2D texture2D = splat_atlases[0]; Texture2D texture2D2 = splat_atlases[1]; splat_atlases = new Texture2D[3]; splat_atlases[0] = texture2D; splat_atlases[1] = texture2D2; } SetShaderParam("_SplatAtlasA", splat_atlases[0]); SetShaderParam("_BumpMap01", Bump01); SetShaderParam("_BumpMap23", Bump23); SetShaderParam("_TERRAIN_HeightMap", HeightMap); SetShaderParam("_SSColorCombinedA", SSColorCombinedA); if (numLayers > 4) { SetShaderParam("_SplatAtlasB", splat_atlases[1]); SetShaderParam("_SplatAtlasC", splat_atlases[1]); SetShaderParam("_TERRAIN_HeightMap2", HeightMap2); SetShaderParam("_SSColorCombinedB", SSColorCombinedB); } if (numLayers > 8) { SetShaderParam("_SplatAtlasC", splat_atlases[2]); } if (numLayers > 4 && _4LAYERS_SHADER_USED) { SetShaderParam("_BumpMap89", Bump45); SetShaderParam("_BumpMapAB", Bump67); SetShaderParam("_TERRAIN_HeightMap3", HeightMap2); SetShaderParam("_BumpMap45", Bump45); SetShaderParam("_BumpMap67", Bump67); } else { SetShaderParam("_BumpMap45", Bump45); SetShaderParam("_BumpMap67", Bump67); SetShaderParam("_BumpMap89", Bump89); SetShaderParam("_BumpMapAB", BumpAB); SetShaderParam("_TERRAIN_HeightMap3", HeightMap3); } use_mat = null; } public Vector4 getVector(float[] vec, int idxA, int idxB) { if (vec == null) { return Vector4.zero; } Vector4 zero = Vector4.zero; for (int i = idxA; i <= idxB; i++) { if (i < vec.Length) { zero[i - idxA] = vec[i]; } } return zero; } public Vector4 getColorVector(Color[] vec, int idxA, int idxB, int channel) { if (vec == null) { return Vector4.zero; } Vector4 zero = Vector4.zero; for (int i = idxA; i <= idxB; i++) { if (i < vec.Length) { zero[i - idxA] = vec[i][channel]; } } return zero; } public Texture2D get_dumb_tex() { if (!dumb_tex) { dumb_tex = new Texture2D(32, 32, TextureFormat.RGB24, mipmap: false); Color[] pixels = dumb_tex.GetPixels(); for (int i = 0; i < pixels.Length; i++) { ref Color reference = ref pixels[i]; reference = Color.white; } dumb_tex.SetPixels(pixels); dumb_tex.Apply(); } return dumb_tex; } public void SyncGlobalPropsAcrossTerrainGroups() { ReliefTerrain[] array = (ReliefTerrain[])UnityEngine.Object.FindObjectsOfType(typeof(ReliefTerrain)); ReliefTerrainGlobalSettingsHolder[] array2 = new ReliefTerrainGlobalSettingsHolder[array.Length]; int num = 0; for (int i = 0; i < array.Length; i++) { bool flag = false; for (int j = 0; j < num; j++) { if (array2[j] == array[i].globalSettingsHolder) { flag = true; break; } } if (!flag) { array2[num++] = array[i].globalSettingsHolder; } } for (int k = 0; k < num; k++) { if (array2[k] != this) { array2[k].trees_shadow_distance_start = trees_shadow_distance_start; array2[k].trees_shadow_distance_transition = trees_shadow_distance_transition; array2[k].trees_shadow_value = trees_shadow_value; array2[k].global_normalMap_multiplier = global_normalMap_multiplier; array2[k].trees_pixel_distance_start = trees_pixel_distance_start; array2[k].trees_pixel_distance_transition = trees_pixel_distance_transition; array2[k].trees_pixel_blend_val = trees_pixel_blend_val; array2[k].global_normalMap_farUsage = global_normalMap_farUsage; array2[k]._AmbientEmissiveMultiplier = _AmbientEmissiveMultiplier; array2[k]._AmbientEmissiveRelief = _AmbientEmissiveRelief; array2[k]._snow_strength = _snow_strength; array2[k]._global_color_brightness_to_snow = _global_color_brightness_to_snow; array2[k]._snow_slope_factor = _snow_slope_factor; array2[k]._snow_edge_definition = _snow_edge_definition; array2[k]._snow_height_treshold = _snow_height_treshold; array2[k]._snow_height_transition = _snow_height_transition; array2[k]._snow_color = _snow_color; array2[k]._snow_gloss = _snow_gloss; array2[k]._snow_reflectivness = _snow_reflectivness; array2[k]._snow_deep_factor = _snow_deep_factor; array2[k]._snow_diff_fresnel = _snow_diff_fresnel; array2[k]._snow_metallic = _snow_metallic; array2[k]._snow_Frost = _snow_Frost; array2[k]._snow_MicroTiling = _snow_MicroTiling; array2[k]._snow_BumpMicro = _snow_BumpMicro; array2[k]._snow_occlusionStrength = _snow_occlusionStrength; array2[k]._snow_TranslucencyDeferredLightIndex = _snow_TranslucencyDeferredLightIndex; array2[k]._SnowGlitterColor = _SnowGlitterColor; array2[k]._GlitterColor = _GlitterColor; array2[k]._GlitterTiling = _GlitterTiling; array2[k]._GlitterDensity = _GlitterDensity; array2[k]._GlitterFilter = _GlitterFilter; array2[k]._GlitterColorization = _GlitterColorization; array2[k]._SparkleMap = _SparkleMap; array2[k].TERRAIN_CausticsWaterLevel = TERRAIN_CausticsWaterLevel; array2[k].TERRAIN_CausticsWaterLevelByAngle = TERRAIN_CausticsWaterLevelByAngle; array2[k].TERRAIN_CausticsWaterDeepFadeLength = TERRAIN_CausticsWaterDeepFadeLength; array2[k].TERRAIN_CausticsWaterShallowFadeLength = TERRAIN_CausticsWaterShallowFadeLength; array2[k].TERRAIN_GlobalWetness = TERRAIN_GlobalWetness; array2[k].TERRAIN_RainIntensity = TERRAIN_RainIntensity; array2[k].RTP_LightDefVector = RTP_LightDefVector; } } } public void RestorePreset(ReliefTerrainPresetHolder holder) { numLayers = holder.numLayers; splats = new Texture2D[holder.splats.Length]; for (int i = 0; i < holder.splats.Length; i++) { splats[i] = holder.splats[i]; } splat_atlases = new Texture2D[3]; for (int j = 0; j < splat_atlases.Length; j++) { splat_atlases[j] = holder.splat_atlases[j]; } RTP_MIP_BIAS = holder.RTP_MIP_BIAS; MasterLayerBrightness = holder.MasterLayerBrightness; MasterLayerSaturation = holder.MasterLayerSaturation; SuperDetailA_channel = holder.SuperDetailA_channel; SuperDetailB_channel = holder.SuperDetailB_channel; Bump01 = holder.Bump01; Bump23 = holder.Bump23; Bump45 = holder.Bump45; Bump67 = holder.Bump67; Bump89 = holder.Bump89; BumpAB = holder.BumpAB; SSColorCombinedA = holder.SSColorCombinedA; SSColorCombinedB = holder.SSColorCombinedB; BumpGlobal = holder.BumpGlobal; VerticalTexture = holder.VerticalTexture; BumpMapGlobalScale = holder.BumpMapGlobalScale; GlobalColorMapBlendValues = holder.GlobalColorMapBlendValues; GlobalColorMapSaturation = holder.GlobalColorMapSaturation; GlobalColorMapSaturationFar = holder.GlobalColorMapSaturationFar; GlobalColorMapDistortByPerlin = holder.GlobalColorMapDistortByPerlin; GlobalColorMapBrightness = holder.GlobalColorMapBrightness; GlobalColorMapBrightnessFar = holder.GlobalColorMapBrightnessFar; _GlobalColorMapNearMIP = holder._GlobalColorMapNearMIP; _FarNormalDamp = holder._FarNormalDamp; blendMultiplier = holder.blendMultiplier; HeightMap = holder.HeightMap; HeightMap2 = holder.HeightMap2; HeightMap3 = holder.HeightMap3; ReliefTransform = holder.ReliefTransform; DIST_STEPS = holder.DIST_STEPS; WAVELENGTH = holder.WAVELENGTH; ReliefBorderBlend = holder.ReliefBorderBlend; ExtrudeHeight = holder.ExtrudeHeight; LightmapShading = holder.LightmapShading; SHADOW_STEPS = holder.SHADOW_STEPS; WAVELENGTH_SHADOWS = holder.WAVELENGTH_SHADOWS; SelfShadowStrength = holder.SelfShadowStrength; ShadowSmoothing = holder.ShadowSmoothing; ShadowSoftnessFade = holder.ShadowSoftnessFade; distance_start = holder.distance_start; distance_transition = holder.distance_transition; distance_start_bumpglobal = holder.distance_start_bumpglobal; distance_transition_bumpglobal = holder.distance_transition_bumpglobal; rtp_perlin_start_val = holder.rtp_perlin_start_val; _Phong = holder._Phong; tessHeight = holder.tessHeight; _TessSubdivisions = holder._TessSubdivisions; _TessSubdivisionsFar = holder._TessSubdivisionsFar; _TessYOffset = holder._TessYOffset; trees_shadow_distance_start = holder.trees_shadow_distance_start; trees_shadow_distance_transition = holder.trees_shadow_distance_transition; trees_shadow_value = holder.trees_shadow_value; trees_pixel_distance_start = holder.trees_pixel_distance_start; trees_pixel_distance_transition = holder.trees_pixel_distance_transition; trees_pixel_blend_val = holder.trees_pixel_blend_val; global_normalMap_multiplier = holder.global_normalMap_multiplier; global_normalMap_farUsage = holder.global_normalMap_farUsage; _AmbientEmissiveMultiplier = holder._AmbientEmissiveMultiplier; _AmbientEmissiveRelief = holder._AmbientEmissiveRelief; rtp_mipoffset_globalnorm = holder.rtp_mipoffset_globalnorm; _SuperDetailTiling = holder._SuperDetailTiling; SuperDetailA = holder.SuperDetailA; SuperDetailB = holder.SuperDetailB; TERRAIN_GlobalWetness = holder.TERRAIN_GlobalWetness; TERRAIN_RippleMap = holder.TERRAIN_RippleMap; TERRAIN_RippleScale = holder.TERRAIN_RippleScale; TERRAIN_FlowScale = holder.TERRAIN_FlowScale; TERRAIN_FlowSpeed = holder.TERRAIN_FlowSpeed; TERRAIN_FlowCycleScale = holder.TERRAIN_FlowCycleScale; TERRAIN_FlowMipOffset = holder.TERRAIN_FlowMipOffset; TERRAIN_WetDarkening = holder.TERRAIN_WetDarkening; TERRAIN_WetDropletsStrength = holder.TERRAIN_WetDropletsStrength; TERRAIN_WetHeight_Treshold = holder.TERRAIN_WetHeight_Treshold; TERRAIN_WetHeight_Transition = holder.TERRAIN_WetHeight_Transition; TERRAIN_RainIntensity = holder.TERRAIN_RainIntensity; TERRAIN_DropletsSpeed = holder.TERRAIN_DropletsSpeed; TERRAIN_mipoffset_flowSpeed = holder.TERRAIN_mipoffset_flowSpeed; TERRAIN_CausticsAnimSpeed = holder.TERRAIN_CausticsAnimSpeed; TERRAIN_CausticsColor = holder.TERRAIN_CausticsColor; TERRAIN_CausticsWaterLevel = holder.TERRAIN_CausticsWaterLevel; TERRAIN_CausticsWaterLevelByAngle = holder.TERRAIN_CausticsWaterLevelByAngle; TERRAIN_CausticsWaterDeepFadeLength = holder.TERRAIN_CausticsWaterDeepFadeLength; TERRAIN_CausticsWaterShallowFadeLength = holder.TERRAIN_CausticsWaterShallowFadeLength; TERRAIN_CausticsTilingScale = holder.TERRAIN_CausticsTilingScale; TERRAIN_CausticsTex = holder.TERRAIN_CausticsTex; RTP_AOsharpness = holder.RTP_AOsharpness; RTP_AOamp = holder.RTP_AOamp; _occlusionStrength = holder._occlusionStrength; RTP_LightDefVector = holder.RTP_LightDefVector; EmissionRefractFiltering = holder.EmissionRefractFiltering; EmissionRefractAnimSpeed = holder.EmissionRefractAnimSpeed; VerticalTextureGlobalBumpInfluence = holder.VerticalTextureGlobalBumpInfluence; VerticalTextureTiling = holder.VerticalTextureTiling; _snow_strength = holder._snow_strength; _global_color_brightness_to_snow = holder._global_color_brightness_to_snow; _snow_slope_factor = holder._snow_slope_factor; _snow_edge_definition = holder._snow_edge_definition; _snow_height_treshold = holder._snow_height_treshold; _snow_height_transition = holder._snow_height_transition; _snow_color = holder._snow_color; _snow_gloss = holder._snow_gloss; _snow_reflectivness = holder._snow_reflectivness; _snow_deep_factor = holder._snow_deep_factor; _snow_diff_fresnel = holder._snow_diff_fresnel; _snow_metallic = holder._snow_metallic; _snow_Frost = holder._snow_Frost; _snow_MicroTiling = holder._snow_MicroTiling; _snow_BumpMicro = holder._snow_BumpMicro; _snow_occlusionStrength = holder._snow_occlusionStrength; _snow_TranslucencyDeferredLightIndex = holder._snow_TranslucencyDeferredLightIndex; _SnowGlitterColor = holder._SnowGlitterColor; _GlitterColor = holder._GlitterColor; _GlitterTiling = holder._GlitterTiling; _GlitterDensity = holder._GlitterDensity; _GlitterFilter = holder._GlitterFilter; _GlitterColorization = holder._GlitterColorization; _SparkleMap = holder._SparkleMap; Bumps = new Texture2D[holder.Bumps.Length]; FarSpecCorrection = new float[holder.Bumps.Length]; MixScale = new float[holder.Bumps.Length]; MixBlend = new float[holder.Bumps.Length]; MixSaturation = new float[holder.Bumps.Length]; RTP_DiffFresnel = new float[holder.Bumps.Length]; RTP_metallic = new float[holder.Bumps.Length]; RTP_glossMin = new float[holder.Bumps.Length]; RTP_glossMax = new float[holder.Bumps.Length]; RTP_glitter = new float[holder.Bumps.Length]; MixBrightness = new float[holder.Bumps.Length]; MixReplace = new float[holder.Bumps.Length]; LayerBrightness = new float[holder.Bumps.Length]; LayerBrightness2Spec = new float[holder.Bumps.Length]; LayerAlbedo2SpecColor = new float[holder.Bumps.Length]; LayerSaturation = new float[holder.Bumps.Length]; LayerEmission = new float[holder.Bumps.Length]; LayerEmissionColor = new Color[holder.Bumps.Length]; LayerEmissionRefractStrength = new float[holder.Bumps.Length]; LayerEmissionRefractHBedge = new float[holder.Bumps.Length]; GlobalColorPerLayer = new float[holder.Bumps.Length]; GlobalColorBottom = new float[holder.Bumps.Length]; GlobalColorTop = new float[holder.Bumps.Length]; GlobalColorColormapLoSat = new float[holder.Bumps.Length]; GlobalColorColormapHiSat = new float[holder.Bumps.Length]; GlobalColorLayerLoSat = new float[holder.Bumps.Length]; GlobalColorLayerHiSat = new float[holder.Bumps.Length]; GlobalColorLoBlend = new float[holder.Bumps.Length]; GlobalColorHiBlend = new float[holder.Bumps.Length]; PER_LAYER_HEIGHT_MODIFIER = new float[holder.Bumps.Length]; _SuperDetailStrengthMultA = new float[holder.Bumps.Length]; _SuperDetailStrengthMultASelfMaskNear = new float[holder.Bumps.Length]; _SuperDetailStrengthMultASelfMaskFar = new float[holder.Bumps.Length]; _SuperDetailStrengthMultB = new float[holder.Bumps.Length]; _SuperDetailStrengthMultBSelfMaskNear = new float[holder.Bumps.Length]; _SuperDetailStrengthMultBSelfMaskFar = new float[holder.Bumps.Length]; _SuperDetailStrengthNormal = new float[holder.Bumps.Length]; _BumpMapGlobalStrength = new float[holder.Bumps.Length]; AO_strength = new float[holder.Bumps.Length]; VerticalTextureStrength = new float[holder.Bumps.Length]; Heights = new Texture2D[holder.Bumps.Length]; _snow_strength_per_layer = new float[holder.Bumps.Length]; Substances = new ProceduralMaterial[holder.Bumps.Length]; TERRAIN_LayerWetStrength = new float[holder.Bumps.Length]; TERRAIN_WaterLevel = new float[holder.Bumps.Length]; TERRAIN_WaterLevelSlopeDamp = new float[holder.Bumps.Length]; TERRAIN_WaterEdge = new float[holder.Bumps.Length]; TERRAIN_WaterGloss = new float[holder.Bumps.Length]; TERRAIN_WaterGlossDamper = new float[holder.Bumps.Length]; TERRAIN_Refraction = new float[holder.Bumps.Length]; TERRAIN_WetRefraction = new float[holder.Bumps.Length]; TERRAIN_Flow = new float[holder.Bumps.Length]; TERRAIN_WetFlow = new float[holder.Bumps.Length]; TERRAIN_WaterMetallic = new float[holder.Bumps.Length]; TERRAIN_WetGloss = new float[holder.Bumps.Length]; TERRAIN_WaterColor = new Color[holder.Bumps.Length]; TERRAIN_WaterEmission = new float[holder.Bumps.Length]; _GlitterStrength = new float[holder.Bumps.Length]; for (int k = 0; k < holder.Bumps.Length; k++) { Bumps[k] = holder.Bumps[k]; FarSpecCorrection[k] = holder.FarSpecCorrection[k]; MixScale[k] = holder.MixScale[k]; MixBlend[k] = holder.MixBlend[k]; MixSaturation[k] = holder.MixSaturation[k]; CheckAndUpdate(ref holder.RTP_DiffFresnel, 0f, holder.Bumps.Length); CheckAndUpdate(ref holder.RTP_metallic, 0f, holder.Bumps.Length); CheckAndUpdate(ref holder.RTP_glossMin, 0f, holder.Bumps.Length); CheckAndUpdate(ref holder.RTP_glossMax, 1f, holder.Bumps.Length); CheckAndUpdate(ref holder.RTP_glitter, 0f, holder.Bumps.Length); CheckAndUpdate(ref holder.TERRAIN_WaterGloss, 0.1f, holder.Bumps.Length); CheckAndUpdate(ref holder.TERRAIN_WaterGlossDamper, 0f, holder.Bumps.Length); CheckAndUpdate(ref holder.TERRAIN_WaterMetallic, 0.1f, holder.Bumps.Length); CheckAndUpdate(ref holder.TERRAIN_WetGloss, 0.05f, holder.Bumps.Length); CheckAndUpdate(ref holder.TERRAIN_WetFlow, 0.05f, holder.Bumps.Length); CheckAndUpdate(ref holder.MixBrightness, 2f, holder.Bumps.Length); CheckAndUpdate(ref holder.MixReplace, 0f, holder.Bumps.Length); CheckAndUpdate(ref holder.LayerBrightness, 1f, holder.Bumps.Length); CheckAndUpdate(ref holder.LayerBrightness2Spec, 0f, holder.Bumps.Length); CheckAndUpdate(ref holder.LayerAlbedo2SpecColor, 0f, holder.Bumps.Length); CheckAndUpdate(ref holder.LayerSaturation, 1f, holder.Bumps.Length); CheckAndUpdate(ref holder.LayerEmission, 1f, holder.Bumps.Length); CheckAndUpdate(ref holder.LayerEmissionColor, Color.black, holder.Bumps.Length); CheckAndUpdate(ref holder.FarSpecCorrection, 0f, holder.Bumps.Length); CheckAndUpdate(ref holder.LayerEmissionRefractStrength, 0f, holder.Bumps.Length); CheckAndUpdate(ref holder.LayerEmissionRefractHBedge, 0f, holder.Bumps.Length); CheckAndUpdate(ref holder.TERRAIN_WaterEmission, 0f, holder.Bumps.Length); CheckAndUpdate(ref holder._GlitterStrength, 0f, holder.Bumps.Length); RTP_DiffFresnel[k] = holder.RTP_DiffFresnel[k]; RTP_metallic[k] = holder.RTP_metallic[k]; RTP_glossMin[k] = holder.RTP_glossMin[k]; RTP_glossMax[k] = holder.RTP_glossMax[k]; RTP_glitter[k] = holder.RTP_glitter[k]; MixBrightness[k] = holder.MixBrightness[k]; MixReplace[k] = holder.MixReplace[k]; LayerBrightness[k] = holder.LayerBrightness[k]; LayerBrightness2Spec[k] = holder.LayerBrightness2Spec[k]; LayerAlbedo2SpecColor[k] = holder.LayerAlbedo2SpecColor[k]; LayerSaturation[k] = holder.LayerSaturation[k]; LayerEmission[k] = holder.LayerEmission[k]; ref Color reference = ref LayerEmissionColor[k]; reference = holder.LayerEmissionColor[k]; LayerEmissionRefractStrength[k] = holder.LayerEmissionRefractStrength[k]; LayerEmissionRefractHBedge[k] = holder.LayerEmissionRefractHBedge[k]; GlobalColorPerLayer[k] = holder.GlobalColorPerLayer[k]; GlobalColorBottom[k] = holder.GlobalColorBottom[k]; GlobalColorTop[k] = holder.GlobalColorTop[k]; GlobalColorColormapLoSat[k] = holder.GlobalColorColormapLoSat[k]; GlobalColorColormapHiSat[k] = holder.GlobalColorColormapHiSat[k]; GlobalColorLayerLoSat[k] = holder.GlobalColorLayerLoSat[k]; GlobalColorLayerHiSat[k] = holder.GlobalColorLayerHiSat[k]; GlobalColorLoBlend[k] = holder.GlobalColorLoBlend[k]; GlobalColorHiBlend[k] = holder.GlobalColorHiBlend[k]; PER_LAYER_HEIGHT_MODIFIER[k] = holder.PER_LAYER_HEIGHT_MODIFIER[k]; _SuperDetailStrengthMultA[k] = holder._SuperDetailStrengthMultA[k]; _SuperDetailStrengthMultASelfMaskNear[k] = holder._SuperDetailStrengthMultASelfMaskNear[k]; _SuperDetailStrengthMultASelfMaskFar[k] = holder._SuperDetailStrengthMultASelfMaskFar[k]; _SuperDetailStrengthMultB[k] = holder._SuperDetailStrengthMultB[k]; _SuperDetailStrengthMultBSelfMaskNear[k] = holder._SuperDetailStrengthMultBSelfMaskNear[k]; _SuperDetailStrengthMultBSelfMaskFar[k] = holder._SuperDetailStrengthMultBSelfMaskFar[k]; _SuperDetailStrengthNormal[k] = holder._SuperDetailStrengthNormal[k]; _BumpMapGlobalStrength[k] = holder._BumpMapGlobalStrength[k]; VerticalTextureStrength[k] = holder.VerticalTextureStrength[k]; AO_strength[k] = holder.AO_strength[k]; Heights[k] = holder.Heights[k]; _snow_strength_per_layer[k] = holder._snow_strength_per_layer[k]; Substances[k] = holder.Substances[k]; TERRAIN_LayerWetStrength[k] = holder.TERRAIN_LayerWetStrength[k]; TERRAIN_WaterLevel[k] = holder.TERRAIN_WaterLevel[k]; TERRAIN_WaterLevelSlopeDamp[k] = holder.TERRAIN_WaterLevelSlopeDamp[k]; TERRAIN_WaterEdge[k] = holder.TERRAIN_WaterEdge[k]; TERRAIN_WaterGloss[k] = holder.TERRAIN_WaterGloss[k]; TERRAIN_WaterGlossDamper[k] = holder.TERRAIN_WaterGlossDamper[k]; TERRAIN_Refraction[k] = holder.TERRAIN_Refraction[k]; TERRAIN_WetRefraction[k] = holder.TERRAIN_WetRefraction[k]; TERRAIN_Flow[k] = holder.TERRAIN_Flow[k]; TERRAIN_WetFlow[k] = holder.TERRAIN_WetFlow[k]; TERRAIN_WaterMetallic[k] = holder.TERRAIN_WaterMetallic[k]; TERRAIN_WetGloss[k] = holder.TERRAIN_WetGloss[k]; ref Color reference2 = ref TERRAIN_WaterColor[k]; reference2 = holder.TERRAIN_WaterColor[k]; TERRAIN_WaterEmission[k] = holder.TERRAIN_WaterEmission[k]; _GlitterStrength[k] = holder._GlitterStrength[k]; } } public void GlossBakeJob(Texture2D detailTex, Texture2D normalTex) { bakeJobArray = new Texture2D[2] { detailTex, normalTex }; } public void SavePreset(ref ReliefTerrainPresetHolder holder) { holder.numLayers = numLayers; holder.splats = new Texture2D[splats.Length]; for (int i = 0; i < holder.splats.Length; i++) { holder.splats[i] = splats[i]; } holder.splat_atlases = new Texture2D[3]; for (int j = 0; j < splat_atlases.Length; j++) { holder.splat_atlases[j] = splat_atlases[j]; } holder.RTP_MIP_BIAS = RTP_MIP_BIAS; holder.MasterLayerBrightness = MasterLayerBrightness; holder.MasterLayerSaturation = MasterLayerSaturation; holder.SuperDetailA_channel = SuperDetailA_channel; holder.SuperDetailB_channel = SuperDetailB_channel; holder.Bump01 = Bump01; holder.Bump23 = Bump23; holder.Bump45 = Bump45; holder.Bump67 = Bump67; holder.Bump89 = Bump89; holder.BumpAB = BumpAB; holder.SSColorCombinedA = SSColorCombinedA; holder.SSColorCombinedB = SSColorCombinedB; holder.BumpGlobal = BumpGlobal; holder.VerticalTexture = VerticalTexture; holder.BumpMapGlobalScale = BumpMapGlobalScale; holder.GlobalColorMapBlendValues = GlobalColorMapBlendValues; holder.GlobalColorMapSaturation = GlobalColorMapSaturation; holder.GlobalColorMapSaturationFar = GlobalColorMapSaturationFar; holder.GlobalColorMapDistortByPerlin = GlobalColorMapDistortByPerlin; holder.GlobalColorMapBrightness = GlobalColorMapBrightness; holder.GlobalColorMapBrightnessFar = GlobalColorMapBrightnessFar; holder._GlobalColorMapNearMIP = _GlobalColorMapNearMIP; holder._FarNormalDamp = _FarNormalDamp; holder.blendMultiplier = blendMultiplier; holder.HeightMap = HeightMap; holder.HeightMap2 = HeightMap2; holder.HeightMap3 = HeightMap3; holder.ReliefTransform = ReliefTransform; holder.DIST_STEPS = DIST_STEPS; holder.WAVELENGTH = WAVELENGTH; holder.ReliefBorderBlend = ReliefBorderBlend; holder.ExtrudeHeight = ExtrudeHeight; holder.LightmapShading = LightmapShading; holder.SHADOW_STEPS = SHADOW_STEPS; holder.WAVELENGTH_SHADOWS = WAVELENGTH_SHADOWS; holder.SelfShadowStrength = SelfShadowStrength; holder.ShadowSmoothing = ShadowSmoothing; holder.ShadowSoftnessFade = ShadowSoftnessFade; holder.distance_start = distance_start; holder.distance_transition = distance_transition; holder.distance_start_bumpglobal = distance_start_bumpglobal; holder.distance_transition_bumpglobal = distance_transition_bumpglobal; holder.rtp_perlin_start_val = rtp_perlin_start_val; holder._Phong = _Phong; holder.tessHeight = tessHeight; holder._TessSubdivisions = _TessSubdivisions; holder._TessSubdivisionsFar = _TessSubdivisionsFar; holder._TessYOffset = _TessYOffset; holder.trees_shadow_distance_start = trees_shadow_distance_start; holder.trees_shadow_distance_transition = trees_shadow_distance_transition; holder.trees_shadow_value = trees_shadow_value; holder.trees_pixel_distance_start = trees_pixel_distance_start; holder.trees_pixel_distance_transition = trees_pixel_distance_transition; holder.trees_pixel_blend_val = trees_pixel_blend_val; holder.global_normalMap_multiplier = global_normalMap_multiplier; holder.global_normalMap_farUsage = global_normalMap_farUsage; holder._AmbientEmissiveMultiplier = _AmbientEmissiveMultiplier; holder._AmbientEmissiveRelief = _AmbientEmissiveRelief; holder.rtp_mipoffset_globalnorm = rtp_mipoffset_globalnorm; holder._SuperDetailTiling = _SuperDetailTiling; holder.SuperDetailA = SuperDetailA; holder.SuperDetailB = SuperDetailB; holder.TERRAIN_GlobalWetness = TERRAIN_GlobalWetness; holder.TERRAIN_RippleMap = TERRAIN_RippleMap; holder.TERRAIN_RippleScale = TERRAIN_RippleScale; holder.TERRAIN_FlowScale = TERRAIN_FlowScale; holder.TERRAIN_FlowSpeed = TERRAIN_FlowSpeed; holder.TERRAIN_FlowCycleScale = TERRAIN_FlowCycleScale; holder.TERRAIN_FlowMipOffset = TERRAIN_FlowMipOffset; holder.TERRAIN_WetDarkening = TERRAIN_WetDarkening; holder.TERRAIN_WetDropletsStrength = TERRAIN_WetDropletsStrength; holder.TERRAIN_WetHeight_Treshold = TERRAIN_WetHeight_Treshold; holder.TERRAIN_WetHeight_Transition = TERRAIN_WetHeight_Transition; holder.TERRAIN_RainIntensity = TERRAIN_RainIntensity; holder.TERRAIN_DropletsSpeed = TERRAIN_DropletsSpeed; holder.TERRAIN_mipoffset_flowSpeed = TERRAIN_mipoffset_flowSpeed; holder.TERRAIN_CausticsAnimSpeed = TERRAIN_CausticsAnimSpeed; holder.TERRAIN_CausticsColor = TERRAIN_CausticsColor; holder.TERRAIN_CausticsWaterLevel = TERRAIN_CausticsWaterLevel; holder.TERRAIN_CausticsWaterLevelByAngle = TERRAIN_CausticsWaterLevelByAngle; holder.TERRAIN_CausticsWaterDeepFadeLength = TERRAIN_CausticsWaterDeepFadeLength; holder.TERRAIN_CausticsWaterShallowFadeLength = TERRAIN_CausticsWaterShallowFadeLength; holder.TERRAIN_CausticsTilingScale = TERRAIN_CausticsTilingScale; holder.TERRAIN_CausticsTex = TERRAIN_CausticsTex; holder.RTP_AOsharpness = RTP_AOsharpness; holder.RTP_AOamp = RTP_AOamp; holder._occlusionStrength = _occlusionStrength; holder.RTP_LightDefVector = RTP_LightDefVector; holder.EmissionRefractFiltering = EmissionRefractFiltering; holder.EmissionRefractAnimSpeed = EmissionRefractAnimSpeed; holder.VerticalTextureGlobalBumpInfluence = VerticalTextureGlobalBumpInfluence; holder.VerticalTextureTiling = VerticalTextureTiling; holder._snow_strength = _snow_strength; holder._global_color_brightness_to_snow = _global_color_brightness_to_snow; holder._snow_slope_factor = _snow_slope_factor; holder._snow_edge_definition = _snow_edge_definition; holder._snow_height_treshold = _snow_height_treshold; holder._snow_height_transition = _snow_height_transition; holder._snow_color = _snow_color; holder._snow_gloss = _snow_gloss; holder._snow_reflectivness = _snow_reflectivness; holder._snow_deep_factor = _snow_deep_factor; holder._snow_diff_fresnel = _snow_diff_fresnel; holder._snow_metallic = _snow_metallic; holder._snow_Frost = _snow_Frost; holder._snow_MicroTiling = _snow_MicroTiling; holder._snow_BumpMicro = _snow_BumpMicro; holder._snow_occlusionStrength = _snow_occlusionStrength; holder._snow_TranslucencyDeferredLightIndex = _snow_TranslucencyDeferredLightIndex; holder._SnowGlitterColor = _SnowGlitterColor; holder._GlitterColor = _GlitterColor; holder._GlitterTiling = _GlitterTiling; holder._GlitterDensity = _GlitterDensity; holder._GlitterFilter = _GlitterFilter; holder._GlitterColorization = _GlitterColorization; holder._SparkleMap = _SparkleMap; holder.Bumps = new Texture2D[numLayers]; holder.Spec = new float[numLayers]; holder.FarSpecCorrection = new float[numLayers]; holder.MixScale = new float[numLayers]; holder.MixBlend = new float[numLayers]; holder.MixSaturation = new float[numLayers]; holder.RTP_DiffFresnel = new float[numLayers]; holder.RTP_metallic = new float[numLayers]; holder.RTP_glossMin = new float[numLayers]; holder.RTP_glossMax = new float[numLayers]; holder.RTP_glitter = new float[numLayers]; holder.MixBrightness = new float[numLayers]; holder.MixReplace = new float[numLayers]; holder.LayerBrightness = new float[numLayers]; holder.LayerBrightness2Spec = new float[numLayers]; holder.LayerAlbedo2SpecColor = new float[numLayers]; holder.LayerSaturation = new float[numLayers]; holder.LayerEmission = new float[numLayers]; holder.LayerEmissionColor = new Color[numLayers]; holder.LayerEmissionRefractStrength = new float[numLayers]; holder.LayerEmissionRefractHBedge = new float[numLayers]; holder.GlobalColorPerLayer = new float[numLayers]; holder.GlobalColorBottom = new float[numLayers]; holder.GlobalColorTop = new float[numLayers]; holder.GlobalColorColormapLoSat = new float[numLayers]; holder.GlobalColorColormapHiSat = new float[numLayers]; holder.GlobalColorLayerLoSat = new float[numLayers]; holder.GlobalColorLayerHiSat = new float[numLayers]; holder.GlobalColorLoBlend = new float[numLayers]; holder.GlobalColorHiBlend = new float[numLayers]; holder.PER_LAYER_HEIGHT_MODIFIER = new float[numLayers]; holder._SuperDetailStrengthMultA = new float[numLayers]; holder._SuperDetailStrengthMultASelfMaskNear = new float[numLayers]; holder._SuperDetailStrengthMultASelfMaskFar = new float[numLayers]; holder._SuperDetailStrengthMultB = new float[numLayers]; holder._SuperDetailStrengthMultBSelfMaskNear = new float[numLayers]; holder._SuperDetailStrengthMultBSelfMaskFar = new float[numLayers]; holder._SuperDetailStrengthNormal = new float[numLayers]; holder._BumpMapGlobalStrength = new float[numLayers]; holder.VerticalTextureStrength = new float[numLayers]; holder.AO_strength = new float[numLayers]; holder.Heights = new Texture2D[numLayers]; holder._snow_strength_per_layer = new float[numLayers]; holder.Substances = new ProceduralMaterial[numLayers]; holder.TERRAIN_LayerWetStrength = new float[numLayers]; holder.TERRAIN_WaterLevel = new float[numLayers]; holder.TERRAIN_WaterLevelSlopeDamp = new float[numLayers]; holder.TERRAIN_WaterEdge = new float[numLayers]; holder.TERRAIN_WaterGloss = new float[numLayers]; holder.TERRAIN_WaterGlossDamper = new float[numLayers]; holder.TERRAIN_Refraction = new float[numLayers]; holder.TERRAIN_WetRefraction = new float[numLayers]; holder.TERRAIN_Flow = new float[numLayers]; holder.TERRAIN_WetFlow = new float[numLayers]; holder.TERRAIN_WaterMetallic = new float[numLayers]; holder.TERRAIN_WetGloss = new float[numLayers]; holder.TERRAIN_WaterColor = new Color[numLayers]; holder.TERRAIN_WaterEmission = new float[numLayers]; holder._GlitterStrength = new float[numLayers]; for (int k = 0; k < numLayers; k++) { holder.Bumps[k] = Bumps[k]; holder.FarSpecCorrection[k] = FarSpecCorrection[k]; holder.MixScale[k] = MixScale[k]; holder.MixBlend[k] = MixBlend[k]; holder.MixSaturation[k] = MixSaturation[k]; CheckAndUpdate(ref RTP_DiffFresnel, 0f, numLayers); CheckAndUpdate(ref RTP_metallic, 0f, numLayers); CheckAndUpdate(ref RTP_glossMin, 0f, numLayers); CheckAndUpdate(ref RTP_glossMax, 1f, numLayers); CheckAndUpdate(ref RTP_glitter, 0f, numLayers); CheckAndUpdate(ref TERRAIN_WaterGloss, 0.1f, numLayers); CheckAndUpdate(ref TERRAIN_WaterGlossDamper, 0f, numLayers); CheckAndUpdate(ref TERRAIN_WaterMetallic, 0.1f, numLayers); CheckAndUpdate(ref TERRAIN_WetGloss, 0.05f, numLayers); CheckAndUpdate(ref TERRAIN_WetFlow, 0.05f, numLayers); CheckAndUpdate(ref MixBrightness, 2f, numLayers); CheckAndUpdate(ref MixReplace, 0f, numLayers); CheckAndUpdate(ref LayerBrightness, 1f, numLayers); CheckAndUpdate(ref LayerBrightness2Spec, 0f, numLayers); CheckAndUpdate(ref LayerAlbedo2SpecColor, 0f, numLayers); CheckAndUpdate(ref LayerSaturation, 1f, numLayers); CheckAndUpdate(ref LayerEmission, 0f, numLayers); CheckAndUpdate(ref LayerEmissionColor, Color.black, numLayers); CheckAndUpdate(ref LayerEmissionRefractStrength, 0f, numLayers); CheckAndUpdate(ref LayerEmissionRefractHBedge, 0f, numLayers); CheckAndUpdate(ref TERRAIN_WaterEmission, 0.5f, numLayers); CheckAndUpdate(ref _GlitterStrength, 0f, numLayers); holder.RTP_DiffFresnel[k] = RTP_DiffFresnel[k]; holder.RTP_metallic[k] = RTP_metallic[k]; holder.RTP_glossMin[k] = RTP_glossMin[k]; holder.RTP_glossMax[k] = RTP_glossMax[k]; holder.RTP_glitter[k] = RTP_glitter[k]; holder.TERRAIN_WaterEmission[k] = TERRAIN_WaterEmission[k]; holder.MixBrightness[k] = MixBrightness[k]; holder.MixReplace[k] = MixReplace[k]; holder.LayerBrightness[k] = LayerBrightness[k]; holder.LayerBrightness2Spec[k] = LayerBrightness2Spec[k]; holder.LayerAlbedo2SpecColor[k] = LayerAlbedo2SpecColor[k]; holder.LayerSaturation[k] = LayerSaturation[k]; holder.LayerEmission[k] = LayerEmission[k]; ref Color reference = ref holder.LayerEmissionColor[k]; reference = LayerEmissionColor[k]; holder.LayerEmissionRefractStrength[k] = LayerEmissionRefractStrength[k]; holder.LayerEmissionRefractHBedge[k] = LayerEmissionRefractHBedge[k]; holder.GlobalColorPerLayer[k] = GlobalColorPerLayer[k]; holder.GlobalColorBottom[k] = GlobalColorBottom[k]; holder.GlobalColorTop[k] = GlobalColorTop[k]; holder.GlobalColorColormapLoSat[k] = GlobalColorColormapLoSat[k]; holder.GlobalColorColormapHiSat[k] = GlobalColorColormapHiSat[k]; holder.GlobalColorLayerLoSat[k] = GlobalColorLayerLoSat[k]; holder.GlobalColorLayerHiSat[k] = GlobalColorLayerHiSat[k]; holder.GlobalColorLoBlend[k] = GlobalColorLoBlend[k]; holder.GlobalColorHiBlend[k] = GlobalColorHiBlend[k]; holder.PER_LAYER_HEIGHT_MODIFIER[k] = PER_LAYER_HEIGHT_MODIFIER[k]; holder._SuperDetailStrengthMultA[k] = _SuperDetailStrengthMultA[k]; holder._SuperDetailStrengthMultASelfMaskNear[k] = _SuperDetailStrengthMultASelfMaskNear[k]; holder._SuperDetailStrengthMultASelfMaskFar[k] = _SuperDetailStrengthMultASelfMaskFar[k]; holder._SuperDetailStrengthMultB[k] = _SuperDetailStrengthMultB[k]; holder._SuperDetailStrengthMultBSelfMaskNear[k] = _SuperDetailStrengthMultBSelfMaskNear[k]; holder._SuperDetailStrengthMultBSelfMaskFar[k] = _SuperDetailStrengthMultBSelfMaskFar[k]; holder._SuperDetailStrengthNormal[k] = _SuperDetailStrengthNormal[k]; holder._BumpMapGlobalStrength[k] = _BumpMapGlobalStrength[k]; holder.VerticalTextureStrength[k] = VerticalTextureStrength[k]; holder.AO_strength[k] = AO_strength[k]; holder.Heights[k] = Heights[k]; holder._snow_strength_per_layer[k] = _snow_strength_per_layer[k]; holder.Substances[k] = Substances[k]; holder.TERRAIN_LayerWetStrength[k] = TERRAIN_LayerWetStrength[k]; holder.TERRAIN_WaterLevel[k] = TERRAIN_WaterLevel[k]; holder.TERRAIN_WaterLevelSlopeDamp[k] = TERRAIN_WaterLevelSlopeDamp[k]; holder.TERRAIN_WaterEdge[k] = TERRAIN_WaterEdge[k]; holder.TERRAIN_WaterGloss[k] = TERRAIN_WaterGloss[k]; holder.TERRAIN_WaterGlossDamper[k] = TERRAIN_WaterGlossDamper[k]; holder.TERRAIN_Refraction[k] = TERRAIN_Refraction[k]; holder.TERRAIN_WetRefraction[k] = TERRAIN_WetRefraction[k]; holder.TERRAIN_Flow[k] = TERRAIN_Flow[k]; holder.TERRAIN_WetFlow[k] = TERRAIN_WetFlow[k]; holder.TERRAIN_WaterMetallic[k] = TERRAIN_WaterMetallic[k]; holder.TERRAIN_WetGloss[k] = TERRAIN_WetGloss[k]; ref Color reference2 = ref holder.TERRAIN_WaterColor[k]; reference2 = TERRAIN_WaterColor[k]; holder._GlitterStrength[k] = _GlitterStrength[k]; } } public void InterpolatePresets(ReliefTerrainPresetHolder holderA, ReliefTerrainPresetHolder holderB, float t) { RTP_MIP_BIAS = Mathf.Lerp(holderA.RTP_MIP_BIAS, holderB.RTP_MIP_BIAS, t); MasterLayerBrightness = Mathf.Lerp(holderA.MasterLayerBrightness, holderB.MasterLayerBrightness, t); MasterLayerSaturation = Mathf.Lerp(holderA.MasterLayerSaturation, holderB.MasterLayerSaturation, t); BumpMapGlobalScale = Mathf.Lerp(holderA.BumpMapGlobalScale, holderB.BumpMapGlobalScale, t); GlobalColorMapBlendValues = Vector3.Lerp(holderA.GlobalColorMapBlendValues, holderB.GlobalColorMapBlendValues, t); GlobalColorMapSaturation = Mathf.Lerp(holderA.GlobalColorMapSaturation, holderB.GlobalColorMapSaturation, t); GlobalColorMapSaturationFar = Mathf.Lerp(holderA.GlobalColorMapSaturationFar, holderB.GlobalColorMapSaturationFar, t); GlobalColorMapDistortByPerlin = Mathf.Lerp(holderA.GlobalColorMapDistortByPerlin, holderB.GlobalColorMapDistortByPerlin, t); GlobalColorMapBrightness = Mathf.Lerp(holderA.GlobalColorMapBrightness, holderB.GlobalColorMapBrightness, t); GlobalColorMapBrightnessFar = Mathf.Lerp(holderA.GlobalColorMapBrightnessFar, holderB.GlobalColorMapBrightnessFar, t); _GlobalColorMapNearMIP = Mathf.Lerp(holderA._GlobalColorMapNearMIP, holderB._GlobalColorMapNearMIP, t); _FarNormalDamp = Mathf.Lerp(holderA._FarNormalDamp, holderB._FarNormalDamp, t); blendMultiplier = Mathf.Lerp(holderA.blendMultiplier, holderB.blendMultiplier, t); ReliefTransform = Vector4.Lerp(holderA.ReliefTransform, holderB.ReliefTransform, t); DIST_STEPS = Mathf.Lerp(holderA.DIST_STEPS, holderB.DIST_STEPS, t); WAVELENGTH = Mathf.Lerp(holderA.WAVELENGTH, holderB.WAVELENGTH, t); ReliefBorderBlend = Mathf.Lerp(holderA.ReliefBorderBlend, holderB.ReliefBorderBlend, t); ExtrudeHeight = Mathf.Lerp(holderA.ExtrudeHeight, holderB.ExtrudeHeight, t); LightmapShading = Mathf.Lerp(holderA.LightmapShading, holderB.LightmapShading, t); SHADOW_STEPS = Mathf.Lerp(holderA.SHADOW_STEPS, holderB.SHADOW_STEPS, t); WAVELENGTH_SHADOWS = Mathf.Lerp(holderA.WAVELENGTH_SHADOWS, holderB.WAVELENGTH_SHADOWS, t); SelfShadowStrength = Mathf.Lerp(holderA.SelfShadowStrength, holderB.SelfShadowStrength, t); ShadowSmoothing = Mathf.Lerp(holderA.ShadowSmoothing, holderB.ShadowSmoothing, t); ShadowSoftnessFade = Mathf.Lerp(holderA.ShadowSoftnessFade, holderB.ShadowSoftnessFade, t); distance_start = Mathf.Lerp(holderA.distance_start, holderB.distance_start, t); distance_transition = Mathf.Lerp(holderA.distance_transition, holderB.distance_transition, t); distance_start_bumpglobal = Mathf.Lerp(holderA.distance_start_bumpglobal, holderB.distance_start_bumpglobal, t); distance_transition_bumpglobal = Mathf.Lerp(holderA.distance_transition_bumpglobal, holderB.distance_transition_bumpglobal, t); rtp_perlin_start_val = Mathf.Lerp(holderA.rtp_perlin_start_val, holderB.rtp_perlin_start_val, t); trees_shadow_distance_start = Mathf.Lerp(holderA.trees_shadow_distance_start, holderB.trees_shadow_distance_start, t); trees_shadow_distance_transition = Mathf.Lerp(holderA.trees_shadow_distance_transition, holderB.trees_shadow_distance_transition, t); trees_shadow_value = Mathf.Lerp(holderA.trees_shadow_value, holderB.trees_shadow_value, t); trees_pixel_distance_start = Mathf.Lerp(holderA.trees_pixel_distance_start, holderB.trees_pixel_distance_start, t); trees_pixel_distance_transition = Mathf.Lerp(holderA.trees_pixel_distance_transition, holderB.trees_pixel_distance_transition, t); trees_pixel_blend_val = Mathf.Lerp(holderA.trees_pixel_blend_val, holderB.trees_pixel_blend_val, t); global_normalMap_multiplier = Mathf.Lerp(holderA.global_normalMap_multiplier, holderB.global_normalMap_multiplier, t); global_normalMap_farUsage = Mathf.Lerp(holderA.global_normalMap_farUsage, holderB.global_normalMap_farUsage, t); _AmbientEmissiveMultiplier = Mathf.Lerp(holderA._AmbientEmissiveMultiplier, holderB._AmbientEmissiveMultiplier, t); _AmbientEmissiveRelief = Mathf.Lerp(holderA._AmbientEmissiveRelief, holderB._AmbientEmissiveRelief, t); _SuperDetailTiling = Mathf.Lerp(holderA._SuperDetailTiling, holderB._SuperDetailTiling, t); TERRAIN_GlobalWetness = Mathf.Lerp(holderA.TERRAIN_GlobalWetness, holderB.TERRAIN_GlobalWetness, t); TERRAIN_RippleScale = Mathf.Lerp(holderA.TERRAIN_RippleScale, holderB.TERRAIN_RippleScale, t); TERRAIN_FlowScale = Mathf.Lerp(holderA.TERRAIN_FlowScale, holderB.TERRAIN_FlowScale, t); TERRAIN_FlowSpeed = Mathf.Lerp(holderA.TERRAIN_FlowSpeed, holderB.TERRAIN_FlowSpeed, t); TERRAIN_FlowCycleScale = Mathf.Lerp(holderA.TERRAIN_FlowCycleScale, holderB.TERRAIN_FlowCycleScale, t); TERRAIN_FlowMipOffset = Mathf.Lerp(holderA.TERRAIN_FlowMipOffset, holderB.TERRAIN_FlowMipOffset, t); TERRAIN_WetDarkening = Mathf.Lerp(holderA.TERRAIN_WetDarkening, holderB.TERRAIN_WetDarkening, t); TERRAIN_WetDropletsStrength = Mathf.Lerp(holderA.TERRAIN_WetDropletsStrength, holderB.TERRAIN_WetDropletsStrength, t); TERRAIN_WetHeight_Treshold = Mathf.Lerp(holderA.TERRAIN_WetHeight_Treshold, holderB.TERRAIN_WetHeight_Treshold, t); TERRAIN_WetHeight_Transition = Mathf.Lerp(holderA.TERRAIN_WetHeight_Transition, holderB.TERRAIN_WetHeight_Transition, t); TERRAIN_RainIntensity = Mathf.Lerp(holderA.TERRAIN_RainIntensity, holderB.TERRAIN_RainIntensity, t); TERRAIN_DropletsSpeed = Mathf.Lerp(holderA.TERRAIN_DropletsSpeed, holderB.TERRAIN_DropletsSpeed, t); TERRAIN_mipoffset_flowSpeed = Mathf.Lerp(holderA.TERRAIN_mipoffset_flowSpeed, holderB.TERRAIN_mipoffset_flowSpeed, t); TERRAIN_CausticsAnimSpeed = Mathf.Lerp(holderA.TERRAIN_CausticsAnimSpeed, holderB.TERRAIN_CausticsAnimSpeed, t); TERRAIN_CausticsColor = Color.Lerp(holderA.TERRAIN_CausticsColor, holderB.TERRAIN_CausticsColor, t); TERRAIN_CausticsWaterLevel = Mathf.Lerp(holderA.TERRAIN_CausticsWaterLevel, holderB.TERRAIN_CausticsWaterLevel, t); TERRAIN_CausticsWaterLevelByAngle = Mathf.Lerp(holderA.TERRAIN_CausticsWaterLevelByAngle, holderB.TERRAIN_CausticsWaterLevelByAngle, t); TERRAIN_CausticsWaterDeepFadeLength = Mathf.Lerp(holderA.TERRAIN_CausticsWaterDeepFadeLength, holderB.TERRAIN_CausticsWaterDeepFadeLength, t); TERRAIN_CausticsWaterShallowFadeLength = Mathf.Lerp(holderA.TERRAIN_CausticsWaterShallowFadeLength, holderB.TERRAIN_CausticsWaterShallowFadeLength, t); TERRAIN_CausticsTilingScale = Mathf.Lerp(holderA.TERRAIN_CausticsTilingScale, holderB.TERRAIN_CausticsTilingScale, t); RTP_AOsharpness = Mathf.Lerp(holderA.RTP_AOsharpness, holderB.RTP_AOsharpness, t); RTP_AOamp = Mathf.Lerp(holderA.RTP_AOamp, holderB.RTP_AOamp, t); _occlusionStrength = Mathf.Lerp(holderA._occlusionStrength, holderB._occlusionStrength, t); RTP_LightDefVector = Vector4.Lerp(holderA.RTP_LightDefVector, holderB.RTP_LightDefVector, t); EmissionRefractFiltering = Mathf.Lerp(holderA.EmissionRefractFiltering, holderB.EmissionRefractFiltering, t); EmissionRefractAnimSpeed = Mathf.Lerp(holderA.EmissionRefractAnimSpeed, holderB.EmissionRefractAnimSpeed, t); VerticalTextureGlobalBumpInfluence = Mathf.Lerp(holderA.VerticalTextureGlobalBumpInfluence, holderB.VerticalTextureGlobalBumpInfluence, t); VerticalTextureTiling = Mathf.Lerp(holderA.VerticalTextureTiling, holderB.VerticalTextureTiling, t); _snow_strength = Mathf.Lerp(holderA._snow_strength, holderB._snow_strength, t); _global_color_brightness_to_snow = Mathf.Lerp(holderA._global_color_brightness_to_snow, holderB._global_color_brightness_to_snow, t); _snow_slope_factor = Mathf.Lerp(holderA._snow_slope_factor, holderB._snow_slope_factor, t); _snow_edge_definition = Mathf.Lerp(holderA._snow_edge_definition, holderB._snow_edge_definition, t); _snow_height_treshold = Mathf.Lerp(holderA._snow_height_treshold, holderB._snow_height_treshold, t); _snow_height_transition = Mathf.Lerp(holderA._snow_height_transition, holderB._snow_height_transition, t); _snow_color = Color.Lerp(holderA._snow_color, holderB._snow_color, t); _snow_gloss = Mathf.Lerp(holderA._snow_gloss, holderB._snow_gloss, t); _snow_reflectivness = Mathf.Lerp(holderA._snow_reflectivness, holderB._snow_reflectivness, t); _snow_deep_factor = Mathf.Lerp(holderA._snow_deep_factor, holderB._snow_deep_factor, t); _snow_diff_fresnel = Mathf.Lerp(holderA._snow_diff_fresnel, holderB._snow_diff_fresnel, t); _snow_metallic = Mathf.Lerp(holderA._snow_metallic, holderB._snow_metallic, t); _snow_Frost = Mathf.Lerp(holderA._snow_Frost, holderB._snow_Frost, t); _snow_MicroTiling = Mathf.Lerp(holderA._snow_MicroTiling, holderB._snow_MicroTiling, t); _snow_BumpMicro = Mathf.Lerp(holderA._snow_BumpMicro, holderB._snow_BumpMicro, t); _snow_occlusionStrength = Mathf.Lerp(holderA._snow_occlusionStrength, holderB._snow_occlusionStrength, t); _SnowGlitterColor = Color.Lerp(holderA._SnowGlitterColor, holderB._SnowGlitterColor, t); _GlitterColor = Color.Lerp(holderA._GlitterColor, holderB._GlitterColor, t); _GlitterTiling = Mathf.Lerp(holderA._GlitterTiling, holderB._GlitterTiling, t); _GlitterDensity = Mathf.Lerp(holderA._GlitterDensity, holderB._GlitterDensity, t); _GlitterFilter = Mathf.Lerp(holderA._GlitterFilter, holderB._GlitterFilter, t); _GlitterColorization = Mathf.Lerp(holderA._GlitterColorization, holderB._GlitterColorization, t); for (int i = 0; i < holderA.Spec.Length; i++) { if (i < FarSpecCorrection.Length) { FarSpecCorrection[i] = Mathf.Lerp(holderA.FarSpecCorrection[i], holderB.FarSpecCorrection[i], t); MixScale[i] = Mathf.Lerp(holderA.MixScale[i], holderB.MixScale[i], t); MixBlend[i] = Mathf.Lerp(holderA.MixBlend[i], holderB.MixBlend[i], t); MixSaturation[i] = Mathf.Lerp(holderA.MixSaturation[i], holderB.MixSaturation[i], t); RTP_DiffFresnel[i] = Mathf.Lerp(holderA.RTP_DiffFresnel[i], holderB.RTP_DiffFresnel[i], t); RTP_metallic[i] = Mathf.Lerp(holderA.RTP_metallic[i], holderB.RTP_metallic[i], t); RTP_glossMin[i] = Mathf.Lerp(holderA.RTP_glossMin[i], holderB.RTP_glossMin[i], t); RTP_glossMax[i] = Mathf.Lerp(holderA.RTP_glossMax[i], holderB.RTP_glossMax[i], t); RTP_glitter[i] = Mathf.Lerp(holderA.RTP_glitter[i], holderB.RTP_glitter[i], t); MixBrightness[i] = Mathf.Lerp(holderA.MixBrightness[i], holderB.MixBrightness[i], t); MixReplace[i] = Mathf.Lerp(holderA.MixReplace[i], holderB.MixReplace[i], t); LayerBrightness[i] = Mathf.Lerp(holderA.LayerBrightness[i], holderB.LayerBrightness[i], t); LayerBrightness2Spec[i] = Mathf.Lerp(holderA.LayerBrightness2Spec[i], holderB.LayerBrightness2Spec[i], t); LayerAlbedo2SpecColor[i] = Mathf.Lerp(holderA.LayerAlbedo2SpecColor[i], holderB.LayerAlbedo2SpecColor[i], t); LayerSaturation[i] = Mathf.Lerp(holderA.LayerSaturation[i], holderB.LayerSaturation[i], t); LayerEmission[i] = Mathf.Lerp(holderA.LayerEmission[i], holderB.LayerEmission[i], t); ref Color reference = ref LayerEmissionColor[i]; reference = Color.Lerp(holderA.LayerEmissionColor[i], holderB.LayerEmissionColor[i], t); LayerEmissionRefractStrength[i] = Mathf.Lerp(holderA.LayerEmissionRefractStrength[i], holderB.LayerEmissionRefractStrength[i], t); LayerEmissionRefractHBedge[i] = Mathf.Lerp(holderA.LayerEmissionRefractHBedge[i], holderB.LayerEmissionRefractHBedge[i], t); GlobalColorPerLayer[i] = Mathf.Lerp(holderA.GlobalColorPerLayer[i], holderB.GlobalColorPerLayer[i], t); GlobalColorBottom[i] = Mathf.Lerp(holderA.GlobalColorBottom[i], holderB.GlobalColorBottom[i], t); GlobalColorTop[i] = Mathf.Lerp(holderA.GlobalColorTop[i], holderB.GlobalColorTop[i], t); GlobalColorColormapLoSat[i] = Mathf.Lerp(holderA.GlobalColorColormapLoSat[i], holderB.GlobalColorColormapLoSat[i], t); GlobalColorColormapHiSat[i] = Mathf.Lerp(holderA.GlobalColorColormapHiSat[i], holderB.GlobalColorColormapHiSat[i], t); GlobalColorLayerLoSat[i] = Mathf.Lerp(holderA.GlobalColorLayerLoSat[i], holderB.GlobalColorLayerLoSat[i], t); GlobalColorLayerHiSat[i] = Mathf.Lerp(holderA.GlobalColorLayerHiSat[i], holderB.GlobalColorLayerHiSat[i], t); GlobalColorLoBlend[i] = Mathf.Lerp(holderA.GlobalColorLoBlend[i], holderB.GlobalColorLoBlend[i], t); GlobalColorHiBlend[i] = Mathf.Lerp(holderA.GlobalColorHiBlend[i], holderB.GlobalColorHiBlend[i], t); PER_LAYER_HEIGHT_MODIFIER[i] = Mathf.Lerp(holderA.PER_LAYER_HEIGHT_MODIFIER[i], holderB.PER_LAYER_HEIGHT_MODIFIER[i], t); _SuperDetailStrengthMultA[i] = Mathf.Lerp(holderA._SuperDetailStrengthMultA[i], holderB._SuperDetailStrengthMultA[i], t); _SuperDetailStrengthMultASelfMaskNear[i] = Mathf.Lerp(holderA._SuperDetailStrengthMultASelfMaskNear[i], holderB._SuperDetailStrengthMultASelfMaskNear[i], t); _SuperDetailStrengthMultASelfMaskFar[i] = Mathf.Lerp(holderA._SuperDetailStrengthMultASelfMaskFar[i], holderB._SuperDetailStrengthMultASelfMaskFar[i], t); _SuperDetailStrengthMultB[i] = Mathf.Lerp(holderA._SuperDetailStrengthMultB[i], holderB._SuperDetailStrengthMultB[i], t); _SuperDetailStrengthMultBSelfMaskNear[i] = Mathf.Lerp(holderA._SuperDetailStrengthMultBSelfMaskNear[i], holderB._SuperDetailStrengthMultBSelfMaskNear[i], t); _SuperDetailStrengthMultBSelfMaskFar[i] = Mathf.Lerp(holderA._SuperDetailStrengthMultBSelfMaskFar[i], holderB._SuperDetailStrengthMultBSelfMaskFar[i], t); _SuperDetailStrengthNormal[i] = Mathf.Lerp(holderA._SuperDetailStrengthNormal[i], holderB._SuperDetailStrengthNormal[i], t); _BumpMapGlobalStrength[i] = Mathf.Lerp(holderA._BumpMapGlobalStrength[i], holderB._BumpMapGlobalStrength[i], t); AO_strength[i] = Mathf.Lerp(holderA.AO_strength[i], holderB.AO_strength[i], t); VerticalTextureStrength[i] = Mathf.Lerp(holderA.VerticalTextureStrength[i], holderB.VerticalTextureStrength[i], t); _snow_strength_per_layer[i] = Mathf.Lerp(holderA._snow_strength_per_layer[i], holderB._snow_strength_per_layer[i], t); TERRAIN_LayerWetStrength[i] = Mathf.Lerp(holderA.TERRAIN_LayerWetStrength[i], holderB.TERRAIN_LayerWetStrength[i], t); TERRAIN_WaterLevel[i] = Mathf.Lerp(holderA.TERRAIN_WaterLevel[i], holderB.TERRAIN_WaterLevel[i], t); TERRAIN_WaterLevelSlopeDamp[i] = Mathf.Lerp(holderA.TERRAIN_WaterLevelSlopeDamp[i], holderB.TERRAIN_WaterLevelSlopeDamp[i], t); TERRAIN_WaterEdge[i] = Mathf.Lerp(holderA.TERRAIN_WaterEdge[i], holderB.TERRAIN_WaterEdge[i], t); TERRAIN_WaterGloss[i] = Mathf.Lerp(holderA.TERRAIN_WaterGloss[i], holderB.TERRAIN_WaterGloss[i], t); TERRAIN_WaterGlossDamper[i] = Mathf.Lerp(holderA.TERRAIN_WaterGlossDamper[i], holderB.TERRAIN_WaterGlossDamper[i], t); TERRAIN_Refraction[i] = Mathf.Lerp(holderA.TERRAIN_Refraction[i], holderB.TERRAIN_Refraction[i], t); TERRAIN_WetRefraction[i] = Mathf.Lerp(holderA.TERRAIN_WetRefraction[i], holderB.TERRAIN_WetRefraction[i], t); TERRAIN_Flow[i] = Mathf.Lerp(holderA.TERRAIN_Flow[i], holderB.TERRAIN_Flow[i], t); TERRAIN_WetFlow[i] = Mathf.Lerp(holderA.TERRAIN_WetFlow[i], holderB.TERRAIN_WetFlow[i], t); TERRAIN_WaterMetallic[i] = Mathf.Lerp(holderA.TERRAIN_WaterMetallic[i], holderB.TERRAIN_WaterMetallic[i], t); TERRAIN_WetGloss[i] = Mathf.Lerp(holderA.TERRAIN_WetGloss[i], holderB.TERRAIN_WetGloss[i], t); ref Color reference2 = ref TERRAIN_WaterColor[i]; reference2 = Color.Lerp(holderA.TERRAIN_WaterColor[i], holderB.TERRAIN_WaterColor[i], t); TERRAIN_WaterEmission[i] = Mathf.Lerp(holderA.TERRAIN_WaterEmission[i], holderB.TERRAIN_WaterEmission[i], t); _GlitterStrength[i] = Mathf.Lerp(holderA._GlitterStrength[i], holderB._GlitterStrength[i], t); } } } public void ReturnToDefaults(string what = "", int layerIdx = -1) { if (what == string.Empty || what == "main") { ReliefTransform = new Vector4(3f, 3f, 0f, 0f); distance_start = 5f; distance_transition = 20f; RTP_LightDefVector = new Vector4(0.05f, 0.5f, 0.5f, 25f); ReliefBorderBlend = 6f; LightmapShading = 0f; RTP_MIP_BIAS = 0f; RTP_AOsharpness = 1.5f; RTP_AOamp = 0.1f; _occlusionStrength = 1f; MasterLayerBrightness = 1f; MasterLayerSaturation = 1f; EmissionRefractFiltering = 4f; EmissionRefractAnimSpeed = 4f; } if (what == string.Empty || what == "perlin") { BumpMapGlobalScale = 0.1f; _FarNormalDamp = 0.2f; distance_start_bumpglobal = 30f; distance_transition_bumpglobal = 30f; rtp_perlin_start_val = 0f; } if (what == string.Empty || what == "global_color") { GlobalColorMapBlendValues = new Vector3(0.2f, 0.4f, 0.5f); GlobalColorMapSaturation = 1f; GlobalColorMapSaturationFar = 1f; GlobalColorMapDistortByPerlin = 0.005f; GlobalColorMapBrightness = 1f; GlobalColorMapBrightnessFar = 1f; _GlobalColorMapNearMIP = 0f; trees_shadow_distance_start = 50f; trees_shadow_distance_transition = 10f; trees_shadow_value = 0.5f; trees_pixel_distance_start = 500f; trees_pixel_distance_transition = 10f; trees_pixel_blend_val = 2f; global_normalMap_multiplier = 1f; global_normalMap_farUsage = 0f; _Phong = 0f; tessHeight = 300f; _TessSubdivisions = 1f; _TessSubdivisionsFar = 1f; _TessYOffset = 0f; _AmbientEmissiveMultiplier = 1f; _AmbientEmissiveRelief = 0.5f; } if (what == string.Empty || what == "uvblend") { blendMultiplier = 1f; } if (what == string.Empty || what == "pom/pm") { ExtrudeHeight = 0.05f; DIST_STEPS = 20f; WAVELENGTH = 2f; SHADOW_STEPS = 20f; WAVELENGTH_SHADOWS = 2f; SelfShadowStrength = 0.8f; ShadowSmoothing = 1f; ShadowSoftnessFade = 0.8f; } if (what == string.Empty || what == "snow") { _global_color_brightness_to_snow = 0.5f; _snow_strength = 0f; _snow_slope_factor = 2f; _snow_edge_definition = 2f; _snow_height_treshold = -200f; _snow_height_transition = 1f; _snow_color = Color.white; _snow_gloss = 0.7f; _snow_reflectivness = 0.7f; _snow_deep_factor = 1.5f; _snow_diff_fresnel = 0.5f; _SnowGlitterColor = new Color(1f, 1f, 1f, 0.1f); } if (what == string.Empty || what == "superdetail") { _SuperDetailTiling = 8f; } if (what == string.Empty || what == "vertical") { VerticalTextureGlobalBumpInfluence = 0f; VerticalTextureTiling = 50f; } if (what == string.Empty || what == "glitter") { _GlitterColor = new Color(1f, 1f, 1f, 0.1f); _GlitterTiling = 1f; _GlitterDensity = 0.1f; _GlitterFilter = 0f; _GlitterColorization = 0.5f; } if (what == string.Empty || what == "water") { TERRAIN_GlobalWetness = 1f; TERRAIN_RippleScale = 4f; TERRAIN_FlowScale = 1f; TERRAIN_FlowSpeed = 0.5f; TERRAIN_FlowCycleScale = 1f; TERRAIN_RainIntensity = 1f; TERRAIN_DropletsSpeed = 10f; TERRAIN_mipoffset_flowSpeed = 1f; TERRAIN_FlowMipOffset = 0f; TERRAIN_WetDarkening = 0.5f; TERRAIN_WetDropletsStrength = 0f; TERRAIN_WetHeight_Treshold = -200f; TERRAIN_WetHeight_Transition = 5f; } if (what == string.Empty || what == "caustics") { TERRAIN_CausticsAnimSpeed = 2f; TERRAIN_CausticsColor = Color.white; TERRAIN_CausticsWaterLevel = 30f; TERRAIN_CausticsWaterLevelByAngle = 2f; TERRAIN_CausticsWaterDeepFadeLength = 50f; TERRAIN_CausticsWaterShallowFadeLength = 30f; TERRAIN_CausticsTilingScale = 1f; } if (what == string.Empty || what == "layer") { int num = 0; int num2 = ((numLayers >= 12) ? 12 : numLayers); if (layerIdx >= 0) { num = layerIdx; num2 = layerIdx + 1; } for (int i = num; i < num2; i++) { FarSpecCorrection[i] = 0f; MIPmult[i] = 0f; MixScale[i] = 0.2f; MixBlend[i] = 0.5f; MixSaturation[i] = 0.3f; RTP_DiffFresnel[i] = 0f; RTP_metallic[i] = 0f; RTP_glossMin[i] = 0f; RTP_glossMax[i] = 1f; RTP_glitter[i] = 0f; MixBrightness[i] = 2f; MixReplace[i] = 0f; LayerBrightness[i] = 1f; LayerBrightness2Spec[i] = 0f; LayerAlbedo2SpecColor[i] = 0f; LayerSaturation[i] = 1f; LayerEmission[i] = 0f; ref Color reference = ref LayerEmissionColor[i]; reference = Color.black; LayerEmissionRefractStrength[i] = 0f; LayerEmissionRefractHBedge[i] = 0f; GlobalColorPerLayer[i] = 1f; GlobalColorBottom[i] = 0f; GlobalColorTop[i] = 1f; GlobalColorColormapLoSat[i] = 1f; GlobalColorColormapHiSat[i] = 1f; GlobalColorLayerLoSat[i] = 1f; GlobalColorLayerHiSat[i] = 1f; GlobalColorLoBlend[i] = 1f; GlobalColorHiBlend[i] = 1f; PER_LAYER_HEIGHT_MODIFIER[i] = 0f; _SuperDetailStrengthMultA[i] = 0f; _SuperDetailStrengthMultASelfMaskNear[i] = 0f; _SuperDetailStrengthMultASelfMaskFar[i] = 0f; _SuperDetailStrengthMultB[i] = 0f; _SuperDetailStrengthMultBSelfMaskNear[i] = 0f; _SuperDetailStrengthMultBSelfMaskFar[i] = 0f; _SuperDetailStrengthNormal[i] = 0f; _BumpMapGlobalStrength[i] = 0.3f; _snow_strength_per_layer[i] = 1f; VerticalTextureStrength[i] = 0.5f; AO_strength[i] = 1f; TERRAIN_LayerWetStrength[i] = 1f; TERRAIN_WaterLevel[i] = 0.5f; TERRAIN_WaterLevelSlopeDamp[i] = 0.5f; TERRAIN_WaterEdge[i] = 2f; TERRAIN_WaterGloss[i] = 0.1f; TERRAIN_WaterGlossDamper[i] = 0f; TERRAIN_Refraction[i] = 0.01f; TERRAIN_WetRefraction[i] = 0.2f; TERRAIN_Flow[i] = 0.3f; TERRAIN_WetFlow[i] = 0.05f; TERRAIN_WaterMetallic[i] = 0.1f; TERRAIN_WetGloss[i] = 0.05f; ref Color reference2 = ref TERRAIN_WaterColor[i]; reference2 = new Color(0.9f, 0.9f, 1f, 0.5f); TERRAIN_WaterEmission[i] = 0f; _GlitterStrength[i] = 0f; } } } public bool CheckAndUpdate(ref float[] aLayerPropArray, float defVal, int len) { if (aLayerPropArray == null || aLayerPropArray.Length < len) { aLayerPropArray = new float[len]; for (int i = 0; i < len; i++) { aLayerPropArray[i] = defVal; } return true; } return false; } public bool CheckAndUpdate(ref Color[] aLayerPropArray, Color defVal, int len) { if (aLayerPropArray == null || aLayerPropArray.Length < len) { aLayerPropArray = new Color[len]; for (int i = 0; i < len; i++) { aLayerPropArray[i] = defVal; } return true; } return false; } }