mirror of
https://github.com/X0nk/Bliss-Shader.git
synced 2026-10-10 05:03:04 +08:00
(Finish scene controller) Add daily weather, daily rainy weather, daily rainy weather for hot/cold biomes., and create controls for all of them. improve water caustics. add dedicated LPV fog illumination raymarcher. add individual minimum indoor/outdoor light control. fix bloomy fog and disallow it to apply on clouds. Cleanup code and remove unused shader settings. fix lightning bolts and readd lightning flashes. fix puddles appearing in biomes they shouldnt. fix puddles using wrong normals in full wetness. improve cloud to fog intersection data (thank you merlin). remove unused shader programs
This commit is contained in:
@@ -0,0 +1,114 @@
|
||||
/*
|
||||
--------------------------------------
|
||||
// hello
|
||||
// this file is meant to be an interface for map makers (or whoever really do whatever you want) to control the shader in a handfull of ways depending on the circumstances surrounding the player.
|
||||
// one usage example would be like: When the player is within a specific area within the world coordinates, make it super foggy there.
|
||||
// this file is specifically made to be drop-in ready inside the shaderpack expected at the file path: shaderpacks/<bliss_vN.N.N>/shaders/CUSTOM_SCENE_PARAMETERS.glsl
|
||||
--------------------------------------
|
||||
|
||||
--------------------------------------
|
||||
// these are all the parameters you can freely set. you can do it any amount of times in any amount of profiles.
|
||||
// if a parameter is not written below, it does not exist. writing new parameters will not create anything but a shader compile error.
|
||||
--------------------------------------
|
||||
|
||||
--------------------------------------
|
||||
// for cloud coverage input numerical values within the range of 0.0 - 2.0
|
||||
--------------------------------------
|
||||
|
||||
altostratusCoverage = 0.0;
|
||||
largeCumulusCoverage = 0.0;
|
||||
smallCumulusCoverage = 0.0;
|
||||
|
||||
--------------------------------------
|
||||
// for cloud density input numerical values within the range of 0.0 - 1.0
|
||||
--------------------------------------
|
||||
|
||||
altostratusDensity = 0.0;
|
||||
largeCumulusDensity = 0.0;
|
||||
smallCumulusDensity = 0.0;
|
||||
|
||||
--------------------------------------
|
||||
// for fog density input numerical values within the range of 0.0 - 1.0
|
||||
--------------------------------------
|
||||
|
||||
uniformFogDensity = 0.0;
|
||||
clumpyFogDensity = 0.0;
|
||||
LocalUniformFogDensity = 0.0;
|
||||
LocalClumpyFogDensity = 0.0;
|
||||
|
||||
--------------------------------------
|
||||
// for fog colors, input the numerical color values of red, green and blue, within the range of 0.0 - 1.0 or N/255.0
|
||||
// this website is extremely helpful, just copy its RGB values https://rgbcolorpicker.com/0-1
|
||||
--------------------------------------
|
||||
|
||||
localFogColor = vec3(R, G, B);
|
||||
|
||||
--------------------------------------
|
||||
// here are some pre-made functions to make creating profiles more user friendly.
|
||||
// these are used the same way as the /fill command in-game. i recommend finding world coordinates to use with that command.
|
||||
// the left most input is the first set of coordinates, the right most input is the second set of coordinates
|
||||
--------------------------------------
|
||||
|
||||
playerIsInsideArea(vec3(X, Y, Z), vec3(X, Y, Z))
|
||||
|
||||
playerIsOutsideArea(vec3(X, Y, Z), vec3(X, Y, Z))
|
||||
|
||||
--------------------------------------
|
||||
// HOW TO USE: first start with your condition (this code writing formatting is arbitrary)
|
||||
--------------------------------------
|
||||
|
||||
if(
|
||||
conditionIsTrue
|
||||
){
|
||||
thenDoStuff
|
||||
}
|
||||
|
||||
--------------------------------------
|
||||
// input some sort of condition to check if its true or false, and then to set the parameters to specific values when it is true.
|
||||
// these are functional examples of usage
|
||||
--------------------------------------
|
||||
|
||||
if(
|
||||
playerIsWithinArea(vec3(-5, -5, -3), vec3(5, 1, 100))
|
||||
){
|
||||
uniformFogDensity = 0.5;
|
||||
smallCumulusCoverage = 1.5;
|
||||
}
|
||||
if(
|
||||
playerIsOutsideArea(vec3(-5, -5, -3), vec3(5, 1, 100))
|
||||
){
|
||||
uniformFogDensity = 1.5;
|
||||
smallCumulusCoverage = 0.0;
|
||||
LocalClumpyFogDensity = 0.0;
|
||||
}
|
||||
|
||||
--------------------------------------
|
||||
// IMPORTANT INFORMATION
|
||||
//
|
||||
// ALL VARIABLE NAMES, UNIFORM NAMES, AND FUNCTION NAMES ARE CASE SENSITIVE
|
||||
//
|
||||
// IF THIS FILE IS DELETED, MISSING, NAMED INCORRECTLY, OR IN THE WRONG FILEPATH, THE SHADERPACK WILL THROW AN ERROR: "failed to resolve #include directive --> /lib/scene_controller.glsl"
|
||||
//
|
||||
// the code is executed in a very specific order, think top-to-bottom, or the order of operations that math dictates.
|
||||
// you CAN have multiple profiles alter the same parameters at the same time!
|
||||
// BUT, the code executed last will be the final result! meaning if many profiles are true at once, the bottom most true one will be the one actually used.
|
||||
// So dont worry about overlapping profiles! just be aware of the order of operations!
|
||||
//
|
||||
// when a custom profile is active, it will overwrite any of bliss's pre-existing profiles
|
||||
// That includes daily weather, rainy weather, and biome specific enviornments
|
||||
--------------------------------------
|
||||
*/
|
||||
|
||||
#ifdef DECLARE_UNIFORMS_OR_WRITE_FUNCTIONS_FOR_CUSTOM_SCENE_CONTROLLER_PROFILES
|
||||
// DECLARE UNIFORMS PROVIDED BY IRIS HERE. if they are already declared elswhere in the shaderpack, there will be an error. not all uniforms are viable to be used.
|
||||
// read the iris documentation for a complete list of uniforms to call https://shaders.properties/current/reference/uniforms/overview/
|
||||
|
||||
// you can also write functions here if you want. you must follow the syntax of the programming language "GLSL"
|
||||
// go google that i aint helping you https://wikis.khronos.org/opengl/OpenGL_Shading_Language | https://www.shadertoy.com/
|
||||
#endif
|
||||
|
||||
#ifdef WRITE_CUSTOM_SCENE_CONTROLLER_PROFILES
|
||||
|
||||
// WRITE YOUR PROFILES HERE WITHIN THE #ifdef --- DO NOT WRITE ABOVE THE #ifdef OR BELOW THE #endif --- YOU CAN SAFELY REMOVE THIS TEXT AND HAVE NOTHING WRITTEN HERE AT ALL
|
||||
|
||||
#endif
|
||||
@@ -95,12 +95,15 @@ void main() {
|
||||
|
||||
gcolor = gl_Color;
|
||||
|
||||
|
||||
EMISSIVE = 0.0;
|
||||
if(dhMaterialId == DH_BLOCK_ILLUMINATED || gl_MultiTexCoord1.x >= 0.95) EMISSIVE = 0.5;
|
||||
|
||||
SSSAMOUNT = 0.0;
|
||||
#if defined DH_SUBSURFACE_SCATTERING
|
||||
#if defined COLOR_TEST_FOR_SUBSURFACE_SCATTERING_MATERIAL
|
||||
if(dot(gl_Color.rgb, vec3(DH_SSS_THRESHOLD_R, DH_SSS_THRESHOLD_G, DH_SSS_THRESHOLD_B)) > 0.0 && dhMaterialId == DH_BLOCK_UNKNOWN) SSSAMOUNT = 0.25;
|
||||
#endif
|
||||
|
||||
if (dhMaterialId == DH_BLOCK_LEAVES) SSSAMOUNT = 1.0;
|
||||
if (dhMaterialId == DH_BLOCK_SNOW) SSSAMOUNT = 0.5;
|
||||
#endif
|
||||
|
||||
@@ -431,7 +431,7 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 )
|
||||
#ifdef DH_OVERDRAW_PREVENTION
|
||||
float distancefade = min(max(1.0 - length(playerPos)/clamp(far-16*4, 16, maxOverdrawDistance),0.0)*5,1.0);
|
||||
|
||||
if(texture2D(depthtex0, gl_FragCoord.xy*texelSize).x < 1.0 || distancefade > 0.0){
|
||||
if(texture2D(depthtex0, gl_FragCoord.xy*texelSize).x < 1.0 || distancefade > 0.0){
|
||||
gl_FragData[0].a = 0.0;
|
||||
material = 0.0;
|
||||
}
|
||||
|
||||
@@ -102,7 +102,9 @@ void main() {
|
||||
averageSkyCol_Clouds = texelFetch2D(colortex4,ivec2(0,37),0).rgb;
|
||||
|
||||
#ifdef OVERWORLD_SHADER
|
||||
readSceneControllerParameters(colortex4, parameters.smallCumulus, parameters.largeCumulus, parameters.altostratus, parameters.fog);
|
||||
#define READ_SCENE_CONTROLLER_PARAMETERS
|
||||
#include "/lib/scene_controller.glsl"
|
||||
// readSceneControllerParameters(colortex4, parameters.smallCumulus, parameters.largeCumulus, parameters.altostratus, parameters.fog);
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
@@ -491,7 +491,7 @@ void main() {
|
||||
if(TEXTURE.a < 0.7 && TEXTURE.a > 0.2) gl_FragData[0] *= clamp(1.0 - length(feetPlayerPos) / 100.0 ,0.0,1.0);
|
||||
|
||||
#if DEBUG_VIEW == debug_LIGHTMAPS
|
||||
gl_FragData[0].rgb = vec3(lmtexcoord.z,lmtexcoord.w,0.0);
|
||||
gl_FragData[0].rgb = vec3(lmtexcoord.z,lmtexcoord.w,0.0)*0.1;
|
||||
#endif
|
||||
|
||||
gl_FragData[0].rgb *= 0.1;
|
||||
|
||||
@@ -26,6 +26,7 @@ uniform sampler2D colortex4;
|
||||
#endif
|
||||
|
||||
|
||||
uniform bool isInRainFallEnviornment;
|
||||
uniform vec3 sunPosition;
|
||||
uniform float sunElevation;
|
||||
|
||||
@@ -100,9 +101,9 @@ void main() {
|
||||
|
||||
#ifdef WEATHER
|
||||
worldpos += cameraPosition;
|
||||
bool istopv = worldpos.y > cameraPosition.y + 5.0 && lmtexcoord.w > 0.99;
|
||||
bool istopv = (worldpos.y > cameraPosition.y + 5.0 && lmtexcoord.w > 0.99);
|
||||
|
||||
if(!istopv){
|
||||
if(!istopv && isInRainFallEnviornment){
|
||||
worldpos.xyz -= cameraPosition - vec3(2.0,0.0,2.0) * min(max(clamp(eyeBrightnessSmooth.y/240.0,0,1)-0.95,0)/0.05,1);
|
||||
}else{
|
||||
worldpos.xyz -= cameraPosition;
|
||||
@@ -121,7 +122,6 @@ void main() {
|
||||
gl_Position = ftransform();
|
||||
#endif
|
||||
|
||||
|
||||
color = gl_Color;
|
||||
|
||||
#ifdef LINES
|
||||
@@ -135,7 +135,9 @@ void main() {
|
||||
averageSkyCol_Clouds = texelFetch2D(colortex4,ivec2(0,37),0).rgb;
|
||||
WsunVec = lightCol.a * normalize(mat3(gbufferModelViewInverse) * sunPosition);
|
||||
|
||||
readSceneControllerParameters(colortex4, parameters.smallCumulus, parameters.largeCumulus, parameters.altostratus, parameters.fog);
|
||||
#define READ_SCENE_CONTROLLER_PARAMETERS
|
||||
#include "/lib/scene_controller.glsl"
|
||||
// readSceneControllerParameters(colortex4, parameters.smallCumulus, parameters.largeCumulus, parameters.altostratus, parameters.fog);
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
@@ -98,7 +98,6 @@ flat varying int SIGN;
|
||||
|
||||
|
||||
flat varying float HELD_ITEM_BRIGHTNESS;
|
||||
uniform float noPuddleAreas;
|
||||
uniform float nightVision;
|
||||
|
||||
// float interleaved_gradientNoise(){
|
||||
@@ -651,8 +650,16 @@ void main() {
|
||||
#endif
|
||||
|
||||
#ifdef WORLD
|
||||
// apply noise to lightmaps to reduce banding.
|
||||
vec2 PackLightmaps = vec2(torchlightmap, lmtexcoord.w);
|
||||
|
||||
// special curve to give more precision on high/low values of the gradient. this curve will be inverted after sampling and decoding.
|
||||
// PackLightmaps = pow(1.0-pow(1.0-PackLightmaps,vec2(0.5)),vec2(0.5));
|
||||
|
||||
#if defined WORLD && !defined HAND && !defined ENTITIES
|
||||
// some dither to lightmaps to reduce banding.
|
||||
PackLightmaps = clamp( PackLightmaps + PackLightmaps * (interleaved_gradientNoise()-0.5)*0.005,0,1);
|
||||
#endif
|
||||
|
||||
vec4 data1 = clamp( encode(viewToWorld(normal), PackLightmaps), 0.0, 1.0);
|
||||
|
||||
gl_FragData[0] = vec4(encodeVec2(Albedo.x,data1.x), encodeVec2(Albedo.y,data1.y), encodeVec2(Albedo.z,data1.z), encodeVec2(data1.w,Albedo.w));
|
||||
|
||||
@@ -211,7 +211,7 @@ void main() {
|
||||
// #endif
|
||||
|
||||
|
||||
vec2 lmcoord = gl_MultiTexCoord1.xy / 240.0;
|
||||
vec2 lmcoord = max(gl_MultiTexCoord1.xy - 8.0, 0.0) / (240.0-8.0);
|
||||
lmtexcoord.zw = lmcoord;
|
||||
|
||||
|
||||
|
||||
@@ -46,6 +46,7 @@ uniform sampler2D depthtex0;
|
||||
|
||||
#ifdef DISTANT_HORIZONS
|
||||
uniform sampler2D dhDepthTex1;
|
||||
uniform sampler2D dhDepthTex0;
|
||||
#endif
|
||||
|
||||
uniform sampler2D colortex7;
|
||||
@@ -111,9 +112,11 @@ uniform float waterEnteredAltitude;
|
||||
#include "/lib/sky_gradient.glsl"
|
||||
#include "/lib/waterBump.glsl"
|
||||
|
||||
#define LIGHTNINGFLASH_DIFFUSE
|
||||
#include "/lib/lightning_stuff.glsl"
|
||||
|
||||
#ifdef OVERWORLD_SHADER
|
||||
flat varying float Flashing;
|
||||
#include "/lib/lightning_stuff.glsl"
|
||||
|
||||
#include "/lib/scene_controller.glsl"
|
||||
|
||||
@@ -440,7 +443,7 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 )
|
||||
|
||||
#ifdef WhiteWorld
|
||||
gl_FragData[0].rgb = vec3(1.0);
|
||||
gl_FragData[0].a = 1.0/255.0;
|
||||
gl_FragData[0].a = 1.0;
|
||||
#endif
|
||||
|
||||
vec3 Albedo = toLinear(gl_FragData[0].rgb);
|
||||
@@ -450,8 +453,8 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 )
|
||||
if (isWater) Albedo *= sqrt(luma(Albedo));
|
||||
#else
|
||||
if (isWater){
|
||||
Albedo = vec3(0.0);
|
||||
gl_FragData[0].a = 1.0/255.0;
|
||||
Albedo = vec3(0.0);
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
@@ -555,7 +558,7 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 )
|
||||
#if defined ENTITIES && defined IS_IRIS
|
||||
if(NAMETAG > 0) nameTagMask = 0.1;
|
||||
#endif
|
||||
|
||||
|
||||
gl_FragData[2] = vec4(encodeVec2(TangentNormal*0.5+0.5), encodeVec2(GLASS_TINT_COLORS.rg), encodeVec2(GLASS_TINT_COLORS.ba), encodeVec2(0.0, nameTagMask));
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -609,7 +612,7 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 )
|
||||
float waterdepth = max(-(feetPlayerPos.y + distanceFromWaterSurface),0.0);
|
||||
|
||||
DirectLightColor *= exp(-vec3(Water_Absorb_R, Water_Absorb_G, Water_Absorb_B) * (waterdepth/abs(WsunVec.y)));
|
||||
DirectLightColor *= pow(waterCaustics(feetPlayerPos + cameraPosition, WsunVec)*WATER_CAUSTICS_BRIGHTNESS, WATER_CAUSTICS_POWER);
|
||||
DirectLightColor *= pow(waterCaustics(feetPlayerPos + cameraPosition, WsunVec, -(feetPlayerPos.y + distanceFromWaterSurface))*WATER_CAUSTICS_BRIGHTNESS, WATER_CAUSTICS_POWER);
|
||||
}
|
||||
|
||||
// float NdotL = clamp((-15 + dot(normal, normalize(WsunVec*mat3(gbufferModelViewInverse)))*255.0) / 240.0 ,0.0,1.0);
|
||||
@@ -695,10 +698,15 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 )
|
||||
Indirect_lighting += doBlockLightLighting( vec3(TORCH_R,TORCH_G,TORCH_B), lightmap.x, feetPlayerPos, lpvPos);
|
||||
|
||||
vec4 flashLightSpecularData = vec4(0.0);
|
||||
|
||||
#ifdef FLASHLIGHT
|
||||
Indirect_lighting += calculateFlashlight(FragCoord.xy*texelSize/RENDER_SCALE, viewPos, vec3(0.0), worldSpaceNormal, flashLightSpecularData, false);
|
||||
#endif
|
||||
|
||||
#if defined LIGHTNING_FLASH
|
||||
Indirect_lighting += createLightningPointLight(feetPlayerPos, lightningBoltPosition.xyz, worldSpaceNormal) * lightmap.y*lightmap.y*lightmap.y*lightmap.y;
|
||||
#endif
|
||||
|
||||
vec3 FinalColor = (Indirect_lighting + Direct_lighting) * Albedo;
|
||||
|
||||
#if EMISSIVE_TYPE == 2 || EMISSIVE_TYPE == 3
|
||||
@@ -780,6 +788,10 @@ if (gl_FragCoord.x * texelSize.x < 1.0 && gl_FragCoord.y * texelSize.y < 1.0 )
|
||||
#endif
|
||||
|
||||
bool WATER = texture2D(colortex7, gl_FragCoord.xy*texelSize).a > 0.0 && length(feetPlayerPos) > clamp(far-16*4, 16, maxOverdrawDistance) && texture2D(depthtex1, gl_FragCoord.xy*texelSize).x >= 1.0;
|
||||
// bool WATER = length(feetPlayerPos) > clamp(far-16*4, 17.5, maxOverdrawDistance) && texelFetch2D(depthtex1, ivec2(gl_FragCoord.xy), 0).x >= 1.0 || texelFetch2D(depthtex1, ivec2(gl_FragCoord.xy), 0).x < gl_FragCoord.z;
|
||||
// float depth = texelFetch2D(depthtex1, ivec2(gl_FragCoord.xy), 0).x;
|
||||
// bool WATER = (abs(depth - texelFetch2D(dhDepthTex0, ivec2(gl_FragCoord.xy), 0).x) > 0.23 && length(feetPlayerPos) > clamp(far-16*4, 16, maxOverdrawDistance)) || (length(feetPlayerPos) > clamp(far-16*4, 20, maxOverdrawDistance) && depth >= 1.0);// && texelFetch2D(depthtex1, ivec2(gl_FragCoord.xy), 0).x < 1.0;
|
||||
// bool WATER = texelFetch2D(dhDepthTex0, ivec2(gl_FragCoord.xy),0).x == texelFetch2D(depthtex1, ivec2(gl_FragCoord.xy), 0).x;
|
||||
|
||||
if(WATER) {
|
||||
gl_FragData[0].a = 0.0;
|
||||
|
||||
@@ -246,7 +246,9 @@ void main() {
|
||||
|
||||
WsunVec = mix(WmoonVec, WsunVec, clamp(lightCol.a,0,1));
|
||||
|
||||
readSceneControllerParameters(colortex4, parameters.smallCumulus, parameters.largeCumulus, parameters.altostratus, parameters.fog);
|
||||
#define READ_SCENE_CONTROLLER_PARAMETERS
|
||||
#include "/lib/scene_controller.glsl"
|
||||
// readSceneControllerParameters(colortex4, parameters.smallCumulus, parameters.largeCumulus, parameters.altostratus, parameters.fog);
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -45,6 +45,7 @@ uniform float frameTimeCounter;
|
||||
uniform float rainStrength;
|
||||
uniform int frameCounter;
|
||||
uniform ivec2 eyeBrightnessSmooth;
|
||||
uniform ivec2 eyeBrightness;
|
||||
|
||||
|
||||
uniform mat4 gbufferModelViewInverse;
|
||||
@@ -308,6 +309,7 @@ vec2 SSAO(
|
||||
sss += clamp(-dot(normalize(viewPosDiff), flatnormal),0.0,1.0) * exp(-10*occlusion);
|
||||
#else
|
||||
sss += clamp(-dot(normalize(viewPosDiff), flatnormal) - occlusion/n,0.0,1.0) * 0.25 + (normalize(mat3(gbufferModelViewInverse) * -viewPosDiff).y - occlusion/n) * threshHold;
|
||||
// sss += (normalize(mat3(gbufferModelViewInverse) * -viewPosDiff).y - (occlusion/n)*0.5) * threshHold;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -363,7 +365,7 @@ void main() {
|
||||
|
||||
float lightLeakFix = clamp(pow(eyeBrightnessSmooth.y/240. + lightmap.y,2.0) ,0.0,1.0);
|
||||
|
||||
gl_FragData[1] = vec4(0.0,0.0,0.0, texelFetch2D(colortex14,ivec2((floor(gl_FragCoord.xy)/VL_RENDER_RESOLUTION*texelSize+0.5*texelSize)/texelSize),0).a);
|
||||
gl_FragData[1] = vec4(0.0,0.0,0.0, texelFetch2D(colortex14,ivec2((floor(gl_FragCoord.xy)/VL_RENDERING_RESOLUTION_SCALE*texelSize+0.5*texelSize)/texelSize),0).a);
|
||||
|
||||
|
||||
// bool lightningBolt = abs(dataUnpacked1.w-0.5) <0.01;
|
||||
|
||||
@@ -35,19 +35,14 @@ uniform float nightVision;
|
||||
#if SUN_SPECULAR_MULT != 0
|
||||
#define LIGHTSOURCE_REFLECTION
|
||||
#endif
|
||||
|
||||
#include "/lib/lightning_stuff.glsl"
|
||||
#endif
|
||||
|
||||
#ifdef NETHER_SHADER
|
||||
const bool colortex4MipmapEnabled = true;
|
||||
uniform vec3 lightningEffect;
|
||||
#undef LIGHTSOURCE_REFLECTION
|
||||
#endif
|
||||
|
||||
#ifdef END_SHADER
|
||||
uniform vec3 lightningEffect;
|
||||
|
||||
flat varying float Flashing;
|
||||
#undef LIGHTSOURCE_REFLECTION
|
||||
#endif
|
||||
@@ -115,6 +110,7 @@ uniform float frameTimeCounter;
|
||||
uniform float rainStrength;
|
||||
uniform int isEyeInWater;
|
||||
uniform ivec2 eyeBrightnessSmooth;
|
||||
uniform ivec2 eyeBrightness;
|
||||
|
||||
uniform vec3 sunVec;
|
||||
flat varying vec3 WsunVec;
|
||||
@@ -165,6 +161,9 @@ float convertHandDepth_2(in float depth, bool hand) {
|
||||
#include "/lib/lpv_render.glsl"
|
||||
#endif
|
||||
|
||||
#define LIGHTNINGFLASH_DIFFUSE
|
||||
#include "/lib/lightning_stuff.glsl"
|
||||
|
||||
// #define DEFERRED_SPECULAR
|
||||
#define DEFERRED_SSR_QUALITY 30 // [0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 200 300 400 500]
|
||||
#define DEFERRED_BACKGROUND_REFLECTION
|
||||
@@ -334,70 +333,6 @@ float swapperlinZ(float depth, float _near, float _far) {
|
||||
|
||||
}
|
||||
|
||||
// vec2 SSRT_Shadows(vec3 viewPos, bool depthCheck, vec3 lightDir, float noise, bool isSSS, bool hand){
|
||||
|
||||
|
||||
// float handSwitch = hand ? 1.0 : 0.0;
|
||||
|
||||
// float steps = 16.0;
|
||||
// float Shadow = 1.0;
|
||||
// float SSS = 0.0;
|
||||
// // isSSS = true;
|
||||
|
||||
// float _near = near; float _far = far*4.0;
|
||||
|
||||
// if (depthCheck) {
|
||||
// _near = dhNearPlane;
|
||||
// _far = dhFarPlane;
|
||||
// }
|
||||
|
||||
|
||||
// vec3 clipPosition = toClipSpace3_DH(viewPos, depthCheck);
|
||||
// //prevents the ray from going behind the camera
|
||||
// float rayLength = ((viewPos.z + lightDir.z * _far*sqrt(3.)) > -_near) ?
|
||||
// (-_near -viewPos.z) / lightDir.z : _far*sqrt(3.);
|
||||
|
||||
// vec3 direction = toClipSpace3_DH(viewPos + lightDir*rayLength, depthCheck) - clipPosition; //convert to clip space
|
||||
|
||||
// direction.xyz = direction.xyz / max(abs(direction.x)/0.0005, abs(direction.y)/0.0005); //fixed step size
|
||||
|
||||
// // float Stepmult = depthCheck ? (isSSS ? 1.0 : 3.0) : (isSSS ? 1.0 : 3.0);
|
||||
// float Stepmult = isSSS ? 3.0 : 6.0;
|
||||
|
||||
// vec3 rayDir = direction * Stepmult * vec3(RENDER_SCALE,1.0);
|
||||
// vec3 screenPos = clipPosition * vec3(RENDER_SCALE,1.0) + rayDir*noise - (isSSS ? rayDir*0.9 : vec3(0.0));
|
||||
|
||||
// float minZ = screenPos.z - 1.0;
|
||||
// float maxZ = screenPos.z;
|
||||
|
||||
// // as distance increases, add larger values to the SSS value. this scales the "density" with distance, as far things should appear denser.
|
||||
// float dist = 1.0 + length(mat3(gbufferModelViewInverse) * viewPos) / 500.0;
|
||||
|
||||
// for (int i = 0; i < int(steps); i++) {
|
||||
|
||||
// float samplePos = convertHandDepth_2(texture2D(depthtex1, screenPos.xy).x, hand);
|
||||
|
||||
// #ifdef DISTANT_HORIZONS
|
||||
// if(depthCheck) samplePos = texture2D(dhDepthTex1, screenPos.xy).x;
|
||||
// #endif
|
||||
|
||||
// if(samplePos < screenPos.z && (samplePos <= max(minZ,maxZ) && samplePos >= min(minZ,maxZ))){
|
||||
// vec2 linearZ = vec2(swapperlinZ(screenPos.z, _near, _far), swapperlinZ(samplePos, _near, _far));
|
||||
// float calcthreshold = abs(linearZ.x - linearZ.y) / linearZ.x;
|
||||
|
||||
// if (calcthreshold < 0.035) Shadow = 0.0;
|
||||
// SSS += dist;
|
||||
// }
|
||||
|
||||
// minZ = maxZ - (isSSS ? 1.0 : 0.0001) / swapperlinZ(samplePos, _near, _far);
|
||||
// maxZ += rayDir.z;
|
||||
|
||||
// screenPos += rayDir;
|
||||
// }
|
||||
|
||||
// return vec2(Shadow, SSS / steps);
|
||||
// }
|
||||
|
||||
vec2 SSRT_Shadows(vec3 viewPos, bool depthCheck, vec3 lightDir, float noise, bool isSSS, bool hand){
|
||||
|
||||
// return 1.0;
|
||||
@@ -433,6 +368,7 @@ vec2 SSRT_Shadows(vec3 viewPos, bool depthCheck, vec3 lightDir, float noise, boo
|
||||
float distanceScale2 = 1.0 + length(mat3(gbufferModelViewInverse) * viewPos) / 150.0;
|
||||
|
||||
for (int i = 0; i < int(samples); i++) {
|
||||
if(newPos.x < 0 || newPos.x > 1 || newPos.y < 0 || newPos.y > 1) break;
|
||||
|
||||
float sampleDepth = convertHandDepth_2(texelFetch2D(depthtex1, ivec2(newPos.xy/texelSize),0).x,hand);
|
||||
|
||||
@@ -588,9 +524,9 @@ vec4 BilateralUpscale_VLFOG(sampler2D tex, sampler2D depth, float referenceDepth
|
||||
|
||||
vec2 coord = gl_FragCoord.xy - 1.5;
|
||||
vec2 UV = coord;
|
||||
const ivec2 SCALE = ivec2(1.0/VL_RENDER_RESOLUTION);
|
||||
ivec2 UV_DEPTH = ivec2(UV*VL_RENDER_RESOLUTION)*SCALE;
|
||||
ivec2 UV_COLOR = ivec2(UV*VL_RENDER_RESOLUTION);
|
||||
const ivec2 SCALE = ivec2(1.0/VL_RENDERING_RESOLUTION_SCALE);
|
||||
ivec2 UV_DEPTH = ivec2(UV*VL_RENDERING_RESOLUTION_SCALE)*SCALE;
|
||||
ivec2 UV_COLOR = ivec2(UV*VL_RENDERING_RESOLUTION_SCALE);
|
||||
ivec2 UV_NOISE = ivec2(gl_FragCoord.xy*texelSize + 1);
|
||||
|
||||
ivec2 OFFSET[5] = ivec2[](
|
||||
@@ -613,7 +549,6 @@ vec4 BilateralUpscale_VLFOG(sampler2D tex, sampler2D depth, float referenceDepth
|
||||
colorSum += offsetColor*edgeDiff;
|
||||
edgeSum += edgeDiff;
|
||||
}
|
||||
|
||||
return colorSum/edgeSum;
|
||||
}
|
||||
|
||||
@@ -744,7 +679,6 @@ void applyPuddles(
|
||||
2 = only puddles
|
||||
3 = only full wetness
|
||||
*/
|
||||
|
||||
vec3 unchangedNormals = normals;
|
||||
|
||||
float halfWet = min(wetnessAmount,1.0);
|
||||
@@ -767,19 +701,22 @@ void applyPuddles(
|
||||
#if PUDDLE_MODE == 1
|
||||
float puddles = max(halfWet - noise,0.0);
|
||||
puddles = clamp(halfWet - exp(-25.0 * puddles*puddles*puddles*puddles*puddles),0.0,1.0);
|
||||
puddles = mix(puddles, 1.0, fullWet);
|
||||
|
||||
float wetnessStages = max(puddles, fullWet) * lightmap;
|
||||
#endif
|
||||
|
||||
#if PUDDLE_MODE == 2
|
||||
float puddles = max(halfWet - noise,0.0);
|
||||
puddles = clamp(halfWet - exp(-25.0 * puddles*puddles*puddles*puddles*puddles),0.0,1.0);
|
||||
|
||||
float wetnessStages = puddles * lightmap;
|
||||
#endif
|
||||
|
||||
#if PUDDLE_MODE == 3
|
||||
float puddles = fullWet;
|
||||
float puddles = 0.0;
|
||||
float wetnessStages = fullWet * lightmap;
|
||||
#endif
|
||||
|
||||
float wetnessStages = puddles * lightmap;
|
||||
if(isWater) wetnessStages = 0.0;
|
||||
|
||||
normals = mix(normals, flatNormals, puddles * lightmap * clamp(flatNormals.y,0.0,1.0));
|
||||
@@ -812,6 +749,7 @@ void main() {
|
||||
|
||||
float noise_2 = R2_dither();
|
||||
vec2 bnoise = blueNoise(gl_FragCoord.xy).rg;
|
||||
float ig_noise = interleaved_gradientNoise_temporal();
|
||||
|
||||
#if TAA_MODE > 0
|
||||
int seed = frameCounter*8%40000;
|
||||
@@ -870,8 +808,11 @@ void main() {
|
||||
vec3 albedo = toLinear(vec3(dataUnpacked0.xz,dataUnpacked1.x));
|
||||
vec3 normal = decode(dataUnpacked0.yw);
|
||||
vec2 lightmap = dataUnpacked1.yz;
|
||||
|
||||
lightmap.xy = min(max(lightmap.xy - 0.05,0.0)*1.06,1.0); // small offset to hide flickering from precision error in the encoding/decoding on values close to 1.0 or 0.0
|
||||
// special curve to give more precision on high/low values of the gradient. this curve will be inverted after sampling and decoding.
|
||||
// lightmap = 1.0-pow(1.0-pow(lightmap,vec2(2)),vec2(2));
|
||||
// small offset to hide flickering from precision error in the encoding/decoding on values close to 1.0 or 0.0
|
||||
lightmap.xy = min(max(lightmap.xy - 0.05,0.0)*1.06,1.0);
|
||||
|
||||
#if MC_VERSION < 12109
|
||||
#if !defined OVERWORLD_SHADER
|
||||
lightmap.y = 1.0;
|
||||
@@ -882,6 +823,7 @@ void main() {
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
////// --------------- UNPACK MISC --------------- //////
|
||||
|
||||
vec4 SpecularTex = texelFetch2D(colortex8, ivec2(gl_FragCoord.xy), 0);
|
||||
@@ -969,7 +911,7 @@ void main() {
|
||||
float Shadows = 1.0;
|
||||
|
||||
vec3 shadowColor = vec3(1.0);
|
||||
vec3 SSSColor = vec3(1.0);
|
||||
vec3 SSSColor = vec3(0.0);
|
||||
vec3 filteredShadow = vec3(Min_Shadow_Filter_Radius,1.0,0.0);
|
||||
|
||||
float NdotL = 1.0;
|
||||
@@ -1007,7 +949,16 @@ void main() {
|
||||
#endif
|
||||
|
||||
float Vdiff = distance(feetPlayerPos, playerPos0);
|
||||
float estimatedDepth = Vdiff * abs(feetPlayerPos_normalized.y);// assuming water plane
|
||||
float estimatedDepth = Vdiff* abs(feetPlayerPos_normalized.y);// assuming water plane
|
||||
|
||||
// vec3 waterNormal = clamp(normalize(cross(dFdx(playerPos0), dFdy(playerPos0))),-1,1); // it uses depth that has POM written to it.
|
||||
// vec3 absPlayerPosNorm = abs(feetPlayerPos_normalized);
|
||||
// estimatedDepth = mix(estimatedDepth, Vdiff*absPlayerPosNorm.y, max(waterNormal.y,0));
|
||||
// estimatedDepth = mix(estimatedDepth, Vdiff*absPlayerPosNorm.y, max(-waterNormal.y,0));
|
||||
// estimatedDepth = mix(estimatedDepth, Vdiff*absPlayerPosNorm.z, max(waterNormal.z,0));
|
||||
// estimatedDepth = mix(estimatedDepth, Vdiff*absPlayerPosNorm.z, max(-waterNormal.z,0));
|
||||
// estimatedDepth = mix(estimatedDepth, Vdiff*absPlayerPosNorm.x, max(waterNormal.x,0));
|
||||
// estimatedDepth = mix(estimatedDepth, Vdiff*absPlayerPosNorm.x, max(-waterNormal.x,0));
|
||||
|
||||
// force the absorbance to start way closer to the water surface in low light areas, so the water is visible in caves and such.
|
||||
#if MINIMUM_WATER_ABSORBANCE > -1
|
||||
@@ -1022,27 +973,50 @@ void main() {
|
||||
// sunlight gets absorbed by water on the way down to the floor, and on the way back up to your eye. im gonna ingore the latter part lol
|
||||
// based on the angle of the sun, sunlight will travel through more/less water to reach the same spot. scale absorbtion depth accordingly
|
||||
vec3 sunlightAbsorbtion = exp(-totEpsilon * (estimatedDepth/abs(WsunVec.y)));
|
||||
|
||||
float percievedWaterDepth = estimatedDepth;
|
||||
|
||||
if (isEyeInWater == 1){
|
||||
|
||||
estimatedDepth = 1.0;
|
||||
|
||||
// viewerWaterDepth = max(0.9-lightmap.y,0.0)*3.0;
|
||||
float distanceFromWaterSurface = max(-(feetPlayerPos.y + (cameraPosition.y - waterEnteredAltitude)),0.0) ;
|
||||
float distanceFromWaterSurface = -(feetPlayerPos.y + (cameraPosition.y - waterEnteredAltitude));//max(-(feetPlayerPos.y + (cameraPosition.y - waterEnteredAltitude)),0.0) ;
|
||||
|
||||
percievedWaterDepth = distanceFromWaterSurface;
|
||||
|
||||
distanceFromWaterSurface = max(distanceFromWaterSurface,0.0);
|
||||
|
||||
Absorbtion = exp(-totEpsilon * distanceFromWaterSurface);
|
||||
|
||||
sunlightAbsorbtion = exp(-totEpsilon * (distanceFromWaterSurface/abs(WsunVec.y)));
|
||||
|
||||
} else {
|
||||
// use hardcoded gradient position if the water surface normal does not face upwards.
|
||||
vec3 waterNormal = clamp(normalize(cross(dFdx(playerPos0), dFdy(playerPos0))),0,1); // it uses depth that has POM written to it.
|
||||
percievedWaterDepth = mix(-(feetPlayerPos.y + cameraPosition.y), percievedWaterDepth, waterNormal.y);
|
||||
}
|
||||
|
||||
|
||||
DEBUG = vec3(estimatedDepth);
|
||||
DirectLightColor *= sunlightAbsorbtion;
|
||||
|
||||
if( nightVision > 0.0 ) Absorbtion += exp(-totEpsilon * 25.0) * nightVision;
|
||||
|
||||
// apply caustics to the lighting, and make sure they dont look weird
|
||||
DirectLightColor *= pow(mix(1.0, waterCaustics(feetPlayerPos + cameraPosition, WsunVec)*WATER_CAUSTICS_BRIGHTNESS, clamp(estimatedDepth,0,1)), WATER_CAUSTICS_POWER);
|
||||
}
|
||||
vec3 pos = feetPlayerPos + cameraPosition;
|
||||
vec2 causticPos = pos.xz;
|
||||
causticPos = mix(causticPos, pos.xz, max(FlatNormals.y,0));
|
||||
// causticPos = mix(causticPos, pos.xy, max(-FlatNormals.y,0));
|
||||
causticPos = mix(causticPos, pos.zy, max(FlatNormals.x,0));
|
||||
causticPos = mix(causticPos, pos.xy, max(-FlatNormals.z,0));
|
||||
// causticPos = mix(causticPos, pos.xy, max(FlatNormals.x,0));
|
||||
// causticPos = mix(causticPos, pos.xy, max(-FlatNormals.x,0));
|
||||
|
||||
|
||||
DirectLightColor *= pow(mix(1.0, waterCaustics(feetPlayerPos + cameraPosition, WsunVec, percievedWaterDepth)*WATER_CAUSTICS_BRIGHTNESS, clamp(estimatedDepth,0,1)), WATER_CAUSTICS_POWER);
|
||||
}
|
||||
|
||||
// albedo *= waterCaustics(feetPlayerPos + cameraPosition, WsunVec);
|
||||
|
||||
if (swappedDepth < 1.0) {
|
||||
|
||||
// idk why this do
|
||||
@@ -1064,12 +1038,8 @@ void main() {
|
||||
////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifdef OVERWORLD_SHADER
|
||||
|
||||
float LM_shadowMapFallback = clamp(lightmap.y, 0.0,1.0);
|
||||
|
||||
float LightningPhase = 0.0;
|
||||
vec3 LightningFlashLighting = Iris_Lightningflash(feetPlayerPos, lightningBoltPosition.xyz, slopednormal, LightningPhase) * pow(lightmap.y,10);
|
||||
|
||||
NdotL = clamp((-15 + dot(slopednormal, WsunVec)*255.0) / 240.0 ,0.0,1.0);
|
||||
|
||||
// NdotL = 1;
|
||||
@@ -1122,7 +1092,6 @@ void main() {
|
||||
|
||||
//////////////////////////////// SUN SSS ////////////////////////////////
|
||||
#if SSS_TYPE != 0
|
||||
|
||||
float sunSSS_density = LabSSS;
|
||||
float SSS_shadow = ShadowAlpha;
|
||||
|
||||
@@ -1135,7 +1104,7 @@ void main() {
|
||||
#endif
|
||||
|
||||
#ifdef SCREENSPACE_CONTACT_SHADOWS
|
||||
vec2 SS_directLight = SSRT_Shadows(toScreenSpace_DH(texcoord/RENDER_SCALE, z, DH_depth1), isDHrange, normalize(WsunVec*mat3(gbufferModelViewInverse)), interleaved_gradientNoise_temporal(), sunSSS_density > 0.0 && shadowMapFalloff2 < 1.0, hand);
|
||||
vec2 SS_directLight = SSRT_Shadows(toScreenSpace_DH(texcoord/RENDER_SCALE, z, DH_depth1), isDHrange, normalize(WsunVec*mat3(gbufferModelViewInverse)), ig_noise, sunSSS_density > 0.0 && shadowMapFalloff2 < 1.0, hand);
|
||||
// combine shadowmap with screenspace shadows.
|
||||
shadowColor *= SS_directLight.r;
|
||||
#else
|
||||
@@ -1149,16 +1118,17 @@ void main() {
|
||||
#else
|
||||
SSSColor = DirectLightColor;
|
||||
#endif
|
||||
|
||||
|
||||
SSSColor = SubsurfaceScattering_sun(albedo, ShadowBlockerDepth, sunSSS_density, clamp(dot(feetPlayerPos_normalized, WsunVec),0.0,1.0), SS_directLight.g, shadowMapFalloff2, hand);
|
||||
|
||||
if(isEyeInWater != 1) SSSColor *= lightLeakFix;
|
||||
|
||||
float cloudShadows = GetCloudShadow(feetPlayerPos.xyz + cameraPosition, WsunVec);
|
||||
shadowColor *= cloudShadows;
|
||||
SSSColor *= cloudShadow*cloudShadows;
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
float cloudShadows = GetCloudShadow(feetPlayerPos.xyz + cameraPosition, WsunVec);
|
||||
shadowColor *= cloudShadows;
|
||||
SSSColor *= cloudShadow*cloudShadows;
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef END_SHADER
|
||||
@@ -1200,7 +1170,7 @@ void main() {
|
||||
if(isGrass) SkylightDir = 1.0;
|
||||
SkylightDir = clamp(SkylightDir*0.7+0.3, 0.0, pow(1-pow(1-SSAO_SSS.x, 0.5),4.0) * 0.7 + 0.3);
|
||||
|
||||
skylight = mix(0.2 + 2.3*(1.0-lightmap.y), 2.5, SkylightDir)/2.5;
|
||||
skylight = mix(0.08 + 0.92*(1.0-lightmap.y), 1.0, SkylightDir);
|
||||
|
||||
// skylight = 1.0;
|
||||
#endif
|
||||
@@ -1257,12 +1227,16 @@ void main() {
|
||||
Indirect_lighting += blockLightColor;
|
||||
|
||||
vec4 flashLightSpecularData = vec4(0.0);
|
||||
|
||||
#ifdef FLASHLIGHT
|
||||
// vec3 newViewPos = viewPos;
|
||||
// float flashlightshadows = SSRT_FlashLight_Shadows(toScreenSpace_DH(texcoord/RENDER_SCALE, z, DH_depth1), isDHrange, newViewPos, interleaved_gradientNoise_temporal());
|
||||
Indirect_lighting += calculateFlashlight(texcoord, viewPos, albedoSmooth, slopednormal, flashLightSpecularData, hand);
|
||||
#endif
|
||||
|
||||
#if defined LIGHTNING_FLASH
|
||||
Indirect_lighting += createLightningPointLight(feetPlayerPos, lightningBoltPosition.xyz, slopednormal) * lightmap.y*lightmap.y*lightmap.y*lightmap.y;
|
||||
#endif
|
||||
/////////////////////////////////////////////////////////////////////////////////////
|
||||
///////////////////////////// EFFECTS FOR INDIRECT /////////////////////////////
|
||||
/////////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -1305,7 +1279,6 @@ void main() {
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
///////////////////////// SUB SURFACE SCATTERING ////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
@@ -1313,7 +1286,6 @@ void main() {
|
||||
///////////////////////////// SKY SSS /////////////////////////////
|
||||
#if defined Ambient_SSS && defined OVERWORLD_SHADER && (indirect_effect == SSAO_FILTERED || indirect_effect == SSAO_HQ)
|
||||
vec3 ambientColor = AmbientLightColor * ambientsss_brightness * ambient_brightness * 2.0;
|
||||
|
||||
|
||||
Indirect_SSS = SubsurfaceScattering_sky(albedo, SkySSS, LabSSS);
|
||||
Indirect_SSS *= lightmap.y;
|
||||
@@ -1343,10 +1315,8 @@ void main() {
|
||||
#endif
|
||||
#ifdef OVERWORLD_SHADER
|
||||
#ifdef AO_in_sunlight
|
||||
// Direct_lighting = shadowColor*NdotL*(AO*0.7+0.3) + SSSColor * (1.0-NdotL);
|
||||
Direct_lighting = DirectLightColor * mix(SSSColor, vec3(1.0), NdotL*shadowColor * (AO*0.7+0.3));
|
||||
#else
|
||||
// Direct_lighting = shadowColor*NdotL + SSSColor * (1.0-NdotL);
|
||||
Direct_lighting = DirectLightColor * mix(SSSColor, vec3(1.0), NdotL*shadowColor);
|
||||
#endif
|
||||
#endif
|
||||
@@ -1362,10 +1332,9 @@ void main() {
|
||||
if(lightningBolt) FINAL_COLOR = vec3(77.0, 153.0, 255.0);
|
||||
|
||||
#if defined DEFERRED_SPECULAR
|
||||
vec3 specularNoises = vec3(BN.xy, blueNoise());
|
||||
vec3 specularNoises = vec3(vec2(blueNoise(), ig_noise), ig_noise);
|
||||
vec3 specularNormal = normal;
|
||||
if (dot(normal, (feetPlayerPos_normalized)) > 0.0) specularNormal = FlatNormals;
|
||||
|
||||
FINAL_COLOR = specularReflections(viewPos, feetPlayerPos_normalized, WsunVec, specularNoises, specularNormal, SpecularTex.r, SpecularTex.g, albedo, FINAL_COLOR, DirectLightColor*shadowColor, lightmap.y, hand, flashLightSpecularData);
|
||||
#endif
|
||||
|
||||
@@ -1401,7 +1370,6 @@ void main() {
|
||||
vec3 moonLightCol = moonCol / 2400.0;
|
||||
|
||||
Background += drawMoon(feetPlayerPos_normalized, WmoonVec, moonLightCol, Background);
|
||||
// Background += drawSun(dot(WmoonVec, feetPlayerPos_normalized),0, moonLightCol,vec3(0.0));
|
||||
#endif
|
||||
|
||||
Background *= atmosphereGround;
|
||||
@@ -1428,21 +1396,21 @@ void main() {
|
||||
}
|
||||
|
||||
|
||||
if(translucentMasks > 0.0 ){
|
||||
if(translucentMasks > 0.0){
|
||||
// water absorbtion will impact ALL light coming up from terrain underwater.
|
||||
gl_FragData[0].rgb *= Absorbtion;
|
||||
|
||||
#ifdef DISTANT_HORIZONS
|
||||
float DH_mixedLinearZ = sqrt(texelFetch2D(colortex12,ivec2(gl_FragCoord.xy),0).a/65000.0);
|
||||
vec4 vlBehingTranslucents = BilateralUpscale_VLFOG(colortex13, colortex12, DH_mixedLinearZ);
|
||||
#else
|
||||
vec4 vlBehingTranslucents = BilateralUpscale_VLFOG(colortex13, depthtex1, ld(z));
|
||||
#endif
|
||||
// #ifdef DISTANT_HORIZONS
|
||||
// float DH_mixedLinearZ = sqrt(texelFetch2D(colortex12,ivec2(gl_FragCoord.xy),0).a/65000.0);
|
||||
// vec4 vlBehingTranslucents = BilateralUpscale_VLFOG(colortex13, colortex12, DH_mixedLinearZ);
|
||||
// #else
|
||||
// vec4 vlBehingTranslucents = BilateralUpscale_VLFOG(colortex13, depthtex1, ld(z));
|
||||
// #endif
|
||||
|
||||
gl_FragData[0].rgb = gl_FragData[0].rgb * vlBehingTranslucents.a + vlBehingTranslucents.rgb;
|
||||
// gl_FragData[0].rgb = gl_FragData[0].rgb * vlBehingTranslucents.a + vlBehingTranslucents.rgb;
|
||||
}
|
||||
|
||||
// gl_FragData[0].rgb = lightmap.x* vec3(1.0);
|
||||
// gl_FragData[0].rgb = (sqrt(texelFetch2D(colortex4,ivec2(gl_FragCoord.xy/4.0),0).a/65000.0)) * vec3(1.0);
|
||||
|
||||
////// DEBUG VIEW STUFF
|
||||
#if DEBUG_VIEW == debug_SHADOWMAP
|
||||
@@ -1476,11 +1444,17 @@ void main() {
|
||||
value = 1-pow(1-value,5);
|
||||
|
||||
if(hideGUI == 1) value = pow(SSAO_SSS.x,6);
|
||||
|
||||
// value = filteredShadow.x;
|
||||
// value = exp(-10*sqrt(filteredShadow.y));
|
||||
// value = 1.0-filteredShadow.z;
|
||||
gl_FragData[0].rgb = vec3(value);
|
||||
|
||||
if(swappedDepth >= 1.0) gl_FragData[0].rgb = vec3(1.0);
|
||||
// }
|
||||
#endif
|
||||
|
||||
// gl_FragData[0].rgb = DEBUG;
|
||||
|
||||
/* RENDERTARGETS:3 */
|
||||
}
|
||||
@@ -15,8 +15,6 @@ flat varying vec4 lightCol;
|
||||
flat varying vec3 moonCol;
|
||||
flat varying vec3 albedoSmooth;
|
||||
|
||||
flat varying float exposure;
|
||||
|
||||
flat varying vec2 TAA_Offset;
|
||||
flat varying vec3 zMults;
|
||||
uniform sampler2D colortex4;
|
||||
@@ -71,8 +69,9 @@ void main() {
|
||||
|
||||
WsunVec = mix(WmoonVec, unsigned_WsunVec, clamp(lightCol.a,0,1));
|
||||
|
||||
|
||||
readSceneControllerParameters(colortex4, parameters.smallCumulus, parameters.largeCumulus, parameters.altostratus, parameters.fog);
|
||||
#define READ_SCENE_CONTROLLER_PARAMETERS
|
||||
#include "/lib/scene_controller.glsl"
|
||||
// readSceneControllerParameters(colortex4, parameters.smallCumulus, parameters.largeCumulus, parameters.altostratus, parameters.fog);
|
||||
|
||||
#if TAA_MODE > 0
|
||||
TAA_Offset = offsets[framemod8];
|
||||
|
||||
@@ -1,11 +1,100 @@
|
||||
#include "/lib/settings.glsl"
|
||||
|
||||
uniform sampler2D colortex3;
|
||||
uniform sampler2D colortex6;
|
||||
#include "/lib/res_params.glsl"
|
||||
|
||||
|
||||
flat varying vec4 exposure;
|
||||
flat varying vec2 rodExposureDepth;
|
||||
varying vec2 texcoord;
|
||||
|
||||
#if DOF_QUALITY > -1
|
||||
const bool colortex5MipmapEnabled = true;
|
||||
#endif
|
||||
|
||||
// uniform sampler2D colortex4;
|
||||
uniform sampler2D colortex5;
|
||||
uniform sampler2D colortex3;
|
||||
// uniform sampler2D colortex6;
|
||||
uniform sampler2D colortex7;
|
||||
// uniform sampler2D colortex8; // specular
|
||||
uniform sampler2D colortex9; // specular
|
||||
uniform sampler2D depthtex0;
|
||||
uniform sampler2D depthtex1;
|
||||
uniform sampler2D noisetex;
|
||||
uniform vec2 texelSize;
|
||||
|
||||
uniform ivec2 eyeBrightnessSmooth;
|
||||
uniform float viewWidth;
|
||||
uniform float viewHeight;
|
||||
uniform float frameTimeCounter;
|
||||
uniform int frameCounter;
|
||||
uniform int isEyeInWater;
|
||||
uniform float near;
|
||||
uniform float aspectRatio;
|
||||
uniform float far;
|
||||
uniform float rainStrength;
|
||||
uniform float screenBrightness;
|
||||
uniform vec4 Moon_Weather_properties; // R = cloud coverage G = fog density
|
||||
uniform int hideGUI;
|
||||
|
||||
uniform int framemod8;
|
||||
#include "/lib/TAA_jitter.glsl"
|
||||
|
||||
|
||||
uniform mat4 gbufferModelViewInverse;
|
||||
uniform mat4 gbufferProjectionInverse;
|
||||
vec4 Weather_properties = Moon_Weather_properties;
|
||||
|
||||
#include "/lib/color_transforms.glsl"
|
||||
#include "/lib/color_dither.glsl"
|
||||
// #include "/lib/biome_specifics.glsl"
|
||||
#include "/lib/bokeh.glsl"
|
||||
|
||||
float cdist(vec2 coord) {
|
||||
return max(abs(coord.s-0.5),abs(coord.t-0.5))*2.0;
|
||||
}
|
||||
float blueNoise(){
|
||||
return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter);
|
||||
}
|
||||
float ld(float depth) {
|
||||
return (2.0 * near) / (far + near - depth * (far - near)); // (-depth * (far - near)) = (2.0 * near)/ld - far - near
|
||||
}
|
||||
|
||||
// uniform float viewWidth;
|
||||
// uniform float viewHeight;
|
||||
|
||||
// uniform sampler2D depthtex0;
|
||||
|
||||
#ifdef DISTANT_HORIZONS
|
||||
uniform sampler2D dhDepthTex;
|
||||
#endif
|
||||
uniform float dhNearPlane;
|
||||
uniform float dhFarPlane;
|
||||
|
||||
float linearizeDepthFast(const in float depth, const in float near, const in float far) {
|
||||
return (near * far) / (depth * (near - far) + far);
|
||||
}
|
||||
|
||||
float bloomWeight(){
|
||||
|
||||
float weights[7] = float[]( 1.0, 1.0/2.0, 1.0/3.0, 1.0/5.5, 1.0/8.0, 1.0/10.0, 1.0/12.0 );
|
||||
// float weights[7] = float[]( 0.7, pow(0.5,2), pow(0.5,3), pow(0.5,4), pow(0.5,5), pow(0.5,6), pow(0.5,7) );
|
||||
|
||||
float result = 0.0;
|
||||
|
||||
for ( int i = 0; i < 7; i++) {
|
||||
result += weights[i];
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
vec3 invTonemap(vec3 col){
|
||||
return col/(1-luma(col));
|
||||
}
|
||||
#define linear_to_srgb(x) (pow(x, vec3(1.0/2.2)))
|
||||
|
||||
uniform sampler2D colortex6;
|
||||
|
||||
|
||||
float w0(float a)
|
||||
{
|
||||
@@ -72,42 +161,199 @@ vec4 texture2D_bicubic(sampler2D tex, vec2 uv)
|
||||
g1x * texture2D(tex, p3));
|
||||
}
|
||||
|
||||
//////////////////////////////VOID MAIN//////////////////////////////
|
||||
//////////////////////////////VOID MAIN//////////////////////////////
|
||||
//////////////////////////////VOID MAIN//////////////////////////////
|
||||
//////////////////////////////VOID MAIN//////////////////////////////
|
||||
//////////////////////////////VOID MAIN//////////////////////////////
|
||||
// vec3 lenseFlare(vec2 UV){
|
||||
// float noise = blueNoise();
|
||||
|
||||
// float vignetteLength = 0.2;
|
||||
// float vignette = 0.5+length(texcoord-0.5);//min(max(length(texcoord-0.5) - vignetteLength,0.0) / (1.0/(1.0-vignetteLength)),1.0);
|
||||
|
||||
// float aberrationStrength = vignette;//clamp(CHROMATIC_ABERRATION_STRENGTH * 0.01 * (1.0 - vignette),0.0,0.9) * vignette * 0.75;
|
||||
|
||||
// vec2 centeredUV = texcoord - 0.5;
|
||||
|
||||
// vec3 color = vec3(0.0);
|
||||
// color = texture2D(colortex7, texcoord).rgb;
|
||||
|
||||
// vec2 distortedUV = (centeredUV - (centeredUV ) * aberrationStrength) + 0.5;
|
||||
|
||||
// color += texture2D(colortex7, distortedUV).rgb;
|
||||
// // color.r = texture2D(colortex7, (centeredUV - (centeredUV + centeredUV*noise) * aberrationStrength) + 0.5).r;
|
||||
// // color.g = texture2D(colortex7, texcoord).g;
|
||||
// // color.b = texture2D(colortex7, (centeredUV + (centeredUV + centeredUV*noise) * aberrationStrength) + 0.5).b;
|
||||
|
||||
// return color;
|
||||
// }
|
||||
|
||||
vec3 srgbToLinear(vec3 srgb){
|
||||
return mix(
|
||||
srgb / 12.92,
|
||||
pow(.947867 * srgb + .0521327, vec3(2.4) ),
|
||||
step( .04045, srgb )
|
||||
);
|
||||
}
|
||||
vec3 blackbody(float Temp)
|
||||
{
|
||||
float t = pow(Temp, -1.5);
|
||||
float lt = log(Temp);
|
||||
|
||||
vec3 WB_temp = vec3(0.0);
|
||||
WB_temp.r = 220000.0 * t + 0.58039215686;
|
||||
WB_temp.g = 0.39231372549 * lt - 2.44549019608;
|
||||
WB_temp.g = Temp > 6500. ? 138039.215686 * t + 0.72156862745 : WB_temp.g;
|
||||
WB_temp.b = 0.76078431372 * lt - 5.68078431373;
|
||||
WB_temp = clamp(WB_temp,0,1);
|
||||
WB_temp = Temp < 1000. ? WB_temp * Temp * 0.001 : WB_temp;
|
||||
|
||||
return srgbToLinear(WB_temp);
|
||||
}
|
||||
|
||||
void main() {
|
||||
/* DRAWBUFFERS:3 */
|
||||
vec2 resScale = vec2(1920.,1080.)/max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.));
|
||||
vec2 texcoord = ((gl_FragCoord.xy)*2.0 + 0.5)*texelSize;
|
||||
/* DRAWBUFFERS:7 */
|
||||
float vignette = (1.5-dot(texcoord-0.5,texcoord-0.5)*2.);
|
||||
|
||||
#if DOF_QUALITY == -1 || DOF_QUALITY == 5
|
||||
vec3 col = texture2D(colortex5,texcoord).rgb;
|
||||
#endif
|
||||
|
||||
#ifdef OLD_BLOOM
|
||||
vec3 bloom = texture2D_bicubic(colortex3,texcoord/2.).rgb; //1/4 res
|
||||
bloom += texture2D_bicubic(colortex6,texcoord/4.).rgb; //1/8 res
|
||||
bloom += texture2D_bicubic(colortex6,texcoord/8.+vec2(0.25*resScale.x+2.5*texelSize.x,.0)).rgb; //1/16 res
|
||||
bloom += texture2D_bicubic(colortex6,texcoord/16.+vec2(0.375*resScale.x+4.5*texelSize.x,.0)).rgb; //1/32 res
|
||||
bloom += texture2D_bicubic(colortex6,texcoord/32.+vec2(0.4375*resScale.x+6.5*texelSize.x,.0)).rgb; //1/64 res
|
||||
bloom += texture2D_bicubic(colortex6,texcoord/64.+vec2(0.46875*resScale.x+8.5*texelSize.x,.0)).rgb; //1/128 res
|
||||
bloom += texture2D_bicubic(colortex6,texcoord/128.+vec2(0.484375*resScale.x+10.5*texelSize.x,.0)).rgb; //1/256 res
|
||||
#if DOF_QUALITY >= 0
|
||||
/*--------------------------------*/
|
||||
float z = ld(texture2D(depthtex1, texcoord.st*RENDER_SCALE).r)*far;
|
||||
|
||||
gl_FragData[0].rgb = bloom * 2.0;
|
||||
#else
|
||||
#if MANUAL_FOCUS == -2
|
||||
float focus = rodExposureDepth.y*far;
|
||||
#elif MANUAL_FOCUS == -1
|
||||
float focus = mix(pow(512.0, screenBrightness), 512.0 * screenBrightness, 0.25);
|
||||
#elif MANUAL_FOCUS > 0
|
||||
float focus = MANUAL_FOCUS;
|
||||
#endif
|
||||
|
||||
float weights[7] = float[]( 1.0, 1.0/2.0, 1.0/3.0, 1.0/5.5, 1.0/8.0, 1.0/10.0, 1.0/12.0 );
|
||||
// float weights[7] = float[]( 0.7, pow(0.5,2), pow(0.5,3), pow(0.5,4), pow(0.5,5), pow(0.5,6), pow(0.5,7) );
|
||||
#if DOF_QUALITY < 5
|
||||
float pcoc = min(abs(aperture * (focal/100.0 * (z - focus)) / (z * (focus - focal/100.0))),texelSize.x*15.0);
|
||||
#ifdef FAR_BLUR_ONLY
|
||||
pcoc *= float(z > focus);
|
||||
#endif
|
||||
#ifdef REMOVE_HAND_BLUR
|
||||
pcoc *= float(z > 0.56);
|
||||
#endif
|
||||
|
||||
vec3 bloom = texture2D_bicubic(colortex3,texcoord/2.).rgb * weights[0]; //1/4 res
|
||||
bloom += texture2D_bicubic(colortex6,texcoord/4.).rgb * weights[1]; //1/8 res
|
||||
bloom += texture2D_bicubic(colortex6,texcoord/8.+vec2(0.25*resScale.x+2.5*texelSize.x,.0)).rgb * weights[2]; //1/16 res
|
||||
bloom += texture2D_bicubic(colortex6,texcoord/16.+vec2(0.375*resScale.x+4.5*texelSize.x,.0)).rgb * weights[3]; //1/32 res
|
||||
bloom += texture2D_bicubic(colortex6,texcoord/32.+vec2(0.4375*resScale.x+6.5*texelSize.x,.0)).rgb * weights[4]; //1/64 res
|
||||
bloom += texture2D_bicubic(colortex6,texcoord/64.+vec2(0.46875*resScale.x+8.5*texelSize.x,.0)).rgb * weights[5]; //1/128 res
|
||||
bloom += texture2D_bicubic(colortex6,texcoord/128.+vec2(0.484375*resScale.x+10.5*texelSize.x,.0)).rgb * weights[6]; //1/256 res
|
||||
vec3 bcolor = vec3(0.);
|
||||
float nb = 0.0;
|
||||
vec2 bcoord = vec2(0.0);
|
||||
/*--------------------------------*/
|
||||
float dofLodLevel = pcoc * 200.0;
|
||||
|
||||
gl_FragData[0].rgb = bloom * 2.0;
|
||||
#endif
|
||||
vec2 dispersion = (texcoord - 0.5) * pcoc * 200.0 * DOF_DISPERSION_MULT;
|
||||
|
||||
gl_FragData[0].rgb = clamp(gl_FragData[0].rgb,0.0,65000.);
|
||||
}
|
||||
for ( int i = 0; i < BOKEH_SAMPLES; i++) {
|
||||
// bcolor += texture2DLod(colortex5, texcoord.xy + bokeh_offsets[i]*pcoc*vec2(DOF_ANAMORPHIC_RATIO,aspectRatio), dofLodLevel).rgb;
|
||||
|
||||
vec2 bokeh_pos = bokeh_offsets[i];
|
||||
bcolor.r += texture2DLod(colortex5, texcoord.xy + (bokeh_pos + dispersion)*pcoc*vec2(DOF_ANAMORPHIC_RATIO,aspectRatio), dofLodLevel).r;
|
||||
bcolor.g += texture2DLod(colortex5, texcoord.xy + bokeh_pos*pcoc*vec2(DOF_ANAMORPHIC_RATIO,aspectRatio), dofLodLevel).g;
|
||||
bcolor.b += texture2DLod(colortex5, texcoord.xy + (bokeh_pos - dispersion)*pcoc*vec2(DOF_ANAMORPHIC_RATIO,aspectRatio), dofLodLevel).b;
|
||||
}
|
||||
vec3 col = bcolor/BOKEH_SAMPLES;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
vec2 clampedRes = max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.));
|
||||
|
||||
vec2 resScale = vec2(1920.,1080.)/clampedRes;
|
||||
vec2 bloomTileUV = (((gl_FragCoord.xy)*2.0 + 0.5)*texelSize/2.0) / clampedRes*vec2(1920.,1080.);
|
||||
|
||||
vec3 bloomTile0 = texture2D_bicubic(colortex3, bloomTileUV/2.).rgb; //1/4 res
|
||||
vec3 bloomTile1 = texture2D_bicubic(colortex6, bloomTileUV/4.).rgb; //1/8 res
|
||||
vec3 bloomTile2 = texture2D_bicubic(colortex6, bloomTileUV/8.+vec2(0.25*resScale.x+2.5*texelSize.x,.0)).rgb; //1/16 res
|
||||
vec3 bloomTile3 = texture2D_bicubic(colortex6, bloomTileUV/16.+vec2(0.375*resScale.x+4.5*texelSize.x,.0)).rgb; //1/32 res
|
||||
vec3 bloomTile4 = texture2D_bicubic(colortex6, bloomTileUV/32.+vec2(0.4375*resScale.x+6.5*texelSize.x,.0)).rgb; //1/64 res
|
||||
vec3 bloomTile5 = texture2D_bicubic(colortex6, bloomTileUV/64.+vec2(0.46875*resScale.x+8.5*texelSize.x,.0)).rgb; //1/128 res
|
||||
vec3 bloomTile6 = texture2D_bicubic(colortex6, bloomTileUV/128.+vec2(0.484375*resScale.x+10.5*texelSize.x,.0)).rgb; //1/256 res
|
||||
|
||||
#ifdef OLD_BLOOM
|
||||
vec3 bloom = (bloomTile0 + bloomTile1 + bloomTile2 + bloomTile3 + bloomTile4 + bloomTile5 + bloomTile6) / 7.0;
|
||||
vec3 fogBloom = bloom;
|
||||
|
||||
float lightScat = clamp((BLOOM_STRENGTH+3) * 0.05 * pow(exposure.a, 0.2) ,0.0,1.0) * vignette;
|
||||
#else
|
||||
float weights[7] = float[]( 1.0, 1.0/2.0, 1.0/3.0, 1.0/5.5, 1.0/8.0, 1.0/10.0, 1.0/12.0 );
|
||||
vec3 bloom = (bloomTile0*weights[0] + bloomTile1*weights[1] + bloomTile2*weights[2] + bloomTile3*weights[3] + bloomTile4*weights[4] + bloomTile5*weights[5] + bloomTile6*weights[6]) / bloomWeight();
|
||||
vec3 fogBloom = (bloomTile0 + bloomTile1 + bloomTile2 + bloomTile3 + bloomTile4 + bloomTile5 + bloomTile6) / 7.0;
|
||||
|
||||
float lightScat = clamp(BLOOM_STRENGTH * 0.3,0.0,1.0) * vignette;
|
||||
#endif
|
||||
|
||||
float VL_abs = texture2D(colortex7, texcoord*RENDER_SCALE).r;
|
||||
|
||||
#if Purkinje_strength > 0
|
||||
float pstrength = float(Purkinje_strength) / 100.0;
|
||||
|
||||
#ifdef AUTO_EXPOSURE
|
||||
float purkinje = clamp(exposure.a*exposure.a,0.0,1.0) * clamp(rodExposureDepth.x/(1.0+rodExposureDepth.x)*pstrength,0,1);
|
||||
#else
|
||||
float purkinje = clamp(rodExposureDepth.x/(1.0+rodExposureDepth.x)*pstrength,0,1);
|
||||
#endif
|
||||
|
||||
VL_abs = clamp((1.0-VL_abs)*BLOOMY_FOG,0.0,1.0)*clamp(1.0-pow(cdist(texcoord.xy),15.0),0.0,1.0);
|
||||
col = (mix(col, fogBloom, VL_abs) + bloom*lightScat) * exposure.rgb;
|
||||
|
||||
float lum = dot(col, vec3(0.15,0.3,0.55));
|
||||
float lum2 = dot(col, vec3(0.85,0.7,0.45));
|
||||
float rodLum = lum2*200.0;
|
||||
float rodCurve = clamp(mix(1.0, rodLum/(2.5+rodLum), purkinje),0.0,1.0);
|
||||
|
||||
col = mix(lum * vec3(Purkinje_R, Purkinje_G, Purkinje_B) * Purkinje_Multiplier, col, rodCurve);
|
||||
#else
|
||||
VL_abs = clamp((1.0-VL_abs)*BLOOMY_FOG*0.75*(1.0+rainStrength),0.0,1.0)*clamp(1.0-pow(cdist(texcoord.xy),15.0),0.0,1.0);
|
||||
col = (mix(col, fogBloom, VL_abs) + bloom*lightScat) * exposure.rgb;
|
||||
#endif
|
||||
|
||||
#if WHITE_BALANCE != 6500
|
||||
col *= blackbody(WHITE_BALANCE);
|
||||
#endif
|
||||
|
||||
#ifndef USE_ACES_COLORSPACE_APPROXIMATION
|
||||
col = LinearTosRGB(TONEMAP(col));
|
||||
#else
|
||||
col = col * ACESInputMat;
|
||||
col = TONEMAP(col);
|
||||
|
||||
col = LinearTosRGB(clamp(col * ACESOutputMat, 0.0, 1.0));
|
||||
#endif
|
||||
|
||||
gl_FragData[0].rgb = clamp(int8Dither(col,texcoord),0.0,1.0);
|
||||
|
||||
#if DOF_QUALITY == 5
|
||||
#if FOCUS_LASER_COLOR == 0 // Red
|
||||
vec3 laserColor = vec3(25, 0, 0);
|
||||
#elif FOCUS_LASER_COLOR == 1 // Green
|
||||
vec3 laserColor = vec3(0, 25, 0);
|
||||
#elif FOCUS_LASER_COLOR == 2 // Blue
|
||||
vec3 laserColor = vec3(0, 0, 25);
|
||||
#elif FOCUS_LASER_COLOR == 3 // Pink
|
||||
vec3 laserColor = vec3(25, 10, 15);
|
||||
#elif FOCUS_LASER_COLOR == 4 // Yellow
|
||||
vec3 laserColor = vec3(25, 25, 0);
|
||||
#elif FOCUS_LASER_COLOR == 5 // White
|
||||
vec3 laserColor = vec3(25);
|
||||
#endif
|
||||
float depth = texture(depthtex0, texcoord).r;
|
||||
|
||||
#ifdef DISTANT_HORIZONS
|
||||
float _near = near;
|
||||
float _far = far*4.0;
|
||||
|
||||
if (depth >= 1.0) {
|
||||
depth = texture2D(dhDepthTex, texcoord).x;
|
||||
_near = dhNearPlane;
|
||||
_far = dhFarPlane;
|
||||
}
|
||||
|
||||
depth = linearizeDepthFast(depth, _near, _far);
|
||||
#else
|
||||
depth = linearizeDepthFast(depth, near, far);
|
||||
#endif
|
||||
|
||||
// focus = gl_FragCoord.x * 0.1;
|
||||
if( hideGUI < 1) gl_FragData[0].rgb += laserColor * pow( clamp( 1.0-abs(focus-abs(depth)) ,0,1),25) ;
|
||||
#endif
|
||||
}
|
||||
@@ -1,5 +1,12 @@
|
||||
uniform float viewWidth;
|
||||
uniform float viewHeight;
|
||||
#include "/lib/settings.glsl"
|
||||
|
||||
varying vec2 texcoord;
|
||||
|
||||
uniform sampler2D colortex4;
|
||||
|
||||
flat varying vec4 exposure;
|
||||
flat varying vec2 rodExposureDepth;
|
||||
|
||||
//////////////////////////////VOID MAIN//////////////////////////////
|
||||
//////////////////////////////VOID MAIN//////////////////////////////
|
||||
//////////////////////////////VOID MAIN//////////////////////////////
|
||||
@@ -7,9 +14,11 @@ uniform float viewHeight;
|
||||
//////////////////////////////VOID MAIN//////////////////////////////
|
||||
|
||||
void main() {
|
||||
//Improves performances and makes sure bloom radius stays the same at high resolution (>1080p)
|
||||
vec2 clampedRes = max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.));
|
||||
|
||||
gl_Position = ftransform();
|
||||
//*0.51 to avoid errors when sampling outside since clearing is disabled
|
||||
gl_Position.xy = (gl_Position.xy*0.5+0.5)*0.51/clampedRes*vec2(1920.0,1080.)*2.0-1.0;
|
||||
}
|
||||
texcoord = gl_MultiTexCoord0.xy;
|
||||
|
||||
exposure = vec4(vec3(texelFetch2D(colortex4,ivec2(10,37),0).r),texelFetch2D(colortex4,ivec2(10,37),0).r);
|
||||
rodExposureDepth = texelFetch2D(colortex4,ivec2(14,37),0).rg;
|
||||
rodExposureDepth.y = sqrt(rodExposureDepth.y/65000.0);
|
||||
}
|
||||
+160
-324
@@ -1,353 +1,189 @@
|
||||
#include "/lib/settings.glsl"
|
||||
|
||||
#include "/lib/res_params.glsl"
|
||||
|
||||
|
||||
flat varying vec4 exposure;
|
||||
flat varying vec2 rodExposureDepth;
|
||||
varying vec2 texcoord;
|
||||
|
||||
const bool colortex5MipmapEnabled = true;
|
||||
// uniform sampler2D colortex4;
|
||||
uniform sampler2D colortex5;
|
||||
uniform sampler2D colortex3;
|
||||
// uniform sampler2D colortex6;
|
||||
uniform sampler2D colortex7;
|
||||
// uniform sampler2D colortex8; // specular
|
||||
uniform sampler2D colortex9; // specular
|
||||
uniform sampler2D depthtex0;
|
||||
uniform sampler2D depthtex1;
|
||||
uniform sampler2D noisetex;
|
||||
uniform vec2 texelSize;
|
||||
|
||||
uniform ivec2 eyeBrightnessSmooth;
|
||||
uniform float viewWidth;
|
||||
uniform sampler2D colortex7;
|
||||
uniform sampler2D colortex14;
|
||||
uniform sampler2D depthtex0;
|
||||
uniform sampler2D noisetex;
|
||||
|
||||
uniform float viewHeight;
|
||||
uniform float viewWidth;
|
||||
uniform float aspectRatio;
|
||||
|
||||
uniform float frameTimeCounter;
|
||||
uniform int frameCounter;
|
||||
uniform int isEyeInWater;
|
||||
uniform float near;
|
||||
uniform float aspectRatio;
|
||||
uniform float far;
|
||||
uniform float rainStrength;
|
||||
uniform float screenBrightness;
|
||||
uniform vec4 Moon_Weather_properties; // R = cloud coverage G = fog density
|
||||
|
||||
uniform int hideGUI;
|
||||
|
||||
uniform int framemod8;
|
||||
#include "/lib/TAA_jitter.glsl"
|
||||
|
||||
|
||||
uniform mat4 gbufferModelViewInverse;
|
||||
uniform mat4 gbufferProjectionInverse;
|
||||
vec4 Weather_properties = Moon_Weather_properties;
|
||||
|
||||
#include "/lib/color_transforms.glsl"
|
||||
#include "/lib/color_dither.glsl"
|
||||
// #include "/lib/biome_specifics.glsl"
|
||||
#include "/lib/bokeh.glsl"
|
||||
#include "/lib/res_params.glsl"
|
||||
|
||||
float cdist(vec2 coord) {
|
||||
return max(abs(coord.s-0.5),abs(coord.t-0.5))*2.0;
|
||||
/*
|
||||
vec4 SampleTextureCatmullRom(sampler2D tex, vec2 uv, vec2 texSize )
|
||||
{
|
||||
// We're going to sample a a 4x4 grid of texels surrounding the target UV coordinate. We'll do this by rounding
|
||||
// down the sample location to get the exact center of our "starting" texel. The starting texel will be at
|
||||
// location [1, 1] in the grid, where [0, 0] is the top left corner.
|
||||
vec2 samplePos = uv * texSize;
|
||||
vec2 texPos1 = floor(samplePos - 0.5) + 0.5;
|
||||
|
||||
// Compute the fractional offset from our starting texel to our original sample location, which we'll
|
||||
// feed into the Catmull-Rom spline function to get our filter weights.
|
||||
vec2 f = samplePos - texPos1;
|
||||
|
||||
// Compute the Catmull-Rom weights using the fractional offset that we calculated earlier.
|
||||
// These equations are pre-expanded based on our knowledge of where the texels will be located,
|
||||
// which lets us avoid having to evaluate a piece-wise function.
|
||||
vec2 w0 = f * ( -0.5 + f * (1.0 - 0.5*f));
|
||||
vec2 w1 = 1.0 + f * f * (-2.5 + 1.5*f);
|
||||
vec2 w2 = f * ( 0.5 + f * (2.0 - 1.5*f) );
|
||||
vec2 w3 = f * f * (-0.5 + 0.5 * f);
|
||||
|
||||
// Work out weighting factors and sampling offsets that will let us use bilinear filtering to
|
||||
// simultaneously evaluate the middle 2 samples from the 4x4 grid.
|
||||
vec2 w12 = w1 + w2;
|
||||
vec2 offset12 = w2 / (w1 + w2);
|
||||
|
||||
// Compute the final UV coordinates we'll use for sampling the texture
|
||||
vec2 texPos0 = texPos1 - vec2(1.0);
|
||||
vec2 texPos3 = texPos1 + vec2(2.0);
|
||||
vec2 texPos12 = texPos1 + offset12;
|
||||
|
||||
texPos0 *= texelSize;
|
||||
texPos3 *= texelSize;
|
||||
texPos12 *= texelSize;
|
||||
|
||||
vec4 result = vec4(0.0);
|
||||
result += texture2D(tex, vec2(texPos0.x, texPos0.y)) * w0.x * w0.y;
|
||||
result += texture2D(tex, vec2(texPos12.x, texPos0.y)) * w12.x * w0.y;
|
||||
result += texture2D(tex, vec2(texPos3.x, texPos0.y)) * w3.x * w0.y;
|
||||
|
||||
result += texture2D(tex, vec2(texPos0.x, texPos12.y)) * w0.x * w12.y;
|
||||
result += texture2D(tex, vec2(texPos12.x, texPos12.y)) * w12.x * w12.y;
|
||||
result += texture2D(tex, vec2(texPos3.x, texPos12.y)) * w3.x * w12.y;
|
||||
|
||||
result += texture2D(tex, vec2(texPos0.x, texPos3.y)) * w0.x * w3.y;
|
||||
result += texture2D(tex, vec2(texPos12.x, texPos3.y)) * w12.x * w3.y;
|
||||
result += texture2D(tex, vec2(texPos3.x, texPos3.y)) * w3.x * w3.y;
|
||||
|
||||
return result;
|
||||
}
|
||||
*/
|
||||
|
||||
float lowerCurve(float x) {
|
||||
float y = 16 * x * (0.5 - x) * 0.1;
|
||||
return clamp(y, 0.0, 1.0);
|
||||
}
|
||||
|
||||
float upperCurve(float x) {
|
||||
float y = 16 * (0.5 - x) * (x - 1.0) * 0.1;
|
||||
return clamp(y, 0.0, 1.0);
|
||||
}
|
||||
|
||||
vec3 luminanceCurve(vec3 color){
|
||||
color.r += LOWER_CURVE * lowerCurve(color.r) + UPPER_CURVE * upperCurve(color.r);
|
||||
color.g += LOWER_CURVE * lowerCurve(color.g) + UPPER_CURVE * upperCurve(color.g);
|
||||
color.b += LOWER_CURVE * lowerCurve(color.b) + UPPER_CURVE * upperCurve(color.b);
|
||||
return color;
|
||||
}
|
||||
|
||||
vec3 colorGrading(vec3 color) {
|
||||
float grade_luma = dot(color, vec3(1.0 / 3.0));
|
||||
float shadows_amount = saturate(-6.0 * grade_luma + 2.75);
|
||||
float mids_amount = saturate(-abs(6.0 * grade_luma - 3.0) + 1.25);
|
||||
float highlights_amount = saturate(6.0 * grade_luma - 3.25);
|
||||
|
||||
vec3 graded_shadows = color * SHADOWS_TARGET * SHADOWS_GRADE_MUL * 1.7320508076;
|
||||
vec3 graded_mids = color * MIDS_TARGET * MIDS_GRADE_MUL * 1.7320508076;
|
||||
vec3 graded_highlights = color * HIGHLIGHTS_TARGET * HIGHLIGHTS_GRADE_MUL * 1.7320508076;
|
||||
|
||||
return saturate(graded_shadows * shadows_amount + graded_mids * mids_amount + graded_highlights * highlights_amount);
|
||||
}
|
||||
|
||||
vec3 contrastAdaptiveSharpening(vec3 color, vec2 texcoord){
|
||||
float sharpen_strength = float(SHARPENING)/100.0;
|
||||
//Weights : 1 in the center, 0.5 middle, 0.25 corners
|
||||
vec3 albedoCurrent1 = texture2D(colortex7, texcoord + vec2(texelSize.x,texelSize.y)/MC_RENDER_QUALITY*0.5).rgb;
|
||||
vec3 albedoCurrent2 = texture2D(colortex7, texcoord + vec2(texelSize.x,-texelSize.y)/MC_RENDER_QUALITY*0.5).rgb;
|
||||
vec3 albedoCurrent3 = texture2D(colortex7, texcoord + vec2(-texelSize.x,-texelSize.y)/MC_RENDER_QUALITY*0.5).rgb;
|
||||
vec3 albedoCurrent4 = texture2D(colortex7, texcoord + vec2(-texelSize.x,texelSize.y)/MC_RENDER_QUALITY*0.5).rgb;
|
||||
|
||||
vec3 m1 = -0.5/3.5*color + albedoCurrent1/3.5 + albedoCurrent2/3.5 + albedoCurrent3/3.5 + albedoCurrent4/3.5;
|
||||
|
||||
vec3 std = abs(color - m1) + abs(albedoCurrent1 - m1) + abs(albedoCurrent2 - m1) +
|
||||
abs(albedoCurrent3 - m1) + abs(albedoCurrent3 - m1) + abs(albedoCurrent4 - m1);
|
||||
|
||||
float contrast = 1.0 - luma(std)/5.0;
|
||||
|
||||
color = color*(1.0+(sharpen_strength+UPSCALING_SHARPNENING)*contrast) -
|
||||
(sharpen_strength+UPSCALING_SHARPNENING)/(1.0-0.5/3.5)*contrast*(m1 - 0.5/3.5*color);
|
||||
|
||||
return color;
|
||||
}
|
||||
|
||||
vec3 saturationAndCrosstalk(vec3 color){
|
||||
|
||||
float luminance = luma(color);
|
||||
|
||||
vec3 lumaColDiff = color - luminance;
|
||||
|
||||
color = color + lumaColDiff*(-luminance*CROSSTALK + SATURATION);
|
||||
|
||||
return color;
|
||||
}
|
||||
|
||||
float interleaved_gradientNoise(){
|
||||
vec2 coord = gl_FragCoord.xy;
|
||||
float noise = fract(52.9829189*fract(0.06711056*coord.x + 0.00583715*coord.y));
|
||||
return noise;
|
||||
}
|
||||
float blueNoise(){
|
||||
return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter);
|
||||
}
|
||||
float ld(float depth) {
|
||||
return (2.0 * near) / (far + near - depth * (far - near)); // (-depth * (far - near)) = (2.0 * near)/ld - far - near
|
||||
}
|
||||
|
||||
// uniform float viewWidth;
|
||||
// uniform float viewHeight;
|
||||
vec3 chromaticAberration(vec2 UV){
|
||||
float noise = blueNoise() - 0.5;
|
||||
|
||||
// uniform sampler2D depthtex0;
|
||||
vec2 centeredUV = (texcoord - 0.5);
|
||||
// not stretched by aspect ratio; circular by choice :) it makes most the abberation on the left/right of the screen.
|
||||
float vignette = 1.0 - clamp(1.0 - length(centeredUV * vec2(aspectRatio,1.0)) / 200.0,0.0,1.0);
|
||||
|
||||
#ifdef DISTANT_HORIZONS
|
||||
uniform sampler2D dhDepthTex;
|
||||
#endif
|
||||
uniform float dhNearPlane;
|
||||
uniform float dhFarPlane;
|
||||
float aberrationStrength = CHROMATIC_ABERRATION_STRENGTH * vignette;
|
||||
|
||||
float linearizeDepthFast(const in float depth, const in float near, const in float far) {
|
||||
return (near * far) / (depth * (near - far) + far);
|
||||
}
|
||||
vec3 color = vec3(0.0);
|
||||
color.r = texture2D(colortex7, (centeredUV - (centeredUV + centeredUV*noise) * aberrationStrength) + 0.5).r;
|
||||
color.g = texture2D(colortex7, texcoord).g;
|
||||
color.b = texture2D(colortex7, (centeredUV + (centeredUV + centeredUV*noise) * aberrationStrength) + 0.5).b;
|
||||
|
||||
float bloomWeight(){
|
||||
|
||||
float weights[7] = float[]( 1.0, 1.0/2.0, 1.0/3.0, 1.0/5.5, 1.0/8.0, 1.0/10.0, 1.0/12.0 );
|
||||
// float weights[7] = float[]( 0.7, pow(0.5,2), pow(0.5,3), pow(0.5,4), pow(0.5,5), pow(0.5,6), pow(0.5,7) );
|
||||
|
||||
float result = 0.0;
|
||||
|
||||
for ( int i = 0; i < 7; i++) {
|
||||
result += weights[i];
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
vec3 invTonemap(vec3 col){
|
||||
return col/(1-luma(col));
|
||||
}
|
||||
#define linear_to_srgb(x) (pow(x, vec3(1.0/2.2)))
|
||||
|
||||
uniform sampler2D colortex6;
|
||||
|
||||
|
||||
float w0(float a)
|
||||
{
|
||||
return (1.0/6.0)*(a*(a*(-a + 3.0) - 3.0) + 1.0);
|
||||
}
|
||||
|
||||
float w1(float a)
|
||||
{
|
||||
return (1.0/6.0)*(a*a*(3.0*a - 6.0) + 4.0);
|
||||
}
|
||||
|
||||
float w2(float a)
|
||||
{
|
||||
return (1.0/6.0)*(a*(a*(-3.0*a + 3.0) + 3.0) + 1.0);
|
||||
}
|
||||
|
||||
float w3(float a)
|
||||
{
|
||||
return (1.0/6.0)*(a*a*a);
|
||||
}
|
||||
|
||||
float g0(float a)
|
||||
{
|
||||
return w0(a) + w1(a);
|
||||
}
|
||||
|
||||
float g1(float a)
|
||||
{
|
||||
return w2(a) + w3(a);
|
||||
}
|
||||
|
||||
float h0(float a)
|
||||
{
|
||||
return -1.0 + w1(a) / (w0(a) + w1(a));
|
||||
}
|
||||
|
||||
float h1(float a)
|
||||
{
|
||||
return 1.0 + w3(a) / (w2(a) + w3(a));
|
||||
}
|
||||
|
||||
vec4 texture2D_bicubic(sampler2D tex, vec2 uv)
|
||||
{
|
||||
vec4 texelSize = vec4(texelSize,1.0/texelSize);
|
||||
uv = uv*texelSize.zw;
|
||||
vec2 iuv = floor( uv );
|
||||
vec2 fuv = fract( uv );
|
||||
|
||||
float g0x = g0(fuv.x);
|
||||
float g1x = g1(fuv.x);
|
||||
float h0x = h0(fuv.x);
|
||||
float h1x = h1(fuv.x);
|
||||
float h0y = h0(fuv.y);
|
||||
float h1y = h1(fuv.y);
|
||||
|
||||
vec2 p0 = (vec2(iuv.x + h0x, iuv.y + h0y) - 0.5) * texelSize.xy;
|
||||
vec2 p1 = (vec2(iuv.x + h1x, iuv.y + h0y) - 0.5) * texelSize.xy;
|
||||
vec2 p2 = (vec2(iuv.x + h0x, iuv.y + h1y) - 0.5) * texelSize.xy;
|
||||
vec2 p3 = (vec2(iuv.x + h1x, iuv.y + h1y) - 0.5) * texelSize.xy;
|
||||
|
||||
return g0(fuv.y) * (g0x * texture2D(tex, p0) +
|
||||
g1x * texture2D(tex, p1)) +
|
||||
g1(fuv.y) * (g0x * texture2D(tex, p2) +
|
||||
g1x * texture2D(tex, p3));
|
||||
}
|
||||
|
||||
// vec3 lenseFlare(vec2 UV){
|
||||
// float noise = blueNoise();
|
||||
|
||||
// float vignetteLength = 0.2;
|
||||
// float vignette = 0.5+length(texcoord-0.5);//min(max(length(texcoord-0.5) - vignetteLength,0.0) / (1.0/(1.0-vignetteLength)),1.0);
|
||||
|
||||
// float aberrationStrength = vignette;//clamp(CHROMATIC_ABERRATION_STRENGTH * 0.01 * (1.0 - vignette),0.0,0.9) * vignette * 0.75;
|
||||
|
||||
// vec2 centeredUV = texcoord - 0.5;
|
||||
|
||||
// vec3 color = vec3(0.0);
|
||||
// color = texture2D(colortex7, texcoord).rgb;
|
||||
|
||||
// vec2 distortedUV = (centeredUV - (centeredUV ) * aberrationStrength) + 0.5;
|
||||
|
||||
// color += texture2D(colortex7, distortedUV).rgb;
|
||||
// // color.r = texture2D(colortex7, (centeredUV - (centeredUV + centeredUV*noise) * aberrationStrength) + 0.5).r;
|
||||
// // color.g = texture2D(colortex7, texcoord).g;
|
||||
// // color.b = texture2D(colortex7, (centeredUV + (centeredUV + centeredUV*noise) * aberrationStrength) + 0.5).b;
|
||||
|
||||
// return color;
|
||||
// }
|
||||
|
||||
vec3 srgbToLinear(vec3 srgb){
|
||||
return mix(
|
||||
srgb / 12.92,
|
||||
pow(.947867 * srgb + .0521327, vec3(2.4) ),
|
||||
step( .04045, srgb )
|
||||
);
|
||||
}
|
||||
vec3 blackbody(float Temp)
|
||||
{
|
||||
float t = pow(Temp, -1.5);
|
||||
float lt = log(Temp);
|
||||
|
||||
vec3 WB_temp = vec3(0.0);
|
||||
WB_temp.r = 220000.0 * t + 0.58039215686;
|
||||
WB_temp.g = 0.39231372549 * lt - 2.44549019608;
|
||||
WB_temp.g = Temp > 6500. ? 138039.215686 * t + 0.72156862745 : WB_temp.g;
|
||||
WB_temp.b = 0.76078431372 * lt - 5.68078431373;
|
||||
WB_temp = clamp(WB_temp,0,1);
|
||||
WB_temp = Temp < 1000. ? WB_temp * Temp * 0.001 : WB_temp;
|
||||
|
||||
return srgbToLinear(WB_temp);
|
||||
return color;
|
||||
}
|
||||
|
||||
void main() {
|
||||
|
||||
/* DRAWBUFFERS:7 */
|
||||
float vignette = (1.5-dot(texcoord-0.5,texcoord-0.5)*2.);
|
||||
vec3 col = texture2D(colortex5,texcoord).rgb;
|
||||
|
||||
#ifdef CHROMATIC_ABERRATION
|
||||
vec3 color = chromaticAberration(texcoord);
|
||||
#else
|
||||
vec3 color = texture2D(colortex7,texcoord).rgb;
|
||||
#endif
|
||||
|
||||
#if DOF_QUALITY >= 0
|
||||
/*--------------------------------*/
|
||||
float z = ld(texture2D(depthtex1, texcoord.st*RENDER_SCALE).r)*far;
|
||||
#if MANUAL_FOCUS == -2
|
||||
float focus = rodExposureDepth.y*far;
|
||||
#elif MANUAL_FOCUS == -1
|
||||
float focus = mix(pow(512.0, screenBrightness), 512.0 * screenBrightness, 0.25);
|
||||
#elif MANUAL_FOCUS > 0
|
||||
float focus = MANUAL_FOCUS;
|
||||
#endif
|
||||
#if DOF_QUALITY < 5
|
||||
float pcoc = min(abs(aperture * (focal/100.0 * (z - focus)) / (z * (focus - focal/100.0))),texelSize.x*15.0);
|
||||
#ifdef FAR_BLUR_ONLY
|
||||
pcoc *= float(z > focus);
|
||||
#endif
|
||||
#ifdef REMOVE_HAND_BLUR
|
||||
pcoc *= float(z > 0.56);
|
||||
#endif
|
||||
// float noise = blueNoise()*6.28318530718;
|
||||
// mat2 noiseM = mat2( cos( noise ), -sin( noise ),
|
||||
// sin( noise ), cos( noise )
|
||||
// );
|
||||
vec3 bcolor = vec3(0.);
|
||||
float nb = 0.0;
|
||||
vec2 bcoord = vec2(0.0);
|
||||
/*--------------------------------*/
|
||||
float dofLodLevel = pcoc * 200.0;
|
||||
|
||||
vec2 dispersion = (texcoord - 0.5) * pcoc * 200.0 * DOF_DISPERSION_MULT;
|
||||
|
||||
for ( int i = 0; i < BOKEH_SAMPLES; i++) {
|
||||
// bcolor += texture2DLod(colortex5, texcoord.xy + bokeh_offsets[i]*pcoc*vec2(DOF_ANAMORPHIC_RATIO,aspectRatio), dofLodLevel).rgb;
|
||||
|
||||
bcolor.r += texture2DLod(colortex5, texcoord.xy + (bokeh_offsets[i] + dispersion)*pcoc*vec2(DOF_ANAMORPHIC_RATIO,aspectRatio), dofLodLevel).r;
|
||||
bcolor.g += texture2DLod(colortex5, texcoord.xy + bokeh_offsets[i]*pcoc*vec2(DOF_ANAMORPHIC_RATIO,aspectRatio), dofLodLevel).g;
|
||||
bcolor.b += texture2DLod(colortex5, texcoord.xy + (bokeh_offsets[i] - dispersion)*pcoc*vec2(DOF_ANAMORPHIC_RATIO,aspectRatio), dofLodLevel).b;
|
||||
}
|
||||
col = bcolor/BOKEH_SAMPLES;
|
||||
#endif
|
||||
#if SHARPENING > 0
|
||||
color = contrastAdaptiveSharpening(color, texcoord);
|
||||
#endif
|
||||
|
||||
color = saturationAndCrosstalk(color);
|
||||
|
||||
#ifdef LUMINANCE_CURVE
|
||||
color = luminanceCurve(color);
|
||||
#endif
|
||||
|
||||
vec2 clampedRes = max(vec2(viewWidth,viewHeight),vec2(1920.0,1080.));
|
||||
|
||||
vec2 resScale = vec2(1920.,1080.)/clampedRes;
|
||||
vec2 bloomTileUV = (((gl_FragCoord.xy)*2.0 + 0.5)*texelSize/2.0) / clampedRes*vec2(1920.,1080.);
|
||||
|
||||
vec3 bloomTile0 = texture2D_bicubic(colortex3, bloomTileUV/2.).rgb; //1/4 res
|
||||
vec3 bloomTile1 = texture2D_bicubic(colortex6, bloomTileUV/4.).rgb; //1/8 res
|
||||
vec3 bloomTile2 = texture2D_bicubic(colortex6, bloomTileUV/8.+vec2(0.25*resScale.x+2.5*texelSize.x,.0)).rgb; //1/16 res
|
||||
vec3 bloomTile3 = texture2D_bicubic(colortex6, bloomTileUV/16.+vec2(0.375*resScale.x+4.5*texelSize.x,.0)).rgb; //1/32 res
|
||||
vec3 bloomTile4 = texture2D_bicubic(colortex6, bloomTileUV/32.+vec2(0.4375*resScale.x+6.5*texelSize.x,.0)).rgb; //1/64 res
|
||||
vec3 bloomTile5 = texture2D_bicubic(colortex6, bloomTileUV/64.+vec2(0.46875*resScale.x+8.5*texelSize.x,.0)).rgb; //1/128 res
|
||||
vec3 bloomTile6 = texture2D_bicubic(colortex6, bloomTileUV/128.+vec2(0.484375*resScale.x+10.5*texelSize.x,.0)).rgb; //1/256 res
|
||||
|
||||
#ifdef OLD_BLOOM
|
||||
vec3 bloom = (bloomTile0 + bloomTile1 + bloomTile2 + bloomTile3 + bloomTile4 + bloomTile5 + bloomTile6) / 7.0;
|
||||
vec3 fogBloom = bloom;
|
||||
|
||||
float lightScat = clamp((BLOOM_STRENGTH+3) * 0.05 * pow(exposure.a, 0.2) ,0.0,1.0) * vignette;
|
||||
#else
|
||||
float weights[7] = float[]( 1.0, 1.0/2.0, 1.0/3.0, 1.0/5.5, 1.0/8.0, 1.0/10.0, 1.0/12.0 );
|
||||
vec3 bloom = (bloomTile0*weights[0] + bloomTile1*weights[1] + bloomTile2*weights[2] + bloomTile3*weights[3] + bloomTile4*weights[4] + bloomTile5*weights[5] + bloomTile6*weights[6]) / bloomWeight();
|
||||
vec3 fogBloom = (bloomTile0 + bloomTile1 + bloomTile2 + bloomTile3 + bloomTile4 + bloomTile5 + bloomTile6) / 7.0;
|
||||
|
||||
float lightScat = clamp(BLOOM_STRENGTH * 0.3,0.0,1.0) * vignette;
|
||||
#endif
|
||||
|
||||
float VL_abs = texture2D(colortex7, texcoord*RENDER_SCALE).r;
|
||||
|
||||
#if Purkinje_strength > 0
|
||||
float pstrength = float(Purkinje_strength) / 100.0;
|
||||
|
||||
#ifdef AUTO_EXPOSURE
|
||||
float purkinje = clamp(exposure.a*exposure.a,0.0,1.0) * clamp(rodExposureDepth.x/(1.0+rodExposureDepth.x)*pstrength,0,1);
|
||||
#else
|
||||
float purkinje = clamp(rodExposureDepth.x/(1.0+rodExposureDepth.x)*pstrength,0,1);
|
||||
#endif
|
||||
|
||||
VL_abs = clamp((1.0-VL_abs)*BLOOMY_FOG*0.75*(1.0+rainStrength) * (1.0-purkinje*0.3),0.0,1.0)*clamp(1.0-pow(cdist(texcoord.xy),15.0),0.0,1.0);
|
||||
col = (mix(col, fogBloom, VL_abs) + bloom*lightScat) * exposure.rgb;
|
||||
|
||||
float lum = dot(col, vec3(0.15,0.3,0.55));
|
||||
float lum2 = dot(col, vec3(0.85,0.7,0.45));
|
||||
float rodLum = lum2*200.0;
|
||||
float rodCurve = clamp(mix(1.0, rodLum/(2.5+rodLum), purkinje),0.0,1.0);
|
||||
|
||||
col = mix(lum * vec3(Purkinje_R, Purkinje_G, Purkinje_B) * Purkinje_Multiplier, col, rodCurve);
|
||||
#else
|
||||
VL_abs = clamp((1.0-VL_abs)*BLOOMY_FOG*0.75*(1.0+rainStrength),0.0,1.0)*clamp(1.0-pow(cdist(texcoord.xy),15.0),0.0,1.0);
|
||||
col = (mix(col, fogBloom, VL_abs) + bloom*lightScat) * exposure.rgb;
|
||||
#endif
|
||||
|
||||
#if WHITE_BALANCE != 6500
|
||||
col *= blackbody(WHITE_BALANCE);
|
||||
#endif
|
||||
|
||||
#ifndef USE_ACES_COLORSPACE_APPROXIMATION
|
||||
col = LinearTosRGB(TONEMAP(col));
|
||||
#else
|
||||
col = col * ACESInputMat;
|
||||
col = TONEMAP(col);
|
||||
|
||||
col = LinearTosRGB(clamp(col * ACESOutputMat, 0.0, 1.0));
|
||||
#endif
|
||||
|
||||
gl_FragData[0].rgb = clamp(int8Dither(col,texcoord),0.0,1.0);
|
||||
|
||||
#if DOF_QUALITY == 5
|
||||
#if FOCUS_LASER_COLOR == 0 // Red
|
||||
vec3 laserColor = vec3(25, 0, 0);
|
||||
#elif FOCUS_LASER_COLOR == 1 // Green
|
||||
vec3 laserColor = vec3(0, 25, 0);
|
||||
#elif FOCUS_LASER_COLOR == 2 // Blue
|
||||
vec3 laserColor = vec3(0, 0, 25);
|
||||
#elif FOCUS_LASER_COLOR == 3 // Pink
|
||||
vec3 laserColor = vec3(25, 10, 15);
|
||||
#elif FOCUS_LASER_COLOR == 4 // Yellow
|
||||
vec3 laserColor = vec3(25, 25, 0);
|
||||
#elif FOCUS_LASER_COLOR == 5 // White
|
||||
vec3 laserColor = vec3(25);
|
||||
#endif
|
||||
float depth = texture(depthtex0, texcoord).r;
|
||||
|
||||
#ifdef DISTANT_HORIZONS
|
||||
float _near = near;
|
||||
float _far = far*4.0;
|
||||
|
||||
if (depth >= 1.0) {
|
||||
depth = texture2D(dhDepthTex, texcoord).x;
|
||||
_near = dhNearPlane;
|
||||
_far = dhFarPlane;
|
||||
}
|
||||
|
||||
depth = linearizeDepthFast(depth, _near, _far);
|
||||
#else
|
||||
depth = linearizeDepthFast(depth, near, far);
|
||||
#endif
|
||||
|
||||
// focus = gl_FragCoord.x * 0.1;
|
||||
if( hideGUI < 1) gl_FragData[0].rgb += laserColor * pow( clamp( 1.0-abs(focus-abs(depth)) ,0,1),25) ;
|
||||
#endif
|
||||
}
|
||||
#ifdef COLOR_GRADING_ENABLED
|
||||
color = colorGrading(color);
|
||||
#endif
|
||||
|
||||
gl_FragData[0].rgb = clamp(int8Dither(color, texcoord),0.0,1.0);
|
||||
}
|
||||
|
||||
@@ -2,10 +2,6 @@
|
||||
|
||||
varying vec2 texcoord;
|
||||
|
||||
uniform sampler2D colortex4;
|
||||
|
||||
flat varying vec4 exposure;
|
||||
flat varying vec2 rodExposureDepth;
|
||||
|
||||
//////////////////////////////VOID MAIN//////////////////////////////
|
||||
//////////////////////////////VOID MAIN//////////////////////////////
|
||||
@@ -14,11 +10,6 @@ flat varying vec2 rodExposureDepth;
|
||||
//////////////////////////////VOID MAIN//////////////////////////////
|
||||
|
||||
void main() {
|
||||
|
||||
gl_Position = ftransform();
|
||||
texcoord = gl_MultiTexCoord0.xy;
|
||||
|
||||
exposure = vec4(vec3(texelFetch2D(colortex4,ivec2(10,37),0).r),texelFetch2D(colortex4,ivec2(10,37),0).r);
|
||||
rodExposureDepth = texelFetch2D(colortex4,ivec2(14,37),0).rg;
|
||||
rodExposureDepth.y = sqrt(rodExposureDepth.y/65000.0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,189 +0,0 @@
|
||||
#include "/lib/settings.glsl"
|
||||
|
||||
varying vec2 texcoord;
|
||||
uniform vec2 texelSize;
|
||||
|
||||
uniform sampler2D colortex7;
|
||||
uniform sampler2D colortex14;
|
||||
uniform sampler2D depthtex0;
|
||||
uniform sampler2D noisetex;
|
||||
|
||||
uniform float viewHeight;
|
||||
uniform float viewWidth;
|
||||
uniform float aspectRatio;
|
||||
|
||||
uniform float frameTimeCounter;
|
||||
uniform int frameCounter;
|
||||
|
||||
uniform int hideGUI;
|
||||
|
||||
#include "/lib/color_transforms.glsl"
|
||||
#include "/lib/color_dither.glsl"
|
||||
#include "/lib/res_params.glsl"
|
||||
|
||||
/*
|
||||
vec4 SampleTextureCatmullRom(sampler2D tex, vec2 uv, vec2 texSize )
|
||||
{
|
||||
// We're going to sample a a 4x4 grid of texels surrounding the target UV coordinate. We'll do this by rounding
|
||||
// down the sample location to get the exact center of our "starting" texel. The starting texel will be at
|
||||
// location [1, 1] in the grid, where [0, 0] is the top left corner.
|
||||
vec2 samplePos = uv * texSize;
|
||||
vec2 texPos1 = floor(samplePos - 0.5) + 0.5;
|
||||
|
||||
// Compute the fractional offset from our starting texel to our original sample location, which we'll
|
||||
// feed into the Catmull-Rom spline function to get our filter weights.
|
||||
vec2 f = samplePos - texPos1;
|
||||
|
||||
// Compute the Catmull-Rom weights using the fractional offset that we calculated earlier.
|
||||
// These equations are pre-expanded based on our knowledge of where the texels will be located,
|
||||
// which lets us avoid having to evaluate a piece-wise function.
|
||||
vec2 w0 = f * ( -0.5 + f * (1.0 - 0.5*f));
|
||||
vec2 w1 = 1.0 + f * f * (-2.5 + 1.5*f);
|
||||
vec2 w2 = f * ( 0.5 + f * (2.0 - 1.5*f) );
|
||||
vec2 w3 = f * f * (-0.5 + 0.5 * f);
|
||||
|
||||
// Work out weighting factors and sampling offsets that will let us use bilinear filtering to
|
||||
// simultaneously evaluate the middle 2 samples from the 4x4 grid.
|
||||
vec2 w12 = w1 + w2;
|
||||
vec2 offset12 = w2 / (w1 + w2);
|
||||
|
||||
// Compute the final UV coordinates we'll use for sampling the texture
|
||||
vec2 texPos0 = texPos1 - vec2(1.0);
|
||||
vec2 texPos3 = texPos1 + vec2(2.0);
|
||||
vec2 texPos12 = texPos1 + offset12;
|
||||
|
||||
texPos0 *= texelSize;
|
||||
texPos3 *= texelSize;
|
||||
texPos12 *= texelSize;
|
||||
|
||||
vec4 result = vec4(0.0);
|
||||
result += texture2D(tex, vec2(texPos0.x, texPos0.y)) * w0.x * w0.y;
|
||||
result += texture2D(tex, vec2(texPos12.x, texPos0.y)) * w12.x * w0.y;
|
||||
result += texture2D(tex, vec2(texPos3.x, texPos0.y)) * w3.x * w0.y;
|
||||
|
||||
result += texture2D(tex, vec2(texPos0.x, texPos12.y)) * w0.x * w12.y;
|
||||
result += texture2D(tex, vec2(texPos12.x, texPos12.y)) * w12.x * w12.y;
|
||||
result += texture2D(tex, vec2(texPos3.x, texPos12.y)) * w3.x * w12.y;
|
||||
|
||||
result += texture2D(tex, vec2(texPos0.x, texPos3.y)) * w0.x * w3.y;
|
||||
result += texture2D(tex, vec2(texPos12.x, texPos3.y)) * w12.x * w3.y;
|
||||
result += texture2D(tex, vec2(texPos3.x, texPos3.y)) * w3.x * w3.y;
|
||||
|
||||
return result;
|
||||
}
|
||||
*/
|
||||
|
||||
float lowerCurve(float x) {
|
||||
float y = 16 * x * (0.5 - x) * 0.1;
|
||||
return clamp(y, 0.0, 1.0);
|
||||
}
|
||||
|
||||
float upperCurve(float x) {
|
||||
float y = 16 * (0.5 - x) * (x - 1.0) * 0.1;
|
||||
return clamp(y, 0.0, 1.0);
|
||||
}
|
||||
|
||||
vec3 luminanceCurve(vec3 color){
|
||||
color.r += LOWER_CURVE * lowerCurve(color.r) + UPPER_CURVE * upperCurve(color.r);
|
||||
color.g += LOWER_CURVE * lowerCurve(color.g) + UPPER_CURVE * upperCurve(color.g);
|
||||
color.b += LOWER_CURVE * lowerCurve(color.b) + UPPER_CURVE * upperCurve(color.b);
|
||||
return color;
|
||||
}
|
||||
|
||||
vec3 colorGrading(vec3 color) {
|
||||
float grade_luma = dot(color, vec3(1.0 / 3.0));
|
||||
float shadows_amount = saturate(-6.0 * grade_luma + 2.75);
|
||||
float mids_amount = saturate(-abs(6.0 * grade_luma - 3.0) + 1.25);
|
||||
float highlights_amount = saturate(6.0 * grade_luma - 3.25);
|
||||
|
||||
vec3 graded_shadows = color * SHADOWS_TARGET * SHADOWS_GRADE_MUL * 1.7320508076;
|
||||
vec3 graded_mids = color * MIDS_TARGET * MIDS_GRADE_MUL * 1.7320508076;
|
||||
vec3 graded_highlights = color * HIGHLIGHTS_TARGET * HIGHLIGHTS_GRADE_MUL * 1.7320508076;
|
||||
|
||||
return saturate(graded_shadows * shadows_amount + graded_mids * mids_amount + graded_highlights * highlights_amount);
|
||||
}
|
||||
|
||||
vec3 contrastAdaptiveSharpening(vec3 color, vec2 texcoord){
|
||||
float sharpen_strength = float(SHARPENING)/100.0;
|
||||
//Weights : 1 in the center, 0.5 middle, 0.25 corners
|
||||
vec3 albedoCurrent1 = texture2D(colortex7, texcoord + vec2(texelSize.x,texelSize.y)/MC_RENDER_QUALITY*0.5).rgb;
|
||||
vec3 albedoCurrent2 = texture2D(colortex7, texcoord + vec2(texelSize.x,-texelSize.y)/MC_RENDER_QUALITY*0.5).rgb;
|
||||
vec3 albedoCurrent3 = texture2D(colortex7, texcoord + vec2(-texelSize.x,-texelSize.y)/MC_RENDER_QUALITY*0.5).rgb;
|
||||
vec3 albedoCurrent4 = texture2D(colortex7, texcoord + vec2(-texelSize.x,texelSize.y)/MC_RENDER_QUALITY*0.5).rgb;
|
||||
|
||||
vec3 m1 = -0.5/3.5*color + albedoCurrent1/3.5 + albedoCurrent2/3.5 + albedoCurrent3/3.5 + albedoCurrent4/3.5;
|
||||
|
||||
vec3 std = abs(color - m1) + abs(albedoCurrent1 - m1) + abs(albedoCurrent2 - m1) +
|
||||
abs(albedoCurrent3 - m1) + abs(albedoCurrent3 - m1) + abs(albedoCurrent4 - m1);
|
||||
|
||||
float contrast = 1.0 - luma(std)/5.0;
|
||||
|
||||
color = color*(1.0+(sharpen_strength+UPSCALING_SHARPNENING)*contrast) -
|
||||
(sharpen_strength+UPSCALING_SHARPNENING)/(1.0-0.5/3.5)*contrast*(m1 - 0.5/3.5*color);
|
||||
|
||||
return color;
|
||||
}
|
||||
|
||||
vec3 saturationAndCrosstalk(vec3 color){
|
||||
|
||||
float luminance = luma(color);
|
||||
|
||||
vec3 lumaColDiff = color - luminance;
|
||||
|
||||
color = color + lumaColDiff*(-luminance*CROSSTALK + SATURATION);
|
||||
|
||||
return color;
|
||||
}
|
||||
|
||||
float interleaved_gradientNoise(){
|
||||
vec2 coord = gl_FragCoord.xy;
|
||||
float noise = fract(52.9829189*fract(0.06711056*coord.x + 0.00583715*coord.y));
|
||||
return noise;
|
||||
}
|
||||
float blueNoise(){
|
||||
return fract(texelFetch2D(noisetex, ivec2(gl_FragCoord.xy)%512, 0).a + 1.0/1.6180339887 * frameCounter);
|
||||
}
|
||||
|
||||
vec3 chromaticAberration(vec2 UV){
|
||||
float noise = blueNoise() - 0.5;
|
||||
|
||||
vec2 centeredUV = (texcoord - 0.5);
|
||||
// not stretched by aspect ratio; circular by choice :) it makes most the abberation on the left/right of the screen.
|
||||
float vignette = 1.0 - clamp(1.0 - length(centeredUV * vec2(aspectRatio,1.0)) / 200.0,0.0,1.0);
|
||||
|
||||
float aberrationStrength = CHROMATIC_ABERRATION_STRENGTH * vignette;
|
||||
|
||||
vec3 color = vec3(0.0);
|
||||
color.r = texture2D(colortex7, (centeredUV - (centeredUV + centeredUV*noise) * aberrationStrength) + 0.5).r;
|
||||
color.g = texture2D(colortex7, texcoord).g;
|
||||
color.b = texture2D(colortex7, (centeredUV + (centeredUV + centeredUV*noise) * aberrationStrength) + 0.5).b;
|
||||
|
||||
return color;
|
||||
}
|
||||
|
||||
void main() {
|
||||
|
||||
/* DRAWBUFFERS:7 */
|
||||
|
||||
#ifdef CHROMATIC_ABERRATION
|
||||
vec3 color = chromaticAberration(texcoord);
|
||||
#else
|
||||
vec3 color = texture2D(colortex7,texcoord).rgb;
|
||||
#endif
|
||||
|
||||
#if SHARPENING > 0
|
||||
color = contrastAdaptiveSharpening(color, texcoord);
|
||||
#endif
|
||||
|
||||
color = saturationAndCrosstalk(color);
|
||||
|
||||
#ifdef LUMINANCE_CURVE
|
||||
color = luminanceCurve(color);
|
||||
#endif
|
||||
|
||||
#ifdef COLOR_GRADING_ENABLED
|
||||
color = colorGrading(color);
|
||||
#endif
|
||||
|
||||
gl_FragData[0].rgb = clamp(int8Dither(color, texcoord),0.0,1.0);
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
#include "/lib/settings.glsl"
|
||||
|
||||
varying vec2 texcoord;
|
||||
|
||||
|
||||
//////////////////////////////VOID MAIN//////////////////////////////
|
||||
//////////////////////////////VOID MAIN//////////////////////////////
|
||||
//////////////////////////////VOID MAIN//////////////////////////////
|
||||
//////////////////////////////VOID MAIN//////////////////////////////
|
||||
//////////////////////////////VOID MAIN//////////////////////////////
|
||||
|
||||
void main() {
|
||||
gl_Position = ftransform();
|
||||
texcoord = gl_MultiTexCoord0.xy;
|
||||
}
|
||||
+316
-135
@@ -6,7 +6,6 @@ flat varying vec4 lightCol;
|
||||
flat varying vec3 averageSkyCol;
|
||||
flat varying vec3 averageSkyCol_Clouds;
|
||||
|
||||
|
||||
uniform sampler2D noisetex;
|
||||
uniform sampler2D depthtex0;
|
||||
uniform sampler2D depthtex1;
|
||||
@@ -23,6 +22,8 @@ uniform sampler2D colortex3;
|
||||
uniform sampler2D colortex6;
|
||||
uniform sampler2D colortex7;
|
||||
uniform sampler2D colortex10;
|
||||
uniform sampler2D colortex12;
|
||||
uniform sampler2D colortex14;
|
||||
|
||||
flat varying vec3 WsunVec;
|
||||
uniform vec3 sunVec;
|
||||
@@ -56,7 +57,17 @@ uniform float rainStrength;
|
||||
uniform ivec2 eyeBrightnessSmooth;
|
||||
uniform float eyeAltitude;
|
||||
uniform float caveDetection;
|
||||
uniform float skyLightLevelSmooth;
|
||||
|
||||
vec4 blueNoise(vec2 coord){
|
||||
return texelFetch2D(colortex6, ivec2(coord)%512 , 0) ;
|
||||
}
|
||||
vec2 R2_samples(int n){
|
||||
vec2 alpha = vec2(0.75487765, 0.56984026);
|
||||
return fract(alpha * n);
|
||||
}
|
||||
|
||||
uniform int hideGUI;
|
||||
// uniform int dhRenderDistance;
|
||||
#define DHVLFOG
|
||||
#define diagonal3(m) vec3((m)[0].x, (m)[1].y, m[2].z)
|
||||
@@ -87,8 +98,6 @@ float linearizeDepthFast(const in float depth, const in float near, const in flo
|
||||
|
||||
#if defined LPV_VL_FOG_ILLUMINATION && defined IS_LPV_ENABLED
|
||||
|
||||
flat varying float exposure;
|
||||
|
||||
#ifdef IS_LPV_ENABLED
|
||||
#extension GL_ARB_shader_image_load_store: enable
|
||||
#extension GL_ARB_shading_language_packing: enable
|
||||
@@ -110,41 +119,74 @@ float linearizeDepthFast(const in float depth, const in float near, const in flo
|
||||
#include "/lib/lpv_common.glsl"
|
||||
#include "/lib/lpv_render.glsl"
|
||||
#endif
|
||||
vec4 raymarchLPV(
|
||||
in vec3 viewPos,
|
||||
in float dither
|
||||
){
|
||||
#if !defined LPV_VL_FOG_ILLUMINATION
|
||||
return vec3(0.0);
|
||||
#endif
|
||||
|
||||
int SAMPLECOUNT = 8;
|
||||
vec3 playerPos = mat3(gbufferModelViewInverse) * viewPos + gbufferModelViewInverse[3].xyz;
|
||||
vec3 LPVrayStartPos = playerPos - gbufferModelViewInverse[3].xyz;
|
||||
|
||||
// ensure the max marching distance is the voxel distance, or the render distance if the voxels go farther than it
|
||||
float LPVRayLength = length(LPVrayStartPos);
|
||||
#if LPV_SIZE == 8
|
||||
LPVrayStartPos *= min(LPVRayLength, min(256.0,far))/LPVRayLength;
|
||||
#elif LPV_SIZE == 7
|
||||
LPVrayStartPos *= min(LPVRayLength, min(128.0,far))/LPVRayLength;
|
||||
#elif LPV_SIZE == 6
|
||||
LPVrayStartPos *= min(LPVRayLength, min(64.0,far))/LPVRayLength;
|
||||
#endif
|
||||
LPVRayLength = length(LPVrayStartPos);
|
||||
|
||||
vec3 LPV_FOG_ILLUMINATION(in vec3 playerPos, float dd, float dL){
|
||||
vec3 color = vec3(0.0);
|
||||
vec3 LPVrayProgress = vec3(0.0);
|
||||
vec4 color = vec4(0.0,0.0,0.0,1.0);
|
||||
float expFactor = 11.0;
|
||||
|
||||
vec3 lpvPos = GetLpvPosition(playerPos);
|
||||
for (int i = 0; i < SAMPLECOUNT; i++) {
|
||||
float d = (pow(expFactor, float(i+dither)/float(SAMPLECOUNT))/expFactor - 1.0/expFactor)/(1-1.0/expFactor);
|
||||
float dd = pow(expFactor, float(i+dither)/float(SAMPLECOUNT)) * log(expFactor) / float(SAMPLECOUNT)/(expFactor-1.0);
|
||||
|
||||
float fadeLength = 10.0; // in blocks
|
||||
vec3 cubicRadius = clamp( min(((LpvSize3-1.0) - lpvPos)/fadeLength, lpvPos/fadeLength) ,0.0,1.0);
|
||||
float LpvFadeF = cubicRadius.x*cubicRadius.y*cubicRadius.z;
|
||||
LPVrayProgress = gbufferModelViewInverse[3].xyz + d*LPVrayStartPos;
|
||||
|
||||
if(LpvFadeF > 0.0){
|
||||
// if(length(lpvSample.xyz) > 1e-5){
|
||||
vec3 lpvPos = GetLpvPosition(LPVrayProgress);
|
||||
|
||||
vec3 lighting = SampleLpvLinear(lpvPos).rgb * (LPV_VL_FOG_ILLUMINATION_BRIGHTNESS/100.0);
|
||||
// float density = exp(-5.0 * clamp( 1.0 - length(lpvSample.xyz) / 16.0,0.0,1.0)) * (LPV_VL_FOG_ILLUMINATION_BRIGHTNESS/100.0) * LpvFadeF;
|
||||
float density = exp(-5.0 * (1.0-length(lighting.xyz))) * LpvFadeF;
|
||||
// float density = (1-exp(-1.0-clamp(length(lighting.rgb),0.0,1.0),25) )* LpvFadeF;
|
||||
float fadeLength = 10.0; // in blocks
|
||||
vec3 cubicRadius = clamp( min(((LpvSize3-1.0) - lpvPos)/fadeLength, lpvPos/fadeLength) ,0.0,1.0);
|
||||
float LpvFadeF = cubicRadius.x*cubicRadius.y*cubicRadius.z;
|
||||
|
||||
// float density = 0.01 * LpvFadeF;
|
||||
if(LpvFadeF < 0.01) break;
|
||||
|
||||
color = lighting - lighting * exp(-density*dd*dL);
|
||||
// }
|
||||
vec3 sampleColor = SampleLpvLinear(lpvPos).rgb;
|
||||
#ifdef VANILLA_LIGHTMAP_MASK
|
||||
vec3 lighting = sampleColor * LPV_VL_FOG_ILLUMINATION_BRIGHTNESS * 25. * exp(-10 * (1.0-luma(sampleColor)));
|
||||
#else
|
||||
vec3 lighting = sampleColor * LPV_VL_FOG_ILLUMINATION_BRIGHTNESS * 25. * exp(-5 * (1.0-luma(sampleColor)));
|
||||
#endif
|
||||
|
||||
float density = 0.0001;
|
||||
float volumeCoeff = exp(-dd*density*LPVRayLength);
|
||||
|
||||
color.rgb += (lighting - lighting * volumeCoeff) * color.a;
|
||||
color.a *= volumeCoeff;
|
||||
}
|
||||
|
||||
return color;
|
||||
return color.rgba;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
float invLinZ (float lindepth){
|
||||
return -((2.0*near/lindepth)-far-near)/(far-near);
|
||||
}
|
||||
|
||||
uniform float nightVision;
|
||||
|
||||
#define LIGHTNINGFLASH_VL
|
||||
#include "/lib/lightning_stuff.glsl"
|
||||
|
||||
#ifdef OVERWORLD_SHADER
|
||||
const bool shadowHardwareFiltering = true;
|
||||
uniform sampler2DShadow shadow;
|
||||
@@ -163,11 +205,8 @@ uniform float nightVision;
|
||||
|
||||
// uniform int dhRenderDistance;
|
||||
#define TIMEOFDAYFOG
|
||||
#include "/lib/lightning_stuff.glsl"
|
||||
|
||||
// #define CLOUDS_INTERSECT_TERRAIN
|
||||
#include "/lib/volumetricClouds.glsl"
|
||||
|
||||
#include "/lib/climate_settings.glsl"
|
||||
#include "/lib/overworld_fog.glsl"
|
||||
#endif
|
||||
@@ -254,7 +293,7 @@ void waterVolumetrics_notoverworld(inout vec3 inColor, vec3 rayStart, vec3 rayEn
|
||||
|
||||
uniform float waterEnteredAltitude;
|
||||
|
||||
vec4 waterVolumetrics(vec3 rayStart, vec3 rayEnd, float rayLength, vec2 dither, vec3 waterCoefs, vec3 scatterCoef, vec3 ambient, vec3 lightSource, float VdotL){
|
||||
vec4 waterVolumetrics(vec3 rayStart, vec3 rayEnd, float rayLength, vec2 dither, vec3 waterCoefs, vec3 scatterCoef, vec3 ambient, vec3 lightSource, float VdotL, vec3 LPV){
|
||||
int spCount = 8;
|
||||
|
||||
vec3 start = toShadowSpaceProjected(rayStart);
|
||||
@@ -329,7 +368,7 @@ vec4 waterVolumetrics(vec3 rayStart, vec3 rayEnd, float rayLength, vec2 dither,
|
||||
|
||||
|
||||
float bubble = exp2(-10.0 * clamp(1.0 - length(d*dVWorld) / 16.0, 0.0,1.0));
|
||||
float caustics = max(max(waterCaustics(progressW, WsunVec), phase*0.5) * mix(0.5, 1.5, bubble), phase);
|
||||
float caustics = max(max(waterCaustics(progressW, WsunVec, -(progressW.y - waterEnteredAltitude)), phase*0.5) * mix(0.5, 1.5, bubble), phase);
|
||||
|
||||
vec3 sunAbsorbance = exp(-waterCoefs * (distanceFromWaterSurface/abs(WsunVec.y)));
|
||||
vec3 WaterAbsorbance = exp(-waterCoefs * (distanceFromWaterSurface + thing));
|
||||
@@ -337,25 +376,17 @@ vec4 waterVolumetrics(vec3 rayStart, vec3 rayEnd, float rayLength, vec2 dither,
|
||||
vec3 Directlight = lightSource * sh * phase * caustics * sunAbsorbance;
|
||||
vec3 Indirectlight = ambient * WaterAbsorbance;
|
||||
|
||||
|
||||
vec3 light = (Indirectlight + Directlight) * scatterCoef;
|
||||
vec3 light = (Indirectlight + Directlight + LPV) * scatterCoef;
|
||||
|
||||
vec3 volumeCoeff = exp(-waterCoefs * length(dd*dVWorld));
|
||||
vL += (light - light * volumeCoeff) / waterCoefs * absorbance;
|
||||
absorbance *= volumeCoeff;
|
||||
|
||||
}
|
||||
|
||||
// waterabsorbtion = absorbance;
|
||||
return vec4(vL, dot(absorbance,vec3(0.335)));
|
||||
}
|
||||
|
||||
vec4 blueNoise(vec2 coord){
|
||||
return texelFetch2D(colortex6, ivec2(coord)%512 , 0) ;
|
||||
}
|
||||
vec2 R2_samples(int n){
|
||||
vec2 alpha = vec2(0.75487765, 0.56984026);
|
||||
return fract(alpha * n);
|
||||
}
|
||||
|
||||
float fogPhase2(float lightPoint){
|
||||
float linear = 1.0 - clamp(lightPoint*0.5+0.5,0.0,1.0);
|
||||
@@ -373,6 +404,12 @@ float encodeVec2(vec2 a){
|
||||
return temp.x*constant1.x+temp.y*constant1.y;
|
||||
}
|
||||
|
||||
vec2 decodeVec2(float a){
|
||||
const vec2 constant1 = 65535. / vec2( 256., 65536.);
|
||||
const float constant2 = 256. / 255.;
|
||||
return fract( a * constant1 ) * constant2 ;
|
||||
}
|
||||
|
||||
|
||||
|
||||
uniform int framemod8;
|
||||
@@ -384,97 +421,164 @@ float convertHandDepth(float depth) {
|
||||
return ndcDepth * 0.5 + 0.5;
|
||||
}
|
||||
|
||||
float swapperlinZ(float depth, float _near, float _far) {
|
||||
return (2.0 * _near) / (_far + _near - depth * (_far - _near));
|
||||
// l = (2*n)/(f+n-d(f-n))
|
||||
// f+n-d(f-n) = 2n/l
|
||||
// -d(f-n) = ((2n/l)-f-n)
|
||||
// d = -((2n/l)-f-n)/(f-n)
|
||||
|
||||
vec3 alterCoords(in vec3 coords, bool lighting){
|
||||
|
||||
float theDistance = length(coords + (lighting ? vec3(0.0) : cameraPosition));
|
||||
|
||||
coords.x = coords.x*3;
|
||||
|
||||
coords.y = coords.y;
|
||||
|
||||
coords.z = coords.z*3;
|
||||
|
||||
return coords;
|
||||
}
|
||||
vec4 raymarchTest(
|
||||
in vec3 viewPosition,
|
||||
in vec2 dither
|
||||
){
|
||||
|
||||
vec3 color = vec3(0.0);
|
||||
float totalAbsorbance = 1.0;
|
||||
float expFactor = 16.0;
|
||||
|
||||
float minHeight = 250.0;
|
||||
float maxHeight = minHeight + 100.0;
|
||||
uniform float viewHeight;
|
||||
uniform float viewWidth;
|
||||
float godrayTest( in vec3 viewPos, in vec3 lightDir, float noise, float vanilladepth){
|
||||
|
||||
// return 1.0;1
|
||||
|
||||
float godrays = 0.0;
|
||||
float samples = 8.0;
|
||||
|
||||
float _near = near; float _far = far*4.0;
|
||||
|
||||
// #ifdef DISTANT_HORIZONS
|
||||
// bool depthCheck = true;
|
||||
// #else
|
||||
// bool depthCheck = false;
|
||||
// #endif
|
||||
|
||||
bool depthCheck = true;
|
||||
|
||||
if (depthCheck) {
|
||||
_near = dhNearPlane;
|
||||
_far = dhFarPlane;
|
||||
}
|
||||
|
||||
float lightRange = pow(clamp(-dot(normalize(viewPos), lightDir)+0.65,0.0,1.0),2.0);
|
||||
vec3 position = toClipSpace3_DH(viewPos, depthCheck) ;
|
||||
|
||||
#if defined DISTANT_HORIZONS
|
||||
float maxdist = dhFarPlane - 16.0;
|
||||
//prevents the ray from going behind the camera
|
||||
float rayLength = ((viewPos.z + lightDir.z * _far * sqrt(3.)) > -_near) ? (-_near - viewPos.z) / lightDir.z : _far * sqrt(3.);
|
||||
|
||||
vec3 direction = toClipSpace3_DH(viewPos + lightDir*rayLength, depthCheck) - position;
|
||||
|
||||
direction.xyz = direction.xyz / max(max(abs(direction.x)/0.0005, abs(direction.y)/0.0005),500.0); //fixed step size
|
||||
direction *= 60.0;
|
||||
|
||||
position.xy *= RENDER_SCALE;
|
||||
direction.xy *= RENDER_SCALE;
|
||||
|
||||
vec3 newPos = position + direction*noise;
|
||||
|
||||
vec2 screenEdges = 2.0/vec2(viewWidth, viewHeight);
|
||||
|
||||
for (int i = 0; i < int(samples); i++) {
|
||||
newPos.xy = clamp(newPos.xy, screenEdges, 1.0-screenEdges);
|
||||
|
||||
float sampleDepth = invLinZ(sqrt(texelFetch2D(colortex4, ivec2(newPos.xy/texelSize/4.0),0).a/65000.0));
|
||||
|
||||
#ifdef DISTANT_HORIZONS
|
||||
if(depthCheck) sampleDepth = texelFetch2D(dhDepthTex1, ivec2(newPos.xy/texelSize),0).x;
|
||||
#endif
|
||||
|
||||
godrays += (swapperlinZ(sampleDepth, _near, _far) > 1.0 ? 1.0 : lightRange);
|
||||
newPos += direction;
|
||||
}
|
||||
|
||||
return godrays/samples;
|
||||
}
|
||||
|
||||
vec4 waterVolumetrics_alt( vec3 rayStart, vec3 rayEnd, float estEndDepth, float estSunDepth, float rayLength, float dither, vec3 waterCoefs, vec3 scatterCoef, vec3 ambient, vec3 lightSource, float VdotL){
|
||||
int spCount = rayMarchSampleCount;
|
||||
|
||||
vec3 start = toShadowSpaceProjected(rayStart);
|
||||
vec3 end = toShadowSpaceProjected(rayEnd);
|
||||
vec3 dV = (end-start);
|
||||
|
||||
//limit ray length at 32 blocks for performance and reducing integration error
|
||||
//you can't see above this anyway
|
||||
float maxZ = min(rayLength,12.0)/(1e-8+rayLength);
|
||||
dV *= maxZ;
|
||||
rayLength *= maxZ;
|
||||
estEndDepth *= maxZ;
|
||||
estSunDepth *= maxZ;
|
||||
|
||||
vec3 wpos = mat3(gbufferModelViewInverse) * rayStart + gbufferModelViewInverse[3].xyz;
|
||||
vec3 dVWorld = (wpos - gbufferModelViewInverse[3].xyz);
|
||||
|
||||
#ifdef OVERWORLD_SHADER
|
||||
float phase = fogPhase(VdotL) * 5.0;
|
||||
#else
|
||||
float maxdist = far*4;
|
||||
float phase = 1.0;
|
||||
#endif
|
||||
|
||||
float referenceDistance = length(viewPosition) < maxdist ? length(viewPosition) - 1.0 : 100000000.0;
|
||||
|
||||
int SAMPLECOUNT = 8;
|
||||
|
||||
//project pixel position into projected shadowmap space
|
||||
vec3 wpos = mat3(gbufferModelViewInverse) * viewPosition + gbufferModelViewInverse[3].xyz;
|
||||
vec3 dVWorld = wpos - gbufferModelViewInverse[3].xyz;
|
||||
vec3 dVWorldN = normalize(dVWorld);
|
||||
|
||||
// dVWorld *= dVWorldN/abs(dVWorldN.y);
|
||||
// float maxLength = min(length(dVWorld), 16 * 8)/length(dVWorld);
|
||||
// dVWorld *= maxLength;
|
||||
|
||||
// float cloudRange = max(minHeight - cameraPosition.y,0.0);
|
||||
float cloudRange = max(minHeight - cameraPosition.y, 0.0);
|
||||
|
||||
vec3 rayDirection = dVWorldN.xyz * ( (maxHeight - minHeight) / length(alterCoords(dVWorldN, false)) / SAMPLECOUNT);
|
||||
vec3 absorbance = vec3(1.0);
|
||||
vec3 vL = vec3(0.0);
|
||||
|
||||
// float cloudRange = mix(max(cameraPosition.y - maxHeight,0.0), max(minHeight - cameraPosition.y,0.0), clamp(rayDirection.y,0.0,1.0));
|
||||
float expFactor = 11.0;
|
||||
vec3 sh = vec3(1.0);
|
||||
|
||||
|
||||
|
||||
vec3 rayProgress = rayDirection + cameraPosition + (rayDirection / length(alterCoords(rayDirection, false))) * 200.0;
|
||||
|
||||
float dL = length(rayDirection);
|
||||
// do this outside raymarch loop, masking the water surface is good enough
|
||||
#if defined OVERWORLD_SHADER
|
||||
sh *= GetCloudShadow(wpos+cameraPosition, WsunVec);
|
||||
#endif
|
||||
|
||||
// vec3 rayDirection = dVWorldN.xyz * ( (maxHeight - minHeight) / abs(dVWorldN.y) / SAMPLECOUNT);
|
||||
// float flip = mix(max(cameraPosition.y - maxHeight,0.0), max(minHeight - cameraPosition.y,0.0), clamp(rayDirection.y,0.0,1.0));
|
||||
// vec3 rayProgress = rayDirection*dither.x + cameraPosition + (rayDirection / abs(rayDirection.y)) *flip;
|
||||
// float dL = length(rayDirection);
|
||||
float thing = -normalize(dVWorld).y;
|
||||
thing = clamp(thing - 0.333,0.0,1.0);
|
||||
thing = pow(1.0-pow(1.0-thing,2.0),2.0);
|
||||
thing *= 15.0;
|
||||
|
||||
for (int i=0;i<spCount;i++) {
|
||||
float d = (pow(expFactor, float(i+dither)/float(spCount))/expFactor - 1.0/expFactor)/(1-1.0/expFactor);
|
||||
float dd = pow(expFactor, float(i+dither)/float(spCount)) * log(expFactor) / float(spCount)/(expFactor-1.0);
|
||||
|
||||
for (int i = 0; i < SAMPLECOUNT; i++) {
|
||||
// progressW = gbufferModelViewInverse[3].xyz+cameraPosition + d*dVWorld;
|
||||
|
||||
if(length(rayProgress - cameraPosition) > referenceDistance) break;
|
||||
vec3 progressW = gbufferModelViewInverse[3].xyz + cameraPosition + d*dVWorld;
|
||||
|
||||
float d = (pow(expFactor, float(i + dither.x)/float(SAMPLECOUNT))/expFactor - 1.0/expFactor)/(1-1.0/expFactor);
|
||||
float dd = pow(expFactor, float(i + dither.y)/float(SAMPLECOUNT)) * log(expFactor) / float(SAMPLECOUNT)/(expFactor-1.0);
|
||||
#ifdef OVERWORLD_SHADER
|
||||
vec3 spPos = start.xyz + dV*d;
|
||||
|
||||
//project into biased shadowmap space
|
||||
#ifdef DISTORT_SHADOWMAP
|
||||
float distortFactor = calcDistort(spPos.xy);
|
||||
#else
|
||||
float distortFactor = 1.0;
|
||||
#endif
|
||||
|
||||
vec3 pos = vec3(spPos.xy*distortFactor, spPos.z);
|
||||
if (abs(pos.x) < 1.0-0.5/2048. && abs(pos.y) < 1.0-0.5/2048.){
|
||||
pos = pos*vec3(0.5,0.5,0.5/6.0)+0.5;
|
||||
// sh = shadow2D( shadow, pos).x;
|
||||
|
||||
#ifdef TRANSLUCENT_COLORED_SHADOWS
|
||||
sh = vec3(shadow2D(shadowtex0, pos).x);
|
||||
|
||||
if(shadow2D(shadowtex1, pos).x > pos.z && sh.x < 1.0){
|
||||
vec4 translucentShadow = texture2D(shadowcolor0, pos.xy);
|
||||
if(translucentShadow.a < 0.9) sh = normalize(translucentShadow.rgb+0.0001);
|
||||
}
|
||||
#else
|
||||
sh *= vec3(shadow2D(shadow, pos).x);
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
vec3 sunAbsorbance = exp(-waterCoefs * estSunDepth * d);
|
||||
vec3 ambientAbsorbance = exp(-waterCoefs * (estEndDepth * d + thing));
|
||||
|
||||
vec3 Directlight = lightSource * sh * phase * sunAbsorbance;
|
||||
vec3 Indirectlight = ambient * ambientAbsorbance;
|
||||
|
||||
vec3 light = (Indirectlight + Directlight) * scatterCoef;
|
||||
|
||||
float theDistance = length(alterCoords(rayProgress-cameraPosition, true));
|
||||
|
||||
float fogDensity = min(max(texture2D(noisetex, rayProgress.xz/2048).b-0.5,0.0)*2.0,1.0) * clamp((minHeight+50) - theDistance, 0.0, clamp(theDistance-minHeight,0,1));
|
||||
|
||||
float fogVolumeCoeff = exp(-fogDensity*dd*dL);
|
||||
|
||||
// vec3 lighting = vec3(1.0) * (1.0-clamp((minHeight-50) - theDistance,0,1));
|
||||
|
||||
vec3 lighting = vec3(1.0) * clamp(minHeight - theDistance/1.2,0,1);
|
||||
|
||||
color += (lighting - lighting * fogVolumeCoeff) * totalAbsorbance;
|
||||
|
||||
totalAbsorbance *= fogVolumeCoeff;
|
||||
|
||||
rayProgress += rayDirection;
|
||||
|
||||
vec3 volumeCoeff = exp(-waterCoefs * dd * rayLength);
|
||||
vL += (light - light * volumeCoeff) / waterCoefs * absorbance;
|
||||
absorbance *= volumeCoeff;
|
||||
}
|
||||
return vec4(color, totalAbsorbance);
|
||||
|
||||
return vec4(vL, dot(absorbance,vec3(0.333333)));
|
||||
}
|
||||
|
||||
|
||||
//////////////////////////////VOID MAIN//////////////////////////////
|
||||
//////////////////////////////VOID MAIN//////////////////////////////
|
||||
//////////////////////////////VOID MAIN//////////////////////////////
|
||||
@@ -484,37 +588,61 @@ vec4 raymarchTest(
|
||||
|
||||
void main() {
|
||||
|
||||
/* RENDERTARGETS:0 */
|
||||
/* RENDERTARGETS:0,13 */
|
||||
|
||||
gl_FragData[1] = vec4(0.0,0.0,0.0, 1.0);
|
||||
float noise_2 = blueNoise();
|
||||
float noise_1 = max(1.0 - R2_dither(),0.0015);
|
||||
// float noise_2 = interleaved_gradientNoise_temporal();
|
||||
vec2 bnoise = blueNoise(gl_FragCoord.xy ).rg;
|
||||
|
||||
int seed = (frameCounter*5)%40000;
|
||||
vec2 r2_sequence = R2_samples(seed).xy;
|
||||
int seed = frameCounter%40000;
|
||||
vec2 r2_sequence = R2_samples(seed).xy*5.0;
|
||||
vec2 BN = fract(r2_sequence + bnoise);
|
||||
|
||||
// vec2 tc = floor(gl_FragCoord.xy)/VL_RENDER_RESOLUTION*texelSize + texelSize*0.5;
|
||||
vec2 tc = (gl_FragCoord.xy - 0.5)/VL_RENDER_RESOLUTION*texelSize;
|
||||
vec2 tc = floor(gl_FragCoord.xy - 0.5)/VL_RENDERING_RESOLUTION_SCALE*texelSize;
|
||||
|
||||
bool iswater = texture2D(colortex7,tc).a > 0.99;
|
||||
vec2 texcoord = tc/texelSize;
|
||||
vec2 texcoord_norm = tc;
|
||||
ivec2 texcoord_cast = ivec2(texcoord);
|
||||
// vec2 tc = floor(gl_FragCoord.xy)/VL_RENDERING_RESOLUTION_SCALE*texelSize + 0.5*texelSize;
|
||||
|
||||
float depth = texelFetch2D(depthtex0, ivec2(tc/texelSize),0).x;
|
||||
|
||||
float z0 = depth < 0.56 ? convertHandDepth(depth) : depth;
|
||||
#ifdef OVERWORLD_SHADER
|
||||
vec2 lightmap = decodeVec2(texelFetch2D(colortex14,texcoord_cast,0).x);
|
||||
|
||||
// #ifdef DISTANT_HORIZONS
|
||||
// if(z >= 1.0) lightmap.y = 0.99;
|
||||
// #endif
|
||||
#else
|
||||
vec2 lightmap = decodeVec2(texelFetch2D(colortex14,texcoord_cast,0).a);
|
||||
lightmap.y = 1.0;
|
||||
#endif
|
||||
|
||||
float alpha = texelFetch2D(colortex7,texcoord_cast,0).a ;
|
||||
float blendedAlpha = texelFetch2D(colortex2, texcoord_cast,0).a;
|
||||
|
||||
bool iswater = alpha > 0.99;
|
||||
|
||||
float z0 = texelFetch2D(depthtex0, texcoord_cast,0).x;
|
||||
float z1 = texelFetch2D(depthtex1, texcoord_cast,0).x;
|
||||
|
||||
#ifdef DISTANT_HORIZONS
|
||||
float DH_z0 = texelFetch2D(dhDepthTex, ivec2(tc/texelSize),0).x;
|
||||
float DH_z0 = texelFetch2D(dhDepthTex, texcoord_cast,0).x;
|
||||
float DH_z1 = texelFetch2D(dhDepthTex1, texcoord_cast,0).x;
|
||||
#else
|
||||
float DH_z0 = 0.0;
|
||||
float DH_z1 = 0.0;
|
||||
#endif
|
||||
|
||||
vec3 viewPos0 = toScreenSpace_DH(tc/RENDER_SCALE, z0, DH_z0);
|
||||
vec3 viewPos0_water = toScreenSpace(vec3(tc/RENDER_SCALE, z0));
|
||||
vec3 viewPos1 = toScreenSpace_DH(tc/RENDER_SCALE, z1, DH_z1);
|
||||
vec3 playerPos = mat3(gbufferModelViewInverse) * viewPos0 + gbufferModelViewInverse[3].xyz;
|
||||
vec3 playerPos_normalized = normalize(playerPos);
|
||||
|
||||
float Vdiff = distance(viewPos1, viewPos0);
|
||||
float estimatedDepth = Vdiff * abs(playerPos_normalized.y);
|
||||
float estimatedSunDepth = Vdiff / abs(WsunVec.y); //assuming water plane
|
||||
|
||||
float dirtAmount = Dirt_Amount;
|
||||
vec3 waterEpsilon = vec3(Water_Absorb_R, Water_Absorb_G, Water_Absorb_B);
|
||||
vec3 dirtEpsilon = vec3(Dirt_Absorb_R, Dirt_Absorb_G, Dirt_Absorb_B);
|
||||
@@ -524,7 +652,29 @@ void main() {
|
||||
vec3 directLightColor = lightCol.rgb / 2400.0;
|
||||
vec3 indirectLightColor = averageSkyCol / 1200.0;
|
||||
vec3 indirectLightColor_dynamic = averageSkyCol_Clouds / 1200.0;
|
||||
|
||||
vec3 indirectLight = indirectLightColor_dynamic * skyLightLevelSmooth * ambient_brightness;
|
||||
float minimumLightAmount = 0.02*nightVision + 0.005 * mix(MINIMUM_INDOOR_LIGHT, MINIMUM_OUTDOOR_LIGHT, skyLightLevelSmooth);
|
||||
indirectLight += vec3(1.0) * minimumLightAmount;
|
||||
|
||||
vec3 indirectLight_fog = indirectLightColor * skyLightLevelSmooth * ambient_brightness;
|
||||
indirectLight_fog += vec3(1.0) * minimumLightAmount;
|
||||
|
||||
float cloudPlaneDistance = 0.0;
|
||||
|
||||
// #ifdef DISTANT_HORIZONS
|
||||
// float godrays = godrayTest(viewPos0, normalize(WsunVec*mat3(gbufferModelViewInverse)),BN.x, z0);
|
||||
// #else
|
||||
// float godrays = 1.0;
|
||||
// #endifd
|
||||
|
||||
#if defined LPV_VL_FOG_ILLUMINATION
|
||||
vec4 LPV_ILLUMINATION = raymarchLPV(viewPos0, R2_dither());
|
||||
#else
|
||||
vec4 LPV_ILLUMINATION = vec4(0.0,0.0,0.0,1.0);
|
||||
#endif
|
||||
|
||||
float passAbsorbance = 1.0;
|
||||
|
||||
#if defined OVERWORLD_SHADER
|
||||
vec4 VolumetricClouds = GetVolumetricClouds(viewPos0, BN, WsunVec, directLightColor, indirectLightColor, cloudPlaneDistance);
|
||||
@@ -536,33 +686,64 @@ void main() {
|
||||
VolumetricClouds.a = mix(VolumetricClouds.a, 1.0, skyhole);
|
||||
}
|
||||
#endif
|
||||
|
||||
vec4 VolumetricFog = GetVolumetricFog(viewPos0, BN, WsunVec, directLightColor, indirectLight_fog, indirectLight, cloudPlaneDistance);
|
||||
|
||||
#if defined LPV_VL_FOG_ILLUMINATION
|
||||
VolumetricFog.a *= LPV_ILLUMINATION.a;
|
||||
VolumetricFog.rgb = VolumetricFog.rgb * LPV_ILLUMINATION.a + LPV_ILLUMINATION.rgb;
|
||||
#endif
|
||||
|
||||
// for bloomy fog mask
|
||||
gl_FragData[1].a = VolumetricFog.a;
|
||||
|
||||
VolumetricFog = vec4(VolumetricClouds.rgb*VolumetricFog.a + VolumetricFog.rgb, VolumetricFog.a*VolumetricClouds.a);
|
||||
#endif
|
||||
|
||||
#ifdef OVERWORLD_SHADER
|
||||
float atmosphereAlpha = 1.0;
|
||||
|
||||
vec3 sceneColor = texelFetch2D(colortex3,ivec2(tc/texelSize),0).rgb * VolumetricClouds.a + VolumetricClouds.rgb;
|
||||
vec4 VolumetricFog = GetVolumetricFog(viewPos0, WsunVec, BN, directLightColor, indirectLightColor, indirectLightColor_dynamic, atmosphereAlpha, VolumetricClouds.rgb, cloudPlaneDistance);
|
||||
#endif
|
||||
|
||||
#if defined NETHER_SHADER || defined END_SHADER
|
||||
vec4 VolumetricFog = GetVolumetricFog(viewPos0, BN.x, BN.y);
|
||||
#endif
|
||||
|
||||
#if defined LPV_VL_FOG_ILLUMINATION
|
||||
VolumetricFog.a *= LPV_ILLUMINATION.a;
|
||||
VolumetricFog.rgb = VolumetricFog.rgb * LPV_ILLUMINATION.a + LPV_ILLUMINATION.rgb;
|
||||
#endif
|
||||
|
||||
#if defined OVERWORLD_SHADER
|
||||
VolumetricFog = vec4(VolumetricClouds.rgb * VolumetricFog.a + VolumetricFog.rgb, VolumetricFog.a*VolumetricClouds.a);
|
||||
// for bloomy fog mask
|
||||
gl_FragData[1].a = VolumetricFog.a;
|
||||
#endif
|
||||
|
||||
if (isEyeInWater == 1){
|
||||
vec4 underWaterFog = waterVolumetrics(vec3(0.0), viewPos0_water, length(viewPos0_water), BN, totEpsilon, scatterCoef, indirectLightColor_dynamic, directLightColor , dot(normalize(viewPos0_water), normalize(sunVec* lightCol.a ) ));
|
||||
|
||||
vec4 underWaterFog = waterVolumetrics(vec3(0.0), viewPos0, length(viewPos0), BN, totEpsilon, scatterCoef, indirectLightColor_dynamic, directLightColor , dot(normalize(viewPos0), normalize(sunVec* lightCol.a ) ), LPV_ILLUMINATION.rgb);
|
||||
VolumetricFog = vec4(underWaterFog.rgb, 1.0);
|
||||
}
|
||||
|
||||
|
||||
// VolumetricFog = raymarchTest2(viewPos0, BN.x);
|
||||
// VolumetricFog = vec4(godrays,godrays,godrays,0.0);
|
||||
// VolumetricFog = raymarchTest(viewPos0, BN);
|
||||
|
||||
// VolumetricFog = vec4(0.0,0.0,0.0,1.0);
|
||||
// VolumetricFog.rgb = vec3(0);
|
||||
gl_FragData[0] = clamp(VolumetricFog, 0.0, 65000.0);
|
||||
|
||||
if(blendedAlpha > 0.0 || iswater){
|
||||
|
||||
gl_FragData[1] = vec4(0.0,0.0,0.0,1.0);
|
||||
|
||||
#if defined OVERWORLD_SHADER
|
||||
VolumetricClouds = GetVolumetricClouds(viewPos1, BN, WsunVec, directLightColor, indirectLightColor, cloudPlaneDistance);
|
||||
|
||||
VolumetricFog = GetVolumetricFog(viewPos1, vec2(noise_1), WsunVec, directLightColor, indirectLight_fog, indirectLight, cloudPlaneDistance);
|
||||
|
||||
VolumetricFog = vec4(VolumetricClouds.rgb*VolumetricFog.a + VolumetricFog.rgb, VolumetricFog.a*VolumetricClouds.a);
|
||||
#endif
|
||||
|
||||
#if defined NETHER_SHADER || defined END_SHADER
|
||||
VolumetricFog = GetVolumetricFog(viewPos1, noise_1, noise_1);
|
||||
#endif
|
||||
|
||||
gl_FragData[1] = clamp(VolumetricFog, 0.0, 65000.0);
|
||||
|
||||
if(iswater && isEyeInWater != 1){
|
||||
vec4 underWaterVL = waterVolumetrics_alt(viewPos0, viewPos1, estimatedDepth, estimatedSunDepth, Vdiff, noise_1, totEpsilon, scatterCoef, indirectLight, directLightColor, dot(normalize(viewPos0), normalize(sunVec*lightCol.a)));
|
||||
gl_FragData[1] = clamp(underWaterVL, 0.0, 65000.0);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -6,10 +6,6 @@ flat varying vec4 lightCol;
|
||||
flat varying vec3 averageSkyCol;
|
||||
flat varying vec3 averageSkyCol_Clouds;
|
||||
|
||||
#if defined LPV_VL_FOG_ILLUMINATION && defined IS_LPV_ENABLED
|
||||
flat varying float exposure;
|
||||
#endif
|
||||
|
||||
#include "/lib/scene_controller.glsl"
|
||||
|
||||
|
||||
@@ -45,7 +41,7 @@ uniform float frameTimeCounter;
|
||||
void main() {
|
||||
gl_Position = ftransform();
|
||||
|
||||
gl_Position.xy = (gl_Position.xy*0.5+0.5)*(0.01+VL_RENDER_RESOLUTION)*2.0-1.0;
|
||||
gl_Position.xy = (gl_Position.xy*0.5+0.5)*(0.01+VL_RENDERING_RESOLUTION_SCALE)*2.0-1.0;
|
||||
|
||||
|
||||
#ifdef OVERWORLD_SHADER
|
||||
@@ -53,7 +49,9 @@ void main() {
|
||||
averageSkyCol = texelFetch2D(colortex4,ivec2(1,37),0).rgb;
|
||||
averageSkyCol_Clouds = texelFetch2D(colortex4,ivec2(0,37),0).rgb;
|
||||
|
||||
readSceneControllerParameters(colortex4, parameters.smallCumulus, parameters.largeCumulus, parameters.altostratus, parameters.fog);
|
||||
#define READ_SCENE_CONTROLLER_PARAMETERS
|
||||
#include "/lib/scene_controller.glsl"
|
||||
// readSceneControllerParameters(colortex4, parameters.smallCumulus, parameters.largeCumulus, parameters.altostratus, parameters.fog);
|
||||
#endif
|
||||
|
||||
#ifdef NETHER_SHADER
|
||||
@@ -79,14 +77,9 @@ void main() {
|
||||
|
||||
refractedSunVec = refract(lightCol.a*WsunVec, -vec3(0.0,1.0,0.0), 1.0/1.33333);
|
||||
|
||||
#if defined LPV_VL_FOG_ILLUMINATION && defined IS_LPV_ENABLED
|
||||
exposure = texelFetch2D(colortex4,ivec2(10,37),0).r;
|
||||
#endif
|
||||
|
||||
#if TAA_MODE > 0
|
||||
TAA_Offset = offsets[framemod8];
|
||||
#else
|
||||
TAA_Offset = vec2(0.0);
|
||||
#endif
|
||||
|
||||
}
|
||||
}
|
||||
@@ -31,13 +31,13 @@ uniform sampler2D colortex9;
|
||||
uniform sampler2D colortex10;
|
||||
uniform sampler2D colortex11;
|
||||
uniform sampler2D colortex12;
|
||||
// uniform sampler2D colortex13;
|
||||
uniform sampler2D colortex13;
|
||||
// uniform sampler2D colortex14;
|
||||
// uniform sampler2D colortex15;
|
||||
uniform vec2 texelSize;
|
||||
|
||||
// uniform float viewHeight;
|
||||
// uniform float viewWidth;
|
||||
uniform float viewHeight;
|
||||
uniform float viewWidth;
|
||||
// uniform vec3 sunVec;
|
||||
uniform float frameTimeCounter;
|
||||
uniform int frameCounter;
|
||||
@@ -269,18 +269,18 @@ vec3 toClipSpace3Prev_DH( vec3 viewSpacePosition, bool depthCheck ) {
|
||||
#endif
|
||||
}
|
||||
|
||||
vec4 bilateralUpsample(out float outerEdgeResults, float referenceDepth, sampler2D depth, bool hand){
|
||||
vec4 bilateralUpsample(vec2 fragcoord, sampler2D colortex, out float outerEdgeResults, float referenceDepth, sampler2D depth, bool hand){
|
||||
|
||||
vec4 colorSum = vec4(0.0);
|
||||
float edgeSum = 0.0;
|
||||
float threshold = 0.005;
|
||||
|
||||
vec2 coord = gl_FragCoord.xy - 1.5;
|
||||
vec2 coord = fragcoord - 1.5;
|
||||
|
||||
vec2 UV = coord;
|
||||
const ivec2 SCALE = ivec2(1.0/VL_RENDER_RESOLUTION);
|
||||
ivec2 UV_DEPTH = ivec2(UV*VL_RENDER_RESOLUTION)*SCALE;
|
||||
ivec2 UV_COLOR = ivec2(UV*VL_RENDER_RESOLUTION);
|
||||
const ivec2 SCALE = ivec2(1.0/VL_RENDERING_RESOLUTION_SCALE);
|
||||
ivec2 UV_DEPTH = ivec2(UV*VL_RENDERING_RESOLUTION_SCALE)*SCALE;
|
||||
ivec2 UV_COLOR = ivec2(UV*VL_RENDERING_RESOLUTION_SCALE);
|
||||
ivec2 UV_NOISE = ivec2(gl_FragCoord.xy*texelSize + 1);
|
||||
|
||||
ivec2 OFFSET[5] = ivec2[](
|
||||
@@ -302,7 +302,7 @@ vec4 bilateralUpsample(out float outerEdgeResults, float referenceDepth, sampler
|
||||
float edgeDiff = abs(offsetDepth - referenceDepth) < threshold ? 1.0 : 1e-7;
|
||||
outerEdgeResults = max(outerEdgeResults, abs(referenceDepth - offsetDepth));
|
||||
|
||||
vec4 offsetColor = texelFetch2D(colortex0, UV_COLOR + OFFSET[i] + UV_NOISE, 0).rgba;
|
||||
vec4 offsetColor = texelFetch2D(colortex, UV_COLOR + OFFSET[i] + UV_NOISE, 0).rgba;
|
||||
colorSum += offsetColor*edgeDiff;
|
||||
edgeSum += edgeDiff;
|
||||
|
||||
@@ -314,9 +314,11 @@ vec4 bilateralUpsample(out float outerEdgeResults, float referenceDepth, sampler
|
||||
}
|
||||
|
||||
vec4 VLTemporalFiltering(vec3 viewPos, in float referenceDepth, sampler2D depth, bool hand){
|
||||
vec2 offsetTexcoord = gl_FragCoord.xy*texelSize;
|
||||
vec2 VLtexCoord = offsetTexcoord * VL_RENDER_RESOLUTION;
|
||||
|
||||
vec2 screenEdges = 2.0/vec2(viewWidth, viewHeight);
|
||||
|
||||
vec2 offsetTexcoord = clamp(gl_FragCoord.xy*texelSize, screenEdges, 1.0-screenEdges);
|
||||
vec2 VLtexCoord = offsetTexcoord * VL_RENDERING_RESOLUTION_SCALE;
|
||||
|
||||
// get previous frames position stuff for UV
|
||||
vec3 playerPos = mat3(gbufferModelViewInverse) * viewPos + gbufferModelViewInverse[3].xyz + (cameraPosition - previousCameraPosition);
|
||||
vec3 previousPosition = mat3(gbufferPreviousModelView) * playerPos + gbufferPreviousModelView[3].xyz;
|
||||
@@ -330,11 +332,12 @@ vec4 VLTemporalFiltering(vec3 viewPos, in float referenceDepth, sampler2D depth,
|
||||
// to fill pixel gaps in geometry edges, do a bilateral upsample.
|
||||
// pass a mask to only show upsampled color around the edges of blocks. this is so it doesnt blur reprojected results.
|
||||
float outerEdgeResults = 0.0;
|
||||
vec4 upsampledCurrentFrame = bilateralUpsample(outerEdgeResults, referenceDepth, depth, hand);
|
||||
vec4 upsampledCurrentFrame = bilateralUpsample(gl_FragCoord.xy , colortex0, outerEdgeResults, referenceDepth, depth, hand);
|
||||
// vec4 upsampledCurrentFrame = BilateralUpscale(colortex0, depth, gl_FragCoord.xy - 1.5, referenceDepth);
|
||||
|
||||
// return vec4(outerEdgeResults,0,0,1);
|
||||
// return upsampledCurrentFrame;
|
||||
// return currentFrame;
|
||||
|
||||
if (previousPosition.x < 0.0 || previousPosition.y < 0.0 || previousPosition.x > 1.0 || previousPosition.y > 1.0) return currentFrame;
|
||||
|
||||
@@ -398,15 +401,14 @@ void blendAllFogTypes( inout vec3 color, inout float bloomyFogMult, vec4 volumet
|
||||
float fogfade = 1.0 - max((1.0 - linearDistance / min(far, 16.0*7.0) ),0);
|
||||
color.rgb += (transmittance2 * scatterCoef) * fogfade;
|
||||
|
||||
bloomyFogMult *= dot(transmittance,vec3(0.3333))*0.5;
|
||||
bloomyFogMult *= dot(transmittance,vec3(0.3333))*0.75 + 0.25;
|
||||
}
|
||||
|
||||
/// blend volumetrics
|
||||
color = color * volumetrics.a + volumetrics.rgb;
|
||||
|
||||
// make bloomy fog only work outside of the overworld (unless underwater)
|
||||
#if !defined OVERWORLD_SHADER
|
||||
bloomyFogMult *= volumetrics.a;
|
||||
bloomyFogMult = min(bloomyFogMult, volumetrics.a);
|
||||
#endif
|
||||
|
||||
// blend vanilla fogs (blindness, darkness, lava, powdered snow)
|
||||
@@ -457,8 +459,7 @@ void main() {
|
||||
float depth = texelFetch2D(depthtex0, ivec2(gl_FragCoord.xy),0).x;
|
||||
bool hand = depth < 0.56;
|
||||
float z = depth;
|
||||
|
||||
float z2 = texture2D(depthtex1, texcoord).x;
|
||||
float z2 = texelFetch2D(depthtex1, ivec2(gl_FragCoord.xy),0).x;
|
||||
float frDepth = linearize(z);
|
||||
|
||||
float swappedDepth = z;
|
||||
@@ -518,7 +519,7 @@ void main() {
|
||||
// 0.9 = entity mask
|
||||
// 0.8 = reflective entities
|
||||
// 0.7 = reflective blocks
|
||||
float translucentMasks = texture2D(colortex7, texcoord).a;
|
||||
float translucentMasks = texelFetch2D(colortex7,ivec2(gl_FragCoord.xy),0).a;
|
||||
|
||||
bool isWater = translucentMasks > 0.99;
|
||||
bool isReflectiveEntity = abs(translucentMasks - 0.8) < 0.01;
|
||||
@@ -538,16 +539,32 @@ void main() {
|
||||
|
||||
////// --------------- MAIN COLOR BUFFER
|
||||
////// --------------- distort texcoords as a refraction effect
|
||||
|
||||
vec2 refractedCoord = texcoord;
|
||||
|
||||
#if FAKE_REFRACTION_AMOUNT > 0
|
||||
vec3 color = doRefractionEffect(refractedCoord, tangentNormals.xy, linearDistance, isReflectiveEntity, isWater && isEyeInWater == 1);
|
||||
#else
|
||||
vec3 color = texture2D(colortex3, texcoord).rgb;
|
||||
#endif
|
||||
|
||||
|
||||
////// --------------- get volumetrics
|
||||
float blank = 0.0;
|
||||
#ifdef DISTANT_HORIZONS
|
||||
vec4 VLBehindTranslucents = bilateralUpsample(refractedCoord/texelSize, colortex13, blank, DH_mixedLinearZ, depthtex1, hand);
|
||||
#else
|
||||
vec4 VLBehindTranslucents = bilateralUpsample(refractedCoord/texelSize, colortex13, blank, linearize(texelFetch2D(depthtex1, ivec2(refractedCoord/texelSize),0).x), depthtex1, hand);
|
||||
#endif
|
||||
|
||||
////// --------------- START BLENDING FOGS AND FORWARD RENDERED COLOR
|
||||
vec4 TranslucentShader = texture2D(colortex2, texcoord);
|
||||
|
||||
// ensure that bloomy fog mask in this VLBehindTranslucents.a does not darken outside of glass areas.
|
||||
if(TranslucentShader.a > 0.0 && TranslucentShader.a < 1.0) color.rgb = color.rgb * VLBehindTranslucents.a + VLBehindTranslucents.rgb;
|
||||
// to avoid bloomy fog applying to the surface of water, and the clouds, swap between high and low quality VL buffers.
|
||||
bloomyFogMult *= isWater ? temporallyFilteredVL.a * 0.75 + 0.25 : (TranslucentShader.a < 0.9995 ? VLBehindTranslucents.a * 0.75 + 0.25 : 1.0);
|
||||
|
||||
// blend border fog. be sure to blend before and after forward rendered color blends.
|
||||
#if defined BorderFog && defined OVERWORLD_SHADER
|
||||
vec4 borderFog = vec4(skyGroundColor, getBorderFogDensity(linearDistance_cylinder, playerPos_normalized, swappedDepth >= 1.0));
|
||||
@@ -588,17 +605,23 @@ void main() {
|
||||
|
||||
////// --------------- bloomy rain effect
|
||||
#ifdef OVERWORLD_SHADER
|
||||
float rainDrops = clamp(texture2D(colortex9,texcoord).a,0.0,1.0);
|
||||
if(rainDrops > 0.0) bloomyFogMult *= clamp(1.0 - pow(rainDrops*5.0,2),0.0,1.0);
|
||||
|
||||
float rainDrops = texelFetch2D(colortex9,ivec2(texcoord/texelSize),0).a;
|
||||
|
||||
if(rainDrops > 0.0) {
|
||||
bloomyFogMult *= clamp(1.0 - pow(rainDrops*5.0,2),0.0,1.0);
|
||||
color.rgb += color.rgb * 0.2 * rainDrops;
|
||||
}
|
||||
#endif
|
||||
|
||||
////// --------------- FINALIZE
|
||||
#ifdef display_LUT
|
||||
float zoomLevel = 1.0;
|
||||
vec3 thingy = texelFetch2D(colortex4,ivec2(gl_FragCoord.xy/zoomLevel),0).rgb /1200.0;
|
||||
vec2 coord = (gl_FragCoord.xy/2.0);
|
||||
vec3 thingy = texelFetch2D(colortex4,ivec2(coord),0).rgb /1200.0;
|
||||
coord *= texelSize;
|
||||
|
||||
if(luma(thingy) > 0.0){
|
||||
color.rgb = thingy;
|
||||
if(coord.x < 1 && coord.x > 0 && coord.y < 1 && coord.y > 0){
|
||||
color.rgb = thingy;
|
||||
bloomyFogMult = 1.0;
|
||||
}
|
||||
|
||||
@@ -607,8 +630,8 @@ void main() {
|
||||
#else
|
||||
if( hideGUI == 1) color.rgb = volumetricsFromTex(playerPos_normalized, colortex4, 0.0).rgb/1200.0;
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
gl_FragData[0].r = bloomyFogMult; // pass fog alpha so bloom can do bloomy fog
|
||||
gl_FragData[1].rgb = clamp(color.rgb, 0.0,68000.0);
|
||||
|
||||
@@ -622,5 +645,4 @@ void main() {
|
||||
// gl_FragData[1].rgb = vec3(1.0) * ld( (data.a > 0.0 ? data.a : texture2D(depthtex0, texcoord).x ) ) ;
|
||||
// gl_FragData[1].rgb = gl_FragData[1].rgb * (1.0-TranslucentShader.a) + TranslucentShader.rgb*10.0;
|
||||
// gl_FragData[1].rgb = 1-(texcoord.x > 0.5 ? vec3(TranslucentShader.a) : vec3(data.a));
|
||||
|
||||
}
|
||||
@@ -23,10 +23,6 @@ uniform int framemod8;
|
||||
#include "/lib/TAA_jitter.glsl"
|
||||
|
||||
|
||||
|
||||
#ifdef OVERWORLD_SHADER
|
||||
|
||||
#endif
|
||||
//////////////////////////////VOID MAIN//////////////////////////////
|
||||
//////////////////////////////VOID MAIN//////////////////////////////
|
||||
//////////////////////////////VOID MAIN//////////////////////////////
|
||||
|
||||
@@ -1,8 +1,15 @@
|
||||
#include "/lib/settings.glsl"
|
||||
|
||||
uniform sampler2D colortex3;
|
||||
|
||||
uniform vec2 texelSize;
|
||||
uniform int framemod8;
|
||||
#include "/lib/TAA_jitter.glsl"
|
||||
// Compute 3x3 min max for TAA
|
||||
|
||||
uniform float viewHeight;
|
||||
uniform float viewWidth;
|
||||
|
||||
//////////////////////////////VOID MAIN//////////////////////////////
|
||||
//////////////////////////////VOID MAIN//////////////////////////////
|
||||
//////////////////////////////VOID MAIN//////////////////////////////
|
||||
@@ -11,7 +18,9 @@ uniform sampler2D colortex3;
|
||||
|
||||
void main() {
|
||||
/* DRAWBUFFERS:06 */
|
||||
ivec2 center = ivec2(gl_FragCoord.xy);
|
||||
vec2 screenEdges = 2.0/vec2(viewWidth, viewHeight);
|
||||
vec2 jitter = offsets[framemod8]*texelSize*0.5;
|
||||
ivec2 center = ivec2(clamp(gl_FragCoord.xy*texelSize, screenEdges, 1.0-screenEdges)/texelSize);
|
||||
|
||||
// vec3 current = texelFetch2D(colortex3, center, 0).rgb;
|
||||
// vec3 cMin = current;
|
||||
|
||||
@@ -14,12 +14,21 @@ const int colortex9Format = RGBA8; // rain in alpha
|
||||
const int colortex10Format = RGBA16F; // resourcepack Skies
|
||||
const int colortex11Format = RGBA16; // unchanged translucents albedo, alpha and tangent normals
|
||||
const int colortex12Format = RGBA16F; // DISTANT HORIZONS + VANILLA MIXED DEPTHs
|
||||
|
||||
const int colortex13Format = RGBA16F; // low res VL (composite5->composite15)
|
||||
const int colortex14Format = RGBA16; // rg = SSAO and SS-SSS. a = skylightmap for translucents.
|
||||
const int colortex14Format = RGBA16; // rg = SSAO and SS-SSS. a = skylightmap for translucents.
|
||||
const int colortex15Format = RGBA8; // flat normals and vanilla AO
|
||||
*/
|
||||
|
||||
#ifdef SCREENSHOT_MODE
|
||||
/*
|
||||
const int colortex5Format = RGBA32F; //TAA buffer (everything)
|
||||
*/
|
||||
#else
|
||||
/*
|
||||
const int colortex5Format = RGBA16F; //TAA buffer (everything)
|
||||
*/
|
||||
#endif
|
||||
|
||||
//no need to clear the buffers, saves a few fps
|
||||
const bool colortex0Clear = false;
|
||||
const bool colortex1Clear = false;
|
||||
@@ -38,18 +47,6 @@ const bool colortex13Clear = false;
|
||||
const bool colortex14Clear = true;
|
||||
const bool colortex15Clear = false;
|
||||
|
||||
|
||||
#ifdef SCREENSHOT_MODE
|
||||
/*
|
||||
const int colortex5Format = RGBA32F; //TAA buffer (everything)
|
||||
*/
|
||||
#else
|
||||
/*
|
||||
const int colortex5Format = RGBA16F; //TAA buffer (everything)
|
||||
*/
|
||||
#endif
|
||||
|
||||
|
||||
varying vec2 texcoord;
|
||||
flat varying float tempOffsets;
|
||||
uniform sampler2D colortex0;
|
||||
|
||||
@@ -61,6 +61,15 @@ uniform ivec2 eyeBrightnessSmooth;
|
||||
uniform float caveDetection;
|
||||
uniform int isEyeInWater;
|
||||
|
||||
uniform float dayChangeSmooth;
|
||||
uniform bool worldTimeChangeCheck;
|
||||
|
||||
uniform int hideGUI;
|
||||
|
||||
uniform float near;
|
||||
uniform float dhFarPlane;
|
||||
uniform float dhNearPlane;
|
||||
|
||||
vec4 lightCol = vec4(lightSourceColor, float(sunElevation > 1e-5)*2-1.);
|
||||
|
||||
#include "/lib/util.glsl"
|
||||
@@ -106,9 +115,6 @@ vec3 toScreenSpace(vec3 p) {
|
||||
return viewPos.xyz / viewPos.w;
|
||||
}
|
||||
|
||||
uniform float near;
|
||||
uniform float dhFarPlane;
|
||||
uniform float dhNearPlane;
|
||||
|
||||
|
||||
#include "/lib/DistantHorizons_projections.glsl"
|
||||
@@ -144,6 +150,10 @@ float linearizeDepthFast(const in float depth, const in float near, const in flo
|
||||
float invLinZ (float lindepth){
|
||||
return -((2.0*near/lindepth)-far-near)/(far-near);
|
||||
}
|
||||
|
||||
// #define LIGHTNINGFLASH_VL
|
||||
#include "/lib/lightning_stuff.glsl"
|
||||
|
||||
#ifdef OVERWORLD_SHADER
|
||||
|
||||
// uniform sampler2D colortex4;
|
||||
@@ -161,7 +171,6 @@ float invLinZ (float lindepth){
|
||||
|
||||
// #define TEST
|
||||
#define TIMEOFDAYFOG
|
||||
#include "/lib/lightning_stuff.glsl"
|
||||
|
||||
#include "/lib/scene_controller.glsl"
|
||||
|
||||
@@ -195,10 +204,6 @@ vec2 R2_samples(float n){
|
||||
return fract(alpha * n);
|
||||
}
|
||||
|
||||
uniform float dayChangeSmooth;
|
||||
uniform bool worldTimeChangeCheck;
|
||||
|
||||
uniform int hideGUI;
|
||||
|
||||
|
||||
void main() {
|
||||
@@ -219,7 +224,7 @@ float mixhistory = 0.06;
|
||||
if (gl_FragCoord.x > 1 && gl_FragCoord.x < 4 && gl_FragCoord.y > 1 && gl_FragCoord.y < 4){
|
||||
mixhistory = 10.0 * frameTime;
|
||||
|
||||
gl_FragData[0].rgb = writeSceneControllerParameters(gl_FragCoord.xy, parameters.smallCumulus, parameters.largeCumulus, parameters.altostratus, parameters.fog);
|
||||
gl_FragData[0].rgb = writeSceneControllerParameters(gl_FragCoord.xy, parameters.smallCumulus, parameters.largeCumulus, parameters.altostratus, parameters.fog, parameters.localFog, parameters.localFogColor);
|
||||
}
|
||||
|
||||
///////////////////////////////
|
||||
@@ -298,11 +303,11 @@ if (gl_FragCoord.x > 18. && gl_FragCoord.y > 1. && gl_FragCoord.x < 18+257){
|
||||
|
||||
vec3 mC = vec3(fog_coefficientMieR*1e-6, fog_coefficientMieG*1e-6, fog_coefficientMieB*1e-6);
|
||||
|
||||
sky = calculateAtmosphere((averageSkyCol*4000.0/2.0), viewVector, vec3(0.0,1.0,0.0), WsunVec, -WsunVec, planetSphere, skyAbsorb, 10, blueNoise());
|
||||
sky = calculateAtmosphere(averageSkyCol*2000.0, viewVector, vec3(0.0,1.0,0.0), WsunVec, -WsunVec, planetSphere, skyAbsorb, 10, blueNoise());
|
||||
|
||||
// fade atmosphere conditions for rain away when you pass above the cloud plane.
|
||||
// float heightRelativeToClouds = clamp(1.0 - max(eyeAltitude - CloudLayer0_height,0.0) / 200.0 ,0.0,1.0);
|
||||
// if(rainStrength > 0.0) sky = mix(sky, 3.0 + averageSkyCol*4000 * (skyAbsorb*0.7+0.3), clamp(1.0 - exp(pow(clamp(-viewVector.y+0.9,0.0,1.0),2) * -5.0),0.0,1.0) * heightRelativeToClouds * rainStrength);
|
||||
float heightRelativeToClouds = clamp(1.0 - max(eyeAltitude - CloudLayer0_height,0.0) / 200.0 ,0.0,1.0);
|
||||
if(rainStrength > 0.0) sky = mix(sky, averageSkyCol * 2000.0 * (skyAbsorb*0.7+0.3), clamp(1.0 - exp(pow(clamp(-viewVector.y+0.9,0.0,1.0),2) * -5.0),0.0,1.0) * heightRelativeToClouds * rainStrength);
|
||||
|
||||
#ifdef AEROCHROME_MODE
|
||||
sky *= vec3(0.0, 0.18, 0.35);
|
||||
@@ -316,6 +321,7 @@ if (gl_FragCoord.x > 18. && gl_FragCoord.y > 1. && gl_FragCoord.x < 18+257){
|
||||
/// --- Sky + clouds + fog
|
||||
if (gl_FragCoord.x > 18.+257. && gl_FragCoord.y > 1. && gl_FragCoord.x < 18+257+257.){
|
||||
vec2 p = clamp(floor(gl_FragCoord.xy-vec2(18.+257,1.))/256.+tempOffsets/256.,0.0,1.0);
|
||||
|
||||
vec3 viewVector = cartToSphere(p);
|
||||
|
||||
vec3 viewPos = mat3(gbufferModelView)*viewVector*1024.0;
|
||||
@@ -339,9 +345,7 @@ if (gl_FragCoord.x > 18.+257. && gl_FragCoord.y > 1. && gl_FragCoord.x < 18+257+
|
||||
|
||||
float cloudPlaneDistance = 0.0;
|
||||
vec4 volumetricClouds = GetVolumetricClouds(viewPos, vec2(noise, 1.0-noise), WsunVec, suncol*2.5, skyGroundCol/30.0, cloudPlaneDistance);
|
||||
|
||||
float atmosphereAlpha = 1.0;
|
||||
vec4 volumetricFog = GetVolumetricFog(viewPos, WsunVec, vec2(noise, 1.0-noise), suncol*2.5, skyGroundCol/30.0, averageSkyCol_Clouds*5.0, atmosphereAlpha, volumetricClouds.rgb, cloudPlaneDistance);
|
||||
vec4 volumetricFog = GetVolumetricFog(viewPos,vec2(noise, 1.0-noise), WsunVec, suncol*2.5, skyGroundCol/30.0, averageSkyCol_Clouds*5.0, cloudPlaneDistance);
|
||||
|
||||
sky = sky * volumetricClouds.a + volumetricClouds.rgb / 5.0;
|
||||
sky = sky * volumetricFog.a + volumetricFog.rgb / 5.0;
|
||||
|
||||
@@ -123,19 +123,20 @@ void main() {
|
||||
// }
|
||||
float maxIT = 20.0;
|
||||
for (int i = 0; i < int(maxIT); i++) {
|
||||
vec2 ij = R2_samples(((i*50+1)%1000)*int(maxIT)+i) ;//* vec2(0.3183,0.9000);
|
||||
vec2 ij = R2_samples(((i*50+1)%1000)*int(maxIT)+i) * vec2(1.0,0.9000);
|
||||
vec3 pos = normalize(rodSample(ij)) * vec3(1.0,0.5,1.0) + vec3(0.0,0.5,0.0);
|
||||
|
||||
averageSkyCol_Clouds += skyCloudsFromTex(pos,colortex4).rgb/maxIT/150.0;
|
||||
averageSkyCol += 1.5 * skyFromTex(pos,colortex4).rgb/maxIT/150.0;
|
||||
}
|
||||
|
||||
vec3 minimumlight = vec3(1.0) * 0.01 * MIN_LIGHT_AMOUNT + nightVision * 0.05;
|
||||
// vec3 minimumlight = vec3(1.0) * 0.01 * MIN_LIGHT_AMOUNT + nightVision * 0.05;
|
||||
// vec3 minimumlight = vec3(1.0) * 0.01 * MIN_LIGHT_AMOUNT + nightVision * 0.05;
|
||||
|
||||
// luminance based reinhard is useful ouside of tonemapping too.
|
||||
averageSkyCol_Clouds = 1.5 * (averageSkyCol_Clouds / (1.0+luma(averageSkyCol_Clouds)*0.2));
|
||||
|
||||
averageSkyCol = max(averageSkyCol * PLANET_GROUND_BRIGHTNESS,0.0) + minimumlight;
|
||||
averageSkyCol = max(averageSkyCol * PLANET_GROUND_BRIGHTNESS,0.0) ;
|
||||
|
||||
#ifdef USE_CUSTOM_SKY_GROUND_LIGHTING_COLORS
|
||||
averageSkyCol = luma(averageSkyCol) * vec3(SKY_GROUND_R,SKY_GROUND_G,SKY_GROUND_B);
|
||||
@@ -175,7 +176,8 @@ void main() {
|
||||
parameters.smallCumulus.x, parameters.smallCumulus.y,
|
||||
parameters.largeCumulus.x, parameters.largeCumulus.y,
|
||||
parameters.altostratus.x, parameters.altostratus.y,
|
||||
parameters.fog.x, parameters.fog.y
|
||||
parameters.fog.x, parameters.fog.y,
|
||||
parameters.localFog.x, parameters.localFog.y, parameters.localFogColor.rgb
|
||||
);
|
||||
|
||||
//////////////////////////////
|
||||
|
||||
@@ -29,7 +29,7 @@ void main() {
|
||||
|
||||
vec2 texcoord = gl_FragCoord.xy * texelSize;
|
||||
|
||||
gl_FragData[0] = texelFetch2D(colortex1, ivec2(gl_FragCoord.xy),0);
|
||||
gl_FragData[0] = texelFetch2D(colortex1, ivec2(gl_FragCoord.xy), 0);
|
||||
|
||||
if(
|
||||
texelFetch2D(depthtex0, ivec2(gl_FragCoord.xy), 0).x < 1.0
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
|
||||
#include "/lib/settings.glsl"
|
||||
// #if defined END_SHADER || defined NETHER_SHADER
|
||||
#undef IS_LPV_ENABLED
|
||||
@@ -93,9 +94,8 @@ float linearizeDepthFast(const in float depth, const in float near, const in flo
|
||||
#include "/lib/diffuse_lighting.glsl"
|
||||
|
||||
#define TIMEOFDAYFOG
|
||||
#include "/lib/lightning_stuff.glsl"
|
||||
// #include "/lib/lightning_stuff.glsl"
|
||||
|
||||
#define CLOUDS_INTERSECT_TERRAIN
|
||||
// #define CLOUDSHADOWSONLY
|
||||
#include "/lib/volumetricClouds.glsl"
|
||||
#include "/lib/climate_settings.glsl"
|
||||
@@ -257,14 +257,17 @@ vec2 decodeVec2(float a){
|
||||
|
||||
|
||||
void main() {
|
||||
/* RENDERTARGETS:13 */
|
||||
|
||||
|
||||
gl_FragData[0] = vec4(0,0,0,1);
|
||||
|
||||
vec2 tc = floor(gl_FragCoord.xy)/VL_RENDER_RESOLUTION*texelSize+0.5*texelSize;
|
||||
vec2 texcoord = floor(gl_FragCoord.xy - 0.5)/VL_RENDERING_RESOLUTION_SCALE;
|
||||
vec2 texcoord_norm = texcoord*texelSize;
|
||||
ivec2 texcoord_cast = ivec2(texcoord);
|
||||
// vec2 tc = floor(gl_FragCoord.xy)/VL_RENDERING_RESOLUTION_SCALE*texelSize + 0.5*texelSize;
|
||||
|
||||
float alpha = texture2D(colortex7,tc).a ;
|
||||
float blendedAlpha = texture2D(colortex2, tc).a;
|
||||
float alpha = texelFetch2D(colortex7,texcoord_cast,0).a ;
|
||||
float blendedAlpha = texelFetch2D(colortex2, texcoord_cast,0).a;
|
||||
|
||||
|
||||
bool iswater = alpha > 0.99;
|
||||
@@ -277,36 +280,33 @@ void main() {
|
||||
float noise_1 = R2_dither();
|
||||
float noise_2 = blueNoise();
|
||||
|
||||
float z0 = texelFetch2D(depthtex0, ivec2((floor(gl_FragCoord.xy - 0.5)/VL_RENDER_RESOLUTION*texelSize)/texelSize), 0 ).x;
|
||||
float z0 = texelFetch2D(depthtex0, texcoord_cast, 0 ).x;
|
||||
|
||||
#ifdef DISTANT_HORIZONS
|
||||
float DH_z0 = texelFetch2D(dhDepthTex, ivec2((floor(gl_FragCoord.xy - 0.5)/VL_RENDER_RESOLUTION*texelSize)/texelSize), 0 ).x;//texture2D(dhDepthTex,tc).x;
|
||||
float DH_z0 = texelFetch2D(dhDepthTex, texcoord_cast, 0 ).x;//texture2D(dhDepthTex,tc).x;
|
||||
#else
|
||||
float DH_z0 = 0.0;
|
||||
#endif
|
||||
|
||||
float z = texelFetch2D(depthtex1, ivec2((floor(gl_FragCoord.xy - 0.5)/VL_RENDER_RESOLUTION*texelSize)/texelSize), 0 ).x;
|
||||
float z = texelFetch2D(depthtex1, texcoord_cast, 0 ).x;
|
||||
|
||||
#ifdef DISTANT_HORIZONS
|
||||
// float DH_z = texture2D(dhDepthTex1,tc).x;
|
||||
float DH_z = texelFetch2D(dhDepthTex1, ivec2((floor(gl_FragCoord.xy - 0.5)/VL_RENDER_RESOLUTION*texelSize)/texelSize), 0 ).x;//texture2D(dhDepthTex,tc).x;
|
||||
float DH_z = texelFetch2D(dhDepthTex1, texcoord_cast, 0 ).x;
|
||||
#else
|
||||
float DH_z = 0.0;
|
||||
#endif
|
||||
|
||||
// vec3 lightningColor = (lightningEffect / 3) * (max(eyeBrightnessSmooth.y,0)/240.);
|
||||
|
||||
float dirtAmount = Dirt_Amount ;
|
||||
// float dirtAmount = Dirt_Amount + 0.01;
|
||||
float dirtAmount = Dirt_Amount;
|
||||
vec3 waterEpsilon = vec3(Water_Absorb_R, Water_Absorb_G, Water_Absorb_B);
|
||||
vec3 dirtEpsilon = vec3(Dirt_Absorb_R, Dirt_Absorb_G, Dirt_Absorb_B);
|
||||
vec3 totEpsilon = vec3(Water_Absorb_R, Water_Absorb_G, Water_Absorb_B);//dirtEpsilon * dirtAmount + waterEpsilon;
|
||||
vec3 totEpsilon = vec3(Water_Absorb_R, Water_Absorb_G, Water_Absorb_B);
|
||||
vec3 scatterCoef = dirtAmount * vec3(Dirt_Scatter_R, Dirt_Scatter_G, Dirt_Scatter_B) / 3.14;
|
||||
|
||||
#ifdef BIOME_TINT_WATER
|
||||
// yoink the biome tint written in this buffer for water only.
|
||||
if(iswater){
|
||||
vec2 data = texelFetch2D(colortex11,ivec2(tc/texelSize),0).gb;
|
||||
vec2 data = texelFetch2D(colortex11,texcoord_cast,0).gb;
|
||||
vec3 wateralbedo = vec3(decodeVec2(data.x),decodeVec2(data.y).r);
|
||||
scatterCoef = dirtAmount * normalize(wateralbedo.rgb+1e-7) / 3.14;
|
||||
}
|
||||
@@ -316,21 +316,20 @@ void main() {
|
||||
vec3 indirectLightColor = averageSkyCol / 1200.0;
|
||||
vec3 indirectLightColor_dynamic = averageSkyCol_Clouds / 1200.0;
|
||||
|
||||
|
||||
vec3 viewPos1 = toScreenSpace_DH(tc/RENDER_SCALE, z, DH_z);
|
||||
vec3 viewPos0 = toScreenSpace_DH(tc/RENDER_SCALE, z0, DH_z0);
|
||||
vec3 viewPos1 = toScreenSpace_DH(texcoord_norm/RENDER_SCALE, z, DH_z);
|
||||
vec3 viewPos0 = toScreenSpace_DH(texcoord_norm/RENDER_SCALE, z0, DH_z0);
|
||||
|
||||
vec3 playerPos = mat3(gbufferModelViewInverse) * viewPos1;
|
||||
vec3 playerPos0 = mat3(gbufferModelViewInverse) * viewPos0;
|
||||
|
||||
#ifdef OVERWORLD_SHADER
|
||||
vec2 lightmap = decodeVec2(texelFetch2D(colortex14,ivec2(tc/texelSize),0).x);
|
||||
vec2 lightmap = decodeVec2(texelFetch2D(colortex14,texcoord_cast,0).x);
|
||||
|
||||
#ifdef DISTANT_HORIZONS
|
||||
if(z >= 1.0) lightmap.y = 0.99;
|
||||
#endif
|
||||
#else
|
||||
vec2 lightmap = decodeVec2(texelFetch2D(colortex14,ivec2(tc/texelSize),0).a);
|
||||
vec2 lightmap = decodeVec2(texelFetch2D(colortex14,texcoord_cast,0).a);
|
||||
lightmap.y = 1.0;
|
||||
#endif
|
||||
|
||||
@@ -340,19 +339,17 @@ void main() {
|
||||
|
||||
indirectLightColor_dynamic *= ambient_brightness * lightmap.y*lightmap.y;
|
||||
|
||||
indirectLightColor_dynamic += MIN_LIGHT_AMOUNT * 0.02 * 0.2 + nightVision*0.02;
|
||||
// indirectLightColor_dynamic += MIN_LIGHT_AMOUNT * 0.02 * 0.2 + nightVision*0.02;
|
||||
|
||||
indirectLightColor_dynamic += vec3(TORCH_R,TORCH_G,TORCH_B) * pow(1.0-sqrt(1.0-clamp(lightmap.x,0.0,1.0)),2.0) * TORCH_AMOUNT;
|
||||
|
||||
vec4 finalVolumetrics = vec4(0.0,0.0,0.0,1.0);
|
||||
float cloudPlaneDistance = 0.0;
|
||||
|
||||
#ifdef OVERWORLD_SHADER
|
||||
float cloudPlaneDistance = 0.0;
|
||||
vec4 VolumetricClouds = GetVolumetricClouds(viewPos1, vec2(noise_1, noise_2), WsunVec, directLightColor, indirectLightColor, cloudPlaneDistance);
|
||||
vec4 VolumetricFog = GetVolumetricFog(viewPos1, vec2(noise_1, noise_2), WsunVec, directLightColor, indirectLightColor, indirectLightColor_dynamic, cloudPlaneDistance);
|
||||
|
||||
float atmosphereAlpha = 1.0;
|
||||
vec4 VolumetricFog = GetVolumetricFog(viewPos1, WsunVec, vec2(noise_1, noise_2), directLightColor, indirectLightColor, indirectLightColor_dynamic, atmosphereAlpha, VolumetricClouds.rgb,cloudPlaneDistance);
|
||||
|
||||
finalVolumetrics.rgb += VolumetricClouds.rgb;
|
||||
finalVolumetrics.a *= VolumetricClouds.a;
|
||||
#endif
|
||||
|
||||
@@ -40,7 +40,7 @@ void main() {
|
||||
gl_Position = ftransform();
|
||||
|
||||
// gl_Position.xy = (gl_Position.xy*0.5+0.5)*0.51*2.0-1.0;
|
||||
gl_Position.xy = (gl_Position.xy*0.5+0.5)*(0.01+VL_RENDER_RESOLUTION)*2.0-1.0;
|
||||
gl_Position.xy = (gl_Position.xy*0.5+0.5)*(0.01+VL_RENDERING_RESOLUTION_SCALE)*2.0-1.0;
|
||||
|
||||
// #if TAA_MODE > 0
|
||||
// tempOffsets = HaltonSeq2(frameCounter%10000);
|
||||
@@ -53,7 +53,9 @@ void main() {
|
||||
averageSkyCol = texelFetch2D(colortex4,ivec2(1,37),0).rgb;
|
||||
averageSkyCol_Clouds = texelFetch2D(colortex4,ivec2(0,37),0).rgb;
|
||||
|
||||
readSceneControllerParameters(colortex4, parameters.smallCumulus, parameters.largeCumulus, parameters.altostratus, parameters.fog);
|
||||
#define READ_SCENE_CONTROLLER_PARAMETERS
|
||||
#include "/lib/scene_controller.glsl"
|
||||
// readSceneControllerParameters(colortex4, parameters.smallCumulus, parameters.largeCumulus, parameters.altostratus, parameters.fog);
|
||||
#endif
|
||||
|
||||
#ifdef NETHER_SHADER
|
||||
|
||||
@@ -492,7 +492,8 @@ void main() {
|
||||
}
|
||||
|
||||
if (blockId == BLOCK_END_ROD || blockId == ITEM_END_ROD) {
|
||||
lightColor = vec3(0.957, 0.929, 0.875);
|
||||
// lightColor = vec3(0.957, 0.929, 0.875);
|
||||
lightColor = vec3(0.8, 0.3, 1.0);
|
||||
lightRange = 14.0;
|
||||
}
|
||||
|
||||
|
||||
+219
-117
@@ -164,7 +164,8 @@ screen.Ambient_light = Ambient Light
|
||||
|
||||
|
||||
screen.Fog = Fog Settings
|
||||
option.VL_RENDER_RESOLUTION = Fog Resolution Scaling
|
||||
option.VL_RENDERING_RESOLUTION_SCALE = Volumetrics Render Scale
|
||||
suffix.VL_RENDERING_RESOLUTION_SCALE = x
|
||||
option.VL_SAMPLES = Fog Samples
|
||||
option.BLOOMY_FOG = Bloomy Fog Multiplier
|
||||
option.Haze_amount = Atmospheric Haze Density
|
||||
@@ -172,7 +173,9 @@ screen.Fog = Fog Settings
|
||||
option.BorderFog = Chunk Border Fog
|
||||
|
||||
screen.TOD_fog = Time Of Day Fog
|
||||
option.TOD_Fog_mult = Fog Density Multiplier
|
||||
option.TOD_FOG_AMOUNT = Fog Amount
|
||||
value.TOD_FOG_AMOUNT.0 = NONE
|
||||
suffix.TOD_FOG_AMOUNT = %
|
||||
option.Morning_Uniform_Fog = Morning Fog Density
|
||||
option.Noon_Uniform_Fog = Noon Fog Density
|
||||
option.Evening_Uniform_Fog = Evening Fog Density
|
||||
@@ -196,130 +199,229 @@ screen.Fog = Fog Settings
|
||||
option.NETHER_PLUME_DENSITY = Nether Smoke Density
|
||||
|
||||
screen.Clouds = Cloud Settings
|
||||
option.VOLUMETRIC_CLOUDS = Volumetric Clouds
|
||||
option.CLOUDS_QUALITY = Cloud Resolution Scaling
|
||||
option.CLOUDS_SHADOWS = Cloud Shadows
|
||||
|
||||
option.SMALL_CUMULUS_LABEL = Small Cumulus Layer
|
||||
option.LARGE_CUMULUS_LABEL = Large Cumulus Layer
|
||||
option.ALTOSTRATUS_LABEL = Altostratus Layer
|
||||
value.SMALL_CUMULUS_LABEL.0 = §f↓
|
||||
value.LARGE_CUMULUS_LABEL.0 = §f↓
|
||||
value.ALTOSTRATUS_LABEL.0 = §f↓
|
||||
|
||||
option.CLOUD_SHADOW_AMOUNT = Cloud Shadow Visibilty
|
||||
value.CLOUD_SHADOW_AMOUNT.0 = OFF
|
||||
suffix.CLOUD_SHADOW_AMOUNT = %
|
||||
option.Cloud_Speed = Cloud Speed Multiplier
|
||||
option.Rain_coverage = Coverage When Raining
|
||||
option.Daily_Weather = Daily Weather
|
||||
|
||||
option.CloudLayer0 = Small Cumulus Clouds
|
||||
option.CloudLayer0_coverage = Coverage
|
||||
option.CloudLayer0_density = Density
|
||||
option.CloudLayer0_height = Height
|
||||
option.CloudLayer0 = Small Cumulus Clouds
|
||||
option.CloudLayer1 = Large Cumulus Clouds
|
||||
option.CloudLayer2 = Altostratus Clouds
|
||||
screen.CloudLayer0_config = Small Cumulus Config §cTEMPORARY SUBMENU§r
|
||||
screen.CloudLayer1_config = Large Cumulus Config §cTEMPORARY SUBMENU§r
|
||||
screen.CloudLayer2_config = Altostratus Config §cTEMPORARY SUBMENU§r
|
||||
|
||||
option.CloudLayer1 = Large Cumulus Clouds
|
||||
option.CloudLayer1_coverage = Coverage
|
||||
option.CloudLayer1_density = Density
|
||||
option.CloudLayer1_height = Height
|
||||
option.CloudLayer0_height = Altitude
|
||||
option.CloudLayer0_scale = Scale
|
||||
option.CloudLayer0_tallness = Tallness
|
||||
option.CloudLayer1_height = Altitude
|
||||
option.CloudLayer1_scale = Scale
|
||||
option.CloudLayer1_tallness = Tallness
|
||||
option.CloudLayer2_height = Altitude
|
||||
option.CloudLayer2_scale = Scale
|
||||
option.CloudLayer2_tallness = Tallness
|
||||
|
||||
screen.DAILY_WEATHER = Daily Weather Presets
|
||||
option.USE_CUSTOM_DAILY_WEATHER_PROFILE = Daily Weather Mode
|
||||
value.USE_CUSTOM_DAILY_WEATHER_PROFILE.0 = Hardcoded
|
||||
value.USE_CUSTOM_DAILY_WEATHER_PROFILE.1 =§f↓§r Only Use Preset 1 §f↓§r
|
||||
value.USE_CUSTOM_DAILY_WEATHER_PROFILE.2 =§f↓§r Use Presets 1 to 2 §f↓§r
|
||||
value.USE_CUSTOM_DAILY_WEATHER_PROFILE.3 =§f↓§r Use Presets 1 to 3 §f↓§r
|
||||
value.USE_CUSTOM_DAILY_WEATHER_PROFILE.4 =§f↓§r Use Presets 1 to 4 §f↓§r
|
||||
value.USE_CUSTOM_DAILY_WEATHER_PROFILE.5 =§f↓§r Use Presets 1 to 5 §f↓§r
|
||||
value.USE_CUSTOM_DAILY_WEATHER_PROFILE.6 =§f↓§r Use Presets 1 to 6 §f↓§r
|
||||
|
||||
screen.DAILY_WEATHER_PROFILE_1 = Preset 1
|
||||
screen.DAILY_WEATHER_PROFILE_2 = Preset 2
|
||||
screen.DAILY_WEATHER_PROFILE_3 = Preset 3
|
||||
screen.DAILY_WEATHER_PROFILE_4 = Preset 4
|
||||
screen.DAILY_WEATHER_PROFILE_5 = Preset 5
|
||||
screen.DAILY_WEATHER_PROFILE_6 = Preset 6
|
||||
|
||||
option.CloudLayer2 = Altostratus Clouds
|
||||
option.CloudLayer2_coverage = Coverage
|
||||
option.CloudLayer2_density = Density
|
||||
option.CloudLayer2_height = Height
|
||||
screen.RAINY_WEATHER = Rainy Weather Presets
|
||||
option.USE_CUSTOM_DAILY_RAIN_PROFILE = Rainy Weather Mode
|
||||
value.USE_CUSTOM_DAILY_RAIN_PROFILE.0 = Hardcoded
|
||||
value.USE_CUSTOM_DAILY_RAIN_PROFILE.1 =§f↓§r Only Use Preset 1 §f↓§r
|
||||
value.USE_CUSTOM_DAILY_RAIN_PROFILE.2 =§f↓§r Use Presets 1 to 2 §f↓§r
|
||||
value.USE_CUSTOM_DAILY_RAIN_PROFILE.3 =§f↓§r Use Presets 1 to 3 §f↓§r
|
||||
value.USE_CUSTOM_DAILY_RAIN_PROFILE.4 =§f↓§r Use Presets 1 to 4 §f↓§r
|
||||
value.USE_CUSTOM_DAILY_RAIN_PROFILE.5 =§f↓§r Use Presets 1 to 5 §f↓§r
|
||||
value.USE_CUSTOM_DAILY_RAIN_PROFILE.6 =§f↓§r Use Presets 1 to 6 §f↓§r
|
||||
|
||||
screen.RAINY_WEATHER_PROFILE_1 = Preset 1
|
||||
screen.RAINY_WEATHER_PROFILE_2 = Preset 2
|
||||
screen.RAINY_WEATHER_PROFILE_3 = Preset 3
|
||||
screen.RAINY_WEATHER_PROFILE_4 = Preset 4
|
||||
screen.RAINY_WEATHER_PROFILE_5 = Preset 5
|
||||
screen.RAINY_WEATHER_PROFILE_6 = Preset 6
|
||||
|
||||
screen.DAILY_WEATHER = Daily Weather Settings
|
||||
option.CHOOSE_RANDOM_WEATHER_PROFILE = Random Weather Profile
|
||||
screen.DAY0_WEATHER = Day 0 Weather Profile
|
||||
option.DAY0_l0_coverage = Small Cumulus coverage
|
||||
option.DAY0_l0_density = Small Cumulus Density
|
||||
option.DAY0_l1_coverage = Large Cumulus Coverage
|
||||
option.DAY0_l1_density = Large Cumulus Density
|
||||
option.DAY0_l2_coverage = Altostratus Clouds Coverage
|
||||
option.DAY0_l2_density = Altostratus Clouds Density
|
||||
option.DAY0_ufog_density = Uniform Fog Density
|
||||
option.DAY0_cfog_density = Cloudy Fog Density
|
||||
|
||||
screen.DAY1_WEATHER = Day 1 Weather Profile
|
||||
option.DAY1_l0_coverage = Small Cumulus coverage
|
||||
option.DAY1_l0_density = Small Cumulus Density
|
||||
option.DAY1_l1_coverage = Large Cumulus Coverage
|
||||
option.DAY1_l1_density = Large Cumulus Density
|
||||
option.DAY1_l2_coverage = Altostratus Clouds Coverage
|
||||
option.DAY1_l2_density = Altostratus Clouds Density
|
||||
option.DAY1_ufog_density = Uniform Fog Density
|
||||
option.DAY1_cfog_density = Cloudy Fog Density
|
||||
|
||||
screen.DAY2_WEATHER = Day 2 Weather Profile
|
||||
option.DAY2_l0_coverage = Small Cumulus coverage
|
||||
option.DAY2_l0_density = Small Cumulus Density
|
||||
option.DAY2_l1_coverage = Large Cumulus Coverage
|
||||
option.DAY2_l1_density = Large Cumulus Density
|
||||
option.DAY2_l2_coverage = Altostratus Clouds Coverage
|
||||
option.DAY2_l2_density = Altostratus Clouds Density
|
||||
option.DAY2_ufog_density = Uniform Fog Density
|
||||
option.DAY2_cfog_density = Cloudy Fog Density
|
||||
option.DAILY_PROFILE_1_LAYER0_COVERAGE = Coverage
|
||||
option.DAILY_PROFILE_1_LAYER0_DENSITY = Density
|
||||
option.DAILY_PROFILE_1_LAYER1_COVERAGE = Coverage
|
||||
option.DAILY_PROFILE_1_LAYER1_DENSITY = Density
|
||||
option.DAILY_PROFILE_1_LAYER2_COVERAGE = Coverage
|
||||
option.DAILY_PROFILE_1_LAYER2_DENSITY = Density
|
||||
|
||||
screen.DAY3_WEATHER = Day 3 Weather Profile
|
||||
option.DAY3_l0_coverage = Small Cumulus coverage
|
||||
option.DAY3_l0_density = Small Cumulus Density
|
||||
option.DAY3_l1_coverage = Large Cumulus Coverage
|
||||
option.DAY3_l1_density = Large Cumulus Density
|
||||
option.DAY3_l2_coverage = Altostratus Clouds Coverage
|
||||
option.DAY3_l2_density = Altostratus Clouds Density
|
||||
option.DAY3_ufog_density = Uniform Fog Density
|
||||
option.DAY3_cfog_density = Cloudy Fog Density
|
||||
option.DAILY_PROFILE_2_LAYER0_COVERAGE = Coverage
|
||||
option.DAILY_PROFILE_2_LAYER0_DENSITY = Density
|
||||
option.DAILY_PROFILE_2_LAYER1_COVERAGE = Coverage
|
||||
option.DAILY_PROFILE_2_LAYER1_DENSITY = Density
|
||||
option.DAILY_PROFILE_2_LAYER2_COVERAGE = Coverage
|
||||
option.DAILY_PROFILE_2_LAYER2_DENSITY = Density
|
||||
|
||||
screen.DAY4_WEATHER = Day 4 Weather Profile
|
||||
option.DAY4_l0_coverage = Small Cumulus coverage
|
||||
option.DAY4_l0_density = Small Cumulus Density
|
||||
option.DAY4_l1_coverage = Large Cumulus Coverage
|
||||
option.DAY4_l1_density = Large Cumulus Density
|
||||
option.DAY4_l2_coverage = Altostratus Clouds Coverage
|
||||
option.DAY4_l2_density = Altostratus Clouds Density
|
||||
option.DAY4_ufog_density = Uniform Fog Density
|
||||
option.DAY4_cfog_density = Cloudy Fog Density
|
||||
option.DAILY_PROFILE_3_LAYER0_COVERAGE = Coverage
|
||||
option.DAILY_PROFILE_3_LAYER0_DENSITY = Density
|
||||
option.DAILY_PROFILE_3_LAYER1_COVERAGE = Coverage
|
||||
option.DAILY_PROFILE_3_LAYER1_DENSITY = Density
|
||||
option.DAILY_PROFILE_3_LAYER2_COVERAGE = Coverage
|
||||
option.DAILY_PROFILE_3_LAYER2_DENSITY = Density
|
||||
|
||||
screen.DAY5_WEATHER = Day 5 Weather Profile
|
||||
option.DAY5_l0_coverage = Small Cumulus coverage
|
||||
option.DAY5_l0_density = Small Cumulus Density
|
||||
option.DAY5_l1_coverage = Large Cumulus Coverage
|
||||
option.DAY5_l1_density = Large Cumulus Density
|
||||
option.DAY5_l2_coverage = Altostratus Clouds Coverage
|
||||
option.DAY5_l2_density = Altostratus Clouds Density
|
||||
option.DAY5_ufog_density = Uniform Fog Density
|
||||
option.DAY5_cfog_density = Cloudy Fog Density
|
||||
option.DAILY_PROFILE_4_LAYER0_COVERAGE = Coverage
|
||||
option.DAILY_PROFILE_4_LAYER0_DENSITY = Density
|
||||
option.DAILY_PROFILE_4_LAYER1_COVERAGE = Coverage
|
||||
option.DAILY_PROFILE_4_LAYER1_DENSITY = Density
|
||||
option.DAILY_PROFILE_4_LAYER2_COVERAGE = Coverage
|
||||
option.DAILY_PROFILE_4_LAYER2_DENSITY = Density
|
||||
|
||||
screen.DAY6_WEATHER = Day 6 Weather Profile
|
||||
option.DAY6_l0_coverage = Small Cumulus coverage
|
||||
option.DAY6_l0_density = Small Cumulus Density
|
||||
option.DAY6_l1_coverage = Large Cumulus Coverage
|
||||
option.DAY6_l1_density = Large Cumulus Density
|
||||
option.DAY6_l2_coverage = Altostratus Clouds Coverage
|
||||
option.DAY6_l2_density = Altostratus Clouds Density
|
||||
option.DAY6_ufog_density = Uniform Fog Density
|
||||
option.DAY6_cfog_density = Cloudy Fog Density
|
||||
option.DAILY_PROFILE_5_LAYER0_COVERAGE = Coverage
|
||||
option.DAILY_PROFILE_5_LAYER0_DENSITY = Density
|
||||
option.DAILY_PROFILE_5_LAYER1_COVERAGE = Coverage
|
||||
option.DAILY_PROFILE_5_LAYER1_DENSITY = Density
|
||||
option.DAILY_PROFILE_5_LAYER2_COVERAGE = Coverage
|
||||
option.DAILY_PROFILE_5_LAYER2_DENSITY = Density
|
||||
|
||||
screen.DAY7_WEATHER = Day 7 Weather Profile
|
||||
option.DAY7_l0_coverage = Small Cumulus coverage
|
||||
option.DAY7_l0_density = Small Cumulus Density
|
||||
option.DAY7_l1_coverage = Large Cumulus Coverage
|
||||
option.DAY7_l1_density = Large Cumulus Density
|
||||
option.DAY7_l2_coverage = Altostratus Clouds Coverage
|
||||
option.DAY7_l2_density = Altostratus Clouds Density
|
||||
option.DAY7_ufog_density = Uniform Fog Density
|
||||
option.DAY7_cfog_density = Cloudy Fog Density
|
||||
option.DAILY_PROFILE_6_LAYER0_COVERAGE = Coverage
|
||||
option.DAILY_PROFILE_6_LAYER0_DENSITY = Density
|
||||
option.DAILY_PROFILE_6_LAYER1_COVERAGE = Coverage
|
||||
option.DAILY_PROFILE_6_LAYER1_DENSITY = Density
|
||||
option.DAILY_PROFILE_6_LAYER2_COVERAGE = Coverage
|
||||
option.DAILY_PROFILE_6_LAYER2_DENSITY = Density
|
||||
|
||||
screen.DAY8_WEATHER = Day 8 Weather Profile
|
||||
option.DAY8_l0_coverage = Small Cumulus coverage
|
||||
option.DAY8_l0_density = Small Cumulus Density
|
||||
option.DAY8_l1_coverage = Large Cumulus Coverage
|
||||
option.DAY8_l1_density = Large Cumulus Density
|
||||
option.DAY8_l2_coverage = Altostratus Clouds Coverage
|
||||
option.DAY8_l2_density = Altostratus Clouds Density
|
||||
option.DAY8_ufog_density = Uniform Fog Density
|
||||
option.DAY8_cfog_density = Cloudy Fog Density
|
||||
option.RAINY_PROFILE_1_LAYER0_COVERAGE = Coverage
|
||||
option.RAINY_PROFILE_1_LAYER0_DENSITY = Density
|
||||
option.RAINY_PROFILE_1_LAYER1_COVERAGE = Coverage
|
||||
option.RAINY_PROFILE_1_LAYER1_DENSITY = Density
|
||||
option.RAINY_PROFILE_1_LAYER2_COVERAGE = Coverage
|
||||
option.RAINY_PROFILE_1_LAYER2_DENSITY = Density
|
||||
|
||||
screen.DAY9_WEATHER = Day 9 Weather Profile
|
||||
option.DAY9_l0_coverage = Small Cumulus coverage
|
||||
option.DAY9_l0_density = Small Cumulus Density
|
||||
option.DAY9_l1_coverage = Large Cumulus Coverage
|
||||
option.DAY9_l1_density = Large Cumulus Density
|
||||
option.DAY9_l2_coverage = Altostratus Clouds Coverage
|
||||
option.DAY9_l2_density = Altostratus Clouds Density
|
||||
option.DAY9_ufog_density = Uniform Fog Density
|
||||
option.DAY9_cfog_density = Cloudy Fog Density
|
||||
|
||||
option.RAINY_PROFILE_2_LAYER0_COVERAGE = Coverage
|
||||
option.RAINY_PROFILE_2_LAYER0_DENSITY = Density
|
||||
option.RAINY_PROFILE_2_LAYER1_COVERAGE = Coverage
|
||||
option.RAINY_PROFILE_2_LAYER1_DENSITY = Density
|
||||
option.RAINY_PROFILE_2_LAYER2_COVERAGE = Coverage
|
||||
option.RAINY_PROFILE_2_LAYER2_DENSITY = Density
|
||||
|
||||
option.RAINY_PROFILE_3_LAYER0_COVERAGE = Coverage
|
||||
option.RAINY_PROFILE_3_LAYER0_DENSITY = Density
|
||||
option.RAINY_PROFILE_3_LAYER1_COVERAGE = Coverage
|
||||
option.RAINY_PROFILE_3_LAYER1_DENSITY = Density
|
||||
option.RAINY_PROFILE_3_LAYER2_COVERAGE = Coverage
|
||||
option.RAINY_PROFILE_3_LAYER2_DENSITY = Density
|
||||
|
||||
option.RAINY_PROFILE_4_LAYER0_COVERAGE = Coverage
|
||||
option.RAINY_PROFILE_4_LAYER0_DENSITY = Density
|
||||
option.RAINY_PROFILE_4_LAYER1_COVERAGE = Coverage
|
||||
option.RAINY_PROFILE_4_LAYER1_DENSITY = Density
|
||||
option.RAINY_PROFILE_4_LAYER2_COVERAGE = Coverage
|
||||
option.RAINY_PROFILE_4_LAYER2_DENSITY = Density
|
||||
|
||||
option.RAINY_PROFILE_5_LAYER0_COVERAGE = Coverage
|
||||
option.RAINY_PROFILE_5_LAYER0_DENSITY = Density
|
||||
option.RAINY_PROFILE_5_LAYER1_COVERAGE = Coverage
|
||||
option.RAINY_PROFILE_5_LAYER1_DENSITY = Density
|
||||
option.RAINY_PROFILE_5_LAYER2_COVERAGE = Coverage
|
||||
option.RAINY_PROFILE_5_LAYER2_DENSITY = Density
|
||||
|
||||
option.RAINY_PROFILE_6_LAYER0_COVERAGE = Coverage
|
||||
option.RAINY_PROFILE_6_LAYER0_DENSITY = Density
|
||||
option.RAINY_PROFILE_6_LAYER1_COVERAGE = Coverage
|
||||
option.RAINY_PROFILE_6_LAYER1_DENSITY = Density
|
||||
option.RAINY_PROFILE_6_LAYER2_COVERAGE = Coverage
|
||||
option.RAINY_PROFILE_6_LAYER2_DENSITY = Density
|
||||
|
||||
option.USE_CUSTOM_HOT_BIOME_RAIN_PROFILE = Hot Biome Rainy Weather Mode
|
||||
value.USE_CUSTOM_HOT_BIOME_RAIN_PROFILE.-1 = OFF
|
||||
value.USE_CUSTOM_HOT_BIOME_RAIN_PROFILE.0 = Hardcoded
|
||||
value.USE_CUSTOM_HOT_BIOME_RAIN_PROFILE.1 = §f↓§r Only Use Preset 1 §f↓§r
|
||||
value.USE_CUSTOM_HOT_BIOME_RAIN_PROFILE.2 = §f↓§r Use Presets 1 to 2 §f↓§r
|
||||
value.USE_CUSTOM_HOT_BIOME_RAIN_PROFILE.3 = §f↓§r Use Presets 1 to 3 §f↓§r
|
||||
screen.HOT_BIOME_RAINY_WEATHER_PROFILE_1 = Preset 1
|
||||
screen.HOT_BIOME_RAINY_WEATHER_PROFILE_2 = Preset 2
|
||||
screen.HOT_BIOME_RAINY_WEATHER_PROFILE_3 = Preset 3
|
||||
|
||||
option.USE_CUSTOM_COLD_BIOME_RAIN_PROFILE = Cold Biome Rainy Weather Mode
|
||||
value.USE_CUSTOM_COLD_BIOME_RAIN_PROFILE.-1 = OFF
|
||||
value.USE_CUSTOM_COLD_BIOME_RAIN_PROFILE.0 = Hardcoded
|
||||
value.USE_CUSTOM_COLD_BIOME_RAIN_PROFILE.1 = §f↓§r Only Use Preset 1 §f↓§r
|
||||
value.USE_CUSTOM_COLD_BIOME_RAIN_PROFILE.2 = §f↓§r Use Presets 1 to 2 §f↓§r
|
||||
value.USE_CUSTOM_COLD_BIOME_RAIN_PROFILE.3 = §f↓§r Use Presets 1 to 3 §f↓§r
|
||||
screen.COLD_BIOME_RAINY_WEATHER_PROFILE_1 = Preset 1
|
||||
screen.COLD_BIOME_RAINY_WEATHER_PROFILE_2 = Preset 2
|
||||
screen.COLD_BIOME_RAINY_WEATHER_PROFILE_3 = Preset 3
|
||||
|
||||
option.HOT_BIOME_RAINY_PROFILE_1_UNIFORM_FOG_DENSITY = Uniform Fog Density
|
||||
option.HOT_BIOME_RAINY_PROFILE_1_CLUMPY_FOG_DENSITY = Clumpy Fog Density
|
||||
option.HOT_BIOME_RAINY_PROFILE_1_FOG_COLOR_R = Fog Color Red
|
||||
option.HOT_BIOME_RAINY_PROFILE_1_FOG_COLOR_G = Fog Color Green
|
||||
option.HOT_BIOME_RAINY_PROFILE_1_FOG_COLOR_B = Fog Color Blue
|
||||
option.HOT_BIOME_RAINY_PROFILE_2_UNIFORM_FOG_DENSITY = Uniform Fog Density
|
||||
option.HOT_BIOME_RAINY_PROFILE_2_CLUMPY_FOG_DENSITY = Clumpy Fog Density
|
||||
option.HOT_BIOME_RAINY_PROFILE_2_FOG_COLOR_R = Fog Color Red
|
||||
option.HOT_BIOME_RAINY_PROFILE_2_FOG_COLOR_G = Fog Color Green
|
||||
option.HOT_BIOME_RAINY_PROFILE_2_FOG_COLOR_B = Fog Color Blue
|
||||
option.HOT_BIOME_RAINY_PROFILE_3_UNIFORM_FOG_DENSITY = Uniform Fog Density
|
||||
option.HOT_BIOME_RAINY_PROFILE_3_CLUMPY_FOG_DENSITY = Clumpy Fog Density
|
||||
option.HOT_BIOME_RAINY_PROFILE_3_FOG_COLOR_R = Fog Color Red
|
||||
option.HOT_BIOME_RAINY_PROFILE_3_FOG_COLOR_G = Fog Color Green
|
||||
option.HOT_BIOME_RAINY_PROFILE_3_FOG_COLOR_B = Fog Color Blue
|
||||
|
||||
option.COLD_BIOME_RAINY_PROFILE_1_UNIFORM_FOG_DENSITY = Uniform Fog Density
|
||||
option.COLD_BIOME_RAINY_PROFILE_1_CLUMPY_FOG_DENSITY = Clumpy Fog Density
|
||||
option.COLD_BIOME_RAINY_PROFILE_1_FOG_COLOR_R = Fog Color Red
|
||||
option.COLD_BIOME_RAINY_PROFILE_1_FOG_COLOR_G = Fog Color Green
|
||||
option.COLD_BIOME_RAINY_PROFILE_1_FOG_COLOR_B = Fog Color Blue
|
||||
option.COLD_BIOME_RAINY_PROFILE_2_UNIFORM_FOG_DENSITY = Uniform Fog Density
|
||||
option.COLD_BIOME_RAINY_PROFILE_2_CLUMPY_FOG_DENSITY = Clumpy Fog Density
|
||||
option.COLD_BIOME_RAINY_PROFILE_2_FOG_COLOR_R = Fog Color Red
|
||||
option.COLD_BIOME_RAINY_PROFILE_2_FOG_COLOR_G = Fog Color Green
|
||||
option.COLD_BIOME_RAINY_PROFILE_2_FOG_COLOR_B = Fog Color Blue
|
||||
option.COLD_BIOME_RAINY_PROFILE_3_UNIFORM_FOG_DENSITY = Uniform Fog Density
|
||||
option.COLD_BIOME_RAINY_PROFILE_3_CLUMPY_FOG_DENSITY = Clumpy Fog Density
|
||||
option.COLD_BIOME_RAINY_PROFILE_3_FOG_COLOR_R = Fog Color Red
|
||||
option.COLD_BIOME_RAINY_PROFILE_3_FOG_COLOR_G = Fog Color Green
|
||||
option.COLD_BIOME_RAINY_PROFILE_3_FOG_COLOR_B = Fog Color Blue
|
||||
|
||||
option.USE_CUSTOM_SWAMP_CATEGORY_PROFILE = Swamp Biome Mode
|
||||
value.USE_CUSTOM_SWAMP_CATEGORY_PROFILE.-1 = OFF
|
||||
value.USE_CUSTOM_SWAMP_CATEGORY_PROFILE.0 = Hardcoded
|
||||
value.USE_CUSTOM_SWAMP_CATEGORY_PROFILE.1 = §f↓§r Use Custom Preset §f↓§r
|
||||
screen.CUSTOM_SWAMP_CATEGORY_PROFILE_1 = Custom Preset
|
||||
|
||||
option.USE_CUSTOM_JUNGLE_CATEGORY_PROFILE = Jungle Biome Mode
|
||||
value.USE_CUSTOM_JUNGLE_CATEGORY_PROFILE.-1 = OFF
|
||||
value.USE_CUSTOM_JUNGLE_CATEGORY_PROFILE.0 = Hardcoded
|
||||
value.USE_CUSTOM_JUNGLE_CATEGORY_PROFILE.1 = §f↓§r Use Custom Preset §f↓§r
|
||||
screen.CUSTOM_JUNGLE_CATEGORY_PROFILE_1 = Custom Preset
|
||||
|
||||
option.CUSTOM_SWAMP_PROFILE_1_UNIFORM_FOG_DENSITY = Uniform Fog Density
|
||||
option.CUSTOM_SWAMP_PROFILE_1_CLUMPY_FOG_DENSITY = Clumpy Fog Density
|
||||
option.CUSTOM_SWAMP_PROFILE_1_FOG_COLOR_R = Fog Color Red
|
||||
option.CUSTOM_SWAMP_PROFILE_1_FOG_COLOR_G = Fog Color Green
|
||||
option.CUSTOM_SWAMP_PROFILE_1_FOG_COLOR_B = Fog Color Blue
|
||||
|
||||
option.CUSTOM_JUNGLE_PROFILE_1_UNIFORM_FOG_DENSITY = Uniform Fog Density
|
||||
option.CUSTOM_JUNGLE_PROFILE_1_CLUMPY_FOG_DENSITY = Clumpy Fog Density
|
||||
option.CUSTOM_JUNGLE_PROFILE_1_FOG_COLOR_R = Fog Color Red
|
||||
option.CUSTOM_JUNGLE_PROFILE_1_FOG_COLOR_G = Fog Color Green
|
||||
option.CUSTOM_JUNGLE_PROFILE_1_FOG_COLOR_B = Fog Color Blue
|
||||
|
||||
screen.Climate = Climate Settings
|
||||
option.Seasons = Seasonal Colors
|
||||
@@ -739,7 +841,7 @@ option.FAKE_DISPERSION_AMOUNT.comment = Configure the amount of dispersion withi
|
||||
option.REFRACTION_SMUDGE_AMOUNT.comment = Configure the amount of smudge within the refraction. §bWhat is this?§r when refraction happens, the parts that get really distorted will get smudged. §cWill cause visaul noise within refraction. §aPERFORMANCE COST:§r very low
|
||||
|
||||
screen.Fog.comment = Configure settings related to the raymarched volumetric fog, or distance based fog.
|
||||
option.VL_RENDER_RESOLUTION.comment = Configure the resolution of the volumetric fog. §aPERFORMANCE COST:§r high
|
||||
option.VL_RENDERING_RESOLUTION_SCALE.comment = Configure the resolution of the volumetric fog. §aPERFORMANCE COST:§r high
|
||||
option.VL_SAMPLES.comment = Configure the quality of the volumetric fog. §aPERFORMANCE COST:§r high
|
||||
option.BLOOMY_FOG.comment = Configure the strength of bloom that is applied to fog. §bWhat is this?§r This effect makes the fog look soft, it helps hide a little noise too. can cause some visible flickering on detailed edges. §aPERFORMANCE COST:§r very low
|
||||
option.Haze_amount.comment = Configure how dense the atmosphere around you is. §bWhat is this?§r This is the blue haze you see in the distance.
|
||||
@@ -747,7 +849,7 @@ screen.Fog.comment = Configure settings related to the raymarched volumetric fog
|
||||
option.BorderFog.comment = §bWhat is this?§r Toggle a fog that attempts to hide the chunks loading in. But because the sky is all over the place, it is difficult to do well. §aPERFORMANCE COST:§r very very low
|
||||
|
||||
screen.TOD_fog.comment = Configure the density of fog that appears at specific times of the day.
|
||||
option.TOD_Fog_mult.comment = Configure how much total fog there is that appears at specific times during the day. this does not effect the atmospheric haze.
|
||||
option.TOD_FOG_AMOUNT.comment = Configure how much total fog there is that appears at specific times during the day. this does not effect the atmospheric haze.
|
||||
|
||||
screen.Cave_Fog.comment = Configure settings for fog that appears when you are in very dark places such as caves.
|
||||
option.Cave_Fog.comment = Toggle the fog that appears in dark places. It is impossible to accurately tell when you are in a cave with a shader, so this fog might appear in places that are not a cave. §aPERFORMANCE COST:§r low
|
||||
@@ -757,7 +859,7 @@ screen.Clouds.comment = Configure settings related to the raymarched volumetric
|
||||
option.VOLUMETRIC_CLOUDS.comment = Toggle the clouds. §aPERFORMANCE COST:§r medium to high
|
||||
option.CLOUDS_QUALITY.comment = Configure the resolution of the volumetric clouds. §aPERFORMANCE COST:§r high
|
||||
option.CLOUDS_SHADOWS.comment = Toggle shadows that are casted from the clouds onto the ground, and fog below them. §aPERFORMANCE COST:§r low to medium
|
||||
option.Daily_Weather.comment = Toggle the weather that changes every day. §bWhat is this?§r There are 10 weather profiles that the shader cycles through every day. You cannot change any cloud coverage settings when this is enabled. §aPERFORMANCE COST:§r low
|
||||
option.DAILY_WEATHER_PROFILE.comment = Toggle the weather that changes every day. §bWhat is this?§r There are 10 weather profiles that the shader cycles through every day. You cannot change any cloud coverage settings when this is enabled. §aPERFORMANCE COST:§r low
|
||||
option.CHOOSE_RANDOM_WEATHER_PROFILE.comment = §bWhat is this?§r Configure the shader to randomly choose the weather from one of the days below. When this is turned off, the shader will choose the day in order.
|
||||
option.Cloud_Speed.comment = Configure how fast the clouds move as the day goes by.
|
||||
option.Rain_coverage.comment = Configure how much of the sky the clouds cover during rain.
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
// this file contains all things for seasons, weather, and biome specific settings.
|
||||
// i gotta start centralizing shit someday.
|
||||
// THAT DAY HAS COME!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
@@ -12,7 +13,7 @@
|
||||
#ifdef SEASONS_VSH
|
||||
|
||||
uniform int worldDay;
|
||||
uniform float noPuddleAreas;
|
||||
uniform float NoRainFallEnviornmentSmooth;
|
||||
|
||||
void YearCycleColor (
|
||||
inout vec3 FinalColor,
|
||||
@@ -80,7 +81,7 @@
|
||||
// // this is to make snow only exist in winter
|
||||
// float FallToWinter_snowfall = mix(0.0, 1.0, AutumnTime);
|
||||
// float WinterToSpring_snowfall = mix(FallToWinter_snowfall, 0.0, WinterTime);
|
||||
// // SnowySeason = clamp(pow(sin(WinterToSpring_snowfall*SeasonLength)*0.5+0.5,5),0,1) * WinterToSpring_snowfall * noPuddleAreas;
|
||||
// // SnowySeason = clamp(pow(sin(WinterToSpring_snowfall*SeasonLength)*0.5+0.5,5),0,1) * WinterToSpring_snowfall * NoRainFallEnviornmentSmooth;
|
||||
// #else
|
||||
// // SnowySeason = 0.0;
|
||||
// #endif
|
||||
@@ -123,12 +124,12 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
uniform float isJungles;
|
||||
uniform float isSwamps;
|
||||
uniform float isDarkForests;
|
||||
uniform float sandStorm;
|
||||
uniform float snowStorm;
|
||||
|
||||
// uniform float isJungles;
|
||||
// uniform float isSwamps;
|
||||
// uniform float isDarkForests;
|
||||
// uniform float sandStorm;
|
||||
// uniform float snowStorm;
|
||||
/*
|
||||
#ifdef PER_BIOME_ENVIRONMENT
|
||||
|
||||
void BiomeFogColor(
|
||||
@@ -193,11 +194,11 @@
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
*/
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
////////////////////////////// FOG CONTROLLER /////////////////////////////////
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/*
|
||||
#ifdef TIMEOFDAYFOG
|
||||
// uniform int worldTime;
|
||||
void FogDensities(
|
||||
@@ -213,8 +214,8 @@
|
||||
float Night = clamp((Time-13000.0)/2000.0,0.0,1.0) * clamp((23000.0-Time)/2000.0,0.0,1.0);
|
||||
|
||||
// set densities. morn, noon, even, night
|
||||
vec4 UniformDensity = TOD_Fog_mult * vec4(Morning_Uniform_Fog, Noon_Uniform_Fog, Evening_Uniform_Fog, Night_Uniform_Fog);
|
||||
vec4 CloudyDensity = TOD_Fog_mult * vec4(Morning_Cloudy_Fog, Noon_Cloudy_Fog, Evening_Cloudy_Fog, Night_Cloudy_Fog);
|
||||
vec4 UniformDensity = TOD_FOG_AMOUNT * vec4(Morning_Uniform_Fog, Noon_Uniform_Fog, Evening_Uniform_Fog, Night_Uniform_Fog);
|
||||
vec4 CloudyDensity = TOD_FOG_AMOUNT * vec4(Morning_Cloudy_Fog, Noon_Cloudy_Fog, Evening_Cloudy_Fog, Night_Cloudy_Fog);
|
||||
|
||||
Rainy = Rainy*RainFog_amount;
|
||||
|
||||
@@ -226,3 +227,4 @@
|
||||
Cloudy *= Morning*CloudyDensity.r + Noon*CloudyDensity.g + Evening*CloudyDensity.b + Night*CloudyDensity.a;
|
||||
}
|
||||
#endif
|
||||
*/
|
||||
@@ -34,6 +34,7 @@ vec3 doBlockLightLighting(
|
||||
lightmapLight *= lightmapLight;
|
||||
|
||||
float lightmapCurve = mix(lightmapLight, 2.5, lightmapBrightspot);
|
||||
// lightmapCurve = lightmap;
|
||||
vec3 blockLight = lightmapCurve * lightColor;
|
||||
|
||||
#if defined IS_LPV_ENABLED && defined MC_GL_EXT_shader_image_load_store
|
||||
@@ -74,12 +75,16 @@ vec3 doIndirectLighting(
|
||||
// float lightmapCurve = pow(1.0-pow(1.0-lightmap,2.0),2.0);
|
||||
// float lightmapCurve = lightmap*lightmap;
|
||||
float lightmapCurve = (pow(lightmap,15.0)*2.0 + lightmap*lightmap)/3.0; //make sure its 0.0-1.0
|
||||
|
||||
// lightmapCurve = lightmap;
|
||||
vec3 indirectLight = lightColor * lightmapCurve * ambient_brightness;
|
||||
|
||||
// indirectLight = max(indirectLight, minimumLightColor * (MIN_LIGHT_AMOUNT * 0.02 * 0.2 + nightVision));
|
||||
indirectLight += minimumLightColor * (MIN_LIGHT_AMOUNT * 0.02 * 0.2 + nightVision*0.02);
|
||||
|
||||
// indirectLight += minimumLightColor * (MIN_LIGHT_AMOUNT * 0.02 * 0.2 + nightVision*0.02);
|
||||
|
||||
float minimumLightAmount = 0.02*nightVision + 0.005 * mix(MINIMUM_INDOOR_LIGHT, MINIMUM_OUTDOOR_LIGHT, clamp(eyeBrightnessSmooth.y/240.0 + lightmap,0.0,1.0));
|
||||
|
||||
indirectLight += minimumLightColor * minimumLightAmount;
|
||||
|
||||
return indirectLight;
|
||||
}
|
||||
|
||||
|
||||
@@ -254,10 +254,6 @@ vec4 GetVolumetricFog(
|
||||
vec3 hazeColor = normalize(gl_Fog.color.rgb + 1e-6) * 0.1;
|
||||
|
||||
float lightningflash = texelFetch2D(colortex4,ivec2(1,1),0).x/150.0;
|
||||
|
||||
#if defined LPV_VL_FOG_ILLUMINATION && defined EXCLUDE_WRITE_TO_LUT
|
||||
float TorchBrightness_autoAdjust = mix(1.0, 30.0, clamp(exp(-10.0*exposure),0.0,1.0)) / 5.0;
|
||||
#endif
|
||||
|
||||
for (int i = 0; i < SAMPLECOUNT; i++) {
|
||||
float d = (pow(expFactor, float(i+dither)/float(SAMPLECOUNT))/expFactor - 1.0/expFactor)/(1-1.0/expFactor);
|
||||
@@ -319,11 +315,6 @@ vec4 GetVolumetricFog(
|
||||
|
||||
color += (flashlightGlow - flashlightGlow * exp(-max(stormDensity,0.005)*dd*dL)) * absorbance;
|
||||
#endif
|
||||
|
||||
//------ LPV FOG EFFECT
|
||||
#if defined LPV_VL_FOG_ILLUMINATION && defined EXCLUDE_WRITE_TO_LUT
|
||||
color += LPV_FOG_ILLUMINATION(progressW-cameraPosition, dd, dL) * TorchBrightness_autoAdjust * absorbance;
|
||||
#endif
|
||||
}
|
||||
return vec4(color, absorbance);
|
||||
}
|
||||
|
||||
@@ -1,62 +1,49 @@
|
||||
uniform vec3 lightningEffect;
|
||||
|
||||
#ifdef IS_IRIS
|
||||
uniform vec4 lightningBoltPosition;
|
||||
#else
|
||||
vec4 lightningBoltPosition = vec4(0.0, 100.0, 0.0, lightningEffect.x);
|
||||
#endif
|
||||
|
||||
vec3 Iris_Lightningflash(vec3 feetPlayerPos, vec3 lightningBoltPos, vec3 WorldSpace_normal, inout float Phase){
|
||||
if(lightningBoltPosition.w > 0.0){
|
||||
vec3 LightningPos = feetPlayerPos - vec3(lightningBoltPosition.x, clamp(feetPlayerPos.y, lightningBoltPosition.y+16, lightningBoltPosition.y+116.0),lightningBoltPosition.z);
|
||||
vec3 createLightningPointLight(
|
||||
vec3 playerPos, vec3 lightningBoltPos
|
||||
|
||||
// point light, max distance is ~500 blocks (the maximim entity render distance)
|
||||
float lightDistance = 300.0 ;
|
||||
float lightningLight = max(1.0 - length(LightningPos) / lightDistance, 0.0);
|
||||
|
||||
// the light above ^^^ is a linear curve. me no likey. here's an exponential one instead.
|
||||
lightningLight = exp((1.0 - lightningLight) * -10.0);
|
||||
|
||||
// a phase for subsurface scattering.
|
||||
vec3 PhasePos = normalize(feetPlayerPos) + vec3(lightningBoltPosition.x, lightningBoltPosition.y + 60, lightningBoltPosition.z);
|
||||
float PhaseOrigin = 1.0 - clamp(dot(normalize(feetPlayerPos), normalize(PhasePos)),0.0,1.0);
|
||||
Phase = exp(sqrt(PhaseOrigin) * -2.0) * 5.0 * lightningLight;
|
||||
|
||||
// good old NdotL. only normals facing towards the lightning bolt origin rise to 1.0
|
||||
float NdotL = clamp(dot(LightningPos, -WorldSpace_normal), 0.0, 1.0);
|
||||
|
||||
return lightningEffect * lightningLight * NdotL;
|
||||
}else return vec3(0.0);
|
||||
}
|
||||
|
||||
vec3 Iris_Lightningflash_VLcloud(vec3 feetPlayerPos, vec3 lightningBoltPos){
|
||||
if(lightningBoltPosition.w > 0.0){
|
||||
vec3 LightningPos = feetPlayerPos - vec3(lightningBoltPosition.x, clamp(feetPlayerPos.y, lightningBoltPosition.y, lightningBoltPosition.y+116.0),lightningBoltPosition.z);
|
||||
|
||||
float lightDistance = 400.0;
|
||||
float lightningLight = max(1.0 - length(LightningPos) / lightDistance, 0.0);
|
||||
|
||||
lightningLight = exp((1.0 - lightningLight) * -10.0);
|
||||
|
||||
return lightningEffect * lightningLight;
|
||||
}else return vec3(0.0);
|
||||
}
|
||||
|
||||
vec3 Iris_Lightningflash_VLfog(vec3 feetPlayerPos, vec3 lightningBoltPos){
|
||||
if(lightningBoltPosition.w > 0.0){
|
||||
if(lightningBoltPosition.w < 1.0) return vec3(0.0);
|
||||
|
||||
vec3 LightningPos = feetPlayerPos - vec3(lightningBoltPosition.x, clamp(feetPlayerPos.y, lightningBoltPosition.y, lightningBoltPosition.y+116.0),lightningBoltPosition.z);
|
||||
|
||||
#ifdef TEST
|
||||
float lightningLight = max(1.0 - length(LightningPos) / 50, 0.0);
|
||||
lightningLight = exp((1.0 - lightningLight) * -15.0) ;
|
||||
#else
|
||||
float lightDistance = 300.0;
|
||||
float lightningLight = max(1.0 - length(LightningPos) / lightDistance, 0.0) ;
|
||||
|
||||
lightningLight = exp((1.0 - lightningLight) * -15.0) ;
|
||||
#if defined LIGHTNINGFLASH_DIFFUSE
|
||||
, vec3 normal
|
||||
#endif
|
||||
#if defined LIGHTNINGFLASH_VL
|
||||
,float cloudDensity
|
||||
,float gradient
|
||||
#endif
|
||||
){
|
||||
if(lightningBoltPosition.w > 0.0){
|
||||
// make it only get 5x brighter than 1.0 as that is default emissive brightness.
|
||||
vec3 flashColor = lightningEffect.rgb * 1.0;
|
||||
// flashy flashy
|
||||
flashColor *= (sin(lightningEffect.r*10.0)*0.5+0.5)*0.8+0.2;
|
||||
|
||||
return lightningEffect * lightningLight;
|
||||
}else return vec3(0.0);
|
||||
}
|
||||
vec3 boltPos = playerPos - lightningBoltPos;
|
||||
|
||||
// stretch the vertical component to cover the upper part of the bolt.
|
||||
vec3 boltPos_stretched = playerPos - vec3(lightningBoltPos.x, clamp(playerPos.y, lightningBoltPos.y, lightningBoltPos.y+150.0), lightningBoltPos.z);
|
||||
float flashDistance = length(boltPos_stretched);
|
||||
|
||||
#if defined LIGHTNINGFLASH_DIFFUSE
|
||||
// lerp between 2 points for ndotl, for the lower and upper part of the bolt.
|
||||
float NdotL = clamp(dot(normalize(boltPos - vec3(0,10,0)), -normal), 0, 1);
|
||||
float NdotL2 = clamp(dot(normalize(boltPos - vec3(0,100,0)), -normal),0,1);
|
||||
flashColor *= NdotL * (1.0 - NdotL2) + NdotL2;
|
||||
|
||||
flashColor *= exp(sqrt(flashDistance) * -0.5) * 15.0 * 3.0 * clamp(1.0-flashDistance/500.,0,1);
|
||||
#endif
|
||||
|
||||
#if defined LIGHTNINGFLASH_VL
|
||||
flashColor *= (1.0-exp(-3.0*cloudDensity)) * exp(-3.0*(1.0-gradient));
|
||||
flashColor *= exp(sqrt(flashDistance) * -0.5) * 15.0 * clamp(1.0-flashDistance/500.,0,1);
|
||||
#endif
|
||||
|
||||
return flashColor;
|
||||
|
||||
}else return vec3(0.0);
|
||||
}
|
||||
@@ -49,7 +49,7 @@ vec4 GetVolumetricFog(
|
||||
vec3 dVWorld = (wpos-gbufferModelViewInverse[3].xyz);
|
||||
vec3 progressW = vec3(0.0);
|
||||
|
||||
float maxLength = min(length(dVWorld), far)/length(dVWorld);
|
||||
float maxLength = min(length(dVWorld), min(far,16*12))/length(dVWorld);
|
||||
|
||||
dVWorld *= maxLength;
|
||||
|
||||
@@ -64,10 +64,6 @@ vec4 GetVolumetricFog(
|
||||
|
||||
vec3 hazeColor = normalize(gl_Fog.color.rgb + 1e-6) * 0.25;
|
||||
|
||||
#if defined LPV_VL_FOG_ILLUMINATION && defined EXCLUDE_WRITE_TO_LUT
|
||||
float TorchBrightness_autoAdjust = mix(1.0, 30.0, clamp(exp(-10.0*exposure),0.0,1.0)) / 5.0;
|
||||
#endif
|
||||
|
||||
for (int i = 0; i < SAMPLECOUNT; i++) {
|
||||
float d = (pow(expFactor, float(i+dither2)/float(SAMPLECOUNT))/expFactor - 1.0/expFactor)/(1-1.0/expFactor);
|
||||
float dd = pow(expFactor, float(i+dither)/float(SAMPLECOUNT)) * log(expFactor) / float(SAMPLECOUNT)/(expFactor-1.0);
|
||||
@@ -134,10 +130,6 @@ vec4 GetVolumetricFog(
|
||||
|
||||
color += (flashlightGlow - flashlightGlow * exp(-max(plumeDensity,0.005)*dd*dL)) * absorbance;
|
||||
#endif
|
||||
#if defined LPV_VL_FOG_ILLUMINATION && defined EXCLUDE_WRITE_TO_LUT
|
||||
color += LPV_FOG_ILLUMINATION(progressW-cameraPosition, dd, dL) * TorchBrightness_autoAdjust * absorbance;
|
||||
#endif
|
||||
|
||||
}
|
||||
return vec4(color, absorbance);
|
||||
}
|
||||
+263
-243
@@ -1,4 +1,5 @@
|
||||
uniform float noPuddleAreas;
|
||||
// uniform float NoRainFallEnviornmentSmooth;
|
||||
uniform ivec2 eyeBrightness;
|
||||
|
||||
float densityAtPosFog(in vec3 pos){
|
||||
pos /= 18.;
|
||||
@@ -13,44 +14,12 @@ float densityAtPosFog(in vec3 pos){
|
||||
}
|
||||
|
||||
|
||||
float cloudVol(in vec3 pos, float maxDistance ){
|
||||
|
||||
float fogYstart = FOG_START_HEIGHT+3;
|
||||
vec3 samplePos = pos*vec3(1.0,1./24.,1.0);
|
||||
vec3 samplePos2 = pos*vec3(1.0,1./48.,1.0);
|
||||
|
||||
float uniformFog = 0.0;
|
||||
|
||||
float low_gradientFog = exp2(-0.3 * max(pos.y - fogYstart,0.0));
|
||||
float medium_gradientFog = exp2(-0.15 * max(pos.y - fogYstart,0.0));
|
||||
float high_gradientFog = exp2(-0.06 * max(pos.y - fogYstart,0.0));
|
||||
|
||||
float fog_shape = 0.0;
|
||||
float fog_erosion = 0.0;
|
||||
if(sandStorm < 1.0 && snowStorm < 1.0){
|
||||
fog_shape = 1.0 - densityAtPosFog(samplePos * 24.0);
|
||||
fog_erosion = 1.0 - densityAtPosFog(samplePos2 * 200.0 - vec3(min(max(fog_shape - 0.6 ,0.0) * 2.0 ,1.0)*200.0));
|
||||
}
|
||||
|
||||
float cloudyFog = max(min(max(fog_shape - 0.6 ,0.0) * 2.0 ,1.0) - fog_erosion * 0.4 , 0.0) * exp(-0.05 * max(pos.y - (fogYstart+20),0.0));
|
||||
float rainyFog = (low_gradientFog * 0.5 + exp2(-0.06 * max(pos.y - fogYstart,0.0))) * rainStrength * noPuddleAreas;
|
||||
|
||||
if(sandStorm > 0.0 || snowStorm > 0.0){
|
||||
float IntenseFogs = pow(1.0 - densityAtPosFog( (samplePos2 - vec3(frameTimeCounter,0,frameTimeCounter)*15.0) * 100.0),2.0) * mix(1.0, high_gradientFog, snowStorm);
|
||||
cloudyFog = mix(cloudyFog, IntenseFogs, sandStorm+snowStorm);
|
||||
|
||||
medium_gradientFog = 1.0;
|
||||
}
|
||||
|
||||
FogDensities(medium_gradientFog, cloudyFog, rainyFog, maxDistance, 1.0, 1.0);
|
||||
|
||||
return uniformFog + medium_gradientFog + cloudyFog;
|
||||
}
|
||||
|
||||
float phaseRayleigh(float cosTheta) {
|
||||
const vec2 mul_add = vec2(0.1, 0.28) / acos(-1.0);
|
||||
const float oneOverPi = 1.0 / acos(-1.0);
|
||||
const vec2 mul_add = vec2(0.1, 0.28) * oneOverPi;
|
||||
return cosTheta * mul_add.x + mul_add.y; // optimized version from [Elek09], divided by 4 pi for energy conservation
|
||||
}
|
||||
|
||||
float fogPhase(float lightPoint){
|
||||
float linear = clamp(-lightPoint*0.5+0.5,0.0,1.0);
|
||||
float linear2 = 1.0 - clamp(lightPoint,0.0,1.0);
|
||||
@@ -62,256 +31,307 @@ float fogPhase(float lightPoint){
|
||||
|
||||
return exponential;
|
||||
}
|
||||
|
||||
float phaseCloudFog(float x, float g){
|
||||
float gg = g * g;
|
||||
return (gg * -0.25 + 0.25) * pow(-2.0 * (g * x) + (gg + 1.0), -1.5) / 3.14;
|
||||
}
|
||||
uniform ivec2 eyeBrightness;
|
||||
|
||||
vec3 sampleShadowmapVL(vec3 start, vec3 shadowMapRayStartPos, vec3 shadowMapRayProgress, float increment){
|
||||
vec3 shadowColor = vec3(1.0);
|
||||
|
||||
shadowMapRayProgress = start.xyz + increment*shadowMapRayStartPos;
|
||||
|
||||
#ifdef DISTORT_SHADOWMAP
|
||||
float distortFactor = calcDistort(shadowMapRayProgress.xy);
|
||||
#else
|
||||
float distortFactor = 1.0;
|
||||
#endif
|
||||
|
||||
vec3 shadowPos = vec3(shadowMapRayProgress.xy*distortFactor, shadowMapRayProgress.z);
|
||||
|
||||
if (abs(shadowPos.x) < 1.0-0.5/2048. && abs(shadowPos.y) < 1.0-0.5/2048){
|
||||
|
||||
shadowPos = shadowPos * vec3(0.5, 0.5, 0.5/6.0) + 0.5;
|
||||
|
||||
#ifdef TRANSLUCENT_COLORED_SHADOWS
|
||||
shadowColor = vec3(shadow2D(shadowtex0, shadowPos).x);
|
||||
|
||||
if(shadow2D(shadowtex1, shadowPos).x > shadowPos.z && shadowColor.x < 1.0){
|
||||
vec4 translucentShadow = texture2D(shadowcolor0, shadowPos.xy);
|
||||
if(translucentShadow.a < 0.9) shadowColor = normalize(translucentShadow.rgb+0.0001);
|
||||
}
|
||||
#else
|
||||
float shadowMap = shadow2D(shadow, shadowPos).x;
|
||||
shadowColor = vec3(shadowMap);
|
||||
#endif
|
||||
}
|
||||
return shadowColor;
|
||||
}
|
||||
|
||||
vec3 getShadows(
|
||||
vec3 rayProgress, in vec3 sunVector,
|
||||
float increment, vec3 start, vec3 shadowMapRayStartPos, vec3 shadowMapRayProgress
|
||||
,float flatPhase
|
||||
,inout float sunPhase
|
||||
){
|
||||
vec3 shadows = vec3(1.0);
|
||||
|
||||
shadows *= sampleShadowmapVL(start, shadowMapRayStartPos, shadowMapRayProgress, increment);
|
||||
|
||||
float cloudShadow = GetCloudShadow(rayProgress, sunVector);
|
||||
|
||||
shadows *= cloudShadow;
|
||||
|
||||
return shadows;
|
||||
}
|
||||
|
||||
uniform bool isInSpecialEnviornment;
|
||||
uniform vec3 exitedBiomePos;
|
||||
// uniform float fadeAwayLocalEffect;
|
||||
|
||||
float getLocalEffectDensity(
|
||||
in vec3 playerPos
|
||||
){
|
||||
float fogResult = 0.0;
|
||||
|
||||
fogResult = parameters.localFog.x;
|
||||
|
||||
if(parameters.localFog.y > 0.0){
|
||||
vec3 pos = playerPos;
|
||||
vec3 samplePos = playerPos * vec3(1.0,1.0/48.0,1.0) * 24.0 * 7.0;
|
||||
samplePos += vec3(1.0, -0.01, 1.0)*frameTimeCounter*1500.0;
|
||||
|
||||
float clumpyFog = min(max(densityAtPosFog(samplePos) - 0.2,0.0)/0.8,1.0);
|
||||
|
||||
fogResult += clumpyFog * parameters.localFog.y;
|
||||
}
|
||||
|
||||
return fogResult;
|
||||
}
|
||||
|
||||
float getFogDensities(
|
||||
in vec3 playerPos,
|
||||
float localEffectRadius
|
||||
){
|
||||
|
||||
float fogResult = 0.0;
|
||||
|
||||
fogResult = pow(parameters.fog.x,3);
|
||||
|
||||
if(parameters.fog.y > 0.0){
|
||||
vec3 movement = vec3(1.0, -0.01, 1.0)*frameTimeCounter;
|
||||
vec3 pos = playerPos;
|
||||
vec3 samplePos = playerPos * vec3(1.0,1.0/24.0,1.0) + movement;
|
||||
vec3 samplePos2 = playerPos * vec3(1.0,1.0/48.0,1.0) + movement;
|
||||
|
||||
float shape = 1.0 - densityAtPosFog(samplePos * 24.0);
|
||||
float shape2 = 1.0 - densityAtPosFog(samplePos2 * 200.0 - vec3(min(max(shape - 0.6 ,0.0) * 2.0 ,1.0)*200.0));
|
||||
float finalShape = max(min(max(shape - 0.6 ,0.0) * 2.0 ,1.0) - shape2 * 0.4, 0.0) * exp(-0.05 * max(pos.y - 60,0.0));
|
||||
|
||||
fogResult += finalShape * pow(parameters.fog.y,3);
|
||||
}
|
||||
|
||||
return fogResult;
|
||||
|
||||
// FogDensities(medium_gradientFog, cloudyFog, rainyFog, maxDistance, dailyWeatherParams0.a, dailyWeatherParams1.a);
|
||||
|
||||
// return uniformFog + medium_gradientFog + cloudyFog + rainyFog;
|
||||
|
||||
// float fog = pow(parameters.fog.x,5);
|
||||
// if(parameters.localFog.y > 0.0){
|
||||
// }
|
||||
// return fog;
|
||||
|
||||
// vec3 samplePos = playerPos * vec3(1.0,1.0/48.0,1.0) * 24.0 * 5;
|
||||
// samplePos += vec3(1.0, -0.01, 1.0)*frameTimeCounter*1500.0;
|
||||
// float clumpyFog = densityAtPosFog(samplePos);
|
||||
|
||||
// float localUniformFogDensity = pow(parameters.localFog.x,5.0);
|
||||
// float localClumpyFogDensity = pow(parameters.localFog.y,5.0);
|
||||
// float localFogEffects = localEffectRadius * (localUniformFogDensity + max(clumpyFog*localClumpyFogDensity - 0.3,0.0));
|
||||
|
||||
// return localFogEffects;
|
||||
|
||||
// float fogYstart = FOG_START_HEIGHT+3;
|
||||
// vec3 samplePos = pos*vec3(1.0,1./24.,1.0);
|
||||
// vec3 samplePos2 = pos*vec3(1.0,1./48.,1.0);
|
||||
|
||||
// float uniformFog = 0.0;
|
||||
|
||||
// float low_gradientFog = exp2(-0.3 * max(pos.y - fogYstart,0.0));
|
||||
// float medium_gradientFog = exp2(-0.15 * max(pos.y - fogYstart,0.0));
|
||||
// float high_gradientFog = exp2(-0.06 * max(pos.y - fogYstart,0.0));
|
||||
|
||||
// float fog_shape = 0.0;
|
||||
// float fog_erosion = 0.0;
|
||||
// if(sandStorm < 1.0 && snowStorm < 1.0){
|
||||
// fog_shape = 1.0 - densityAtPosFog(samplePos * 24.0);
|
||||
// fog_erosion = 1.0 - densityAtPosFog(samplePos2 * 200.0 - vec3(min(max(fog_shape - 0.6 ,0.0) * 2.0 ,1.0)*200.0));
|
||||
// }
|
||||
|
||||
// float cloudyFog = max(min(max(fog_shape - 0.6 ,0.0) * 2.0 ,1.0) - fog_erosion * 0.4 , 0.0) * exp(-0.05 * max(pos.y - (fogYstart+20),0.0));
|
||||
// float rainyFog = (low_gradientFog * 0.5 + exp2(-0.06 * max(pos.y - fogYstart,0.0))) * rainStrength * NoRainFallEnviornmentSmooth;
|
||||
|
||||
// if(sandStorm > 0.0 || snowStorm > 0.0){
|
||||
// float IntenseFogs = pow(1.0 - densityAtPosFog( (samplePos2 - vec3(frameTimeCounter,0,frameTimeCounter)*15.0) * 100.0),2.0) * mix(1.0, high_gradientFog, snowStorm);
|
||||
// cloudyFog = mix(cloudyFog, IntenseFogs, sandStorm+snowStorm);
|
||||
|
||||
// medium_gradientFog = 1.0;
|
||||
// }
|
||||
|
||||
// FogDensities(medium_gradientFog, cloudyFog, rainyFog, maxDistance, 1.0, 1.0);
|
||||
|
||||
// return uniformFog + medium_gradientFog + cloudyFog;
|
||||
}
|
||||
|
||||
vec4 GetVolumetricFog(
|
||||
in vec3 viewPosition,
|
||||
in vec3 sunVector,
|
||||
in vec3 viewPos,
|
||||
in vec2 dither,
|
||||
in vec3 sunVector,
|
||||
|
||||
in vec3 LightColor,
|
||||
in vec3 AmbientColor,
|
||||
in vec3 AveragedAmbientColor,
|
||||
inout float atmosphereAlpha,
|
||||
inout vec3 sceneColor,
|
||||
|
||||
in float cloudPlaneDistance
|
||||
|
||||
// #if defined LPV_VL_FOG_ILLUMINATION && defined EXCLUDE_WRITE_TO_LUT
|
||||
// ,in vec3 LPV_ILLUMINATION
|
||||
// #endif
|
||||
){
|
||||
#ifndef TOGGLE_VL_FOG
|
||||
return vec4(0.0,0.0,0.0,1.0);
|
||||
#endif
|
||||
|
||||
/// ------------- RAYMARCHING STUFF ------------- \\\
|
||||
|
||||
int SAMPLECOUNT = VL_SAMPLES;
|
||||
|
||||
//project pixel position into projected shadowmap space
|
||||
vec3 wpos = mat3(gbufferModelViewInverse) * viewPosition + gbufferModelViewInverse[3].xyz;
|
||||
vec3 fragposition = mat3(shadowModelView) * wpos + shadowModelView[3].xyz;
|
||||
fragposition = diagonal3(shadowProjection) * fragposition + shadowProjection[3].xyz;
|
||||
vec3 playerPos = mat3(gbufferModelViewInverse) * viewPos + gbufferModelViewInverse[3].xyz;
|
||||
vec3 rayStartPos = playerPos - gbufferModelViewInverse[3].xyz;
|
||||
|
||||
//project view origin into projected shadowmap space
|
||||
vec3 localRayStartPos = rayStartPos;
|
||||
float localRayLength = length(localRayStartPos);
|
||||
localRayStartPos *= min(localRayLength, 64.0)/localRayLength;
|
||||
localRayLength = length(localRayStartPos);
|
||||
vec3 localRayProgress = vec3(0.0);
|
||||
|
||||
// shadowmap stuff
|
||||
vec3 shadowViewPos = mat3(shadowModelView) * playerPos + shadowModelView[3].xyz;
|
||||
shadowViewPos = diagonal3(shadowProjection) * shadowViewPos + shadowProjection[3].xyz;
|
||||
vec3 start = toShadowSpaceProjected(vec3(0.0));
|
||||
vec3 shadowMapRayStartPos = shadowViewPos - start;
|
||||
|
||||
//rayvector into projected shadow map space
|
||||
//we can use a projected vector because its orthographic projection
|
||||
//however we still have to send it to curved shadow map space every step
|
||||
vec3 dV = fragposition - start;
|
||||
vec3 dVWorld = wpos - gbufferModelViewInverse[3].xyz;
|
||||
float rayLength = length(rayStartPos);
|
||||
|
||||
#ifdef DISTANT_HORIZONS
|
||||
float maxLength = min(length(dVWorld), max(far, dhRenderDistance))/length(dVWorld);
|
||||
float maxLength = min(rayLength, max(far, dhRenderDistance))/rayLength;
|
||||
#else
|
||||
float maxLength = min(length(dVWorld), far)/length(dVWorld);
|
||||
float maxLength = min(rayLength, far)/rayLength;
|
||||
#endif
|
||||
|
||||
dV *= maxLength;
|
||||
dVWorld *= maxLength;
|
||||
|
||||
float dL = length(dVWorld)/8.0;
|
||||
shadowMapRayStartPos *= maxLength;
|
||||
rayStartPos *= maxLength;
|
||||
|
||||
vec3 progress = start.xyz;
|
||||
vec3 progressW = vec3(0.0);
|
||||
rayLength = length(rayStartPos);
|
||||
|
||||
vec3 rayProgress = vec3(0.0);
|
||||
vec3 shadowMapRayProgress = vec3(0.0);
|
||||
float expFactor = 11.0;
|
||||
|
||||
float indoors = clamp(eyeBrightnessSmooth.y/240.0,0,1);
|
||||
|
||||
/// ------------- COLOR/LIGHTING STUFF ------------- \\\
|
||||
vec3 localFogColor = parameters.localFogColor.rgb;
|
||||
vec3 localFogColor_lightCol = localFogColor * dot(LightColor,vec3(0.33333));
|
||||
vec3 localFogColor_ambientCol = localFogColor * dot(AmbientColor,vec3(0.33333));
|
||||
|
||||
vec3 color = vec3(0.0);
|
||||
vec3 finalAbsorbance = vec3(1.0);
|
||||
|
||||
// float totalAbsorbance = 1.0;
|
||||
vec3 totalAbsorbance = vec3(1.0);
|
||||
|
||||
float fogAbsorbance = 1.0;
|
||||
// float atmosphereAbsorbance = 1.0;
|
||||
vec3 atmosphereAbsorbance = vec3(1.0);
|
||||
|
||||
float SdotV = dot(mat3(gbufferModelView) * sunVector, normalize(viewPosition));
|
||||
|
||||
///// ----- fog lighting
|
||||
//Mie phase + somewhat simulates multiple scattering (Horizon zero down cloud approx)
|
||||
float sunPhase = fogPhase(SdotV)*5.0;// phaseCloudFog(SdotV, 0.9) + phaseCloudFog(SdotV, 0.85) + phaseCloudFog(SdotV, 0.5) * 5.0;
|
||||
float sunPhase2 = (phaseCloudFog(SdotV, 0.85) + phaseCloudFog(SdotV, 0.5)) * 5.0;
|
||||
float skyPhase = 2.0 + pow(1.0-pow(1.0-clamp(normalize(wpos).y*0.5+0.5,0.0,1.0),2.0),5.0)*2.0 ;//pow(clamp(normalize(wpos).y*0.5+0.5,0.0,1.0),4.0)*5.0;
|
||||
float rayL = phaseRayleigh(SdotV);
|
||||
|
||||
vec3 rC = vec3(sky_coefficientRayleighR*1e-6, sky_coefficientRayleighG*1e-5, sky_coefficientRayleighB*1e-5) ;
|
||||
vec3 mC = vec3(fog_coefficientMieR*1e-6, fog_coefficientMieG*1e-6, fog_coefficientMieB*1e-6);
|
||||
float absorbance = 1.0;
|
||||
float localAbsorbance = 1.0;
|
||||
float LPVAbsorb = 1.0;
|
||||
vec3 airAbsorbance = vec3(1.0);
|
||||
|
||||
#if defined EXCLUDE_WRITE_TO_LUT && defined USE_CUSTOM_FOG_LIGHTING_COLORS
|
||||
LightColor = dot(LightColor,vec3(0.21, 0.72, 0.07)) * vec3(DIRECTLIGHT_FOG_R,DIRECTLIGHT_FOG_G,DIRECTLIGHT_FOG_B);
|
||||
AmbientColor = dot(AmbientColor,vec3(0.21, 0.72, 0.07)) * vec3(INDIRECTLIGHT_FOG_R,INDIRECTLIGHT_FOG_G,INDIRECTLIGHT_FOG_B);
|
||||
#endif
|
||||
float SdotV = dot(sunVector, normalize(playerPos));
|
||||
float rayleighPhase = phaseRayleigh(SdotV);
|
||||
float sunPhase = fogPhase(SdotV) * 5.0;
|
||||
float flatPhase = clamp(SdotV*0.5+0.5,0.0,1.0);
|
||||
|
||||
vec3 skyLightPhased = AmbientColor;
|
||||
vec3 LightSourcePhased = LightColor;
|
||||
|
||||
skyLightPhased *= skyPhase;
|
||||
LightSourcePhased *= sunPhase;
|
||||
|
||||
#ifdef ambientLight_only
|
||||
LightSourcePhased = vec3(0.0);
|
||||
#endif
|
||||
|
||||
#ifdef PER_BIOME_ENVIRONMENT
|
||||
vec3 biomeDirect = LightSourcePhased;
|
||||
vec3 biomeIndirect = skyLightPhased;
|
||||
float inBiome = BiomeVLFogColors(biomeDirect, biomeIndirect);
|
||||
#endif
|
||||
|
||||
#if defined LPV_VL_FOG_ILLUMINATION && defined EXCLUDE_WRITE_TO_LUT
|
||||
float TorchBrightness_autoAdjust = mix(1.0, 30.0, clamp(exp(-10.0*exposure),0.0,1.0)) / 5.0;
|
||||
#endif
|
||||
|
||||
float inACave = 1.0 - caveDetection;
|
||||
float lightLevelZero = pow(clamp(eyeBrightnessSmooth.y/240.0 ,0.0,1.0),3.0);
|
||||
|
||||
// SkyLightColor *= lightLevelZero*0.9 + 0.1;
|
||||
vec3 finalsceneColor = vec3(0.0);
|
||||
float skyPhase = 0.5 + pow(1.0-pow(1.0-clamp(normalize(playerPos).y*0.5+0.5,0.0,1.0),2.0),5.0)*2.0;
|
||||
|
||||
vec3 rayleighCoeffs = vec3(sky_coefficientRayleighR*1e-6, sky_coefficientRayleighG*1e-5, sky_coefficientRayleighB*1e-5);
|
||||
vec3 mieCoeffs = vec3(sky_coefficientMieR*1e-6, sky_coefficientMieG*1e-6, sky_coefficientMieB*1e-6);
|
||||
|
||||
// this is to reduce sampling problems with shadows when thick local fog is used.
|
||||
float localFogExists = (parameters.localFog.x > 0.0 || parameters.localFog.y > 0.0) ? 1.0 : 0.0;
|
||||
|
||||
for (int i = 0; i < SAMPLECOUNT; i++) {
|
||||
float d = (pow(expFactor, float(i+dither.x)/float(SAMPLECOUNT))/expFactor - 1.0/expFactor)/(1-1.0/expFactor);
|
||||
float dd = pow(expFactor, float(i+dither.y)/float(SAMPLECOUNT)) * log(expFactor) / float(SAMPLECOUNT)/(expFactor-1.0);
|
||||
|
||||
#ifdef VOLUMETRIC_CLOUDS
|
||||
// #if (defined CloudLayer0 || defined CloudLayer1 || defined CloudLayer2)
|
||||
// check if the fog intersects clouds
|
||||
if(length(d*dVWorld) > cloudPlaneDistance) break;
|
||||
#endif
|
||||
|
||||
progress = start.xyz + d*dV;
|
||||
progressW = gbufferModelViewInverse[3].xyz + cameraPosition + d*dVWorld;
|
||||
|
||||
//------------------------------------
|
||||
//------ SAMPLE SHADOWS FOR FOG EFFECTS
|
||||
//------------------------------------
|
||||
#ifdef DISTORT_SHADOWMAP
|
||||
float distortFactor = calcDistort(progress.xy);
|
||||
#else
|
||||
float distortFactor = 1.0;
|
||||
#endif
|
||||
vec3 shadowPos = vec3(progress.xy*distortFactor, progress.z);
|
||||
|
||||
vec3 sh = vec3(1.0);
|
||||
if (abs(shadowPos.x) < 1.0-0.5/2048. && abs(shadowPos.y) < 1.0-0.5/2048){
|
||||
shadowPos = shadowPos*vec3(0.5,0.5,0.5/6.0)+0.5;
|
||||
|
||||
#ifdef TRANSLUCENT_COLORED_SHADOWS
|
||||
sh = vec3(shadow2D(shadowtex0, shadowPos).x);
|
||||
|
||||
if(shadow2D(shadowtex1, shadowPos).x > shadowPos.z && sh.x < 1.0){
|
||||
vec4 translucentShadow = texture2D(shadowcolor0, shadowPos.xy);
|
||||
if(translucentShadow.a < 0.9) sh = normalize(translucentShadow.rgb+0.0001);
|
||||
}
|
||||
#else
|
||||
sh = vec3(shadow2D(shadow, shadowPos).x);
|
||||
#endif
|
||||
}
|
||||
#ifdef RAYMARCH_CLOUDS_WITH_FOG
|
||||
vec3 sh_forClouds = sh;
|
||||
#endif
|
||||
|
||||
sh *= GetCloudShadow(progressW, sunVector);
|
||||
|
||||
|
||||
#ifdef PER_BIOME_ENVIRONMENT
|
||||
float maxDistance = inBiome * min(max(1.0 - length(d*dVWorld.xz)/(32*8),0.0)*2.0,1.0);
|
||||
float densityVol = cloudVol(progressW, maxDistance) * inACave;
|
||||
#else
|
||||
float densityVol = cloudVol(progressW, 0.0) * inACave;
|
||||
#endif
|
||||
|
||||
//------------------------------------
|
||||
//------ MAIN FOG EFFECT
|
||||
//------------------------------------
|
||||
float fogDensity = densityVol;
|
||||
float fogVolumeCoeff = exp(-fogDensity*dd*dL); // this is like beer-lambert law or something
|
||||
|
||||
#ifdef PER_BIOME_ENVIRONMENT
|
||||
vec3 indirectLight = mix(skyLightPhased, biomeIndirect, maxDistance);
|
||||
vec3 DirectLight = mix(LightSourcePhased, biomeDirect, maxDistance) * sh;
|
||||
#else
|
||||
vec3 indirectLight = skyLightPhased;
|
||||
vec3 DirectLight = LightSourcePhased * sh;
|
||||
#endif
|
||||
|
||||
vec3 Lightning = Iris_Lightningflash_VLfog(progressW-cameraPosition, lightningBoltPosition.xyz);
|
||||
vec3 lighting = DirectLight + indirectLight;
|
||||
|
||||
color += (lighting - lighting * fogVolumeCoeff) * totalAbsorbance;
|
||||
|
||||
#if defined FLASHLIGHT && defined FLASHLIGHT_FOG_ILLUMINATION && !defined VL_CLOUDS_DEFERRED
|
||||
// vec3 shiftedViewPos = mat3(gbufferModelView)*(progressW-cameraPosition) + vec3(-0.25, 0.2, 0.0);
|
||||
// vec3 shiftedPlayerPos = mat3(gbufferModelViewInverse) * shiftedViewPos;
|
||||
vec3 shiftedViewPos;
|
||||
vec3 shiftedPlayerPos;
|
||||
float forwardOffset;
|
||||
|
||||
#ifdef VIVECRAFT
|
||||
if (vivecraftIsVR) {
|
||||
forwardOffset = 0.0;
|
||||
shiftedPlayerPos = (progressW - cameraPosition) + ( vivecraftRelativeMainHandPos);
|
||||
shiftedViewPos = shiftedPlayerPos * mat3(vivecraftRelativeMainHandRot);
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
forwardOffset = 0.5;
|
||||
shiftedViewPos = mat3(gbufferModelView)*(progressW-cameraPosition) + vec3(-0.25, 0.2, 0.0);
|
||||
shiftedPlayerPos = mat3(gbufferModelViewInverse) * shiftedViewPos;
|
||||
}
|
||||
|
||||
vec2 scaledViewPos = shiftedViewPos.xy / max(-shiftedViewPos.z - forwardOffset, 1e-7);
|
||||
float linearDistance = length(shiftedPlayerPos);
|
||||
float shiftedLinearDistance = length(scaledViewPos);
|
||||
|
||||
float lightFalloff = 1.0 - clamp(1.0-linearDistance/FLASHLIGHT_RANGE, -0.999,1.0);
|
||||
lightFalloff = max(exp(-30.0 * lightFalloff),0.0);
|
||||
float projectedCircle = clamp(1.0 - shiftedLinearDistance*FLASHLIGHT_SIZE,0.0,1.0);
|
||||
|
||||
vec3 flashlightGlow = vec3(FLASHLIGHT_R,FLASHLIGHT_G,FLASHLIGHT_B) * lightFalloff * projectedCircle * 0.5;
|
||||
|
||||
color += (flashlightGlow - flashlightGlow * exp(-max(fogDensity,0.005)*dd*dL)) * totalAbsorbance;
|
||||
#endif
|
||||
|
||||
// kill fog absorbance when in caves.
|
||||
totalAbsorbance *= mix(1.0, fogVolumeCoeff, lightLevelZero);
|
||||
//------------------------------------
|
||||
//------ ATMOSPHERE HAZE EFFECT
|
||||
//------------------------------------
|
||||
|
||||
// maximum range for atmosphere haze, basically.
|
||||
float planetVolume = 1.0 - exp(clamp(1.0 - length(progressW-cameraPosition) / (16*150), 0.0,1.0) * -10);
|
||||
|
||||
// just air
|
||||
vec2 airCoef = (exp2(-max(progressW.y-SEA_LEVEL,0.0)/vec2(8.0e3, 1.2e3)*vec2(6.,7.0)) * 192.0 * Haze_amount) * planetVolume;
|
||||
|
||||
// Pbr for air, yolo mix between mie and rayleigh for water droplets
|
||||
vec3 rL = rC*airCoef.x;
|
||||
vec3 m = mC*(airCoef.y+densityVol*300.0);
|
||||
|
||||
// calculate the atmosphere haze seperately and purely additive to color, do not contribute to absorbtion.
|
||||
vec3 atmosphereVolumeCoeff = exp(-(rL+m)*dd*dL);
|
||||
// vec3 Atmosphere = LightSourcePhased * sh * (rayL*rL + sunPhase*m) + AveragedAmbientColor * (rL+m);
|
||||
vec3 Atmosphere = (LightSourcePhased * sh * (rayL*rL + sunPhase*m) + AveragedAmbientColor * (rL+m) * (lightLevelZero*0.99 + 0.01)) * inACave;
|
||||
color += (Atmosphere - Atmosphere * atmosphereVolumeCoeff) / (rL+m+1e-6) * atmosphereAbsorbance;
|
||||
// if(length(d*rayStartPos) > cloudPlaneDistance) break;
|
||||
// #endif
|
||||
|
||||
atmosphereAbsorbance *= atmosphereVolumeCoeff*fogVolumeCoeff;
|
||||
#if (defined CloudLayer0 || defined CloudLayer1 || defined CloudLayer2)
|
||||
float kill = length(d*rayStartPos) > cloudPlaneDistance ? 0.0 : 1.0;
|
||||
#else
|
||||
float kill = 1.0;
|
||||
#endif
|
||||
|
||||
// totalAbsorbance *= dot(atmosphereVolumeCoeff,vec3(0.33333));
|
||||
rayProgress = gbufferModelViewInverse[3].xyz + cameraPosition + d*rayStartPos;
|
||||
localRayProgress = gbufferModelViewInverse[3].xyz + cameraPosition + d*localRayStartPos;
|
||||
|
||||
vec3 shadows = getShadows(mix(rayProgress, localRayProgress, localFogExists), sunVector, d, start, shadowMapRayStartPos, shadowMapRayProgress, flatPhase, sunPhase);
|
||||
|
||||
#if defined LIGHTNING_FLASH && defined LIGHTNINGFLASH_VL
|
||||
vec3 lightningFlash = createLightningPointLight(rayProgress - cameraPosition, lightningBoltPosition.xyz, 1.0, 1.0) * indoors;
|
||||
#endif
|
||||
/// ATMOSOPHERE
|
||||
float planetVolume = clamp(1.0 - length((rayProgress-cameraPosition) - vec3(0.0, 250.0, 0.0)) / 2500.0, 0.0,1.0);
|
||||
vec2 airCoef = exp2(-max(rayProgress.y-SEA_LEVEL,0.0)/vec2(8.0e3, 1.2e3)*vec2(6.,7.0)) * planetVolume * 25.0 * Haze_amount;
|
||||
vec3 rayleigh = rayleighCoeffs*airCoef.x;
|
||||
vec3 mie = mieCoeffs*(airCoef.y + min(Haze_amount,1.0));
|
||||
vec3 airDensity = kill*(rayleigh + mie);
|
||||
vec3 airDensityPhased = rayleighPhase*rayleigh + sunPhase*mie;
|
||||
vec3 airVolumeCoeff = exp(-airDensity*dd*rayLength);
|
||||
vec3 airLighting = LightColor*shadows*sunPhase * airDensityPhased + AveragedAmbientColor*0.666*airDensity;
|
||||
|
||||
#if defined LIGHTNING_FLASH && defined LIGHTNINGFLASH_VL
|
||||
airLighting += lightningFlash*airDensity;
|
||||
#endif
|
||||
|
||||
color += (airLighting - airLighting * airVolumeCoeff) / (airDensity+1e-6)*airAbsorbance;
|
||||
|
||||
//------------------------------------
|
||||
//------ LPV FOG EFFECT
|
||||
//------------------------------------
|
||||
#if defined LPV_VL_FOG_ILLUMINATION && defined EXCLUDE_WRITE_TO_LUT
|
||||
color += LPV_FOG_ILLUMINATION(progressW-cameraPosition, dd, dL) * totalAbsorbance;
|
||||
#endif
|
||||
/// GLOBAL FOG
|
||||
float fogDensity = kill*getFogDensities(rayProgress, 0.0);
|
||||
float fogVolumeCoeff = exp(-fogDensity*dd*rayLength);
|
||||
vec3 fogLighting = LightColor*sunPhase*shadows + AmbientColor*skyPhase;
|
||||
|
||||
// #if defined LPV_VL_FOG_ILLUMINATION && defined EXCLUDE_WRITE_TO_LUT
|
||||
// color += LPV_ILLUMINATION;
|
||||
// #endif
|
||||
|
||||
#if defined LIGHTNING_FLASH && defined LIGHTNINGFLASH_VL
|
||||
fogLighting += lightningFlash;
|
||||
#endif
|
||||
|
||||
color += (fogLighting - fogLighting * fogVolumeCoeff) * absorbance;
|
||||
|
||||
/// LOCAL FOG
|
||||
#if (defined CloudLayer0 || defined CloudLayer1 || defined CloudLayer2)
|
||||
kill = length(d*localRayStartPos) > cloudPlaneDistance ? 0.0 : 1.0;
|
||||
#endif
|
||||
|
||||
float localEffectDensity = kill * getLocalEffectDensity(localRayProgress);
|
||||
float localFogVolumeCoeff = exp(-localEffectDensity*dd*localRayLength);
|
||||
vec3 localFogLighting = localFogColor_lightCol*shadows*sunPhase + localFogColor_ambientCol*skyPhase;
|
||||
|
||||
color += (localFogLighting - localFogLighting * localFogVolumeCoeff) * localAbsorbance;
|
||||
|
||||
localAbsorbance *= localFogVolumeCoeff;
|
||||
airAbsorbance *= airVolumeCoeff*fogVolumeCoeff*localFogVolumeCoeff;
|
||||
absorbance *= fogVolumeCoeff*localFogVolumeCoeff*dot(airVolumeCoeff,vec3(0.33333));
|
||||
}
|
||||
|
||||
// sceneColor = finalsceneColor;
|
||||
|
||||
// atmosphereAlpha = atmosphereAbsorbance;
|
||||
|
||||
return vec4(color, totalAbsorbance);
|
||||
return vec4(color, absorbance);
|
||||
}
|
||||
@@ -9,4 +9,4 @@
|
||||
#endif
|
||||
|
||||
#define BLOOM_QUALITY 0.5 // Reduces the resolution at which bloom is computed. (0.5 = half of default resolution) [0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1. ]
|
||||
#define VL_RENDER_RESOLUTION 0.5 // Reduces the resolution at which volumetric fog is computed. (0.5 = half of default resolution) [0.25 0.5 1.0]
|
||||
#define VL_RENDERING_RESOLUTION_SCALE 0.5 // Reduces the resolution at which volumetric fog is computed. (0.5 = half of default resolution) [0.25 0.5 1.0]
|
||||
+614
-176
@@ -1,197 +1,604 @@
|
||||
#if !defined READ_SCENE_CONTROLLER_PARAMETERS
|
||||
#if defined USE_SCENE_CONTROLLER_SETTINGS
|
||||
/*===============================================================================================================================================================
|
||||
=============== HOW TO MAKE FUNCTIONAL CUSTOM SCENE CONTROLLER PARAMETERS ===============
|
||||
|
||||
THERE ARE 2 FILES YOU NEED TO OPEN INSIDE OF THE SHADERPACK FOLDER AS TO OPERATE WITHIN
|
||||
- the "shaders.properties" file located in shaderpacks/bliss/shaders/shaders.properties
|
||||
- the "scene_controller.glsl" file located in shaderpacks/bliss/shaders/lib/scene_controller.glsl (you are already in it reading its contents)
|
||||
|
||||
you can create a custom configuration of parameters that appear in specific circumstances within minecraft.
|
||||
to do this, you first need to know when you are in a specific circumstance.
|
||||
you need to create "triggers", which have 2 states, a true and a false state. these are known as "boolean" variables
|
||||
here is a step by step process of how to create and use your own custom uniform "trigger", and use it to activate your own parameters in the scene controller.
|
||||
|
||||
------------- STEP 1 -------------
|
||||
create a "custom uniform". it should be a boolean value that returns as true or false.
|
||||
these are created and named in the "shaders.properties" file
|
||||
take note of writing style and syntax or errors will happen
|
||||
|
||||
examples:
|
||||
|
||||
blank slates for syntax clarity
|
||||
uniform.bool.blankBool = if(VALUE <is greater/less than, or equal to> ANOTHER_VALUE)
|
||||
uniform.bool.blankBool = if(VALUE > ANOTHE_RVALUE)
|
||||
uniform.bool.blankBool = if(VALUE < ANOTHER_VALUE)
|
||||
uniform.bool.blankBool = if(VALUE == ANOTHER_VALUE)
|
||||
uniform.bool.blankBool = in(biome, BIOME_A, BIOME_B, BIOME_C)
|
||||
uniform.bool.blankBool = in(biome, BIOME_A)
|
||||
|
||||
uniform.bool.nameWhateverYouWant_isExampleBool1 = in(biome, BIOME_DARK_FOREST, BIOME_DESERT, BIOME_PLAINS)
|
||||
uniform.bool.nameWhateverYouWant_isExampleBool2 = if(nightvision > 0.0)
|
||||
uniform.bool.nameWhateverYouWant_isExampleBool3 = if(cameraPosition.x < 40.0 && cameraPosition.y > -100.0)
|
||||
uniform.bool.nameWhateverYouWant_isExampleBool4 = if(rainStrength > 0.0)
|
||||
uniform.bool.nameWhateverYouWant_isExampleBool5 = if(eyeBrightness.x/240.0 > 0.0)
|
||||
|
||||
there are many things you can detect (this is by no means a complete list, links to the iris documentation of what you can detect are linked below)
|
||||
-if it is raining/thunderstorming (snowing and raining are one in the same here sadly)
|
||||
-what biome the player is standing in
|
||||
-the torch/sky light level the player is standing in
|
||||
-the position in world coordinates the player is standing in
|
||||
-if the player is above or under water/lava/powderedsnow
|
||||
-if the player has above or below specific health/armor/hunger values
|
||||
-if the player has nightvision/darkness/blindness/invisibility (theres only a few potion status effects you can detect)
|
||||
-if the player is on fire or not
|
||||
|
||||
documentation for creating custom uniforms in shaders.properties https://shaders.properties/current/reference/shadersproperties/custom_uniforms/
|
||||
documentation for player status related uniforms https://shaders.properties/current/reference/uniforms/status/
|
||||
documentation for player position/camera related uniforms https://shaders.properties/current/reference/uniforms/camera/
|
||||
|
||||
------------- STEP 2 -------------
|
||||
declare/call the variable in the "scene_controller.glsl" file
|
||||
this is required to make use of the custom uniform you made in the shader.properties file
|
||||
take note of writing style and syntax or errors will happen
|
||||
|
||||
example:
|
||||
|
||||
uniform bool nameWhateverYouWant_isExampleBool1;
|
||||
uniform bool nameWhateverYouWant_isExampleBool2;
|
||||
uniform bool nameWhateverYouWant_isExampleBool3;
|
||||
|
||||
------------- STEP 3 -------------
|
||||
use the custom uniform
|
||||
in the scene_controller.glsl file, within the applySceneControllerParameters() function, there is a designated area.
|
||||
in that area, you will check if the custom uniforms you have made are true or false or "triggered", and if any are true, make the parameters equal whatever values you want.
|
||||
take note of writing style and syntax or errors will happen
|
||||
|
||||
example:
|
||||
|
||||
blank slate for syntax clarity
|
||||
if( <arguements go here> ){
|
||||
<what runs does when the arguement is true>;
|
||||
}
|
||||
|
||||
if( nameWhateverYouWant_isExampleBool1 ){
|
||||
smallCumulusCoverage = 1.0;
|
||||
smallCumulusDensity = 0.5;
|
||||
fogColor = vec3(1.0, 0.0, 0.0);
|
||||
}
|
||||
if( nameWhateverYouWant_isExampleBool2 ){
|
||||
smallCumulusCoverage = 0.0;
|
||||
smallCumulusDensity = 0.2;
|
||||
fogColor = vec3(1.0, 1.0, 1.0);
|
||||
}
|
||||
if( nameWhateverYouWant_isExampleBool3 ){
|
||||
smallCumulusCoverage = 0.0;
|
||||
smallCumulusDensity = 0.2;
|
||||
fogColor = vec3(1.0, 1.0, 1.0);
|
||||
}
|
||||
|
||||
|
||||
for color picking, the shader is mixing RGB values together. the values are in the 0.0 to 1.0 range instead of 0.0 to 255.0
|
||||
|
||||
example:
|
||||
vec3 exampleColor1 = vec3(RedValue, GreenValue, BlueValue);
|
||||
vec3 exampleColor2 = vec3(1.0, 0.724, 0.1114);
|
||||
|
||||
this is a handy tool for colorpicking in the correct number range: https://rgbcolorpicker.com/0-1
|
||||
|
||||
------------- STEP 4 -------------
|
||||
save both files, and reload the shaderpack (you can click R or just enable/disable it).
|
||||
that is the end of the guide.
|
||||
|
||||
=============== DEBUGGING ===============
|
||||
for debugging shaders.properties, you will need to
|
||||
1. look at the game's latest.log, it will spit errors out, while nothing apparent will be wrong in-game when reloading the shader
|
||||
|
||||
for debugging scene_controller.glsl,you will need to
|
||||
1. open the shaderpacks selection menu
|
||||
2. click the key combination CTRL + D and enable debug mode
|
||||
3. if errors happen it will tell you whats wrong, kind of.
|
||||
|
||||
if you follow syntax it should not error, if it does, check for incorrect:
|
||||
-spelling (capitalization, incorrect variable names)
|
||||
-use of semicolons ; (they should be a stopper at the end-point of EVERY line of code but only in scene_controller.glsl. DO NOT use them like that in shaders.propertes, or it will error)
|
||||
-use of brackets ()
|
||||
-use of other brackets {}
|
||||
|
||||
=============== IMPORTANT NOTES ===============
|
||||
different custom uniforms SHOULD NOT be allowed to return true at the same times, otherwise they will overwrite eachother in order of what is done last, reading from the top of the file to the bottom.
|
||||
|
||||
example:
|
||||
|
||||
if you make a custom uniform that returns true if the player is in the swamp, and a second different custom uniform that returns true when a player is above the Y coord of 40
|
||||
|
||||
if( isInSwampBiome ){
|
||||
smallCumulusCoverage = 1.0;
|
||||
smallCumulusDensity = 0.5;
|
||||
}
|
||||
if( isAboveYCoord ){
|
||||
smallCumulusCoverage = 0.2;
|
||||
smallCumulusDensity = 0.1;
|
||||
}
|
||||
|
||||
THIS WILL CONFLICT if you are at the same time in a swamp, and above Y coord 40.
|
||||
in this case, isAboveYCoord's settings wins and will overwrite isInSwampBiome's settings.
|
||||
this will not cause an error or warning, its just how the math works and how the shader compiler reads the code.
|
||||
|
||||
YOU CANNOT ADD NEW PARAMETERS TO CONTROL, YOU ARE ONLY ABLE TO CONTROL PRE-EXISTING ONES
|
||||
BECAUSE ADDING NEW ONES IS ALOT MORE COMPLEX AND REQUIRES KNOWING HOW TO CODE IN GLSL AND KNOWLEDGE OF HOW THE SHADER IS DESIGNED
|
||||
===============================================================================================================================================================*/
|
||||
|
||||
|
||||
|
||||
//=============== DECLARE UNIFORMS BELOW HERE ===============
|
||||
uniform int worldDay;
|
||||
//=============== DECLARE UNIFORMS ABOVE HERE ===============
|
||||
uniform ivec3 cameraPositionInt;
|
||||
|
||||
uniform bool isInColdArea;
|
||||
uniform bool isInHotArea;
|
||||
uniform bool isInJungleBiomes;
|
||||
uniform bool isInSwampBiomes;
|
||||
uniform bool isInSpecialEnviornment;
|
||||
uniform bool isInSnowFallEnviornment;
|
||||
uniform bool isInRainFallEnviornment;
|
||||
uniform bool isInNoRainFallEnviornment;
|
||||
|
||||
uniform int worldTime;
|
||||
|
||||
#define DECLARE_UNIFORMS_OR_WRITE_FUNCTIONS_FOR_CUSTOM_SCENE_CONTROLLER_PROFILES
|
||||
#include /CUSTOM_SCENE_PARAMETERS.glsl
|
||||
|
||||
// https://www.shadertoy.com/view/llGSzw
|
||||
float hash11( uint n )
|
||||
{
|
||||
// integer hash copied from Hugo Elias
|
||||
n = (n << 13U) ^ n;
|
||||
n = n * (n * n * 15731U + 789221U) + 1376312589U;
|
||||
return float( n & uint(0x7fffffffU))/float(0x7fffffff);
|
||||
}
|
||||
bool playerIsWithinArea(in vec3 positionA, in vec3 positionB){
|
||||
return cameraPositionInt.x > positionA.x && cameraPositionInt.y > positionA.y && cameraPositionInt.z > positionA.z && cameraPositionInt.x < positionB.x && cameraPositionInt.y < positionB.y && cameraPositionInt.z < positionB.z;
|
||||
}
|
||||
bool playerIsOutsideArea(in vec3 positionA, in vec3 positionB){
|
||||
return !(cameraPositionInt.x > positionA.x && cameraPositionInt.y > positionA.y && cameraPositionInt.z > positionA.z && cameraPositionInt.x < positionB.x && cameraPositionInt.y < positionB.y && cameraPositionInt.z < positionB.z);
|
||||
}
|
||||
vec4 timesOfDay(){
|
||||
|
||||
float time = float(worldTime%24000);
|
||||
|
||||
// set schedules for fog to appear at specific ranges of time in the day.
|
||||
float morning = clamp((time-22000.0)/2000.0,0.0,1.0) + clamp((2000.0-time)/2000.0,0.0,1.0);
|
||||
float noon = clamp(time/2000.0,0.0,1.0) * clamp((12000.0-time)/2000.0,0.0,1.0);
|
||||
float evening = clamp((time-10000.0)/2000.0,0.0,1.0) * clamp((14000.0-time)/2000.0,0.0,1.0);
|
||||
float night = clamp((time-13000.0)/2000.0,0.0,1.0) * clamp((23000.0-time)/2000.0,0.0,1.0);
|
||||
|
||||
return (float(TOD_FOG_AMOUNT) / 100.0) * vec4(morning, noon, evening, night);
|
||||
}
|
||||
void applySceneControllerParameters(
|
||||
out float smallCumulusCoverage, out float smallCumulusDensity,
|
||||
out float largeCumulusCoverage, out float largeCumulusDensity,
|
||||
out float altostratusCoverage, out float altostratusDensity,
|
||||
out float fogA, out float fogB
|
||||
out float uniformFogDensity, out float clumpyFogDensity,
|
||||
out float LocalUniformFogDensity, out float LocalClumpyFogDensity, out vec3 localFogColor
|
||||
){
|
||||
// these are the default parameters if no "trigger" or custom uniform is being used.
|
||||
// do not remove them
|
||||
smallCumulusCoverage = CloudLayer0_coverage;
|
||||
smallCumulusDensity = CloudLayer0_density;
|
||||
largeCumulusCoverage = CloudLayer1_coverage;
|
||||
largeCumulusDensity = CloudLayer1_density;
|
||||
altostratusCoverage = CloudLayer2_coverage;
|
||||
altostratusDensity = CloudLayer2_density;
|
||||
fogA = 1.0;
|
||||
fogB = 1.0;
|
||||
smallCumulusCoverage = 0.0;
|
||||
smallCumulusDensity = 0.0;
|
||||
largeCumulusCoverage = 0.0;
|
||||
largeCumulusDensity = 0.0;
|
||||
altostratusCoverage = 0.0;
|
||||
altostratusDensity = 0.0;
|
||||
uniformFogDensity = 0.0;
|
||||
clumpyFogDensity = 0.0;
|
||||
LocalUniformFogDensity = 0.0;
|
||||
LocalClumpyFogDensity = 0.0;
|
||||
localFogColor = vec3(1.0);
|
||||
|
||||
//=============== CONFIGURE CUSTOM SCENE PARAMETERS BELOW HERE ===============
|
||||
#if TOD_FOG_AMOUNT > 0
|
||||
vec4 timesOfDay = timesOfDay();
|
||||
uniformFogDensity = dot(timesOfDay, vec4(Morning_Uniform_Fog, Noon_Uniform_Fog, Evening_Uniform_Fog, Night_Uniform_Fog));
|
||||
clumpyFogDensity = dot(timesOfDay, vec4(Morning_Cloudy_Fog, Noon_Cloudy_Fog, Evening_Cloudy_Fog, Night_Cloudy_Fog));
|
||||
#endif
|
||||
|
||||
//=============== CONFIGURE CUSTOM SCENE PARAMETERS ABOVE HERE ===============
|
||||
// the seed is the in-game day counter.
|
||||
// give a random value within the range 0.0-1.0 which is scaled up to the wanted range, and then quantized to choose a profile
|
||||
float RNG = hash11(worldDay + 0.2);
|
||||
|
||||
#if USE_CUSTOM_DAILY_WEATHER_PROFILE == 0
|
||||
int dailyWeatherProfile = int(RNG * 11.0);
|
||||
switch (dailyWeatherProfile){
|
||||
default : {
|
||||
altostratusCoverage = 0.0;
|
||||
largeCumulusCoverage = 0.0;
|
||||
smallCumulusCoverage = 0.0;
|
||||
|
||||
altostratusDensity = 0.0;
|
||||
largeCumulusDensity = 0.0;
|
||||
smallCumulusDensity = 0.0;
|
||||
break;
|
||||
}
|
||||
case 1: {
|
||||
altostratusCoverage = 0.0;
|
||||
largeCumulusCoverage = 1.0;
|
||||
smallCumulusCoverage = 1.0;
|
||||
|
||||
altostratusDensity = 0.0;
|
||||
largeCumulusDensity = 0.5;
|
||||
smallCumulusDensity = 0.25;
|
||||
break;
|
||||
}
|
||||
case 2: {
|
||||
altostratusCoverage = 1.0;
|
||||
largeCumulusCoverage = 1.0;
|
||||
smallCumulusCoverage = 0.0;
|
||||
|
||||
altostratusDensity = 0.5;
|
||||
largeCumulusDensity = 0.5;
|
||||
smallCumulusDensity = 0.0;
|
||||
break;
|
||||
}
|
||||
case 3: {
|
||||
altostratusCoverage = 0.0;
|
||||
largeCumulusCoverage = 1.1;
|
||||
smallCumulusCoverage = 0.0;
|
||||
|
||||
altostratusDensity = 0.0;
|
||||
largeCumulusDensity = 0.5;
|
||||
smallCumulusDensity = 0.0;
|
||||
break;
|
||||
}
|
||||
case 4: {
|
||||
altostratusCoverage = 1.5;
|
||||
largeCumulusCoverage = 0.0;
|
||||
smallCumulusCoverage = 1.0;
|
||||
|
||||
altostratusDensity = 0.25;
|
||||
largeCumulusDensity = 0.1;
|
||||
smallCumulusDensity = 0.1;
|
||||
break;
|
||||
}
|
||||
case 5 : {
|
||||
altostratusCoverage = 1.0;
|
||||
largeCumulusCoverage = 0.1;
|
||||
smallCumulusCoverage = 1.0;
|
||||
|
||||
altostratusDensity = 0.1;
|
||||
largeCumulusDensity = 0.5;
|
||||
smallCumulusDensity = 0.5;
|
||||
break;
|
||||
}
|
||||
case 6: {
|
||||
altostratusCoverage = 1.0;
|
||||
largeCumulusCoverage = 0.0;
|
||||
smallCumulusCoverage = 0.0;
|
||||
|
||||
altostratusDensity = 0.5;
|
||||
largeCumulusDensity = 0.0;
|
||||
smallCumulusDensity = 0.0;
|
||||
break;
|
||||
}
|
||||
case 7: {
|
||||
altostratusCoverage = 0.0;
|
||||
largeCumulusCoverage = 1.9;
|
||||
smallCumulusCoverage = 0.0;
|
||||
|
||||
altostratusDensity = 0.0;
|
||||
largeCumulusDensity = 0.2;
|
||||
smallCumulusDensity = 0.0;
|
||||
break;
|
||||
}
|
||||
case 8: {
|
||||
altostratusCoverage = 0.0;
|
||||
largeCumulusCoverage = 0.0;
|
||||
smallCumulusCoverage = 1.4;
|
||||
|
||||
altostratusDensity = 0.0;
|
||||
largeCumulusDensity = 0.0;
|
||||
smallCumulusDensity = 0.5;
|
||||
break;
|
||||
}
|
||||
case 9: {
|
||||
altostratusCoverage = 2.0;
|
||||
largeCumulusCoverage = 0.0;
|
||||
smallCumulusCoverage = 0.0;
|
||||
|
||||
altostratusDensity = 0.3;
|
||||
largeCumulusDensity = 0.0;
|
||||
smallCumulusDensity = 0.0;
|
||||
break;
|
||||
}
|
||||
case 10: {
|
||||
altostratusCoverage = 0.0;
|
||||
largeCumulusCoverage = 0.0;
|
||||
smallCumulusCoverage = 1.0;
|
||||
|
||||
altostratusDensity = 0.0;
|
||||
largeCumulusDensity = 0.0;
|
||||
smallCumulusDensity = 0.5;
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if USE_CUSTOM_DAILY_WEATHER_PROFILE > 0
|
||||
int customDailyWeatherProfile = int(RNG * float(USE_CUSTOM_DAILY_WEATHER_PROFILE));
|
||||
switch (customDailyWeatherProfile){
|
||||
default : {
|
||||
smallCumulusCoverage = DAILY_PROFILE_1_LAYER0_COVERAGE;
|
||||
largeCumulusCoverage = DAILY_PROFILE_1_LAYER1_COVERAGE;
|
||||
altostratusCoverage = DAILY_PROFILE_1_LAYER2_COVERAGE;
|
||||
smallCumulusDensity = DAILY_PROFILE_1_LAYER0_DENSITY;
|
||||
largeCumulusDensity = DAILY_PROFILE_1_LAYER1_DENSITY;
|
||||
altostratusDensity = DAILY_PROFILE_1_LAYER2_DENSITY;
|
||||
break;
|
||||
}
|
||||
#if USE_CUSTOM_DAILY_WEATHER_PROFILE >= 2
|
||||
case 1: {
|
||||
smallCumulusCoverage = DAILY_PROFILE_2_LAYER0_COVERAGE;
|
||||
largeCumulusCoverage = DAILY_PROFILE_2_LAYER1_COVERAGE;
|
||||
altostratusCoverage = DAILY_PROFILE_2_LAYER2_COVERAGE;
|
||||
smallCumulusDensity = DAILY_PROFILE_2_LAYER0_DENSITY;
|
||||
largeCumulusDensity = DAILY_PROFILE_2_LAYER1_DENSITY;
|
||||
altostratusDensity = DAILY_PROFILE_2_LAYER2_DENSITY;
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
#if USE_CUSTOM_DAILY_WEATHER_PROFILE >= 3
|
||||
case 2: {
|
||||
smallCumulusCoverage = DAILY_PROFILE_3_LAYER0_COVERAGE;
|
||||
largeCumulusCoverage = DAILY_PROFILE_3_LAYER1_COVERAGE;
|
||||
altostratusCoverage = DAILY_PROFILE_3_LAYER2_COVERAGE;
|
||||
smallCumulusDensity = DAILY_PROFILE_3_LAYER0_DENSITY;
|
||||
largeCumulusDensity = DAILY_PROFILE_3_LAYER1_DENSITY;
|
||||
altostratusDensity = DAILY_PROFILE_3_LAYER2_DENSITY;
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
#if USE_CUSTOM_DAILY_WEATHER_PROFILE >= 4
|
||||
case 3: {
|
||||
smallCumulusCoverage = DAILY_PROFILE_4_LAYER0_COVERAGE;
|
||||
largeCumulusCoverage = DAILY_PROFILE_4_LAYER1_COVERAGE;
|
||||
altostratusCoverage = DAILY_PROFILE_4_LAYER2_COVERAGE;
|
||||
smallCumulusDensity = DAILY_PROFILE_4_LAYER0_DENSITY;
|
||||
largeCumulusDensity = DAILY_PROFILE_4_LAYER1_DENSITY;
|
||||
altostratusDensity = DAILY_PROFILE_4_LAYER2_DENSITY;
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
#if USE_CUSTOM_DAILY_WEATHER_PROFILE >= 5
|
||||
case 4: {
|
||||
smallCumulusCoverage = DAILY_PROFILE_5_LAYER0_COVERAGE;
|
||||
largeCumulusCoverage = DAILY_PROFILE_5_LAYER1_COVERAGE;
|
||||
altostratusCoverage = DAILY_PROFILE_5_LAYER2_COVERAGE;
|
||||
smallCumulusDensity = DAILY_PROFILE_5_LAYER0_DENSITY;
|
||||
largeCumulusDensity = DAILY_PROFILE_5_LAYER1_DENSITY;
|
||||
altostratusDensity = DAILY_PROFILE_5_LAYER2_DENSITY;
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
#if USE_CUSTOM_DAILY_WEATHER_PROFILE >= 6
|
||||
case 5 : {
|
||||
smallCumulusCoverage = DAILY_PROFILE_6_LAYER0_COVERAGE;
|
||||
largeCumulusCoverage = DAILY_PROFILE_6_LAYER1_COVERAGE;
|
||||
altostratusCoverage = DAILY_PROFILE_6_LAYER2_COVERAGE;
|
||||
smallCumulusDensity = DAILY_PROFILE_6_LAYER0_DENSITY;
|
||||
largeCumulusDensity = DAILY_PROFILE_6_LAYER1_DENSITY;
|
||||
altostratusDensity = DAILY_PROFILE_6_LAYER2_DENSITY;
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
if(rainStrength > 0.0001){
|
||||
#if USE_CUSTOM_DAILY_RAIN_PROFILE == 0
|
||||
int rainyWeatherProfile = int(RNG * 6.0);
|
||||
|
||||
switch (rainyWeatherProfile){
|
||||
///////////////////////// TEMPERATE WEATHER PROFILES
|
||||
default : { // light rain
|
||||
smallCumulusCoverage = 1.5;
|
||||
smallCumulusDensity = 0.25;
|
||||
largeCumulusCoverage = 0.0;
|
||||
altostratusCoverage = 2.0;
|
||||
altostratusDensity = 0.1;
|
||||
|
||||
uniformFogDensity = 0.1;
|
||||
clumpyFogDensity = 0.2;
|
||||
break;
|
||||
}
|
||||
case 1: { // medium rain
|
||||
smallCumulusCoverage = 0.0;
|
||||
largeCumulusCoverage = 1.5;
|
||||
largeCumulusDensity = 0.25;
|
||||
altostratusCoverage = 1.5;
|
||||
altostratusDensity = 0.5;
|
||||
|
||||
uniformFogDensity = 0.2;
|
||||
clumpyFogDensity = 0.4;
|
||||
break;
|
||||
}
|
||||
case 2: { // heavy rain
|
||||
smallCumulusCoverage = 1.5;
|
||||
smallCumulusDensity = 0.25;
|
||||
largeCumulusCoverage = 1.5;
|
||||
largeCumulusDensity = 0.25;
|
||||
altostratusCoverage = 1.3;
|
||||
altostratusDensity = 0.5;
|
||||
|
||||
uniformFogDensity = 0.3;
|
||||
clumpyFogDensity = 0.2;
|
||||
break;
|
||||
}
|
||||
case 3: { // heavy rain
|
||||
smallCumulusCoverage = 1.5;
|
||||
smallCumulusDensity = 0.25;
|
||||
largeCumulusCoverage = 1.5;
|
||||
largeCumulusDensity = 0.25;
|
||||
altostratusCoverage = 1.3;
|
||||
altostratusDensity = 0.5;
|
||||
|
||||
uniformFogDensity = 0.1;
|
||||
clumpyFogDensity = 0.2;
|
||||
break;
|
||||
}
|
||||
case 4: { // medium rain
|
||||
smallCumulusCoverage = 0.0;
|
||||
largeCumulusCoverage = 1.5;
|
||||
largeCumulusDensity = 0.25;
|
||||
altostratusCoverage = 2.0;
|
||||
altostratusDensity = 0.3;
|
||||
|
||||
uniformFogDensity = 0.1;
|
||||
clumpyFogDensity = 0.2;
|
||||
break;
|
||||
}
|
||||
case 5: { // light rain
|
||||
smallCumulusCoverage = 0.0;
|
||||
largeCumulusCoverage = 1.8;
|
||||
largeCumulusDensity = 0.1;
|
||||
altostratusCoverage = 0.0;
|
||||
|
||||
uniformFogDensity = 0.1;
|
||||
clumpyFogDensity = 0.2;
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if USE_CUSTOM_DAILY_RAIN_PROFILE > 0
|
||||
int customRainyWeatherProfile = int(RNG * USE_CUSTOM_DAILY_RAIN_PROFILE);
|
||||
|
||||
switch (customRainyWeatherProfile){
|
||||
default : {
|
||||
smallCumulusCoverage = RAINY_PROFILE_1_LAYER0_COVERAGE;
|
||||
largeCumulusCoverage = RAINY_PROFILE_1_LAYER1_COVERAGE;
|
||||
altostratusCoverage = RAINY_PROFILE_1_LAYER2_COVERAGE;
|
||||
smallCumulusDensity = RAINY_PROFILE_1_LAYER0_DENSITY;
|
||||
largeCumulusDensity = RAINY_PROFILE_1_LAYER1_DENSITY;
|
||||
altostratusDensity = RAINY_PROFILE_1_LAYER2_DENSITY;
|
||||
break;
|
||||
}
|
||||
#if USE_CUSTOM_DAILY_RAIN_PROFILE >= 2
|
||||
case 1: {
|
||||
smallCumulusCoverage = RAINY_PROFILE_2_LAYER0_COVERAGE;
|
||||
largeCumulusCoverage = RAINY_PROFILE_2_LAYER1_COVERAGE;
|
||||
altostratusCoverage = RAINY_PROFILE_2_LAYER2_COVERAGE;
|
||||
smallCumulusDensity = RAINY_PROFILE_2_LAYER0_DENSITY;
|
||||
largeCumulusDensity = RAINY_PROFILE_2_LAYER1_DENSITY;
|
||||
altostratusDensity = RAINY_PROFILE_2_LAYER2_DENSITY;
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
#if USE_CUSTOM_DAILY_RAIN_PROFILE >= 3
|
||||
case 2: {
|
||||
smallCumulusCoverage = RAINY_PROFILE_3_LAYER0_COVERAGE;
|
||||
largeCumulusCoverage = RAINY_PROFILE_3_LAYER1_COVERAGE;
|
||||
altostratusCoverage = RAINY_PROFILE_3_LAYER2_COVERAGE;
|
||||
smallCumulusDensity = RAINY_PROFILE_3_LAYER0_DENSITY;
|
||||
largeCumulusDensity = RAINY_PROFILE_3_LAYER1_DENSITY;
|
||||
altostratusDensity = RAINY_PROFILE_3_LAYER2_DENSITY;
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
#if USE_CUSTOM_DAILY_RAIN_PROFILE >= 4
|
||||
case 3: {
|
||||
smallCumulusCoverage = RAINY_PROFILE_4_LAYER0_COVERAGE;
|
||||
largeCumulusCoverage = RAINY_PROFILE_4_LAYER1_COVERAGE;
|
||||
altostratusCoverage = RAINY_PROFILE_4_LAYER2_COVERAGE;
|
||||
smallCumulusDensity = RAINY_PROFILE_4_LAYER0_DENSITY;
|
||||
largeCumulusDensity = RAINY_PROFILE_4_LAYER1_DENSITY;
|
||||
altostratusDensity = RAINY_PROFILE_4_LAYER2_DENSITY;
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
#if USE_CUSTOM_DAILY_RAIN_PROFILE >= 5
|
||||
case 4: {
|
||||
smallCumulusCoverage = RAINY_PROFILE_5_LAYER0_COVERAGE;
|
||||
largeCumulusCoverage = RAINY_PROFILE_5_LAYER1_COVERAGE;
|
||||
altostratusCoverage = RAINY_PROFILE_5_LAYER2_COVERAGE;
|
||||
smallCumulusDensity = RAINY_PROFILE_5_LAYER0_DENSITY;
|
||||
largeCumulusDensity = RAINY_PROFILE_5_LAYER1_DENSITY;
|
||||
altostratusDensity = RAINY_PROFILE_5_LAYER2_DENSITY;
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
#if USE_CUSTOM_DAILY_RAIN_PROFILE >= 6
|
||||
case 5 : {
|
||||
smallCumulusCoverage = RAINY_PROFILE_6_LAYER0_COVERAGE;
|
||||
largeCumulusCoverage = RAINY_PROFILE_6_LAYER1_COVERAGE;
|
||||
altostratusCoverage = RAINY_PROFILE_6_LAYER2_COVERAGE;
|
||||
smallCumulusDensity = RAINY_PROFILE_6_LAYER0_DENSITY;
|
||||
largeCumulusDensity = RAINY_PROFILE_6_LAYER1_DENSITY;
|
||||
altostratusDensity = RAINY_PROFILE_6_LAYER2_DENSITY;
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
#if USE_CUSTOM_HOT_BIOME_RAIN_PROFILE == 0 || USE_CUSTOM_COLD_BIOME_RAIN_PROFILE == 0
|
||||
// simply shift the index ahead for enviornment switching
|
||||
int biomeRainyWeatherProfile = int(RNG * 3.0);
|
||||
|
||||
#if USE_CUSTOM_HOT_BIOME_RAIN_PROFILE == 0
|
||||
if(isInHotArea && isInNoRainFallEnviornment) biomeRainyWeatherProfile += 3;
|
||||
#endif
|
||||
#if USE_CUSTOM_COLD_BIOME_RAIN_PROFILE == 0
|
||||
if(isInColdArea && isInSnowFallEnviornment) biomeRainyWeatherProfile += 6;
|
||||
#endif
|
||||
|
||||
switch (biomeRainyWeatherProfile){
|
||||
default : {
|
||||
break;
|
||||
}
|
||||
#if USE_CUSTOM_HOT_BIOME_RAIN_PROFILE == 0
|
||||
case 3: { // clear
|
||||
uniformFogDensity = 0.0;
|
||||
clumpyFogDensity = 0.0;
|
||||
break;
|
||||
}
|
||||
case 4: { // dust storm
|
||||
LocalUniformFogDensity = 0.03;
|
||||
LocalClumpyFogDensity = 0.2;
|
||||
localFogColor = vec3(1.0,0.5,0.3);
|
||||
|
||||
uniformFogDensity = 0.0;
|
||||
clumpyFogDensity = 0.0;
|
||||
break;
|
||||
}
|
||||
case 5: { // sand storm
|
||||
LocalUniformFogDensity = 0.08;
|
||||
LocalClumpyFogDensity = 0.5;
|
||||
localFogColor = vec3(1.0,0.3,0.1)*2.0;
|
||||
|
||||
uniformFogDensity = 0.0;
|
||||
clumpyFogDensity = 0.0;
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
#if USE_CUSTOM_COLD_BIOME_RAIN_PROFILE == 0
|
||||
case 6: { // light snow
|
||||
LocalUniformFogDensity = 0.0085;
|
||||
LocalClumpyFogDensity = 0.0;
|
||||
localFogColor = vec3(0.4,0.6,1.0) * 5.0;
|
||||
|
||||
uniformFogDensity = 0.0;
|
||||
clumpyFogDensity = 0.0;
|
||||
break;
|
||||
}
|
||||
case 7: { // snow storm
|
||||
LocalUniformFogDensity = 0.03;
|
||||
LocalClumpyFogDensity = 0.2;
|
||||
localFogColor = vec3(0.4,0.6,1.0) * 5.0;
|
||||
|
||||
uniformFogDensity = 0.0;
|
||||
clumpyFogDensity = 0.0;
|
||||
break;
|
||||
}
|
||||
case 8: { // blizzard
|
||||
LocalUniformFogDensity = 0.07;
|
||||
LocalClumpyFogDensity = 1.0;
|
||||
localFogColor = vec3(0.4,0.6,1.0) * 5.0;
|
||||
|
||||
uniformFogDensity = 0.0;
|
||||
clumpyFogDensity = 0.0;
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
#if USE_CUSTOM_HOT_BIOME_RAIN_PROFILE > 0
|
||||
if(isInHotArea && isInNoRainFallEnviornment){
|
||||
uniformFogDensity = 0.0;
|
||||
clumpyFogDensity = 0.0;
|
||||
|
||||
int customHotBiomeRainyWeatherProfile = int(RNG * USE_CUSTOM_HOT_BIOME_RAIN_PROFILE);
|
||||
|
||||
switch (customHotBiomeRainyWeatherProfile){
|
||||
default : {
|
||||
LocalUniformFogDensity = HOT_BIOME_RAINY_PROFILE_1_UNIFORM_FOG_DENSITY;
|
||||
LocalClumpyFogDensity = HOT_BIOME_RAINY_PROFILE_1_CLUMPY_FOG_DENSITY;
|
||||
localFogColor = vec3(HOT_BIOME_RAINY_PROFILE_1_FOG_COLOR_R, HOT_BIOME_RAINY_PROFILE_1_FOG_COLOR_G, HOT_BIOME_RAINY_PROFILE_1_FOG_COLOR_B);
|
||||
break;
|
||||
}
|
||||
#if USE_CUSTOM_HOT_BIOME_RAIN_PROFILE >= 2
|
||||
case 1: {
|
||||
LocalUniformFogDensity = HOT_BIOME_RAINY_PROFILE_2_UNIFORM_FOG_DENSITY;
|
||||
LocalClumpyFogDensity = HOT_BIOME_RAINY_PROFILE_2_CLUMPY_FOG_DENSITY;
|
||||
localFogColor = vec3(HOT_BIOME_RAINY_PROFILE_2_FOG_COLOR_R, HOT_BIOME_RAINY_PROFILE_2_FOG_COLOR_G, HOT_BIOME_RAINY_PROFILE_2_FOG_COLOR_B);
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
#if USE_CUSTOM_HOT_BIOME_RAIN_PROFILE >= 3
|
||||
case 2: {
|
||||
LocalUniformFogDensity = HOT_BIOME_RAINY_PROFILE_3_UNIFORM_FOG_DENSITY;
|
||||
LocalClumpyFogDensity = HOT_BIOME_RAINY_PROFILE_3_CLUMPY_FOG_DENSITY;
|
||||
localFogColor = vec3(HOT_BIOME_RAINY_PROFILE_3_FOG_COLOR_R, HOT_BIOME_RAINY_PROFILE_3_FOG_COLOR_G, HOT_BIOME_RAINY_PROFILE_3_FOG_COLOR_B);
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if USE_CUSTOM_COLD_BIOME_RAIN_PROFILE > 0
|
||||
if(isInColdArea && isInSnowFallEnviornment){
|
||||
uniformFogDensity = 0.0;
|
||||
clumpyFogDensity = 0.0;
|
||||
|
||||
int customHotBiomeRainyWeatherProfile = int(RNG * USE_CUSTOM_COLD_BIOME_RAIN_PROFILE);
|
||||
|
||||
switch (customHotBiomeRainyWeatherProfile){
|
||||
default : {
|
||||
LocalUniformFogDensity = COLD_BIOME_RAINY_PROFILE_1_UNIFORM_FOG_DENSITY;
|
||||
LocalClumpyFogDensity = COLD_BIOME_RAINY_PROFILE_1_CLUMPY_FOG_DENSITY;
|
||||
localFogColor = vec3(COLD_BIOME_RAINY_PROFILE_1_FOG_COLOR_R, COLD_BIOME_RAINY_PROFILE_1_FOG_COLOR_G, COLD_BIOME_RAINY_PROFILE_1_FOG_COLOR_B);
|
||||
break;
|
||||
}
|
||||
#if USE_CUSTOM_COLD_BIOME_RAIN_PROFILE >= 2
|
||||
case 1: {
|
||||
LocalUniformFogDensity = COLD_BIOME_RAINY_PROFILE_2_UNIFORM_FOG_DENSITY;
|
||||
LocalClumpyFogDensity = COLD_BIOME_RAINY_PROFILE_2_CLUMPY_FOG_DENSITY;
|
||||
localFogColor = vec3(COLD_BIOME_RAINY_PROFILE_2_FOG_COLOR_R, COLD_BIOME_RAINY_PROFILE_2_FOG_COLOR_G, HCOLDBIOME_RAINY_PROFILE_2_FOG_COLOR_B);
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
#if USE_CUSTOM_COLD_BIOME_RAIN_PROFILE >= 3
|
||||
case 2: {
|
||||
LocalUniformFogDensity = COLD_BIOME_RAINY_PROFILE_3_UNIFORM_FOG_DENSITY;
|
||||
LocalClumpyFogDensity = COLD_BIOME_RAINY_PROFILE_3_CLUMPY_FOG_DENSITY;
|
||||
localFogColor = vec3(HCOLDBIOME_RAINY_PROFILE_3_FOG_COLOR_R, COLD_BIOME_RAINY_PROFILE_3_FOG_COLOR_G, COLD_BIOME_RAINY_PROFILE_3_FOG_COLOR_B);
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
#if USE_CUSTOM_SWAMP_CATEGORY_PROFILE == 0
|
||||
if(isInSwampBiomes){
|
||||
uniformFogDensity = 0.0;
|
||||
clumpyFogDensity = 0.0;
|
||||
|
||||
LocalUniformFogDensity = 0.01;
|
||||
LocalClumpyFogDensity = 0.1;
|
||||
localFogColor = vec3(0.8,1.0,0.1);
|
||||
}
|
||||
#endif
|
||||
#if USE_CUSTOM_SWAMP_CATEGORY_PROFILE == 1
|
||||
if(isInSwampBiomes){
|
||||
uniformFogDensity = 0.0;
|
||||
clumpyFogDensity = 0.0;
|
||||
|
||||
LocalUniformFogDensity = CUSTOM_SWAMP_PROFILE_1_UNIFORM_FOG_DENSITY;
|
||||
LocalClumpyFogDensity = CUSTOM_SWAMP_PROFILE_1_CLUMPY_FOG_DENSITY;
|
||||
localFogColor = vec3(CUSTOM_SWAMP_PROFILE_1_FOG_COLOR_R, CUSTOM_SWAMP_PROFILE_1_FOG_COLOR_G, CUSTOM_SWAMP_PROFILE_1_FOG_COLOR_B);
|
||||
}
|
||||
#endif
|
||||
#if USE_CUSTOM_JUNGLE_CATEGORY_PROFILE == 0
|
||||
if(isInJungleBiomes){
|
||||
uniformFogDensity = 0.0;
|
||||
clumpyFogDensity = 0.0;
|
||||
|
||||
LocalUniformFogDensity = 0.01;
|
||||
LocalClumpyFogDensity = 0.0;
|
||||
localFogColor = vec3(0.5,1.0,0.8);
|
||||
}
|
||||
#endif
|
||||
#if USE_CUSTOM_JUNGLE_CATEGORY_PROFILE == 1
|
||||
if(isInJungleBiomes){
|
||||
uniformFogDensity = 0.0;
|
||||
clumpyFogDensity = 0.0;
|
||||
|
||||
LocalUniformFogDensity = CUSTOM_JUNGLE_PROFILE_1_UNIFORM_FOG_DENSITY;
|
||||
LocalClumpyFogDensity = CUSTOM_JUNGLE_PROFILE_1_CLUMPY_FOG_DENSITY;
|
||||
localFogColor = vec3(CUSTOM_JUNGLE_PROFILE_1_FOG_COLOR_R, CUSTOM_JUNGLE_PROFILE_1_FOG_COLOR_G, CUSTOM_JUNGLE_PROFILE_1_FOG_COLOR_B);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#define WRITE_CUSTOM_SCENE_CONTROLLER_PROFILES
|
||||
#include /CUSTOM_SCENE_PARAMETERS.glsl
|
||||
|
||||
//====================================================================================================================================================================
|
||||
//=============== EVERYTHING BELOW HERE IS NOT FOR CUSTOM SCENE CONTROLLER STUFF AND SHOULD NOT BE MODIFIED UNLESS YOU KNOW EXACTLY WHAT YOU ARE DOING ===============
|
||||
//====================================================================================================================================================================
|
||||
|
||||
|
||||
// write various parameters within singular pixels of a texture, which is a non-clearing buffer reprojecting the previous frame of itself, onto itself.
|
||||
// this allows smooth interpolation over time from any old parameter value, to any new parameter value.
|
||||
|
||||
// read in vertex stage of post processing passes (deferred, composite), so it only runs on 4 vertices
|
||||
// pass to fragment stage for use.
|
||||
|
||||
// the parameters are stored as such:
|
||||
// smallCumulus = (coverage, density)
|
||||
// largeCumulus = (coverage, density)
|
||||
// altostratus = (coverage, density)
|
||||
// fog = (uniform fog density, cloudy fog density)
|
||||
// ... and more, eventually
|
||||
}
|
||||
#endif
|
||||
|
||||
flat varying struct sceneController {
|
||||
vec2 smallCumulus;
|
||||
vec2 largeCumulus;
|
||||
vec2 altostratus;
|
||||
vec2 fog;
|
||||
vec2 localFog;
|
||||
vec3 localFogColor;
|
||||
} parameters;
|
||||
|
||||
vec3 writeSceneControllerParameters(
|
||||
@@ -199,7 +606,9 @@ vec3 writeSceneControllerParameters(
|
||||
vec2 smallCumulus,
|
||||
vec2 largeCumulus,
|
||||
vec2 altostratus,
|
||||
vec2 fog
|
||||
vec2 fog,
|
||||
vec2 localFog,
|
||||
vec3 localFogColor
|
||||
){
|
||||
|
||||
// in colortex4, data is written in a 3x3 pixel area from (1,1) to (3,3)
|
||||
@@ -208,9 +617,9 @@ vec3 writeSceneControllerParameters(
|
||||
|
||||
/* (1,3) */ bool topLeft = uv.x > 1 && uv.x < 2 && uv.y > 3 && uv.y < 4;
|
||||
/* (2,3) */ bool topMiddle = uv.x > 2 && uv.x < 3 && uv.y > 3 && uv.y < 4;
|
||||
// /* (3,3) */ bool topRight = uv.x > 3 && uv.x < 5 && uv.y > 3 && uv.y < 4;
|
||||
// /* (1,2) */ bool middleLeft = uv.x > 1 && uv.x < 2 && uv.y > 2 && uv.y < 3;
|
||||
// /* (2,2) */ bool middleMiddle = uv.x > 2 && uv.x < 3 && uv.y > 2 && uv.y < 3;
|
||||
/* (3,3) */ bool topRight = uv.x > 3 && uv.x < 5 && uv.y > 3 && uv.y < 4;
|
||||
/* (1,2) */ bool middleLeft = uv.x > 1 && uv.x < 2 && uv.y > 2 && uv.y < 3;
|
||||
/* (2,2) */ bool middleMiddle = uv.x > 2 && uv.x < 3 && uv.y > 2 && uv.y < 3;
|
||||
// /* (3,2) */ bool middleRight = uv.x > 3 && uv.x < 5 && uv.y > 2 && uv.y < 3;
|
||||
// /* (1,1) */ bool bottomLeft = uv.x > 1 && uv.x < 2 && uv.y > 1 && uv.y < 2;
|
||||
// /* (2,1) */ bool bottomMiddle = uv.x > 2 && uv.x < 3 && uv.y > 1 && uv.y < 2;
|
||||
@@ -220,6 +629,10 @@ vec3 writeSceneControllerParameters(
|
||||
|
||||
if(topLeft) data = vec3(smallCumulus.xy, largeCumulus.x);
|
||||
if(topMiddle) data = vec3(largeCumulus.y, altostratus.xy);
|
||||
if(topRight) data = vec3(fog.xy, localFog.x);
|
||||
if(middleLeft) data = vec3(localFog.y, 0.0, 0.0);
|
||||
if(middleMiddle) data = vec3(localFogColor.rgb);
|
||||
|
||||
|
||||
// if(topRight) data = vec4(groundSunColor,fogSunColor.r);
|
||||
// if(middleLeft) data = vec4(groundAmbientColor,fogSunColor.g);
|
||||
@@ -237,16 +650,41 @@ void readSceneControllerParameters(
|
||||
out vec2 smallCumulus,
|
||||
out vec2 largeCumulus,
|
||||
out vec2 altostratus,
|
||||
out vec2 fog
|
||||
out vec2 fog,
|
||||
out vec2 localFog,
|
||||
out vec3 localFogColor
|
||||
){
|
||||
|
||||
// in colortex4, read the data stored within the 3 components of the sampled pixels, and pass it to the fragment stage
|
||||
// 4th compnent/alpha is storing 1/4 res depth so i cant store there lol
|
||||
vec3 data1 = texelFetch2D(colortex,ivec2(1,3),0).rgb/150.0;
|
||||
vec3 data2 = texelFetch2D(colortex,ivec2(2,3),0).rgb/150.0;
|
||||
vec3 data3 = texelFetch2D(colortex,ivec2(3,3),0).rgb/150.0;
|
||||
float data4 = texelFetch2D(colortex,ivec2(1,2),0).r/150.0;
|
||||
vec3 data5 = texelFetch2D(colortex,ivec2(2,2),0).rgb/150.0; // this samples a color
|
||||
|
||||
smallCumulus = vec2(data1.x,data1.y);
|
||||
largeCumulus = vec2(data1.z,data2.x);
|
||||
altostratus = vec2(data2.y,data2.z);
|
||||
fog = vec2(0.0);
|
||||
fog = vec2(data3.x, data3.y);
|
||||
localFog = vec2(data3.z, data4);
|
||||
localFogColor = vec3(data5.r,data5.g,data5.b);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
// call the reading function within the main function
|
||||
// this is so i dont have to edit the function call across every file :)))))))))))))
|
||||
|
||||
#if defined READ_SCENE_CONTROLLER_PARAMETERS
|
||||
readSceneControllerParameters(
|
||||
colortex4,
|
||||
parameters.smallCumulus,
|
||||
parameters.largeCumulus,
|
||||
parameters.altostratus,
|
||||
parameters.fog,
|
||||
parameters.localFog,
|
||||
parameters.localFogColor
|
||||
);
|
||||
#endif
|
||||
+202
-210
@@ -21,7 +21,6 @@
|
||||
|
||||
#define MINIMUM_WATER_ABSORBANCE -1 // [-1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 60 70 80 90 100]
|
||||
#define rayMarchSampleCount 2 // [1 2 3 4 6 8 12 16 32 64]
|
||||
#define Water_Top_Layer 62.90 // [0.90 1.90 2.90 3.90 4.90 5.90 6.90 7.90 8.90 9.90 10.90 11.90 12.90 13.90 14.90 15.90 16.90 17.90 18.90 19.90 20.90 21.90 22.90 23.90 24.90 25.90 26.90 27.90 28.90 29.90 30.90 31.90 32.90 33.90 34.90 35.90 36.90 37.90 38.90 39.90 40.90 41.90 42.90 43.90 44.90 45.90 46.90 47.90 48.90 49.90 50.90 51.90 52.90 53.90 54.90 55.90 56.90 57.90 58.90 59.90 60.90 61.90 62.90 63.90 64.90 65.90 66.90 67.90 68.90 69.90 70.90 71.90 72.90 73.90 74.90 75.90 76.90 77.90 78.90 79.90 80.90 81.90 82.90 83.90 84.90 85.90 86.90 87.90 88.90 89.90 90.90 91.90 92.90 93.90 94.90 95.90 96.90 97.90 98.90 99.90 100.90 101.90 102.90 103.90 104.90 105.90 106.90 107.90 108.90 109.90 110.90 111.90 112.90 113.90 114.90 115.90 116.90 117.90 118.90 119.90 120.90 121.90 122.90 123.90 124.90 125.90 126.90 127.90 128.90 129.90 130.90 131.90 132.90 133.90 134.90 135.90 136.90 137.90 138.90 139.90 140.90 141.90 142.90 143.90 144.90 145.90 146.90 147.90 148.90 149.90 150.90 151.90 152.90 153.90 154.90 155.90 156.90 157.90 158.90 159.90 160.90 161.90 162.90 163.90 164.90 165.90 166.90 167.90 168.90 169.90 170.90 171.90 172.90 173.90 174.90 175.90 176.90 177.90 178.90 179.90 180.90 181.90 182.90 183.90 184.90 185.90 186.90 187.90 188.90 189.90 190.90 191.90 192.90 193.90 194.90 195.90 196.90 197.90 198.90 199.90]
|
||||
|
||||
#define SNELLS_WINDOW
|
||||
|
||||
@@ -75,14 +74,16 @@
|
||||
// ----- INDIRECT LIGHT RELATED SETTINGS ----- //
|
||||
/////////////////////////////////////////////////
|
||||
|
||||
#define MIN_LIGHT_AMOUNT 0.5 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 15.0 20.0 25.0 30.0 35.0 40.0 45.0 50.0 100.0 ]
|
||||
#define MIN_LIGHT_AMOUNT 0.5 // [0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 15.0 20.0 25.0 30.0 35.0 40.0 45.0 50.0 100.0 ]
|
||||
#define MINIMUM_OUTDOOR_LIGHT 0.0 // [0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 15.0 20.0 25.0 30.0 35.0 40.0 45.0 50.0 100.0 ]
|
||||
#define MINIMUM_INDOOR_LIGHT 0.2 // [0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 15.0 20.0 25.0 30.0 35.0 40.0 45.0 50.0 100.0 ]
|
||||
|
||||
#define ambient_brightness 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 ]
|
||||
|
||||
#define AmbientLight_R 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define AmbientLight_G 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define AmbientLight_B 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
|
||||
|
||||
#define TORCH_AMOUNT 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5.0 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6.0 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 7.0 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 8.0 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 8.9 9.0 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9 10.0]
|
||||
#define TORCH_R 1.0 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0]
|
||||
#define TORCH_G 0.5 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0]
|
||||
@@ -104,20 +105,13 @@
|
||||
#define AO_Strength 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0]
|
||||
|
||||
// #define SKY_CONTRIBUTION_IN_SSRT
|
||||
|
||||
#define UseQuarterResDepth
|
||||
// #define HQ_SSGI
|
||||
#define GI_Strength 1.0 // [1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 ]
|
||||
#define RAY_COUNT 4 // [1 2 3 4 5 6 7 8 9 10 12 14 16 18 21 24 28 32 37 43 49 57 65 75 86 100]
|
||||
#define STEPS 8 // [6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99]
|
||||
#define STEP_LENGTH 12. // [4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30.]
|
||||
|
||||
|
||||
#define SEPARATE_AO
|
||||
const float ambientOcclusionLevel = 1.0; // this controls vanilla minecrafts ambient occlusion. [0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 ]
|
||||
|
||||
|
||||
|
||||
/////////////////////////////////////////
|
||||
// ----- SHADOW RELATED SETTINGS ----- //
|
||||
/////////////////////////////////////////
|
||||
@@ -160,7 +154,7 @@ const float entityShadowDistanceMul = 0.25; // [0.01 0.02 0.03 0.04 0.05 0.10 0.
|
||||
|
||||
#define FOG_START_HEIGHT 60 // [-200 -190 -180 -170 -160 -150 -130 -120 -110 -100 -90 -80 -70 -60 -50 -40 -30 -20 -10 0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200]
|
||||
|
||||
#define TOD_Fog_mult 1.0 // [0.00 0.25 0.50 0.75 1.0 1.25 1.50 1.75 2.00 3.00 4.00 5.00]
|
||||
#define TOD_FOG_AMOUNT 100 // [0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 150 200 250 300 350 400 450 500 550 600 650 700 750 800 850 900 950 1000]
|
||||
|
||||
#define Morning_Uniform_Fog 0.01 // [0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0]
|
||||
#define Morning_Cloudy_Fog 0.05 // [0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0]
|
||||
@@ -174,7 +168,7 @@ const float entityShadowDistanceMul = 0.25; // [0.01 0.02 0.03 0.04 0.05 0.10 0.
|
||||
#define Night_Uniform_Fog 0.2 // [0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0]
|
||||
#define Night_Cloudy_Fog 0.05 // [0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0]
|
||||
|
||||
#define Haze_amount 1.0 // [0.0 0.2 0.4 0.6 0.8 1.0 1.25 1.5 1.75 2.0 3.0 4.0 5.0]
|
||||
#define Haze_amount 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 4.0 5.0]
|
||||
#define fog_coefficientRayleighR 5.8 // [0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0]
|
||||
#define fog_coefficientRayleighG 1.35 // [0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0]
|
||||
#define fog_coefficientRayleighB 3.31 // [0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0]
|
||||
@@ -182,8 +176,6 @@ const float entityShadowDistanceMul = 0.25; // [0.01 0.02 0.03 0.04 0.05 0.10 0.
|
||||
#define fog_coefficientMieG 3.0 // [0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0]
|
||||
#define fog_coefficientMieB 3.0 // [0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0]
|
||||
|
||||
#define RainFog_amount 0.1 // [0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0]
|
||||
|
||||
#define BLOOMY_FOG 1.0 // [0.0 0.25 0.5 0.75 1.0 1.25 1.5 1.75 2.0 3.0 4.0 6.0 10.0 15.0 20.0]
|
||||
#define BLOOM_STRENGTH 1.0 // [0.0 0.25 0.5 0.75 1.0 1.25 1.5 1.75 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 15.0 20.0 25.0 50.0 75.0 100.0]
|
||||
|
||||
@@ -206,48 +198,6 @@ const float entityShadowDistanceMul = 0.25; // [0.01 0.02 0.03 0.04 0.05 0.10 0.
|
||||
|
||||
#define SEA_LEVEL 62 // [-200 -195 -190 -185 -180 -175 -170 -165 -160 -155 -150 -145 -140 -135 -130 -125 -120 -115 -110 -105 -100 -95 -90 -85 -80 -75 -70 -65 -60 -55 -50 -45 -40 -35 -30 -25 -20 -15 -10 -5 0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 105 110 115 120 125 130 135 140 145 150 155 160 165 170 175 180 185 190 195 200]
|
||||
|
||||
//////////////////////////////////////////////////////
|
||||
// ----- BIOME SPECIFIC ENVIORNMENTS SETTINGS ----- //
|
||||
//////////////////////////////////////////////////////
|
||||
|
||||
// #define PER_BIOME_ENVIRONMENT
|
||||
|
||||
#define SWAMP_ENV
|
||||
#define SWAMP_UNIFORM_DENSITY 0.3 // [0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0]
|
||||
#define SWAMP_CLOUDY_DENSITY 0 // [0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0]
|
||||
#define SWAMP_R 0.15 // [0.00 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0]
|
||||
#define SWAMP_G 0.25 // [0.00 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0]
|
||||
#define SWAMP_B 0.05 // [0.00 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0]
|
||||
|
||||
#define JUNGLE_ENV
|
||||
#define JUNGLE_UNIFORM_DENSITY 0.1 // [0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0]
|
||||
#define JUNGLE_CLOUDY_DENSITY 0.2 // [0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0]
|
||||
#define JUNGLE_R 0.5 // [0.00 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0]
|
||||
#define JUNGLE_G 1.0 // [0.00 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0]
|
||||
#define JUNGLE_B 0.5 // [0.00 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0]
|
||||
|
||||
#define DARKFOREST_ENV
|
||||
#define DARKFOREST_UNIFORM_DENSITY 0.1 // [0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0]
|
||||
#define DARKFOREST_CLOUDY_DENSITY 0 // [0.0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0]
|
||||
#define DARKFOREST_R 0.3 // [0.00 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0]
|
||||
#define DARKFOREST_G 0.4 // [0.00 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0]
|
||||
#define DARKFOREST_B 1.0 // [0.00 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0]
|
||||
|
||||
#define SNOW_STORMS
|
||||
#define SAND_STORMS
|
||||
|
||||
// i have to do this so it shows up in the menu lmao
|
||||
#ifdef SWAMP_ENV
|
||||
#endif
|
||||
#ifdef JUNGLE_ENV
|
||||
#endif
|
||||
#ifdef DARKFOREST_ENV
|
||||
#endif
|
||||
#ifdef SNOW_STORMS
|
||||
#endif
|
||||
#ifdef SAND_STORMS
|
||||
#endif
|
||||
|
||||
///////////////////////////////////////////////////
|
||||
// ----- LABPBR MATERIALS RELATED SETTINGS ----- //
|
||||
///////////////////////////////////////////////////
|
||||
@@ -263,7 +213,6 @@ const float entityShadowDistanceMul = 0.25; // [0.01 0.02 0.03 0.04 0.05 0.10 0.
|
||||
#define Emissive_Brightness 1.0 // [1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 15.0 20.0 25.0 30.0 35.0 40.0 45.0 50.0 100.]
|
||||
#define Emissive_Curve 2.0 // [0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 ]
|
||||
|
||||
|
||||
// #define POM
|
||||
// #define Horrible_slope_normals
|
||||
#define Adaptive_Step_length
|
||||
@@ -281,7 +230,6 @@ const float entityShadowDistanceMul = 0.25; // [0.01 0.02 0.03 0.04 0.05 0.10 0.
|
||||
#define sss_density_multiplier 1.0 // [0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0]
|
||||
#define SCREENSPACE_DIRECT_SSS_BLENDING 0.5 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0]
|
||||
|
||||
|
||||
// #define Porosity
|
||||
#define PUDDLE_MODE 1 // [0 1 2 3]
|
||||
#define Puddle_Size 1.0 // [0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5]
|
||||
@@ -345,157 +293,191 @@ uniform int moonPhase;
|
||||
////////////////////////////////////////
|
||||
|
||||
#define CloudLayer0
|
||||
#define CloudLayer0_coverage 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define CloudLayer0_density 0.5 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00]
|
||||
#define CloudLayer0_height 250.0 // [-300.0 -290.0 -280.0 -270.0 -260.0 -250.0 -240.0 -230.0 -220.0 -210.0 -200.0 -190.0 -180.0 -170.0 -160.0 -150.0 -140.0 -130.0 -120.0 -110.0 -100.0 -90.0 -80.0 -70.0 -60.0 -50.0 -40.0 -30.0 -20.0 -10.0 0.0 10.0 20.0 30.0 40.0 50.0 60.0 70.0 80.0 90.0 100.0 110.0 120.0 130.0 140.0 150.0 160.0 170.0 180.0 190.0 200.0 210.0 220.0 230.0 240.0 250.0 260.0 270.0 280.0 290.0 300.0 310.0 320.0 330.0 340.0 350.0 360.0 370.0 380.0 390.0 400.0 410.0 420.0 430.0 440.0 450.0 460.0 470.0 480.0 490.0 500.0 510.0 520.0 530.0 540.0 550.0 560.0 570.0 580.0 590.0 600.0 700.0 800.0 900.0 1000.0 1250.0 1500.0 1750.0 2000.0 2250.0 2500.0 2750.0 3000.0 4000.0 5000.0]
|
||||
#define CloudLayer0_tallness 100.0 // [0.0 10.0 20.0 30.0 40.0 50.0 60.0 70.0 80.0 90.0 100.0 110.0 120.0 130.0 140.0 150.0 160.0 170.0 180.0 190.0 200.0 210.0 220.0 230.0 240.0 250.0 260.0 270.0 280.0 290.0 300.0 310.0 320.0 330.0 340.0 350.0 360.0 370.0 380.0 390.0 400.0 410.0 420.0 430.0 440.0 450.0 460.0 470.0 480.0 490.0 500.0 510.0 520.0 530.0 540.0 550.0 560.0 570.0 580.0 590.0 600.0 700.0 800.0 900.0 1000.0 1250.0 1500.0 1750.0 2000.0 2250.0 2500.0 2750.0 3000.0 4000.0 5000.0]
|
||||
#define CloudLayer0_scale 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
|
||||
#define CloudLayer1
|
||||
#define CloudLayer1_coverage 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define CloudLayer1_density 0.5 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00]
|
||||
#define CloudLayer1_height 500.0 // [-300.0 -290.0 -280.0 -270.0 -260.0 -250.0 -240.0 -230.0 -220.0 -210.0 -200.0 -190.0 -180.0 -170.0 -160.0 -150.0 -140.0 -130.0 -120.0 -110.0 -100.0 -90.0 -80.0 -70.0 -60.0 -50.0 -40.0 -30.0 -20.0 -10.0 0.0 10.0 20.0 30.0 40.0 50.0 60.0 70.0 80.0 90.0 100.0 110.0 120.0 130.0 140.0 150.0 160.0 170.0 180.0 190.0 200.0 210.0 220.0 230.0 240.0 250.0 260.0 270.0 280.0 290.0 300.0 310.0 320.0 330.0 340.0 350.0 360.0 370.0 380.0 390.0 400.0 410.0 420.0 430.0 440.0 450.0 460.0 470.0 480.0 490.0 500.0 510.0 520.0 530.0 540.0 550.0 560.0 570.0 580.0 590.0 600.0 700.0 800.0 900.0 1000.0 1250.0 1500.0 1750.0 2000.0 2250.0 2500.0 2750.0 3000.0 4000.0 5000.0]
|
||||
#define CloudLayer1_tallness 200.0 // [0.0 10.0 20.0 30.0 40.0 50.0 60.0 70.0 80.0 90.0 100.0 110.0 120.0 130.0 140.0 150.0 160.0 170.0 180.0 190.0 200.0 210.0 220.0 230.0 240.0 250.0 260.0 270.0 280.0 290.0 300.0 310.0 320.0 330.0 340.0 350.0 360.0 370.0 380.0 390.0 400.0 410.0 420.0 430.0 440.0 450.0 460.0 470.0 480.0 490.0 500.0 510.0 520.0 530.0 540.0 550.0 560.0 570.0 580.0 590.0 600.0 700.0 800.0 900.0 1000.0 1250.0 1500.0 1750.0 2000.0 2250.0 2500.0 2750.0 3000.0 4000.0 5000.0]
|
||||
#define CloudLayer1_scale 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
|
||||
|
||||
#define CloudLayer2
|
||||
#define CloudLayer2_coverage 0.3 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define CloudLayer2_density 0.1 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00]
|
||||
#define CloudLayer2_height 2000.0 // [-300.0 -290.0 -280.0 -270.0 -260.0 -250.0 -240.0 -230.0 -220.0 -210.0 -200.0 -190.0 -180.0 -170.0 -160.0 -150.0 -140.0 -130.0 -120.0 -110.0 -100.0 -90.0 -80.0 -70.0 -60.0 -50.0 -40.0 -30.0 -20.0 -10.0 0.0 10.0 20.0 30.0 40.0 50.0 60.0 70.0 80.0 90.0 100.0 110.0 120.0 130.0 140.0 150.0 160.0 170.0 180.0 190.0 200.0 210.0 220.0 230.0 240.0 250.0 260.0 270.0 280.0 290.0 300.0 310.0 320.0 330.0 340.0 350.0 360.0 370.0 380.0 390.0 400.0 410.0 420.0 430.0 440.0 450.0 460.0 470.0 480.0 490.0 500.0 510.0 520.0 530.0 540.0 550.0 560.0 570.0 580.0 590.0 600.0 700.0 800.0 900.0 1000.0 1250.0 1500.0 1750.0 2000.0 2250.0 2500.0 2750.0 3000.0 4000.0 5000.0]
|
||||
#define CloudLayer2_scale 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
|
||||
#if (defined CloudLayer0 || defined CloudLayer1 || defined CloudLayer2)
|
||||
#define VOLUMETRIC_CLOUDS
|
||||
#endif
|
||||
#define CLOUD_SHADOW_AMOUNT 100 // [0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100]
|
||||
|
||||
#ifdef VOLUMETRIC_CLOUDS
|
||||
#ifndef ambientLight_only
|
||||
#define CLOUDS_SHADOWS
|
||||
#endif
|
||||
#ifdef CLOUDS_SHADOWS
|
||||
#define VL_CLOUDS_SHADOWS
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define CLOUD_SHADOW_STRENGTH 1.0 // [0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0]
|
||||
#define Cloud_Speed 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0]
|
||||
#define CLOUDS_QUALITY 0.5 // [0.1 0.125 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 0.55 0.6 0.65 0.7 0.75 0.8 0.9 1.0]
|
||||
|
||||
#define Rain_coverage 1.1 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
// just for display :D
|
||||
#define SMALL_CUMULUS_LABEL 0 // [0]
|
||||
#define LARGE_CUMULUS_LABEL 0 // [0]
|
||||
#define ALTOSTRATUS_LABEL 0 // [0]
|
||||
|
||||
#define fbmAmount 0.5 // [0.00 0.02 0.04 0.06 0.08 0.10 0.12 0.14 0.16 0.18 0.20 0.22 0.24 0.26 0.28 0.30 0.32 0.34 0.36 0.38 0.40 0.42 0.44 0.46 0.48 0.50 0.52 0.54 0.56 0.58 0.60 0.62 0.64 0.66 0.68 0.70 0.72 0.74 0.76 0.78 0.80 0.82 0.84 0.86 0.88 0.90 0.92 0.94 0.96 0.98 1.00 1.02 1.04 1.06 1.08 1.10 1.12 1.14 1.16 1.18 1.20 1.22 1.24 1.26 1.28 1.30 1.32 1.34 1.36 1.38 1.40 1.42 1.44 1.46 1.48 1.50 1.52 1.54 1.56 1.58 1.60 1.62 1.64 1.66 1.68 1.70 1.72 1.74 1.76 1.78 1.80 1.82 1.84 1.86 1.88 1.90 1.92 1.94 1.96 1.98 2.00 2.02 2.04 2.06 2.08 2.10 2.12 2.14 2.16 2.18 2.20 2.22 2.24 2.26 2.28 2.30 2.32 2.34 2.36 2.38 2.40 2.42 2.44 2.46 2.48 2.50 2.52 2.54 2.56 2.58 2.60 2.62 2.64 2.66 2.68 2.70 2.72 2.74 2.76 2.78 2.80 2.82 2.84 2.86 2.88 2.90 2.92 2.94 2.96 2.98 3.00]
|
||||
#define fbmPower1 3.00 // [1.0 1.50 1.52 1.54 1.56 1.58 1.60 1.62 1.64 1.66 1.68 1.70 1.72 1.74 1.76 1.78 1.80 1.82 1.84 1.86 1.88 1.90 1.92 1.94 1.96 1.98 2.00 2.02 2.04 2.06 2.08 2.10 2.12 2.14 2.16 2.18 2.20 2.22 2.24 2.26 2.28 2.30 2.32 2.34 2.36 2.38 2.40 2.42 2.44 2.46 2.48 2.50 2.52 2.54 2.56 2.58 2.60 2.62 2.64 2.66 2.68 2.70 2.72 2.74 2.76 2.78 2.80 2.82 2.84 2.86 2.88 2.90 2.92 2.94 2.96 2.98 3.00 3.02 3.04 3.06 3.08 3.10 3.12 3.14 3.16 3.18 3.20 3.22 3.24 3.26 3.28 3.30 3.32 3.34 3.36 3.38 3.40 3.42 3.44 3.46 3.48 3.50 3.52 3.54 3.56 3.58 3.60 3.62 3.64 3.66 3.68 3.70 3.72 3.74 3.76 3.78 3.80 3.82 3.84 3.86 3.88 3.90 3.92 3.94 3.96 3.98 4.00 5. 6. 7. 8. 9. 10.]
|
||||
#define fbmPower2 2.50 // [1.00 1.50 1.52 1.54 1.56 1.58 1.60 1.62 1.64 1.66 1.68 1.70 1.72 1.74 1.76 1.78 1.80 1.82 1.84 1.86 1.88 1.90 1.92 1.94 1.96 1.98 2.00 2.02 2.04 2.06 2.08 2.10 2.12 2.14 2.16 2.18 2.20 2.22 2.24 2.26 2.28 2.30 2.32 2.34 2.36 2.38 2.40 2.42 2.44 2.46 2.48 2.50 2.52 2.54 2.56 2.58 2.60 2.62 2.64 2.66 2.68 2.70 2.72 2.74 2.76 2.78 2.80 2.82 2.84 2.86 2.88 2.90 2.92 2.94 2.96 2.98 3.00 3.02 3.04 3.06 3.08 3.10 3.12 3.14 3.16 3.18 3.20 3.22 3.24 3.26 3.28 3.30 3.32 3.34 3.36 3.38 3.40 3.42 3.44 3.46 3.48 3.50 3.52 3.54 3.56 3.58 3.60 3.62 3.64 3.66 3.68 3.70 3.72 3.74 3.76 3.78 3.80 3.82 3.84 3.86 3.88 3.90 3.92 3.94 3.96 3.98 4.00 5. 6. 7. 8. 9. 10.]
|
||||
|
||||
#define cloud_LevelOfDetail 1 // [-1 0 1 2 3 4 5 6 7 8]
|
||||
#define cloud_ShadowLevelOfDetail 0 // [-1 0 1 2 3 4 5 6 7 8]
|
||||
#define cloud_LevelOfDetailLQ 1 // [-1 0 1 2 3 4 5 6 7 8]
|
||||
#define cloud_ShadowLevelOfDetailLQ 0 // [-1 0 1 2 3 4 5 6 7 8]
|
||||
#define minRayMarchSteps 15 // [20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 105 110 115 120 125 130 135 140 145 150 155 160 165 170 175 180 185 190 195 200]
|
||||
#define maxRayMarchSteps 15 // [5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 105 110 115 120 125 130 135 140 145 150 155 160 165 170 175 180 185 190 195 200]
|
||||
#define minRayMarchStepsLQ 10 // [5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100]
|
||||
#define maxRayMarchStepsLQ 30 // [ 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100]
|
||||
|
||||
#define HQ_CLOUDS
|
||||
|
||||
// #define Daily_Weather
|
||||
// #define CHOOSE_RANDOM_WEATHER_PROFILE
|
||||
|
||||
#ifdef Daily_Weather
|
||||
// DAY 0 WEATHER PARAMETERS
|
||||
#define DAY0_l0_coverage 0.7 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define DAY0_l1_coverage 0.7 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define DAY0_l2_coverage 0.1 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define DAY0_ufog_density 0.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0]
|
||||
#define DAY0_l0_density 0.5 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0]
|
||||
#define DAY0_l1_density 0.5 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0]
|
||||
#define DAY0_l2_density 0.1 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0]
|
||||
#define DAY0_cfog_density 0.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0]
|
||||
// DAY 1 WEATHER PARAMETERS
|
||||
#define DAY1_l0_coverage 0.7 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define DAY1_l1_coverage 1.1 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define DAY1_l2_coverage 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define DAY1_ufog_density 0.01 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0]
|
||||
#define DAY1_l0_density 0.5 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0]
|
||||
#define DAY1_l1_density 0.5 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0]
|
||||
#define DAY1_l2_density 0.5 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0]
|
||||
#define DAY1_cfog_density 0.1 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0]
|
||||
// DAY 2 WEATHER PARAMETERS
|
||||
#define DAY2_l0_coverage 0.9 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define DAY2_l1_coverage 0.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define DAY2_l2_coverage 0.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define DAY2_ufog_density 0.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0]
|
||||
#define DAY2_l0_density 0.25 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0]
|
||||
#define DAY2_l1_density 0.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0]
|
||||
#define DAY2_l2_density 0.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0]
|
||||
#define DAY2_cfog_density 0.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0]
|
||||
// DAY 3 WEATHER PARAMETERS
|
||||
#define DAY3_l0_coverage 0.8 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define DAY3_l1_coverage 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define DAY3_l2_coverage 0.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define DAY3_ufog_density 0.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0]
|
||||
#define DAY3_l0_density 0.7 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0]
|
||||
#define DAY3_l1_density 0.7 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0]
|
||||
#define DAY3_l2_density 0.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0]
|
||||
#define DAY3_cfog_density 0.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0]
|
||||
// DAY 4 WEATHER PARAMETERS
|
||||
#define DAY4_l0_coverage 0.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define DAY4_l1_coverage 0.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define DAY4_l2_coverage 0.6 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define DAY4_ufog_density 0.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0]
|
||||
#define DAY4_l0_density 0.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0]
|
||||
#define DAY4_l1_density 0.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0]
|
||||
#define DAY4_l2_density 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0]
|
||||
#define DAY4_cfog_density 0.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0]
|
||||
// DAY 5 WEATHER PARAMETERS
|
||||
#define DAY5_l0_coverage 0.8 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define DAY5_l1_coverage 0.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define DAY5_l2_coverage 1.5 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define DAY5_ufog_density 0.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0]
|
||||
#define DAY5_l0_density 0.5 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0]
|
||||
#define DAY5_l1_density 0.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0]
|
||||
#define DAY5_l2_density 0.1 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0]
|
||||
#define DAY5_cfog_density 0.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0]
|
||||
// DAY 6 WEATHER PARAMETERS
|
||||
#define DAY6_l0_coverage 0.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define DAY6_l1_coverage 0.8 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define DAY6_l2_coverage 1.5 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define DAY6_ufog_density 0.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0]
|
||||
#define DAY6_l0_density 0.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0]
|
||||
#define DAY6_l1_density 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0]
|
||||
#define DAY6_l2_density 0.02 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0]
|
||||
#define DAY6_cfog_density 0.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0]
|
||||
// DAY 7 WEATHER PARAMETERS
|
||||
#define DAY7_l0_coverage 0.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define DAY7_l1_coverage 0.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define DAY7_l2_coverage 0.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define DAY7_ufog_density 0.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0]
|
||||
#define DAY7_l0_density 0.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0]
|
||||
#define DAY7_l1_density 0.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0]
|
||||
#define DAY7_l2_density 0.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0]
|
||||
#define DAY7_cfog_density 0.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0]
|
||||
// DAY 8 WEATHER PARAMETERS
|
||||
#define DAY8_l0_coverage 0.6 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define DAY8_l1_coverage 0.7 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define DAY8_l2_coverage 0.3 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define DAY8_ufog_density 0.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0]
|
||||
#define DAY8_l0_density 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0]
|
||||
#define DAY8_l1_density 0.5 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0]
|
||||
#define DAY8_l2_density 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0]
|
||||
#define DAY8_cfog_density 0.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0]
|
||||
// DAY 9 WEATHER PARAMETERS
|
||||
#define DAY9_l0_coverage 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define DAY9_l1_coverage 0.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define DAY9_l2_coverage 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define DAY9_ufog_density 0.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0]
|
||||
#define DAY9_l0_density 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0]
|
||||
#define DAY9_l1_density 0.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0]
|
||||
#define DAY9_l2_density 0.1 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0]
|
||||
#define DAY9_cfog_density 1 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0]
|
||||
#define USE_CUSTOM_DAILY_WEATHER_PROFILE 0 // [0 1 2 3 4 5 6]
|
||||
#if USE_CUSTOM_DAILY_WEATHER_PROFILE >= 1
|
||||
#define DAILY_PROFILE_1_LAYER0_COVERAGE 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define DAILY_PROFILE_1_LAYER0_DENSITY 0.5 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00]
|
||||
#define DAILY_PROFILE_1_LAYER1_COVERAGE 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define DAILY_PROFILE_1_LAYER1_DENSITY 0.5 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00]
|
||||
#define DAILY_PROFILE_1_LAYER2_COVERAGE 0.3 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define DAILY_PROFILE_1_LAYER2_DENSITY 0.1 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00]
|
||||
#endif
|
||||
#if USE_CUSTOM_DAILY_WEATHER_PROFILE >= 2
|
||||
#define DAILY_PROFILE_2_LAYER0_COVERAGE 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define DAILY_PROFILE_2_LAYER0_DENSITY 0.5 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00]
|
||||
#define DAILY_PROFILE_2_LAYER1_COVERAGE 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define DAILY_PROFILE_2_LAYER1_DENSITY 0.5 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00]
|
||||
#define DAILY_PROFILE_2_LAYER2_COVERAGE 0.3 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define DAILY_PROFILE_2_LAYER2_DENSITY 0.1 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00]
|
||||
#endif
|
||||
#if USE_CUSTOM_DAILY_WEATHER_PROFILE >= 3
|
||||
#define DAILY_PROFILE_3_LAYER0_COVERAGE 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define DAILY_PROFILE_3_LAYER0_DENSITY 0.5 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00]
|
||||
#define DAILY_PROFILE_3_LAYER1_COVERAGE 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define DAILY_PROFILE_3_LAYER1_DENSITY 0.5 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00]
|
||||
#define DAILY_PROFILE_3_LAYER2_COVERAGE 0.3 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define DAILY_PROFILE_3_LAYER2_DENSITY 0.1 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00]
|
||||
#endif
|
||||
#if USE_CUSTOM_DAILY_WEATHER_PROFILE >= 4
|
||||
#define DAILY_PROFILE_4_LAYER0_COVERAGE 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define DAILY_PROFILE_4_LAYER0_DENSITY 0.5 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00]
|
||||
#define DAILY_PROFILE_4_LAYER1_COVERAGE 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define DAILY_PROFILE_4_LAYER1_DENSITY 0.5 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00]
|
||||
#define DAILY_PROFILE_4_LAYER2_COVERAGE 0.3 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define DAILY_PROFILE_4_LAYER2_DENSITY 0.1 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00]
|
||||
#endif
|
||||
#if USE_CUSTOM_DAILY_WEATHER_PROFILE >= 5
|
||||
#define DAILY_PROFILE_5_LAYER0_COVERAGE 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define DAILY_PROFILE_5_LAYER0_DENSITY 0.5 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00]
|
||||
#define DAILY_PROFILE_5_LAYER1_COVERAGE 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define DAILY_PROFILE_5_LAYER1_DENSITY 0.5 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00]
|
||||
#define DAILY_PROFILE_5_LAYER2_COVERAGE 0.3 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define DAILY_PROFILE_5_LAYER2_DENSITY 0.1 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00]
|
||||
#endif
|
||||
#if USE_CUSTOM_DAILY_WEATHER_PROFILE >= 6
|
||||
#define DAILY_PROFILE_6_LAYER0_COVERAGE 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define DAILY_PROFILE_6_LAYER0_DENSITY 0.5 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00]
|
||||
#define DAILY_PROFILE_6_LAYER1_COVERAGE 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define DAILY_PROFILE_6_LAYER1_DENSITY 0.5 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00]
|
||||
#define DAILY_PROFILE_6_LAYER2_COVERAGE 0.3 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define DAILY_PROFILE_6_LAYER2_DENSITY 0.1 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00]
|
||||
#endif
|
||||
|
||||
#define USE_CUSTOM_DAILY_RAIN_PROFILE 0 // [0 1 2 3 4 5 6]
|
||||
#if USE_CUSTOM_DAILY_RAIN_PROFILE >= 1
|
||||
#define RAINY_PROFILE_1_LAYER0_COVERAGE 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define RAINY_PROFILE_1_LAYER0_DENSITY 0.5 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00]
|
||||
#define RAINY_PROFILE_1_LAYER1_COVERAGE 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define RAINY_PROFILE_1_LAYER1_DENSITY 0.5 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00]
|
||||
#define RAINY_PROFILE_1_LAYER2_COVERAGE 0.3 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define RAINY_PROFILE_1_LAYER2_DENSITY 0.1 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00]
|
||||
#endif
|
||||
#if USE_CUSTOM_DAILY_RAIN_PROFILE >= 2
|
||||
#define RAINY_PROFILE_2_LAYER0_COVERAGE 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define RAINY_PROFILE_2_LAYER0_DENSITY 0.5 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00]
|
||||
#define RAINY_PROFILE_2_LAYER1_COVERAGE 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define RAINY_PROFILE_2_LAYER1_DENSITY 0.5 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00]
|
||||
#define RAINY_PROFILE_2_LAYER2_COVERAGE 0.3 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define RAINY_PROFILE_2_LAYER2_DENSITY 0.1 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00]
|
||||
#endif
|
||||
#if USE_CUSTOM_DAILY_RAIN_PROFILE >= 3
|
||||
#define RAINY_PROFILE_3_LAYER0_COVERAGE 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define RAINY_PROFILE_3_LAYER0_DENSITY 0.5 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00]
|
||||
#define RAINY_PROFILE_3_LAYER1_COVERAGE 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define RAINY_PROFILE_3_LAYER1_DENSITY 0.5 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00]
|
||||
#define RAINY_PROFILE_3_LAYER2_COVERAGE 0.3 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define RAINY_PROFILE_3_LAYER2_DENSITY 0.1 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00]
|
||||
#endif
|
||||
#if USE_CUSTOM_DAILY_RAIN_PROFILE >= 4
|
||||
#define RAINY_PROFILE_4_LAYER0_COVERAGE 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define RAINY_PROFILE_4_LAYER0_DENSITY 0.5 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00]
|
||||
#define RAINY_PROFILE_4_LAYER1_COVERAGE 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define RAINY_PROFILE_4_LAYER1_DENSITY 0.5 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00]
|
||||
#define RAINY_PROFILE_4_LAYER2_COVERAGE 0.3 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define RAINY_PROFILE_4_LAYER2_DENSITY 0.1 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00]
|
||||
#endif
|
||||
#if USE_CUSTOM_DAILY_RAIN_PROFILE >= 5
|
||||
#define RAINY_PROFILE_5_LAYER0_COVERAGE 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define RAINY_PROFILE_5_LAYER0_DENSITY 0.5 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00]
|
||||
#define RAINY_PROFILE_5_LAYER1_COVERAGE 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define RAINY_PROFILE_5_LAYER1_DENSITY 0.5 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00]
|
||||
#define RAINY_PROFILE_5_LAYER2_COVERAGE 0.3 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define RAINY_PROFILE_5_LAYER2_DENSITY 0.1 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00]
|
||||
#endif
|
||||
#if USE_CUSTOM_DAILY_RAIN_PROFILE >= 6
|
||||
#define RAINY_PROFILE_6_LAYER0_COVERAGE 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define RAINY_PROFILE_6_LAYER0_DENSITY 0.5 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00]
|
||||
#define RAINY_PROFILE_6_LAYER1_COVERAGE 1.0 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define RAINY_PROFILE_6_LAYER1_DENSITY 0.5 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00]
|
||||
#define RAINY_PROFILE_6_LAYER2_COVERAGE 0.3 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
#define RAINY_PROFILE_6_LAYER2_DENSITY 0.1 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00]
|
||||
#endif
|
||||
|
||||
#define USE_CUSTOM_HOT_BIOME_RAIN_PROFILE 0 // [-1 0 1 2 3]
|
||||
#if USE_CUSTOM_HOT_BIOME_RAIN_PROFILE >= 1
|
||||
#define HOT_BIOME_RAINY_PROFILE_1_UNIFORM_FOG_DENSITY 1.0 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00]
|
||||
#define HOT_BIOME_RAINY_PROFILE_1_CLUMPY_FOG_DENSITY 1.0 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00]
|
||||
#define HOT_BIOME_RAINY_PROFILE_1_FOG_COLOR_R 1.0 // [0.00 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.2 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.3 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.4 1.41 1.42 1.43 1.44 1.45 1.46 1.47 1.48 1.49 1.5 1.51 1.52 1.53 1.54 1.55 1.56 1.57 1.58 1.59 1.6 1.61 1.62 1.63 1.64 1.65 1.66 1.67 1.68 1.69 1.7 1.71 1.72 1.73 1.74 1.75 1.76 1.77 1.78 1.79 1.8 1.81 1.82 1.83 1.84 1.85 1.86 1.87 1.88 1.89 1.9 1.91 1.92 1.93 1.94 1.95 1.96 1.97 1.98 1.99 2.0]
|
||||
#define HOT_BIOME_RAINY_PROFILE_1_FOG_COLOR_G 1.0 // [0.00 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.2 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.3 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.4 1.41 1.42 1.43 1.44 1.45 1.46 1.47 1.48 1.49 1.5 1.51 1.52 1.53 1.54 1.55 1.56 1.57 1.58 1.59 1.6 1.61 1.62 1.63 1.64 1.65 1.66 1.67 1.68 1.69 1.7 1.71 1.72 1.73 1.74 1.75 1.76 1.77 1.78 1.79 1.8 1.81 1.82 1.83 1.84 1.85 1.86 1.87 1.88 1.89 1.9 1.91 1.92 1.93 1.94 1.95 1.96 1.97 1.98 1.99 2.0]
|
||||
#define HOT_BIOME_RAINY_PROFILE_1_FOG_COLOR_B 1.0 // [0.00 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.2 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.3 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.4 1.41 1.42 1.43 1.44 1.45 1.46 1.47 1.48 1.49 1.5 1.51 1.52 1.53 1.54 1.55 1.56 1.57 1.58 1.59 1.6 1.61 1.62 1.63 1.64 1.65 1.66 1.67 1.68 1.69 1.7 1.71 1.72 1.73 1.74 1.75 1.76 1.77 1.78 1.79 1.8 1.81 1.82 1.83 1.84 1.85 1.86 1.87 1.88 1.89 1.9 1.91 1.92 1.93 1.94 1.95 1.96 1.97 1.98 1.99 2.0]
|
||||
#endif
|
||||
#if USE_CUSTOM_HOT_BIOME_RAIN_PROFILE >= 2
|
||||
#define HOT_BIOME_RAINY_PROFILE_2_UNIFORM_FOG_DENSITY 1.0 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00]
|
||||
#define HOT_BIOME_RAINY_PROFILE_2_CLUMPY_FOG_DENSITY 1.0 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00]
|
||||
#define HOT_BIOME_RAINY_PROFILE_2_FOG_COLOR_R 1.0 // [0.00 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.2 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.3 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.4 1.41 1.42 1.43 1.44 1.45 1.46 1.47 1.48 1.49 1.5 1.51 1.52 1.53 1.54 1.55 1.56 1.57 1.58 1.59 1.6 1.61 1.62 1.63 1.64 1.65 1.66 1.67 1.68 1.69 1.7 1.71 1.72 1.73 1.74 1.75 1.76 1.77 1.78 1.79 1.8 1.81 1.82 1.83 1.84 1.85 1.86 1.87 1.88 1.89 1.9 1.91 1.92 1.93 1.94 1.95 1.96 1.97 1.98 1.99 2.0]
|
||||
#define HOT_BIOME_RAINY_PROFILE_2_FOG_COLOR_G 1.0 // [0.00 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.2 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.3 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.4 1.41 1.42 1.43 1.44 1.45 1.46 1.47 1.48 1.49 1.5 1.51 1.52 1.53 1.54 1.55 1.56 1.57 1.58 1.59 1.6 1.61 1.62 1.63 1.64 1.65 1.66 1.67 1.68 1.69 1.7 1.71 1.72 1.73 1.74 1.75 1.76 1.77 1.78 1.79 1.8 1.81 1.82 1.83 1.84 1.85 1.86 1.87 1.88 1.89 1.9 1.91 1.92 1.93 1.94 1.95 1.96 1.97 1.98 1.99 2.0]
|
||||
#define HOT_BIOME_RAINY_PROFILE_2_FOG_COLOR_B 1.0 // [0.00 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.2 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.3 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.4 1.41 1.42 1.43 1.44 1.45 1.46 1.47 1.48 1.49 1.5 1.51 1.52 1.53 1.54 1.55 1.56 1.57 1.58 1.59 1.6 1.61 1.62 1.63 1.64 1.65 1.66 1.67 1.68 1.69 1.7 1.71 1.72 1.73 1.74 1.75 1.76 1.77 1.78 1.79 1.8 1.81 1.82 1.83 1.84 1.85 1.86 1.87 1.88 1.89 1.9 1.91 1.92 1.93 1.94 1.95 1.96 1.97 1.98 1.99 2.0]
|
||||
#endif
|
||||
#if USE_CUSTOM_HOT_BIOME_RAIN_PROFILE >= 3
|
||||
#define HOT_BIOME_RAINY_PROFILE_3_UNIFORM_FOG_DENSITY 1.0 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00]
|
||||
#define HOT_BIOME_RAINY_PROFILE_3_CLUMPY_FOG_DENSITY 1.0 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00]
|
||||
#define HOT_BIOME_RAINY_PROFILE_3_FOG_COLOR_R 1.0 // [0.00 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.2 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.3 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.4 1.41 1.42 1.43 1.44 1.45 1.46 1.47 1.48 1.49 1.5 1.51 1.52 1.53 1.54 1.55 1.56 1.57 1.58 1.59 1.6 1.61 1.62 1.63 1.64 1.65 1.66 1.67 1.68 1.69 1.7 1.71 1.72 1.73 1.74 1.75 1.76 1.77 1.78 1.79 1.8 1.81 1.82 1.83 1.84 1.85 1.86 1.87 1.88 1.89 1.9 1.91 1.92 1.93 1.94 1.95 1.96 1.97 1.98 1.99 2.0]
|
||||
#define HOT_BIOME_RAINY_PROFILE_3_FOG_COLOR_G 1.0 // [0.00 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.2 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.3 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.4 1.41 1.42 1.43 1.44 1.45 1.46 1.47 1.48 1.49 1.5 1.51 1.52 1.53 1.54 1.55 1.56 1.57 1.58 1.59 1.6 1.61 1.62 1.63 1.64 1.65 1.66 1.67 1.68 1.69 1.7 1.71 1.72 1.73 1.74 1.75 1.76 1.77 1.78 1.79 1.8 1.81 1.82 1.83 1.84 1.85 1.86 1.87 1.88 1.89 1.9 1.91 1.92 1.93 1.94 1.95 1.96 1.97 1.98 1.99 2.0]
|
||||
#define HOT_BIOME_RAINY_PROFILE_3_FOG_COLOR_B 1.0 // [0.00 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.2 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.3 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.4 1.41 1.42 1.43 1.44 1.45 1.46 1.47 1.48 1.49 1.5 1.51 1.52 1.53 1.54 1.55 1.56 1.57 1.58 1.59 1.6 1.61 1.62 1.63 1.64 1.65 1.66 1.67 1.68 1.69 1.7 1.71 1.72 1.73 1.74 1.75 1.76 1.77 1.78 1.79 1.8 1.81 1.82 1.83 1.84 1.85 1.86 1.87 1.88 1.89 1.9 1.91 1.92 1.93 1.94 1.95 1.96 1.97 1.98 1.99 2.0]
|
||||
#endif
|
||||
|
||||
#define USE_CUSTOM_COLD_BIOME_RAIN_PROFILE 0 // [-1 0 1 2 3]
|
||||
#if USE_CUSTOM_COLD_BIOME_RAIN_PROFILE >= 1
|
||||
#define COLD_BIOME_RAINY_PROFILE_1_UNIFORM_FOG_DENSITY 1.0 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00]
|
||||
#define COLD_BIOME_RAINY_PROFILE_1_CLUMPY_FOG_DENSITY 1.0 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00]
|
||||
#define COLD_BIOME_RAINY_PROFILE_1_FOG_COLOR_R 1.0 // [0.00 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.2 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.3 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.4 1.41 1.42 1.43 1.44 1.45 1.46 1.47 1.48 1.49 1.5 1.51 1.52 1.53 1.54 1.55 1.56 1.57 1.58 1.59 1.6 1.61 1.62 1.63 1.64 1.65 1.66 1.67 1.68 1.69 1.7 1.71 1.72 1.73 1.74 1.75 1.76 1.77 1.78 1.79 1.8 1.81 1.82 1.83 1.84 1.85 1.86 1.87 1.88 1.89 1.9 1.91 1.92 1.93 1.94 1.95 1.96 1.97 1.98 1.99 2.0]
|
||||
#define COLD_BIOME_RAINY_PROFILE_1_FOG_COLOR_G 1.0 // [0.00 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.2 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.3 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.4 1.41 1.42 1.43 1.44 1.45 1.46 1.47 1.48 1.49 1.5 1.51 1.52 1.53 1.54 1.55 1.56 1.57 1.58 1.59 1.6 1.61 1.62 1.63 1.64 1.65 1.66 1.67 1.68 1.69 1.7 1.71 1.72 1.73 1.74 1.75 1.76 1.77 1.78 1.79 1.8 1.81 1.82 1.83 1.84 1.85 1.86 1.87 1.88 1.89 1.9 1.91 1.92 1.93 1.94 1.95 1.96 1.97 1.98 1.99 2.0]
|
||||
#define COLD_BIOME_RAINY_PROFILE_1_FOG_COLOR_B 1.0 // [0.00 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.2 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.3 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.4 1.41 1.42 1.43 1.44 1.45 1.46 1.47 1.48 1.49 1.5 1.51 1.52 1.53 1.54 1.55 1.56 1.57 1.58 1.59 1.6 1.61 1.62 1.63 1.64 1.65 1.66 1.67 1.68 1.69 1.7 1.71 1.72 1.73 1.74 1.75 1.76 1.77 1.78 1.79 1.8 1.81 1.82 1.83 1.84 1.85 1.86 1.87 1.88 1.89 1.9 1.91 1.92 1.93 1.94 1.95 1.96 1.97 1.98 1.99 2.0]
|
||||
#endif
|
||||
#if USE_CUSTOM_COLD_BIOME_RAIN_PROFILE >= 2
|
||||
#define COLD_BIOME_RAINY_PROFILE_2_UNIFORM_FOG_DENSITY 1.0 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00]
|
||||
#define COLD_BIOME_RAINY_PROFILE_2_CLUMPY_FOG_DENSITY 1.0 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00]
|
||||
#define COLD_BIOME_RAINY_PROFILE_2_FOG_COLOR_R 1.0 // [0.00 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.2 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.3 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.4 1.41 1.42 1.43 1.44 1.45 1.46 1.47 1.48 1.49 1.5 1.51 1.52 1.53 1.54 1.55 1.56 1.57 1.58 1.59 1.6 1.61 1.62 1.63 1.64 1.65 1.66 1.67 1.68 1.69 1.7 1.71 1.72 1.73 1.74 1.75 1.76 1.77 1.78 1.79 1.8 1.81 1.82 1.83 1.84 1.85 1.86 1.87 1.88 1.89 1.9 1.91 1.92 1.93 1.94 1.95 1.96 1.97 1.98 1.99 2.0]
|
||||
#define COLD_BIOME_RAINY_PROFILE_2_FOG_COLOR_G 1.0 // [0.00 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.2 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.3 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.4 1.41 1.42 1.43 1.44 1.45 1.46 1.47 1.48 1.49 1.5 1.51 1.52 1.53 1.54 1.55 1.56 1.57 1.58 1.59 1.6 1.61 1.62 1.63 1.64 1.65 1.66 1.67 1.68 1.69 1.7 1.71 1.72 1.73 1.74 1.75 1.76 1.77 1.78 1.79 1.8 1.81 1.82 1.83 1.84 1.85 1.86 1.87 1.88 1.89 1.9 1.91 1.92 1.93 1.94 1.95 1.96 1.97 1.98 1.99 2.0]
|
||||
#define COLD_BIOME_RAINY_PROFILE_2_FOG_COLOR_B 1.0 // [0.00 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.2 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.3 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.4 1.41 1.42 1.43 1.44 1.45 1.46 1.47 1.48 1.49 1.5 1.51 1.52 1.53 1.54 1.55 1.56 1.57 1.58 1.59 1.6 1.61 1.62 1.63 1.64 1.65 1.66 1.67 1.68 1.69 1.7 1.71 1.72 1.73 1.74 1.75 1.76 1.77 1.78 1.79 1.8 1.81 1.82 1.83 1.84 1.85 1.86 1.87 1.88 1.89 1.9 1.91 1.92 1.93 1.94 1.95 1.96 1.97 1.98 1.99 2.0]
|
||||
#endif
|
||||
#if USE_CUSTOM_COLD_BIOME_RAIN_PROFILE >= 3
|
||||
#define COLD_BIOME_RAINY_PROFILE_3_UNIFORM_FOG_DENSITY 1.0 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00]
|
||||
#define COLD_BIOME_RAINY_PROFILE_3_CLUMPY_FOG_DENSITY 1.0 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00]
|
||||
#define COLD_BIOME_RAINY_PROFILE_3_FOG_COLOR_R 1.0 // [0.00 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.2 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.3 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.4 1.41 1.42 1.43 1.44 1.45 1.46 1.47 1.48 1.49 1.5 1.51 1.52 1.53 1.54 1.55 1.56 1.57 1.58 1.59 1.6 1.61 1.62 1.63 1.64 1.65 1.66 1.67 1.68 1.69 1.7 1.71 1.72 1.73 1.74 1.75 1.76 1.77 1.78 1.79 1.8 1.81 1.82 1.83 1.84 1.85 1.86 1.87 1.88 1.89 1.9 1.91 1.92 1.93 1.94 1.95 1.96 1.97 1.98 1.99 2.0]
|
||||
#define COLD_BIOME_RAINY_PROFILE_3_FOG_COLOR_G 1.0 // [0.00 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.2 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.3 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.4 1.41 1.42 1.43 1.44 1.45 1.46 1.47 1.48 1.49 1.5 1.51 1.52 1.53 1.54 1.55 1.56 1.57 1.58 1.59 1.6 1.61 1.62 1.63 1.64 1.65 1.66 1.67 1.68 1.69 1.7 1.71 1.72 1.73 1.74 1.75 1.76 1.77 1.78 1.79 1.8 1.81 1.82 1.83 1.84 1.85 1.86 1.87 1.88 1.89 1.9 1.91 1.92 1.93 1.94 1.95 1.96 1.97 1.98 1.99 2.0]
|
||||
#define COLD_BIOME_RAINY_PROFILE_3_FOG_COLOR_B 1.0 // [0.00 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.2 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.3 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.4 1.41 1.42 1.43 1.44 1.45 1.46 1.47 1.48 1.49 1.5 1.51 1.52 1.53 1.54 1.55 1.56 1.57 1.58 1.59 1.6 1.61 1.62 1.63 1.64 1.65 1.66 1.67 1.68 1.69 1.7 1.71 1.72 1.73 1.74 1.75 1.76 1.77 1.78 1.79 1.8 1.81 1.82 1.83 1.84 1.85 1.86 1.87 1.88 1.89 1.9 1.91 1.92 1.93 1.94 1.95 1.96 1.97 1.98 1.99 2.0]
|
||||
#endif
|
||||
|
||||
#define USE_CUSTOM_SWAMP_CATEGORY_PROFILE 0 // [-1 0 1]
|
||||
#if USE_CUSTOM_SWAMP_CATEGORY_PROFILE == 1
|
||||
#define CUSTOM_SWAMP_PROFILE_1_UNIFORM_FOG_DENSITY 1.0 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00]
|
||||
#define CUSTOM_SWAMP_PROFILE_1_CLUMPY_FOG_DENSITY 1.0 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00]
|
||||
#define CUSTOM_SWAMP_PROFILE_1_FOG_COLOR_R 1.0 // [0.00 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.2 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.3 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.4 1.41 1.42 1.43 1.44 1.45 1.46 1.47 1.48 1.49 1.5 1.51 1.52 1.53 1.54 1.55 1.56 1.57 1.58 1.59 1.6 1.61 1.62 1.63 1.64 1.65 1.66 1.67 1.68 1.69 1.7 1.71 1.72 1.73 1.74 1.75 1.76 1.77 1.78 1.79 1.8 1.81 1.82 1.83 1.84 1.85 1.86 1.87 1.88 1.89 1.9 1.91 1.92 1.93 1.94 1.95 1.96 1.97 1.98 1.99 2.0]
|
||||
#define CUSTOM_SWAMP_PROFILE_1_FOG_COLOR_G 1.0 // [0.00 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.2 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.3 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.4 1.41 1.42 1.43 1.44 1.45 1.46 1.47 1.48 1.49 1.5 1.51 1.52 1.53 1.54 1.55 1.56 1.57 1.58 1.59 1.6 1.61 1.62 1.63 1.64 1.65 1.66 1.67 1.68 1.69 1.7 1.71 1.72 1.73 1.74 1.75 1.76 1.77 1.78 1.79 1.8 1.81 1.82 1.83 1.84 1.85 1.86 1.87 1.88 1.89 1.9 1.91 1.92 1.93 1.94 1.95 1.96 1.97 1.98 1.99 2.0]
|
||||
#define CUSTOM_SWAMP_PROFILE_1_FOG_COLOR_B 1.0 // [0.00 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.2 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.3 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.4 1.41 1.42 1.43 1.44 1.45 1.46 1.47 1.48 1.49 1.5 1.51 1.52 1.53 1.54 1.55 1.56 1.57 1.58 1.59 1.6 1.61 1.62 1.63 1.64 1.65 1.66 1.67 1.68 1.69 1.7 1.71 1.72 1.73 1.74 1.75 1.76 1.77 1.78 1.79 1.8 1.81 1.82 1.83 1.84 1.85 1.86 1.87 1.88 1.89 1.9 1.91 1.92 1.93 1.94 1.95 1.96 1.97 1.98 1.99 2.0]
|
||||
#endif
|
||||
|
||||
#define USE_CUSTOM_JUNGLE_CATEGORY_PROFILE 0 // [-1 0 1]
|
||||
#if USE_CUSTOM_JUNGLE_CATEGORY_PROFILE == 1
|
||||
#define CUSTOM_JUNGLE_PROFILE_1_UNIFORM_FOG_DENSITY 1.0 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00]
|
||||
#define CUSTOM_JUNGLE_PROFILE_1_CLUMPY_FOG_DENSITY 1.0 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00]
|
||||
#define CUSTOM_JUNGLE_PROFILE_1_FOG_COLOR_R 1.0 // [0.00 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.2 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.3 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.4 1.41 1.42 1.43 1.44 1.45 1.46 1.47 1.48 1.49 1.5 1.51 1.52 1.53 1.54 1.55 1.56 1.57 1.58 1.59 1.6 1.61 1.62 1.63 1.64 1.65 1.66 1.67 1.68 1.69 1.7 1.71 1.72 1.73 1.74 1.75 1.76 1.77 1.78 1.79 1.8 1.81 1.82 1.83 1.84 1.85 1.86 1.87 1.88 1.89 1.9 1.91 1.92 1.93 1.94 1.95 1.96 1.97 1.98 1.99 2.0]
|
||||
#define CUSTOM_JUNGLE_PROFILE_1_FOG_COLOR_G 1.0 // [0.00 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.2 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.3 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.4 1.41 1.42 1.43 1.44 1.45 1.46 1.47 1.48 1.49 1.5 1.51 1.52 1.53 1.54 1.55 1.56 1.57 1.58 1.59 1.6 1.61 1.62 1.63 1.64 1.65 1.66 1.67 1.68 1.69 1.7 1.71 1.72 1.73 1.74 1.75 1.76 1.77 1.78 1.79 1.8 1.81 1.82 1.83 1.84 1.85 1.86 1.87 1.88 1.89 1.9 1.91 1.92 1.93 1.94 1.95 1.96 1.97 1.98 1.99 2.0]
|
||||
#define CUSTOM_JUNGLE_PROFILE_1_FOG_COLOR_B 1.0 // [0.00 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.2 1.21 1.22 1.23 1.24 1.25 1.26 1.27 1.28 1.29 1.3 1.31 1.32 1.33 1.34 1.35 1.36 1.37 1.38 1.39 1.4 1.41 1.42 1.43 1.44 1.45 1.46 1.47 1.48 1.49 1.5 1.51 1.52 1.53 1.54 1.55 1.56 1.57 1.58 1.59 1.6 1.61 1.62 1.63 1.64 1.65 1.66 1.67 1.68 1.69 1.7 1.71 1.72 1.73 1.74 1.75 1.76 1.77 1.78 1.79 1.8 1.81 1.82 1.83 1.84 1.85 1.86 1.87 1.88 1.89 1.9 1.91 1.92 1.93 1.94 1.95 1.96 1.97 1.98 1.99 2.0]
|
||||
#endif
|
||||
//////////////////////////////////////
|
||||
// ----- TAA RELATED SETTINGS ----- //
|
||||
//////////////////////////////////////
|
||||
@@ -616,14 +598,7 @@ const vec3 aerochrome_color = mix(vec3(1.0, 0.0, 0.0), vec3(0.715, 0.303, 0.631)
|
||||
#define ON_FIRE_DISTORT_EFFECT
|
||||
#define ON_FIRE_DISTORT_EFFECT_STRENGTH 0.7 // [0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0]
|
||||
|
||||
#ifdef LOW_HEALTH_EFFECT
|
||||
#endif
|
||||
#ifdef DAMAGE_TAKEN_EFFECT
|
||||
#endif
|
||||
#ifdef WATER_ON_CAMERA_EFFECT
|
||||
#endif
|
||||
#ifdef ON_FIRE_DISTORT_EFFECT
|
||||
#endif
|
||||
|
||||
|
||||
// #define FLASHLIGHT
|
||||
#define FLASHLIGHT_SPECULAR
|
||||
@@ -637,16 +612,6 @@ const vec3 aerochrome_color = mix(vec3(1.0, 0.0, 0.0), vec3(0.715, 0.303, 0.631)
|
||||
#define FLASHLIGHT_G 0.9 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0]
|
||||
#define FLASHLIGHT_B 0.8 // [0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18 0.19 0.2 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29 0.3 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.4 0.41 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.5 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59 0.6 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.7 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.8 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89 0.9 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.0]
|
||||
|
||||
|
||||
#ifdef FLASHLIGHT
|
||||
#endif
|
||||
#ifdef FLASHLIGHT_SPECULAR
|
||||
#endif
|
||||
#ifdef FLASHLIGHT_BOUNCED_INDIRECT
|
||||
#endif
|
||||
#ifdef FLASHLIGHT_FOG_ILLUMINATION
|
||||
#endif
|
||||
|
||||
#if !defined FLASHLIGHT
|
||||
#undef FLASHLIGHT_SPECULAR
|
||||
#endif
|
||||
@@ -654,8 +619,6 @@ const vec3 aerochrome_color = mix(vec3(1.0, 0.0, 0.0), vec3(0.715, 0.303, 0.631)
|
||||
#undef Hand_Held_lights
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
/////////////////////////////////////////
|
||||
// ----- NETHER RELATED SETTINGS ----- //
|
||||
/////////////////////////////////////////
|
||||
@@ -741,7 +704,6 @@ const vec3 aerochrome_color = mix(vec3(1.0, 0.0, 0.0), vec3(0.715, 0.303, 0.631)
|
||||
|
||||
#define LIT_PARTICLE_BRIGHTNESS 1.0 // [1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 15.0 20.0 25.0 30.0 35.0 40.0 45.0 50.0 100.]
|
||||
|
||||
|
||||
#define LIGHTNING_FLASH // FOR OPTIFINE USERS. some mods change the sky color, which can trigger the lightning flash detection.
|
||||
|
||||
#define RESOURCEPACK_SKY 0 // [0 1 2 3]
|
||||
@@ -806,6 +768,10 @@ const vec3 aerochrome_color = mix(vec3(1.0, 0.0, 0.0), vec3(0.715, 0.303, 0.631)
|
||||
#define NOISE_RESOLUTION 16 // [1 2 3 4 5 6 7 8 12 14 16 24 32 48 64]
|
||||
#define NOISE_INTENSITY 12.0 // [1.0 2.0 3.0 4.0 6.0 8.0 10.0 12.0 14.0 16.0 18.0 20.0 22.0 24.0 32.0 48.0 64.0]
|
||||
#define NOISE_DROPOFF 1024 // [128 256 512 768 1024 1536 2048 3072 4096 8192]
|
||||
#define COLOR_TEST_FOR_SUBSURFACE_SCATTERING_MATERIAL
|
||||
#define DH_SSS_THRESHOLD_R 0.25 // [-1.0 -0.99 -0.98 -0.96 -0.94 -0.92 -0.9 -0.88 -0.86 -0.84 -0.82 -0.8 -0.78 -0.76 -0.74 -0.72 -0.7 -0.68 -0.66 -0.64 -0.62 -0.6 -0.58 -0.56 -0.54 -0.52 -0.5 -0.48 -0.46 -0.44 -0.42 -0.4 -0.38 -0.36 -0.34 -0.32 -0.3 -0.28 -0.26 -0.24 -0.22 -0.2 -0.18 -0.16 -0.14 -0.12 -0.1 -0.08 -0.06 -0.04 -0.02 0.0 0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.18 0.2 0.22 0.24 0.26 0.28 0.3 0.32 0.34 0.36 0.38 0.4 0.42 0.44 0.46 0.48 0.5 0.52 0.54 0.56 0.58 0.6 0.62 0.64 0.66 0.68 0.7 0.72 0.74 0.76 0.78 0.8 0.82 0.84 0.86 0.88 0.9 0.92 0.94 0.96 0.98 0.99 1.0]
|
||||
#define DH_SSS_THRESHOLD_G 1.0 // [-1.0 -0.99 -0.98 -0.96 -0.94 -0.92 -0.9 -0.88 -0.86 -0.84 -0.82 -0.8 -0.78 -0.76 -0.74 -0.72 -0.7 -0.68 -0.66 -0.64 -0.62 -0.6 -0.58 -0.56 -0.54 -0.52 -0.5 -0.48 -0.46 -0.44 -0.42 -0.4 -0.38 -0.36 -0.34 -0.32 -0.3 -0.28 -0.26 -0.24 -0.22 -0.2 -0.18 -0.16 -0.14 -0.12 -0.1 -0.08 -0.06 -0.04 -0.02 0.0 0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.18 0.2 0.22 0.24 0.26 0.28 0.3 0.32 0.34 0.36 0.38 0.4 0.42 0.44 0.46 0.48 0.5 0.52 0.54 0.56 0.58 0.6 0.62 0.64 0.66 0.68 0.7 0.72 0.74 0.76 0.78 0.8 0.82 0.84 0.86 0.88 0.9 0.92 0.94 0.96 0.98 0.99 1.0]
|
||||
#define DH_SSS_THRESHOLD_B 0.3 // [-1.0 -0.99 -0.98 -0.96 -0.94 -0.92 -0.9 -0.88 -0.86 -0.84 -0.82 -0.8 -0.78 -0.76 -0.74 -0.72 -0.7 -0.68 -0.66 -0.64 -0.62 -0.6 -0.58 -0.56 -0.54 -0.52 -0.5 -0.48 -0.46 -0.44 -0.42 -0.4 -0.38 -0.36 -0.34 -0.32 -0.3 -0.28 -0.26 -0.24 -0.22 -0.2 -0.18 -0.16 -0.14 -0.12 -0.1 -0.08 -0.06 -0.04 -0.02 0.0 0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.18 0.2 0.22 0.24 0.26 0.28 0.3 0.32 0.34 0.36 0.38 0.4 0.42 0.44 0.46 0.48 0.5 0.52 0.54 0.56 0.58 0.6 0.62 0.64 0.66 0.68 0.7 0.72 0.74 0.76 0.78 0.8 0.82 0.84 0.86 0.88 0.9 0.92 0.94 0.96 0.98 0.99 1.0]
|
||||
|
||||
///////////////////////////////////////////
|
||||
// ----- FLOODFILL [LPV] SETTINGS ----- //
|
||||
@@ -902,9 +868,35 @@ const vec3 aerochrome_color = mix(vec3(1.0, 0.0, 0.0), vec3(0.715, 0.303, 0.631)
|
||||
#endif
|
||||
#ifdef USE_CUSTOM_SKY_GROUND_LIGHTING_COLORS
|
||||
#endif
|
||||
#ifdef COLOR_TEST_FOR_SUBSURFACE_SCATTERING_MATERIAL
|
||||
#endif
|
||||
#ifdef CAVE_FOG
|
||||
#endif
|
||||
#ifdef CAVE_FOG_DARKEN_SKY
|
||||
#endif
|
||||
#if TAA_MODE > 0
|
||||
#endif
|
||||
#ifdef DAILY_WEATHER_PROFILE
|
||||
#endif
|
||||
#ifdef DAILY_RAIN_PROFILE
|
||||
#endif
|
||||
#ifdef BIOME_SPECIFIC_RAIN_PROFILE
|
||||
#endif
|
||||
#ifdef BIOME_SPECIFIC_PROFILE
|
||||
#endif
|
||||
#ifdef FLASHLIGHT
|
||||
#endif
|
||||
#ifdef FLASHLIGHT_SPECULAR
|
||||
#endif
|
||||
#ifdef FLASHLIGHT_BOUNCED_INDIRECT
|
||||
#endif
|
||||
#ifdef FLASHLIGHT_FOG_ILLUMINATION
|
||||
#endif
|
||||
#ifdef LOW_HEALTH_EFFECT
|
||||
#endif
|
||||
#ifdef DAMAGE_TAKEN_EFFECT
|
||||
#endif
|
||||
#ifdef WATER_ON_CAMERA_EFFECT
|
||||
#endif
|
||||
#ifdef ON_FIRE_DISTORT_EFFECT
|
||||
#endif
|
||||
@@ -1,11 +1,7 @@
|
||||
#define ffstep(x,y) clamp((y - x) * 1e35,0.0,1.0)
|
||||
|
||||
vec3 drawSun(float cosY, float sunInt,vec3 nsunlight, vec3 inColor){
|
||||
|
||||
// return nsunlight * min(max(cosY-0.9994,0.0)/(1.0-0.9994),1.0) * 100.0;
|
||||
|
||||
return (inColor+nsunlight/0.0008821203*pow(smoothstep(cos(0.0093084168595*3.2),cos(0.0093084168595*1.8),cosY),3.)*0.62);
|
||||
|
||||
}
|
||||
|
||||
vec3 drawMoon(vec3 PlayerPos, vec3 WorldSunVec, vec3 Color, inout vec3 occludeStars){
|
||||
@@ -108,38 +104,6 @@ vec4 texture2D_bicubic(sampler2D tex, vec2 uv)
|
||||
g1(fuv.y) * (g0x * texture2D(tex, p2) +
|
||||
g1x * texture2D(tex, p3));
|
||||
}
|
||||
vec4 texture2D_bicubic_offset(sampler2D tex, vec2 uv, float noise, float scale)
|
||||
{
|
||||
float offsets = noise * (2.0 * 3.141592653589793238462643383279502884197169);
|
||||
vec2 circleOffsets = vec2(sin(offsets), cos(offsets)) * scale;
|
||||
|
||||
#ifdef SCREENSHOT_MODE
|
||||
circleOffsets = vec2(0.0);
|
||||
#endif
|
||||
|
||||
vec4 texelSize = vec4(texelSize,1.0/texelSize);
|
||||
uv = (uv + texelSize.xy)*texelSize.zw;
|
||||
|
||||
vec2 iuv = floor( uv + circleOffsets );
|
||||
vec2 fuv = fract( uv + circleOffsets );
|
||||
|
||||
float g0x = g0(fuv.x);
|
||||
float g1x = g1(fuv.x);
|
||||
float h0x = h0(fuv.x);
|
||||
float h1x = h1(fuv.x);
|
||||
float h0y = h0(fuv.y);
|
||||
float h1y = h1(fuv.y);
|
||||
|
||||
vec2 p0 = (vec2(iuv.x + h0x, iuv.y + h0y) - 0.5) * (texelSize.xy);
|
||||
vec2 p1 = (vec2(iuv.x + h1x, iuv.y + h0y) - 0.5) * (texelSize.xy);
|
||||
vec2 p2 = (vec2(iuv.x + h0x, iuv.y + h1y) - 0.5) * (texelSize.xy);
|
||||
vec2 p3 = (vec2(iuv.x + h1x, iuv.y + h1y) - 0.5) * (texelSize.xy);
|
||||
|
||||
return (g0(fuv.y) * (g0x * texture2D(tex, p0) +
|
||||
g1x * texture2D(tex, p1)) +
|
||||
g1(fuv.y) * (g0x * texture2D(tex, p2) +
|
||||
g1x * texture2D(tex, p3)));
|
||||
}
|
||||
|
||||
vec2 sphereToCarte(vec3 dir) {
|
||||
float lonlat = clamp(atan(-dir.x, -dir.z), -pi, pi);
|
||||
|
||||
@@ -45,8 +45,8 @@ float getCloudShape(int LayerIndex, int LOD, in vec3 position, float minHeight,
|
||||
case LARGECUMULUS_LAYER: {
|
||||
coverage = parameters.largeCumulus.x;
|
||||
|
||||
largeCloud = texture2D(noisetex, (samplePos.zx + cloud_movement*2.0)/10000.0 * CloudLayer1_scale).b;
|
||||
smallCloud = texture2D(noisetex, (samplePos.zx - cloud_movement*2.0)/2500.0 * CloudLayer1_scale).b;
|
||||
largeCloud = texture2D(noisetex, (samplePos.zx + cloud_movement*3.0)/10000.0 * CloudLayer1_scale).b;
|
||||
smallCloud = texture2D(noisetex, (samplePos.zx - cloud_movement*3.0)/2500.0 * CloudLayer1_scale).b;
|
||||
smallCloud = abs(largeCloud* -0.7) + smallCloud;
|
||||
|
||||
shape = min(max(coverage - smallCloud,0.0)/(1e-6+sqrt(coverage)),1.0) ;
|
||||
@@ -55,8 +55,8 @@ float getCloudShape(int LayerIndex, int LOD, in vec3 position, float minHeight,
|
||||
case ALTOSTRATUS_LAYER: {
|
||||
coverage = parameters.altostratus.x;
|
||||
|
||||
largeCloud = texture2D(noisetex, (position.xz + cloud_movement)/100000. * CloudLayer2_scale).b;
|
||||
smallCloud = 1.0 - texture2D(noisetex, ((position.xz - cloud_movement)/7500. - vec2(1.0-largeCloud, -largeCloud)/5.0) * CloudLayer2_scale).b;
|
||||
largeCloud = texture2D(noisetex, (position.xz + cloud_movement*20.0)/100000. * CloudLayer2_scale).b;
|
||||
smallCloud = 1.0 - texture2D(noisetex, ((position.xz + vec2(-cloud_movement,cloud_movement)*20.0)/7500. - vec2(1.0-largeCloud, -largeCloud)/5.0) * CloudLayer2_scale).b;
|
||||
smallCloud = largeCloud + smallCloud * 0.4 * clamp(1.5-largeCloud,0.0,1.0);
|
||||
|
||||
shape = min(max(coverage - smallCloud,0.0) / (1e-6+sqrt(coverage)),1.0);
|
||||
@@ -84,7 +84,7 @@ float getCloudShape(int LayerIndex, int LOD, in vec3 position, float minHeight,
|
||||
// shrink the coverage slightly so it is a similar shape to clouds with erosion. this helps cloud lighting and cloud shadows.
|
||||
if (LOD < 1) return max(shape - 0.27*erodeAmount,0.0);
|
||||
|
||||
samplePos.xz -= cloud_movement/4.0;
|
||||
samplePos.xz += cloud_movement/4.0;
|
||||
samplePos.xz += pow( max(position.y - (minHeight+20.0), 0.0) / (max(maxHeight-minHeight,1.0)*0.20), 1.5);
|
||||
|
||||
float erosion = 0.0;
|
||||
@@ -142,7 +142,7 @@ float GetCloudShadow(vec3 playerPos, vec3 sunVector){
|
||||
float layer2Height = CloudLayer2_height;
|
||||
#endif
|
||||
|
||||
#ifdef CLOUDS_SHADOWS
|
||||
#if CLOUD_SHADOW_AMOUNT > 0
|
||||
float cloudShadows = 0.0;
|
||||
|
||||
#ifdef CloudLayer0
|
||||
@@ -158,7 +158,7 @@ float GetCloudShadow(vec3 playerPos, vec3 sunVector){
|
||||
cloudShadows += getCloudShape(ALTOSTRATUS_LAYER, 0, startPosition, layer2Height, layer2Height)*parameters.altostratus.y * (1.0-abs(WsunVec.y));
|
||||
#endif
|
||||
|
||||
cloudShadows *= CLOUD_SHADOW_STRENGTH;
|
||||
cloudShadows *= float(CLOUD_SHADOW_AMOUNT)/100.0;
|
||||
|
||||
#if defined CloudLayer0 || defined CloudLayer1 || defined CloudLayer2
|
||||
totalShadow *= exp((cloudShadows*cloudShadows) * -200.0);
|
||||
@@ -187,6 +187,9 @@ float getCloudScattering(
|
||||
){
|
||||
int samples = 3;
|
||||
int LOD = 0;
|
||||
// crazy mode
|
||||
// samples = 10;
|
||||
// LOD = 1;
|
||||
|
||||
if(LayerIndex == ALTOSTRATUS_LAYER) samples = 2;
|
||||
|
||||
@@ -263,8 +266,6 @@ vec4 raymarchCloud(
|
||||
){
|
||||
vec3 color = vec3(0.0);
|
||||
float totalAbsorbance = 1.0;
|
||||
float GetPos = 0.0;
|
||||
|
||||
float planetShadow = getPlanetShadow(rayPosition, sunVector);
|
||||
sunScattering *= planetShadow;
|
||||
|
||||
@@ -279,6 +280,7 @@ vec4 raymarchCloud(
|
||||
densityTresholdCheck = mix(1e-5, densityTresholdCheck, dither);
|
||||
|
||||
if(LayerIndex == ALTOSTRATUS_LAYER){
|
||||
|
||||
float density = parameters.altostratus.y;
|
||||
|
||||
bool ifAboveOrBelowPlane = max(mix(-1.0, 1.0, clamp(cameraPosition.y - minHeight,0.0,1.0)) * normalize(rayDirection).y + 0.0001,0.0) > 0.0;
|
||||
@@ -294,7 +296,7 @@ vec4 raymarchCloud(
|
||||
float shape = getCloudShape(LayerIndex, 1, rayPosition, minHeight, maxHeight);
|
||||
float shapeWithDensity = shape*density;
|
||||
|
||||
if(shapeWithDensity > mix(1e-5, 0.06, dither)){
|
||||
if(shapeWithDensity > mix(1e-5, 0.06, dither) && cloudPlaneDistance.y > 0.5){
|
||||
cloudPlaneDistance.x = length(rayPosition - cameraPosition); cloudPlaneDistance.y = 0.0;
|
||||
}
|
||||
|
||||
@@ -350,7 +352,7 @@ vec4 raymarchCloud(
|
||||
float shapeWithDensity = shape*density;
|
||||
float shapeWithDensityFaded = shape*density * pow(clamp((rayPosition.y - minHeight)/(max(maxHeight-minHeight,1.0)*0.25),0.0,1.0),2.0);
|
||||
|
||||
if(shapeWithDensityFaded > densityTresholdCheck){
|
||||
if(shapeWithDensityFaded > densityTresholdCheck && cloudPlaneDistance.y > 0.5){
|
||||
cloudPlaneDistance.x = length(rayPosition - cameraPosition); cloudPlaneDistance.y = 0.0;
|
||||
}
|
||||
|
||||
@@ -377,7 +379,7 @@ vec4 raymarchCloud(
|
||||
|
||||
vec3 lighting = getCloudLighting(shapeWithDensity, shapeWithDensityFaded, sunShadowMask, sunScattering, indirectShadowMask, skyScattering * skylightOcclusion, backScatterPhase, phaseLevels);
|
||||
|
||||
#if defined LIGHTNINGFLASH_VL
|
||||
#if defined LIGHTNING_FLASH && defined LIGHTNINGFLASH_VL
|
||||
lighting += createLightningPointLight(rayPosition - cameraPosition, lightningBoltPosition.xyz, shapeWithDensity, indirectShadowMask);
|
||||
#endif
|
||||
|
||||
@@ -385,7 +387,7 @@ vec4 raymarchCloud(
|
||||
newPos.xz /= max(newPos.y,0.0)*0.0025 + 1.0;
|
||||
newPos.y = min(newPos.y,0.0);
|
||||
|
||||
float distancefog = exp(-0.00035 * length(newPos));
|
||||
float distancefog = exp(-(0.00035 + rainStrength * 0.0015) * length(newPos));
|
||||
vec3 atmosphereHaze = (sampledSkyCol - sampledSkyCol * distancefog);
|
||||
lighting = lighting * distancefog + atmosphereHaze;
|
||||
|
||||
@@ -414,6 +416,7 @@ vec3 getRayOrigin(
|
||||
|
||||
float minHeight,
|
||||
float maxHeight
|
||||
,int samples
|
||||
){
|
||||
|
||||
vec3 cloudDist = vec3(1.0);
|
||||
@@ -422,7 +425,7 @@ vec3 getRayOrigin(
|
||||
float flip = mix(max(cameraPos.y - maxHeight,0.0), max(minHeight - cameraPos.y,0.0), clamp(rayStartPos.y,0.0,1.0));
|
||||
|
||||
// orient the ray to be a flat plane facing up/down
|
||||
// vec3 position = rayStartPos*dither + cameraPos + (rayStartPos/abs(rayStartPos.y)) * flip;
|
||||
// vec3 position = rayStartPos*dither + cameraPos + (rayStartPos/abs(rayStartPos.y/cloudDist)) * flip;
|
||||
vec3 position = rayStartPos*dither + cameraPos + (rayStartPos/length(rayStartPos/cloudDist)) * flip;
|
||||
|
||||
return position;
|
||||
@@ -496,7 +499,7 @@ vec4 GetVolumetricClouds(
|
||||
|
||||
inout float cloudPlaneDistance
|
||||
){
|
||||
#ifndef VOLUMETRIC_CLOUDS
|
||||
#if !(defined CloudLayer0 || defined CloudLayer1 || defined CloudLayer2)
|
||||
return vec4(0.0,0.0,0.0,1.0);
|
||||
#endif
|
||||
|
||||
@@ -543,14 +546,14 @@ vec4 GetVolumetricClouds(
|
||||
float maxSamples = 15.0;
|
||||
float minSamples = 10.0;
|
||||
int samples = int(clamp(maxSamples / sqrt(exp2(NormPlayerPos.y)), 1.0, minSamples));
|
||||
// int samples = 30;
|
||||
// samples = 200;
|
||||
|
||||
///------- setup the ray
|
||||
vec3 cloudDist = vec3(1.0);
|
||||
cloudDist.xz = mix(vec2(255.0), vec2(5.0), clamp(cameraPosition.y - minHeight,0.0,clamp((maxHeight-5) - cameraPosition.y ,0.0,1.0)));
|
||||
|
||||
vec3 rayDirection = NormPlayerPos.xyz * (cloudheight/length(NormPlayerPos.xyz/cloudDist)/samples);
|
||||
vec3 rayPosition = getRayOrigin(rayDirection, cameraPosition, dither.y, minHeight, maxHeight);
|
||||
vec3 rayPosition = getRayOrigin(rayDirection, cameraPosition, dither.y, minHeight, maxHeight,samples);
|
||||
|
||||
#ifdef SKY_GROUND
|
||||
vec3 sampledSkyCol = mix(skyFromTex(normalize(rayPosition - cameraPosition), colortex4)/1200.0 * Sky_Brightness, indirectLightCol, 1.0);
|
||||
@@ -604,7 +607,7 @@ vec4 GetVolumetricClouds(
|
||||
|
||||
cloudDist.xz = mix(vec2(255.0), vec2(5.0), clamp(cameraPosition.y - minHeight,0.0,clamp((maxHeight-15) - cameraPosition.y ,0.0,1.0)));
|
||||
rayDirection = NormPlayerPos.xyz * (cloudheight/length(NormPlayerPos.xyz/cloudDist)/samples);
|
||||
rayPosition = getRayOrigin(rayDirection, cameraPosition, dither.y, minHeight, maxHeight);
|
||||
rayPosition = getRayOrigin(rayDirection, cameraPosition, dither.y, minHeight, maxHeight,samples);
|
||||
|
||||
vec2 cloudLayer1_Distance = vec2(startDistance, 1.0);
|
||||
|
||||
@@ -622,7 +625,7 @@ vec4 GetVolumetricClouds(
|
||||
|
||||
cloudDist.xz = mix(vec2(255.0), vec2(5.0), clamp(cameraPosition.y - minHeight,0.0,clamp((maxHeight-15) - cameraPosition.y ,0.0,1.0)));
|
||||
rayDirection = NormPlayerPos.xyz * (cloudheight/length(NormPlayerPos.xyz/cloudDist));
|
||||
rayPosition = getRayOrigin(rayDirection, cameraPosition, dither.y, minHeight, maxHeight);
|
||||
rayPosition = getRayOrigin(rayDirection, cameraPosition, dither.y, minHeight, maxHeight,1);
|
||||
|
||||
vec2 cloudLayer2_Distance = vec2(startDistance, 1.0);
|
||||
|
||||
@@ -664,6 +667,8 @@ vec4 GetVolumetricClouds(
|
||||
color = blendedCloudColor.rgb;
|
||||
totalAbsorbance = blendedCloudColor.a;
|
||||
|
||||
// return vec4(vec3(cloudPlaneDistance/1500.0), 0.0);
|
||||
|
||||
return vec4(color, totalAbsorbance);
|
||||
}
|
||||
#endif
|
||||
@@ -1,7 +1,8 @@
|
||||
float waterCaustics(vec3 worldPos, vec3 sunVec) {
|
||||
float waterCaustics(vec3 worldPos, vec3 sunVec, float surfacePos) {
|
||||
|
||||
vec3 projectedPos = worldPos - (sunVec/sunVec.y*worldPos.y);
|
||||
vec3 projectedPos = worldPos + (sunVec/abs(sunVec.y))*surfacePos;
|
||||
vec2 pos = projectedPos.xz;
|
||||
|
||||
|
||||
float movement = frameTimeCounter * 0.035 * WATER_WAVE_SPEED;
|
||||
|
||||
|
||||
+193
-145
File diff suppressed because one or more lines are too long
@@ -2,4 +2,4 @@
|
||||
|
||||
#define NETHER_SHADER
|
||||
|
||||
#include "/dimensions/fogBehindTranslucent_pass.fsh"
|
||||
#include "/dimensions/composite.fsh"
|
||||
@@ -2,4 +2,4 @@
|
||||
|
||||
#define NETHER_SHADER
|
||||
|
||||
#include "/dimensions/fogBehindTranslucent_pass.vsh"
|
||||
#include "/dimensions/composite.vsh"
|
||||
@@ -2,4 +2,4 @@
|
||||
|
||||
#define NETHER_SHADER
|
||||
|
||||
#include "/dimensions/composite.fsh"
|
||||
#include "/dimensions/composite1.fsh"
|
||||
@@ -2,4 +2,4 @@
|
||||
|
||||
#define NETHER_SHADER
|
||||
|
||||
#include "/dimensions/composite.vsh"
|
||||
#include "/dimensions/composite1.vsh"
|
||||
@@ -2,4 +2,4 @@
|
||||
|
||||
#define NETHER_SHADER
|
||||
|
||||
#include "/dimensions/composite9.fsh"
|
||||
#include "/dimensions/composite10.fsh"
|
||||
@@ -2,4 +2,4 @@
|
||||
|
||||
#define NETHER_SHADER
|
||||
|
||||
#include "/dimensions/composite9.vsh"
|
||||
#include "/dimensions/composite10.vsh"
|
||||
@@ -2,4 +2,4 @@
|
||||
|
||||
#define NETHER_SHADER
|
||||
|
||||
#include "/dimensions/composite10.fsh"
|
||||
#include "/dimensions/composite11.fsh"
|
||||
@@ -2,4 +2,4 @@
|
||||
|
||||
#define NETHER_SHADER
|
||||
|
||||
#include "/dimensions/composite10.vsh"
|
||||
#include "/dimensions/composite11.vsh"
|
||||
@@ -1,5 +0,0 @@
|
||||
#version 120
|
||||
|
||||
#define NETHER_SHADER
|
||||
|
||||
#include "/dimensions/composite11.fsh"
|
||||
@@ -1,5 +0,0 @@
|
||||
#version 120
|
||||
|
||||
#define NETHER_SHADER
|
||||
|
||||
#include "/dimensions/composite11.vsh"
|
||||
@@ -1,5 +0,0 @@
|
||||
#version 120
|
||||
|
||||
#define NETHER_SHADER
|
||||
|
||||
#include "/dimensions/composite12.fsh"
|
||||
@@ -1,5 +0,0 @@
|
||||
#version 120
|
||||
|
||||
#define NETHER_SHADER
|
||||
|
||||
#include "/dimensions/composite12.vsh"
|
||||
@@ -2,4 +2,4 @@
|
||||
|
||||
#define NETHER_SHADER
|
||||
|
||||
#include "/dimensions/composite1.fsh"
|
||||
#include "/dimensions/composite2.fsh"
|
||||
@@ -2,4 +2,4 @@
|
||||
|
||||
#define NETHER_SHADER
|
||||
|
||||
#include "/dimensions/composite1.vsh"
|
||||
#include "/dimensions/composite2.vsh"
|
||||
@@ -2,4 +2,4 @@
|
||||
|
||||
#define NETHER_SHADER
|
||||
|
||||
#include "/dimensions/composite2.fsh"
|
||||
#include "/dimensions/composite3.fsh"
|
||||
@@ -2,4 +2,4 @@
|
||||
|
||||
#define NETHER_SHADER
|
||||
|
||||
#include "/dimensions/composite2.vsh"
|
||||
#include "/dimensions/composite3.vsh"
|
||||
@@ -2,4 +2,4 @@
|
||||
|
||||
#define NETHER_SHADER
|
||||
|
||||
#include "/dimensions/composite3.fsh"
|
||||
#include "/dimensions/composite4.fsh"
|
||||
@@ -2,4 +2,4 @@
|
||||
|
||||
#define NETHER_SHADER
|
||||
|
||||
#include "/dimensions/composite3.vsh"
|
||||
#include "/dimensions/composite4.vsh"
|
||||
@@ -2,4 +2,4 @@
|
||||
|
||||
#define NETHER_SHADER
|
||||
|
||||
#include "/dimensions/composite4.fsh"
|
||||
#include "/dimensions/composite5.fsh"
|
||||
@@ -2,4 +2,4 @@
|
||||
|
||||
#define NETHER_SHADER
|
||||
|
||||
#include "/dimensions/composite4.vsh"
|
||||
#include "/dimensions/composite5.vsh"
|
||||
@@ -2,4 +2,4 @@
|
||||
|
||||
#define NETHER_SHADER
|
||||
|
||||
#include "/dimensions/composite5.fsh"
|
||||
#include "/dimensions/composite6.fsh"
|
||||
@@ -2,4 +2,4 @@
|
||||
|
||||
#define NETHER_SHADER
|
||||
|
||||
#include "/dimensions/composite5.vsh"
|
||||
#include "/dimensions/composite6.vsh"
|
||||
@@ -2,4 +2,4 @@
|
||||
|
||||
#define NETHER_SHADER
|
||||
|
||||
#include "/dimensions/composite6.fsh"
|
||||
#include "/dimensions/composite7.fsh"
|
||||
@@ -2,4 +2,4 @@
|
||||
|
||||
#define NETHER_SHADER
|
||||
|
||||
#include "/dimensions/composite6.vsh"
|
||||
#include "/dimensions/composite7.vsh"
|
||||
@@ -2,4 +2,4 @@
|
||||
|
||||
#define NETHER_SHADER
|
||||
|
||||
#include "/dimensions/composite7.fsh"
|
||||
#include "/dimensions/composite8.fsh"
|
||||
@@ -2,4 +2,4 @@
|
||||
|
||||
#define NETHER_SHADER
|
||||
|
||||
#include "/dimensions/composite7.vsh"
|
||||
#include "/dimensions/composite8.vsh"
|
||||
@@ -2,4 +2,4 @@
|
||||
|
||||
#define NETHER_SHADER
|
||||
|
||||
#include "/dimensions/composite8.fsh"
|
||||
#include "/dimensions/composite9.fsh"
|
||||
@@ -2,4 +2,4 @@
|
||||
|
||||
#define NETHER_SHADER
|
||||
|
||||
#include "/dimensions/composite8.vsh"
|
||||
#include "/dimensions/composite9.vsh"
|
||||
@@ -1,6 +1,6 @@
|
||||
#version 120
|
||||
|
||||
#define DAMAGE_BLOCK_EFFECT
|
||||
#define NETHER_SHADER
|
||||
#define DAMAGE_BLOCK_EFFECT
|
||||
|
||||
#include "/dimensions/all_particles.fsh"
|
||||
@@ -1,6 +1,6 @@
|
||||
#version 120
|
||||
|
||||
#define DAMAGE_BLOCK_EFFECT
|
||||
#define NETHER_SHADER
|
||||
#define DAMAGE_BLOCK_EFFECT
|
||||
|
||||
#include "/dimensions/all_particles.vsh"
|
||||
@@ -1,7 +1,5 @@
|
||||
#version 120
|
||||
|
||||
#define NETHER
|
||||
|
||||
#define NETHER_SHADER
|
||||
|
||||
#include "/dimensions/all_translucent.fsh"
|
||||
@@ -1,7 +1,5 @@
|
||||
#version 120
|
||||
|
||||
#define NETHER
|
||||
|
||||
#define NETHER_SHADER
|
||||
|
||||
#include "/dimensions/all_translucent.vsh"
|
||||
@@ -2,4 +2,4 @@
|
||||
|
||||
#define OVERWORLD_SHADER
|
||||
|
||||
#include "/dimensions/fogBehindTranslucent_pass.fsh"
|
||||
#include "/dimensions/composite.fsh"
|
||||
@@ -2,4 +2,4 @@
|
||||
|
||||
#define OVERWORLD_SHADER
|
||||
|
||||
#include "/dimensions/fogBehindTranslucent_pass.vsh"
|
||||
#include "/dimensions/composite.vsh"
|
||||
@@ -2,4 +2,4 @@
|
||||
|
||||
#define OVERWORLD_SHADER
|
||||
|
||||
#include "/dimensions/composite.fsh"
|
||||
#include "/dimensions/composite1.fsh"
|
||||
@@ -2,4 +2,4 @@
|
||||
|
||||
#define OVERWORLD_SHADER
|
||||
|
||||
#include "/dimensions/composite.vsh"
|
||||
#include "/dimensions/composite1.vsh"
|
||||
@@ -2,4 +2,4 @@
|
||||
|
||||
#define OVERWORLD_SHADER
|
||||
|
||||
#include "/dimensions/composite9.fsh"
|
||||
#include "/dimensions/composite10.fsh"
|
||||
@@ -2,4 +2,4 @@
|
||||
|
||||
#define OVERWORLD_SHADER
|
||||
|
||||
#include "/dimensions/composite9.vsh"
|
||||
#include "/dimensions/composite10.vsh"
|
||||
@@ -2,4 +2,4 @@
|
||||
|
||||
#define OVERWORLD_SHADER
|
||||
|
||||
#include "/dimensions/composite10.fsh"
|
||||
#include "/dimensions/composite11.fsh"
|
||||
@@ -2,4 +2,4 @@
|
||||
|
||||
#define OVERWORLD_SHADER
|
||||
|
||||
#include "/dimensions/composite10.vsh"
|
||||
#include "/dimensions/composite11.vsh"
|
||||
@@ -1,5 +0,0 @@
|
||||
#version 120
|
||||
|
||||
#define OVERWORLD_SHADER
|
||||
|
||||
#include "/dimensions/composite11.fsh"
|
||||
@@ -1,5 +0,0 @@
|
||||
#version 120
|
||||
|
||||
#define OVERWORLD_SHADER
|
||||
|
||||
#include "/dimensions/composite11.vsh"
|
||||
@@ -1,5 +0,0 @@
|
||||
#version 120
|
||||
|
||||
#define OVERWORLD_SHADER
|
||||
|
||||
#include "/dimensions/composite12.fsh"
|
||||
@@ -1,5 +0,0 @@
|
||||
#version 120
|
||||
|
||||
#define OVERWORLD_SHADER
|
||||
|
||||
#include "/dimensions/composite12.vsh"
|
||||
@@ -2,4 +2,4 @@
|
||||
|
||||
#define OVERWORLD_SHADER
|
||||
|
||||
#include "/dimensions/composite1.fsh"
|
||||
#include "/dimensions/composite2.fsh"
|
||||
@@ -2,4 +2,4 @@
|
||||
|
||||
#define OVERWORLD_SHADER
|
||||
|
||||
#include "/dimensions/composite1.vsh"
|
||||
#include "/dimensions/composite2.vsh"
|
||||
@@ -2,4 +2,4 @@
|
||||
|
||||
#define OVERWORLD_SHADER
|
||||
|
||||
#include "/dimensions/composite2.fsh"
|
||||
#include "/dimensions/composite3.fsh"
|
||||
@@ -2,4 +2,4 @@
|
||||
|
||||
#define OVERWORLD_SHADER
|
||||
|
||||
#include "/dimensions/composite2.vsh"
|
||||
#include "/dimensions/composite3.vsh"
|
||||
@@ -2,4 +2,4 @@
|
||||
|
||||
#define OVERWORLD_SHADER
|
||||
|
||||
#include "/dimensions/composite3.fsh"
|
||||
#include "/dimensions/composite4.fsh"
|
||||
@@ -2,4 +2,4 @@
|
||||
|
||||
#define OVERWORLD_SHADER
|
||||
|
||||
#include "/dimensions/composite3.vsh"
|
||||
#include "/dimensions/composite4.vsh"
|
||||
@@ -2,4 +2,4 @@
|
||||
|
||||
#define OVERWORLD_SHADER
|
||||
|
||||
#include "/dimensions/composite4.fsh"
|
||||
#include "/dimensions/composite5.fsh"
|
||||
@@ -2,4 +2,4 @@
|
||||
|
||||
#define OVERWORLD_SHADER
|
||||
|
||||
#include "/dimensions/composite4.vsh"
|
||||
#include "/dimensions/composite5.vsh"
|
||||
@@ -2,4 +2,4 @@
|
||||
|
||||
#define OVERWORLD_SHADER
|
||||
|
||||
#include "/dimensions/composite5.fsh"
|
||||
#include "/dimensions/composite6.fsh"
|
||||
@@ -2,4 +2,4 @@
|
||||
|
||||
#define OVERWORLD_SHADER
|
||||
|
||||
#include "/dimensions/composite5.vsh"
|
||||
#include "/dimensions/composite6.vsh"
|
||||
@@ -2,4 +2,4 @@
|
||||
|
||||
#define OVERWORLD_SHADER
|
||||
|
||||
#include "/dimensions/composite6.fsh"
|
||||
#include "/dimensions/composite7.fsh"
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user