├── docs
├── back.png
├── index.html
└── chota.min.css
├── pack_icon.png
├── textures
├── blocks
│ ├── coal_ore.png
│ ├── gold_ore.png
│ ├── iron_ore.png
│ ├── copper_ore.png
│ ├── lapis_ore.png
│ ├── quartz_ore.png
│ ├── diamond_ore.png
│ ├── emerald_ore.png
│ ├── redstone_ore.png
│ ├── amethyst_block.png
│ ├── nether_gold_ore.png
│ ├── amethyst_cluster.png
│ └── deepslate
│ │ ├── deepslate_coal_ore.png
│ │ ├── deepslate_gold_ore.png
│ │ ├── deepslate_iron_ore.png
│ │ ├── deepslate_copper_ore.png
│ │ ├── deepslate_lapis_ore.png
│ │ ├── deepslate_diamond_ore.png
│ │ ├── deepslate_emerald_ore.png
│ │ └── deepslate_redstone_ore.png
├── environment
│ ├── clouds.png
│ └── overworld_cubemap
│ │ ├── cubemap_0.png
│ │ ├── cubemap_1.png
│ │ ├── cubemap_2.png
│ │ ├── cubemap_3.png
│ │ ├── cubemap_4.png
│ │ └── cubemap_5.png
└── terrain_texture.json
├── src
├── LegacyCubemap
│ └── src
│ │ ├── LegacyCubemap.varying.def.sc
│ │ ├── LegacyCubemap.vertex.sc
│ │ └── LegacyCubemap.fragment.sc
└── RenderChunk
│ └── src
│ ├── RenderChunk.varying.def.sc
│ ├── RenderChunk.vertex.sc
│ └── RenderChunk.fragment.sc
├── manifest.json
├── LICENSE
└── biomes_client.json
/docs/back.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bambosan/Bicubic-Shader-BE/HEAD/docs/back.png
--------------------------------------------------------------------------------
/pack_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bambosan/Bicubic-Shader-BE/HEAD/pack_icon.png
--------------------------------------------------------------------------------
/textures/blocks/coal_ore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bambosan/Bicubic-Shader-BE/HEAD/textures/blocks/coal_ore.png
--------------------------------------------------------------------------------
/textures/blocks/gold_ore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bambosan/Bicubic-Shader-BE/HEAD/textures/blocks/gold_ore.png
--------------------------------------------------------------------------------
/textures/blocks/iron_ore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bambosan/Bicubic-Shader-BE/HEAD/textures/blocks/iron_ore.png
--------------------------------------------------------------------------------
/textures/blocks/copper_ore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bambosan/Bicubic-Shader-BE/HEAD/textures/blocks/copper_ore.png
--------------------------------------------------------------------------------
/textures/blocks/lapis_ore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bambosan/Bicubic-Shader-BE/HEAD/textures/blocks/lapis_ore.png
--------------------------------------------------------------------------------
/textures/blocks/quartz_ore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bambosan/Bicubic-Shader-BE/HEAD/textures/blocks/quartz_ore.png
--------------------------------------------------------------------------------
/textures/blocks/diamond_ore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bambosan/Bicubic-Shader-BE/HEAD/textures/blocks/diamond_ore.png
--------------------------------------------------------------------------------
/textures/blocks/emerald_ore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bambosan/Bicubic-Shader-BE/HEAD/textures/blocks/emerald_ore.png
--------------------------------------------------------------------------------
/textures/blocks/redstone_ore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bambosan/Bicubic-Shader-BE/HEAD/textures/blocks/redstone_ore.png
--------------------------------------------------------------------------------
/textures/environment/clouds.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bambosan/Bicubic-Shader-BE/HEAD/textures/environment/clouds.png
--------------------------------------------------------------------------------
/textures/blocks/amethyst_block.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bambosan/Bicubic-Shader-BE/HEAD/textures/blocks/amethyst_block.png
--------------------------------------------------------------------------------
/textures/blocks/nether_gold_ore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bambosan/Bicubic-Shader-BE/HEAD/textures/blocks/nether_gold_ore.png
--------------------------------------------------------------------------------
/textures/blocks/amethyst_cluster.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bambosan/Bicubic-Shader-BE/HEAD/textures/blocks/amethyst_cluster.png
--------------------------------------------------------------------------------
/textures/blocks/deepslate/deepslate_coal_ore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bambosan/Bicubic-Shader-BE/HEAD/textures/blocks/deepslate/deepslate_coal_ore.png
--------------------------------------------------------------------------------
/textures/blocks/deepslate/deepslate_gold_ore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bambosan/Bicubic-Shader-BE/HEAD/textures/blocks/deepslate/deepslate_gold_ore.png
--------------------------------------------------------------------------------
/textures/blocks/deepslate/deepslate_iron_ore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bambosan/Bicubic-Shader-BE/HEAD/textures/blocks/deepslate/deepslate_iron_ore.png
--------------------------------------------------------------------------------
/textures/blocks/deepslate/deepslate_copper_ore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bambosan/Bicubic-Shader-BE/HEAD/textures/blocks/deepslate/deepslate_copper_ore.png
--------------------------------------------------------------------------------
/textures/blocks/deepslate/deepslate_lapis_ore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bambosan/Bicubic-Shader-BE/HEAD/textures/blocks/deepslate/deepslate_lapis_ore.png
--------------------------------------------------------------------------------
/textures/blocks/deepslate/deepslate_diamond_ore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bambosan/Bicubic-Shader-BE/HEAD/textures/blocks/deepslate/deepslate_diamond_ore.png
--------------------------------------------------------------------------------
/textures/blocks/deepslate/deepslate_emerald_ore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bambosan/Bicubic-Shader-BE/HEAD/textures/blocks/deepslate/deepslate_emerald_ore.png
--------------------------------------------------------------------------------
/textures/blocks/deepslate/deepslate_redstone_ore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bambosan/Bicubic-Shader-BE/HEAD/textures/blocks/deepslate/deepslate_redstone_ore.png
--------------------------------------------------------------------------------
/textures/environment/overworld_cubemap/cubemap_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bambosan/Bicubic-Shader-BE/HEAD/textures/environment/overworld_cubemap/cubemap_0.png
--------------------------------------------------------------------------------
/textures/environment/overworld_cubemap/cubemap_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bambosan/Bicubic-Shader-BE/HEAD/textures/environment/overworld_cubemap/cubemap_1.png
--------------------------------------------------------------------------------
/textures/environment/overworld_cubemap/cubemap_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bambosan/Bicubic-Shader-BE/HEAD/textures/environment/overworld_cubemap/cubemap_2.png
--------------------------------------------------------------------------------
/textures/environment/overworld_cubemap/cubemap_3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bambosan/Bicubic-Shader-BE/HEAD/textures/environment/overworld_cubemap/cubemap_3.png
--------------------------------------------------------------------------------
/textures/environment/overworld_cubemap/cubemap_4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bambosan/Bicubic-Shader-BE/HEAD/textures/environment/overworld_cubemap/cubemap_4.png
--------------------------------------------------------------------------------
/textures/environment/overworld_cubemap/cubemap_5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/bambosan/Bicubic-Shader-BE/HEAD/textures/environment/overworld_cubemap/cubemap_5.png
--------------------------------------------------------------------------------
/src/LegacyCubemap/src/LegacyCubemap.varying.def.sc:
--------------------------------------------------------------------------------
1 | vec3 a_position : POSITION;
2 |
3 | vec4 v_fogColor : COLOR0;
4 | vec4 v_fogDistControl : COLOR1;
5 | vec4 v_position : TEXCOORD0;
--------------------------------------------------------------------------------
/src/RenderChunk/src/RenderChunk.varying.def.sc:
--------------------------------------------------------------------------------
1 | vec4 a_color0 : COLOR0;
2 | vec3 a_position : POSITION;
3 | vec2 a_texcoord0 : TEXCOORD0;
4 | vec2 a_texcoord1 : TEXCOORD1;
5 |
6 | vec4 i_data0 : TEXCOORD8;
7 | vec4 i_data1 : TEXCOORD7;
8 | vec4 i_data2 : TEXCOORD6;
9 | vec4 i_data3 : TEXCOORD5;
10 |
11 | vec4 v_color0 : COLOR0;
12 | vec4 v_position : TEXCOORD2;
13 | vec3 v_worldPos : TEXCOORD3;
14 | centroid vec2 v_texcoord0 : TEXCOORD0;
15 | vec2 v_lightmapUV : TEXCOORD1;
--------------------------------------------------------------------------------
/src/LegacyCubemap/src/LegacyCubemap.vertex.sc:
--------------------------------------------------------------------------------
1 | $input a_position
2 | $output v_position, v_fogColor, v_fogDistControl
3 |
4 | #include
5 |
6 | uniform vec4 FogAndDistanceControl;
7 | uniform vec4 ViewPositionAndTime;
8 | uniform vec4 FogColor;
9 | uniform mat4 CubemapRotation;
10 |
11 | void main() {
12 | gl_Position = mul(u_modelViewProj, vec4(a_position.x, a_position.y + 0.205, a_position.z, 1.0));
13 | v_position.xyz = a_position.xyz;
14 | v_position.w = ViewPositionAndTime.w;
15 | v_fogColor = FogColor;
16 | v_fogDistControl = FogAndDistanceControl;
17 | }
18 |
--------------------------------------------------------------------------------
/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "format_version": 2,
3 | "header": {
4 | "name": "Bicubic Shaders BE 3.4",
5 | "description": "A shader for Minecraft: Bedrock Edition\nBy: @bamb0san",
6 | "uuid": "567ee84c-6f11-458b-ab17-5905602b601d",
7 | "version": [0, 3, 4],
8 | "min_engine_version": [1, 20, 15]
9 | },
10 | "modules": [
11 | {
12 | "description": "A shader for Minecraft: Bedrock Edition\nBy: @bamb0san",
13 | "type": "resources",
14 | "uuid": "acc9a536-32d6-4f6b-b8c3-9e5928d0b3cc",
15 | "version": [0, 3, 4]
16 | }
17 | ]
18 | }
19 |
--------------------------------------------------------------------------------
/docs/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Bicubic Shaders BE
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 | Redirecting...
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2023 bambosan
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/src/RenderChunk/src/RenderChunk.vertex.sc:
--------------------------------------------------------------------------------
1 | $input a_color0, a_position, a_texcoord0, a_texcoord1
2 | #ifdef INSTANCING
3 | $input i_data0, i_data1, i_data2, i_data3
4 | #endif
5 | $output v_color0, v_position, v_worldPos, v_texcoord0, v_lightmapUV
6 |
7 | #include
8 |
9 | uniform vec4 RenderChunkFogAlpha;
10 | uniform vec4 FogAndDistanceControl;
11 | uniform vec4 ViewPositionAndTime;
12 | uniform vec4 FogColor;
13 |
14 | void main() {
15 | mat4 model;
16 | #ifdef INSTANCING
17 | model = mtxFromCols(i_data0, i_data1, i_data2, i_data3);
18 | #else
19 | model = u_model[0];
20 | #endif
21 |
22 | vec3 worldPos = mul(model, vec4(a_position, 1.0)).xyz;
23 | vec4 color;
24 | #ifdef RENDER_AS_BILLBOARDS
25 | worldPos += vec3(0.5, 0.5, 0.5);
26 | vec3 viewDir = normalize(worldPos - ViewPositionAndTime.xyz);
27 | vec3 boardPlane = normalize(vec3(viewDir.z, 0.0, -viewDir.x));
28 | worldPos = (worldPos -
29 | ((((viewDir.yzx * boardPlane.zxy) - (viewDir.zxy * boardPlane.yzx)) *
30 | (a_color0.z - 0.5)) +
31 | (boardPlane * (a_color0.x - 0.5))));
32 | color = vec4(1.0, 1.0, 1.0, 1.0);
33 | #else
34 | color = a_color0;
35 | #endif
36 |
37 | v_worldPos = worldPos;
38 | v_position.xyz = a_position.xyz;
39 | v_position.w = saturate((((length(worldPos.xyz) / FogAndDistanceControl.z) - FogAndDistanceControl.x) / (FogAndDistanceControl.y - FogAndDistanceControl.x)));
40 | v_texcoord0 = a_texcoord0;
41 | v_lightmapUV = a_texcoord1;
42 | v_color0 = color;
43 |
44 | gl_Position = mul(u_viewProj, vec4(worldPos, 1.0));
45 | }
46 |
--------------------------------------------------------------------------------
/textures/terrain_texture.json:
--------------------------------------------------------------------------------
1 | {
2 | "num_mip_levels" : 4,
3 | "padding" : 8,
4 | "resource_pack_name" : "vanilla",
5 | "texture_data" : {
6 | "coal_ore" : {
7 | "textures" : "textures/blocks/coal_ore"
8 | },
9 | "copper_ore" : {
10 | "textures" : "textures/blocks/copper_ore"
11 | },
12 | "deepslate_coal_ore" : {
13 | "textures" : "textures/blocks/deepslate/deepslate_coal_ore"
14 | },
15 | "deepslate_copper_ore" : {
16 | "textures" : "textures/blocks/deepslate/deepslate_copper_ore"
17 | },
18 | "deepslate_diamond_ore" : {
19 | "textures" : "textures/blocks/deepslate/deepslate_diamond_ore"
20 | },
21 | "deepslate_emerald_ore" : {
22 | "textures" : "textures/blocks/deepslate/deepslate_emerald_ore"
23 | },
24 | "deepslate_gold_ore" : {
25 | "textures" : "textures/blocks/deepslate/deepslate_gold_ore"
26 | },
27 | "deepslate_iron_ore" : {
28 | "textures" : "textures/blocks/deepslate/deepslate_iron_ore"
29 | },
30 | "deepslate_lapis_ore" : {
31 | "textures" : "textures/blocks/deepslate/deepslate_lapis_ore"
32 | },
33 | "deepslate_redstone_ore" : {
34 | "textures" : "textures/blocks/deepslate/deepslate_redstone_ore"
35 | },
36 | "diamond_ore" : {
37 | "textures" : "textures/blocks/diamond_ore"
38 | },
39 | "emerald_ore" : {
40 | "textures" : "textures/blocks/emerald_ore"
41 | },
42 | "gold_ore" : {
43 | "textures" : "textures/blocks/gold_ore"
44 | },
45 | "iron_ore" : {
46 | "textures" : "textures/blocks/iron_ore"
47 | },
48 | "lapis_ore" : {
49 | "textures" : "textures/blocks/lapis_ore"
50 | },
51 | "nether_gold_ore" : {
52 | "textures" : "textures/blocks/nether_gold_ore"
53 | },
54 | "quartz_ore" : {
55 | "textures" : "textures/blocks/quartz_ore"
56 | },
57 | "redstone_ore" : {
58 | "textures" : "textures/blocks/redstone_ore"
59 | }
60 | },
61 | "texture_name" : "atlas.terrain"
62 | }
63 |
--------------------------------------------------------------------------------
/src/LegacyCubemap/src/LegacyCubemap.fragment.sc:
--------------------------------------------------------------------------------
1 | $input v_position, v_fogColor, v_fogDistControl
2 | #include
3 |
4 | SAMPLER2D(s_MatTexture, 0);
5 |
6 | // random, noise, fbm
7 | // https://github.com/patriciogonzalezvivo/lygia/tree/main/generative
8 | float hash(float h){
9 | return fract(sin(h) * 43758.5453);
10 | }
11 |
12 | float voronoi2d(vec2 pos){
13 | vec2 p = floor(pos);
14 | vec2 f = fract(pos);
15 | float dist = 1.0;
16 | for(float y = -1.0; y <= 1.0; y++){
17 | for(float x = -1.0; x <= 1.0; x++){
18 | vec2 ne = vec2(x, y);
19 | vec2 pn = p + ne;
20 | float n = pn.x + pn.y * 57.0;
21 | dist = min(dist, length(ne + hash(n) - f));
22 | }
23 | }
24 | return dist;
25 | }
26 |
27 | float fbm(vec2 pos, float pDens, float fTime){
28 | float sum = 0.0;
29 | float sDens = 1.0;
30 | pos += fTime * 0.001;
31 | for(int i = 0; i < 4; i++){
32 | sum += voronoi2d(pos) * sDens * pDens;
33 | sDens *= 0.5;
34 | pos *= 2.5;
35 | pos += fTime * 0.05;
36 | }
37 | return saturate(1.0 - sum);
38 | }
39 | // random, noise, fbm
40 |
41 | float dStars(vec3 pos){
42 | pos = floor(pos * 265.0);
43 | return smoothstep(0.9975, 1.0, hash(pos.x + pos.y * 157.0 + pos.z * 113.0));
44 | }
45 |
46 | float getLL(vec3 color){
47 | return dot(color, vec3(0.2125, 0.7154, 0.0721));
48 | }
49 |
50 | vec3 cSatur(vec3 color, float sat){
51 | float lum = getLL(color);
52 | return mix(vec3_splat(lum), color, sat);
53 | }
54 |
55 | // tonemap
56 | // https://github.com/dmnsgn/glsl-tone-map/blob/main/filmic.glsl
57 | vec3 filmic(vec3 x){
58 | return (x * (6.2 * x + 0.5)) / (x * (6.2 * x + 1.7) + 0.06);
59 | }
60 | // tonemap
61 |
62 | vec3 getSunC(float sunH){
63 | sunH = saturate(sunH + 0.1);
64 | return vec3((1.0 - sunH) + sunH, sunH, sunH * sunH) * pow(sunH, 0.6);
65 | }
66 |
67 | vec3 getMoonC(float sunH){
68 | sunH = saturate(-sunH);
69 | return vec3((1.0 - sunH) * 0.2 + sunH, sunH, sunH) * pow(sunH, 0.6);
70 | }
71 |
72 | vec3 getZenC(float sunH){
73 | sunH = pow(saturate(sunH + 0.1), 0.6);
74 | return vec3(0.0, sunH * 0.12 + 0.0001, sunH * 0.5 + 0.0005);
75 | }
76 |
77 | float getMie(vec3 lightPos, vec3 pos){
78 | return exp(-distance(pos, lightPos) * 2.0) * exp(-saturate(pos.y) * 4.0);
79 | }
80 |
81 | void main(){
82 | // sun angle
83 | // https://github.com/bWFuanVzYWth/OriginShader
84 | float sunA = clamp(((349.305545 * v_fogColor.g - 159.858192) * v_fogColor.g + 30.557216) * v_fogColor.g - 1.628452, -1.0, 1.0);
85 | // sun angle
86 |
87 | vec3 sunP = normalize(vec3(cos(sunA), sin(sunA), 0.0));
88 | vec3 nPos = normalize(vec3(v_position.x, -v_position.y, -v_position.z));
89 |
90 | vec3 sunC = getSunC(sunP.y);
91 | vec3 moonC = getMoonC(sunP.y);
92 | vec3 zenC = getZenC(sunP.y);
93 | vec3 horC = moonC * vec3(0.0, 0.1, 0.2) + sunC;
94 | horC = cSatur(horC, 0.5);
95 |
96 | vec3 color = mix(zenC, horC, exp(-saturate(nPos.y) * 4.0) * 0.25);
97 | color += dStars(nPos + v_position.w * 0.0001) * saturate(1.0 - getLL(sunC));
98 | color += sunC * getMie(sunP, nPos) * 4.0;
99 | color += moonC * getMie(-sunP, nPos) * vec3(0.15, 0.2, 0.25);
100 | color += sunC * smoothstep(0.9975, 1.0, dot(nPos, sunP)) * 100.0 * pow(saturate(nPos.y), 0.7);
101 | color += moonC * smoothstep(0.999, 1.0, dot(nPos, -sunP)) * 100.0 * pow(saturate(nPos.y), 0.7);
102 |
103 | vec2 cloudP = (nPos.xz / nPos.y) * 0.7;
104 | cloudP -= cloudP * texture2D(s_MatTexture, fract(gl_FragCoord.xy / 256.0)).r * 0.05;
105 | float sDens = 1.8;
106 | vec3 cloDirC = horC * 1.5;
107 | vec3 cloAmbC = cSatur(zenC, 0.7);
108 |
109 | for(int i = 0; i < 10; i++){
110 | float cloudM = fbm(cloudP, sDens, v_position.w);
111 | cloDirC = mix(cloDirC, cloAmbC, 0.2);
112 | color = mix(color, cloDirC, cloudM * smoothstep(0.0, 0.5, nPos.y));
113 | sDens += (i <= 6) ? -0.1 : 0.1;
114 | cloudP -= cloudP * 0.045;
115 | }
116 | color = mix(color, v_fogColor.rgb * v_fogColor.rgb, max(step(v_fogDistControl.x, 0.0), smoothstep(0.6, 0.3, v_fogDistControl.x)));
117 |
118 | color *= vec3(1.5, 1.4, 1.3);
119 | color = cSatur(color, 1.1);
120 | color = filmic(color);
121 |
122 | gl_FragColor = vec4(color, 1.0);
123 | }
124 |
--------------------------------------------------------------------------------
/src/RenderChunk/src/RenderChunk.fragment.sc:
--------------------------------------------------------------------------------
1 | $input v_color0, v_position, v_worldPos, v_texcoord0, v_lightmapUV
2 | #include
3 |
4 | uniform vec4 FogAndDistanceControl;
5 | uniform vec4 ViewPositionAndTime;
6 | uniform vec4 FogColor;
7 |
8 | SAMPLER2D(s_MatTexture, 0);
9 | SAMPLER2D(s_SeasonsTexture, 1);
10 | SAMPLER2D(s_LightMapTexture, 2);
11 |
12 | // random, noise, fbm
13 | // https://github.com/patriciogonzalezvivo/lygia/tree/main/generative
14 | float hash(float h){
15 | return fract(sin(h) * 43758.5453);
16 | }
17 |
18 | float noise2d(vec2 pos){
19 | vec2 p = floor(pos);
20 | vec2 f = fract(pos);
21 | f = f * f * (3.0 - 2.0 * f);
22 | float n = p.x + p.y * 57.0;
23 | return mix(mix(hash(n), hash(n + 1.0), f.x), mix(hash(n + 57.0), hash(n + 58.0), f.x), f.y);
24 | }
25 |
26 | float voronoi2d(vec2 pos){
27 | vec2 p = floor(pos);
28 | vec2 f = fract(pos);
29 | float dist = 1.0;
30 | for(float y = -1.0; y <= 1.0; y++){
31 | for(float x = -1.0; x <= 1.0; x++){
32 | vec2 ne = vec2(x, y);
33 | vec2 pn = p + ne;
34 | float n = pn.x + pn.y * 57.0;
35 | dist = min(dist, length(ne + hash(n) - f));
36 | }
37 | }
38 | return dist;
39 | }
40 |
41 | float fbm(vec2 pos, float pDens){
42 | float sum = 0.0;
43 | float sDens = 1.0;
44 | pos += ViewPositionAndTime.w * 0.001;
45 | for(int i = 0; i < 4; i++){
46 | sum += voronoi2d(pos) * sDens * pDens;
47 | sDens *= 0.5;
48 | pos *= 2.5;
49 | pos += ViewPositionAndTime.w * 0.05;
50 | }
51 | return saturate(1.0 - sum);
52 | }
53 | // random, noise, fbm
54 |
55 | float dStars(vec3 pos){
56 | pos = floor(pos * 265.0);
57 | return smoothstep(0.9975, 1.0, hash(pos.x + pos.y * 157.0 + pos.z * 113.0));
58 | }
59 |
60 | float getLL(vec3 color){
61 | return dot(color, vec3(0.2125, 0.7154, 0.0721));
62 | }
63 |
64 | vec3 cSatur(vec3 color, float sat){
65 | float lum = getLL(color);
66 | return mix(vec3_splat(lum), color, sat);
67 | }
68 |
69 | // tonemap
70 | // https://github.com/dmnsgn/glsl-tone-map/blob/main/filmic.glsl
71 | vec3 filmic(vec3 x){
72 | return (x * (6.2 * x + 0.5)) / (x * (6.2 * x + 1.7) + 0.06);
73 | }
74 | // tonemap
75 |
76 | vec3 getSunC(float sunH){
77 | sunH = saturate(sunH + 0.1);
78 | return vec3((1.0 - sunH) + sunH, sunH, sunH * sunH) * pow(sunH, 0.6);
79 | }
80 |
81 | vec3 getMoonC(float sunH){
82 | sunH = saturate(-sunH);
83 | return vec3((1.0 - sunH) * 0.2 + sunH, sunH, sunH) * pow(sunH, 0.6);
84 | }
85 |
86 | vec3 getZenC(float sunH){
87 | sunH = pow(saturate(sunH + 0.1), 0.6);
88 | return vec3(0.0, sunH * 0.12 + 0.0001, sunH * 0.5 + 0.0005);
89 | }
90 |
91 | float getMie(vec3 lPos, vec3 pos){
92 | return exp(-distance(pos, lPos) * 2.0) * exp(-saturate(pos.y) * 4.0);
93 | }
94 |
95 | float getMie1(vec3 lPos, vec3 pos){
96 | return exp(-distance(pos, lPos) * 2.0);
97 | }
98 |
99 | #define rot2d(x) mat2(cos(x), -sin(x), sin(x), cos(x))
100 | float getWH(vec2 pos){
101 | pos *= vec2(1.3, 0.5);
102 | pos.x += ViewPositionAndTime.w;
103 |
104 | vec2 wind = vec2(ViewPositionAndTime.w, 0.0);
105 | float hMap = noise2d(mul(pos, rot2d(0.5)) + wind) * 0.45;
106 | hMap += noise2d(mul(pos, rot2d(-0.5)) + wind) * 0.45;
107 |
108 | pos *= 3.5;
109 | hMap += noise2d(mul(pos, rot2d(0.5)) - wind) * 0.05;
110 | hMap += noise2d(mul(pos, rot2d(-0.5)) - wind) * 0.05;
111 | return saturate(hMap);
112 | }
113 | #undef rot2d
114 |
115 | float fSchlick(float f0, float nd){
116 | return f0 + (1.0 - f0) * pow(1.0 - nd, 5.0);
117 | }
118 |
119 | // specular
120 | // http://filmicworlds.com/blog/optimizing-ggx-shaders-with-dotlh/
121 | float G1V(float dotNV, float k){
122 | return rcp(dotNV * (1.0 - k) + k);
123 | }
124 |
125 | float ggx(vec3 N, vec3 V, vec3 L, float roughness, float f0){
126 | float alpha = roughness * roughness;
127 | vec3 H = normalize(V + L);
128 |
129 | float dotNL = saturate(dot(N, L));
130 | float dotNV = saturate(dot(N, V));
131 | float dotNH = saturate(dot(N, H));
132 | float dotLH = saturate(dot(L, H));
133 |
134 | float alphaSqr = alpha * alpha;
135 | float denom = dotNH * dotNH * (alphaSqr - 1.0) + 1.0;
136 | float D = alphaSqr / (3.1415926 * denom * denom);
137 | float F = fSchlick(f0, dotLH);
138 |
139 | float k = alpha / 2.0;
140 | float vis = G1V(dotNL, k) * G1V(dotNV, k);
141 | return dotNL * D * F * vis;
142 | }
143 | // specular
144 |
145 | void main(){
146 | #if defined(DEPTH_ONLY_OPAQUE) || defined(DEPTH_ONLY)
147 | gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);
148 | #else
149 | vec4 diffuse = texture2D(s_MatTexture, v_texcoord0);
150 | #if defined(ALPHA_TEST)
151 | if(diffuse.a < 0.5) discard;
152 | #endif
153 | #if defined(SEASONS) && (defined(OPAQUE) || defined(ALPHA_TEST))
154 | diffuse.rgb *= mix(vec3_splat(1.0), texture2D(s_SeasonsTexture, v_color0.rg).rgb * 2.0, v_color0.b);
155 | diffuse.rgb *= v_color0.aaa;
156 | #else
157 | diffuse *= v_color0;
158 | #endif
159 | #ifndef TRANSPARENT
160 | diffuse.a = 1.0;
161 | #endif
162 |
163 | diffuse.rgb *= diffuse.rgb;
164 |
165 | vec3 N = normalize(cross(dFdx(v_position.xyz), dFdy(v_position.xyz)));
166 | mat3 TBN = mat3(abs(N).y + N.z, 0.0, -N.x, 0.0, -abs(N).x - abs(N).z, abs(N).y, N);
167 |
168 | // sun angle
169 | // https://github.com/bWFuanVzYWth/OriginShader
170 | float sunA = clamp(((349.305545 * FogColor.g - 159.858192) * FogColor.g + 30.557216) * FogColor.g - 1.628452, -1.0, 1.0);
171 | // sun angle
172 |
173 | vec3 sunP = normalize(vec3(cos(sunA), sin(sunA), 0.0));
174 | vec3 tLP = sunP.y > 0.0 ? sunP : -sunP;
175 |
176 | vec3 sunC = getSunC(sunP.y);
177 | vec3 moonC = getMoonC(sunP.y);
178 | vec3 zenC = getZenC(sunP.y);
179 | vec3 horC = moonC * vec3(0.0, 0.1, 0.2) + sunC;
180 | horC = cSatur(horC, 0.5);
181 |
182 | float rain = smoothstep(0.6, 0.3, FogAndDistanceControl.x);
183 | float shMap = mix(saturate(dot(tLP, N)) * (2.0 - saturate(tLP.y)), 0.0, max(smoothstep(0.94, 0.92, v_lightmapUV.y), rain));
184 |
185 | float bLight = max(v_lightmapUV.x * (1.0 - saturate(sunP.y) * v_lightmapUV.y), v_lightmapUV.x * rain * v_lightmapUV.y);
186 |
187 | float glowT = float(texture2DLod(s_MatTexture, v_texcoord0, 0.0).a > 0.91 && texture2DLod(s_MatTexture, v_texcoord0, 0.0).a < 0.93) * mix(2.0, 0.0, v_position.w);
188 |
189 | bool isNeth = texture2D(s_LightMapTexture, vec2(0, 0)).r > 0.5 && texture2D(s_LightMapTexture, vec2(0, 0)).r < 0.52;
190 | bool isEndw = texture2D(s_LightMapTexture, vec2(0, 0)).r > 0.42 && texture2D(s_LightMapTexture, vec2(0, 0)).r < 0.44;
191 |
192 | vec3 ambVL = texture2D(s_LightMapTexture, vec2(0.0, v_lightmapUV.y)).rgb;
193 | vec3 ambL = mix(cSatur(zenC, 0.3) * 2.0 * ambVL, ambVL * 0.25, max(float(isNeth), float(isEndw)));
194 | ambL += glowT;
195 | ambL += mix(horC, FogColor.rgb * FogColor.rgb, rain) * shMap;
196 | ambL += mix(vec3(1.0, 0.7, 0.4), vec3(1.0, 0.5, 0.6), float(isEndw)) * ((bLight * bLight) * 0.25 + pow(bLight, 16.0) * 5.0);
197 |
198 | diffuse.rgb = cSatur(diffuse.rgb, 1.0 - (pow(saturate(-sunP.y), 0.7) * v_lightmapUV.y) * 0.5);
199 | diffuse.rgb *= ambL;
200 |
201 | vec3 nWP = normalize(v_worldPos.xyz);
202 |
203 | vec3 parP = normalize(mul(v_worldPos, TBN));
204 | parP.xy = (parP.xy / parP.z) * 0.1;
205 | vec2 waPos = v_position.xz;
206 | for(int i = 0; i < 4; i++) waPos += parP.xy * saturate(1.0 - getWH(waPos));
207 |
208 | vec3 wN = vec3(0.0, 0.0, 1.0);
209 | wN.x += getWH(waPos + vec2(0.02, 0.0));
210 | wN.x -= getWH(waPos - vec2(0.02, 0.0));
211 | wN.y += getWH(waPos + vec2(0.0, 0.02));
212 | wN.y -= getWH(waPos - vec2(0.0, 0.02));
213 | wN = normalize(mul(normalize(wN), TBN));
214 |
215 | bool isWat = false;
216 | #if !defined(SEASONS) && !defined(ALPHA_TEST)
217 | if(v_color0.a > 0.4 && v_color0.a < 0.6){
218 | isWat = true;
219 | diffuse.rgb *= 0.0;
220 |
221 | vec3 rPos = reflect(nWP, wN);
222 | vec3 refl = mix(zenC, horC, exp(-saturate(rPos.y) * 4.0) * 0.25);
223 | refl += dStars(rPos + ViewPositionAndTime.w * 0.0001) * saturate(1.0 - getLL(sunC));
224 | refl += sunC * getMie(sunP, rPos) * 4.0;
225 | refl += moonC * getMie(-sunP, rPos) * vec3(0.15, 0.2, 0.25);
226 |
227 | vec2 cloudP = (rPos.xz / rPos.y) * 0.7;
228 | float sDens = 1.8;
229 | vec3 cloDirC = horC * 1.5;
230 | vec3 cloAmbC = cSatur(zenC, 0.7);
231 |
232 | for(int i = 0; i < 10; i++){
233 | float cloudM = fbm(cloudP, sDens);
234 | cloDirC = mix(cloDirC, cloAmbC, 0.2);
235 | refl = mix(refl, cloDirC, cloudM * smoothstep(0.0, 0.5, rPos.y));
236 | sDens += (i <= 6) ? -0.1 : 0.1;
237 | cloudP -= cloudP * 0.045;
238 | }
239 | refl = mix(refl, FogColor.rgb * FogColor.rgb, max(step(FogAndDistanceControl.x, 0.0), rain));
240 |
241 | vec3 vDir = normalize(-v_worldPos.xyz);
242 | float fresnel = fSchlick(0.2, saturate(dot(wN, vDir))) * v_lightmapUV.y;
243 | diffuse.rgb = mix(diffuse.rgb, refl, fresnel);
244 | diffuse.a = mix(diffuse.a, 1.0, saturate(fresnel * 2.0));
245 |
246 | diffuse += vec4(horC, 1.0) * ggx(wN, vDir, tLP, 0.1, 0.05) * smoothstep(0.92, 0.94, v_lightmapUV.y);
247 | }
248 | #endif
249 |
250 | if(FogAndDistanceControl.x <= 0.0){
251 | if(!isWat){
252 | vec3 causDir = normalize(mul(vec3(-1.0, -1.0, 0.1), TBN));
253 | vec3 uwAmb = ambVL * vec3(0.0, 0.3, 0.8) + pow(v_lightmapUV.x, 3.0);
254 | uwAmb += pow(saturate(dot(causDir, wN)), 3.0) * v_lightmapUV.y * 3e3;
255 | diffuse.rgb *= uwAmb;
256 | }
257 | } else {
258 | if(!isNeth && !isEndw){
259 | vec3 nFogC = zenC * (3.0 - saturate(sunP.y) * 0.5);
260 | nFogC += sunC * getMie1(sunP, nWP) * 4.0;
261 | nFogC += moonC * getMie1(-sunP, nWP) * vec3(0.15, 0.2, 0.25);
262 | nFogC = mix(nFogC, FogColor.rgb * FogColor.rgb, max(step(FogAndDistanceControl.x, 0.0), rain));
263 | float nFogD = 1.0 - exp(-saturate(length(-v_worldPos.xyz) * 0.01) * (0.1 - saturate(sunP.y) * 0.09));
264 | diffuse.rgb = mix(diffuse.rgb, nFogC, nFogD);
265 | }
266 | }
267 |
268 | vec3 bFogC = mix(zenC, horC, exp(-saturate(nWP.y) * 4.0) * 0.25);
269 | bFogC += sunC * getMie(sunP, nWP) * 4.0;
270 | bFogC += moonC * getMie(-sunP, nWP) * vec3(0.15, 0.2, 0.25);
271 | bFogC = mix(bFogC, FogColor.rgb * FogColor.rgb, max(step(FogAndDistanceControl.x, 0.0), rain));
272 | diffuse.rgb = mix(diffuse.rgb, bFogC, v_position.w);
273 |
274 | diffuse.rgb *= vec3(1.5, 1.4, 1.3);
275 | diffuse.rgb = cSatur(diffuse.rgb, 1.1);
276 | diffuse.rgb = filmic(diffuse.rgb);
277 |
278 | gl_FragColor = diffuse;
279 | #endif
280 | }
--------------------------------------------------------------------------------
/docs/chota.min.css:
--------------------------------------------------------------------------------
1 | /*! chota.css v0.7.2 | MIT License | github.com/jenil/chota */:root{--bg-color:#fff;--bg-secondary-color:#f3f3f6;--color-primary:#14854f;--color-lightGrey:#d2d6dd;--color-grey:#747681;--color-darkGrey:#3f4144;--color-error:#d43939;--color-success:#28bd14;--grid-maxWidth:120rem;--grid-gutter:2rem;--font-size:1.6rem;--font-color:#333;--font-family-sans:-apple-system,BlinkMacSystemFont,Avenir,"Avenir Next","Segoe UI","Roboto","Oxygen","Ubuntu","Cantarell","Fira Sans","Droid Sans","Helvetica Neue",sans-serif;--font-family-mono:monaco,"Consolas","Lucida Console",monospace}html{-webkit-box-sizing:border-box;box-sizing:border-box;font-size:62.5%;line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}*,:after,:before{-webkit-box-sizing:inherit;box-sizing:inherit}body{background-color:var(--bg-color);line-height:1.6;font-size:var(--font-size);color:var(--font-color);font-family:Segoe UI,Helvetica Neue,sans-serif;font-family:var(--font-family-sans);margin:0;padding:0}h1,h2,h3,h4,h5,h6{font-weight:500;margin:.35em 0 .7em}h1{font-size:2em}h2{font-size:1.75em}h3{font-size:1.5em}h4{font-size:1.25em}h5{font-size:1em}h6{font-size:.85em}a{color:var(--color-primary);text-decoration:none}a:hover:not(.button){opacity:.75}button{font-family:inherit}p{margin-top:0}blockquote{background-color:var(--bg-secondary-color);padding:1.5rem 2rem;border-left:3px solid var(--color-lightGrey)}dl dt{font-weight:700}hr{background-color:var(--color-lightGrey);height:1px;margin:1rem 0}hr,table{border:none}table{width:100%;border-collapse:collapse;border-spacing:0;text-align:left}table.striped tr:nth-of-type(2n){background-color:var(--bg-secondary-color)}td,th{vertical-align:middle;padding:1.2rem .4rem}thead{border-bottom:2px solid var(--color-lightGrey)}tfoot{border-top:2px solid var(--color-lightGrey)}code,kbd,pre,samp,tt{font-family:var(--font-family-mono)}code,kbd{font-size:90%;white-space:pre-wrap;border-radius:4px;padding:.2em .4em;color:var(--color-error)}code,kbd,pre{background-color:var(--bg-secondary-color)}pre{font-size:1em;padding:1rem;overflow-x:auto}pre code{background:none;padding:0}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}img{max-width:100%}fieldset{border:1px solid var(--color-lightGrey)}iframe{border:0}.container{max-width:var(--grid-maxWidth);margin:0 auto;width:96%;padding:0 calc(var(--grid-gutter)/2)}.row{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;margin-left:calc(var(--grid-gutter)/-2);margin-right:calc(var(--grid-gutter)/-2)}.row,.row.reverse{-webkit-box-orient:horizontal}.row.reverse{-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.col{-webkit-box-flex:1;-ms-flex:1;flex:1}.col,[class*=" col-"],[class^=col-]{margin:0 calc(var(--grid-gutter)/2) calc(var(--grid-gutter)/2)}.col-1{-ms-flex:0 0 calc(8.33333% - var(--grid-gutter));flex:0 0 calc(8.33333% - var(--grid-gutter));max-width:calc(8.33333% - var(--grid-gutter))}.col-1,.col-2{-webkit-box-flex:0}.col-2{-ms-flex:0 0 calc(16.66667% - var(--grid-gutter));flex:0 0 calc(16.66667% - var(--grid-gutter));max-width:calc(16.66667% - var(--grid-gutter))}.col-3{-ms-flex:0 0 calc(25% - var(--grid-gutter));flex:0 0 calc(25% - var(--grid-gutter));max-width:calc(25% - var(--grid-gutter))}.col-3,.col-4{-webkit-box-flex:0}.col-4{-ms-flex:0 0 calc(33.33333% - var(--grid-gutter));flex:0 0 calc(33.33333% - var(--grid-gutter));max-width:calc(33.33333% - var(--grid-gutter))}.col-5{-ms-flex:0 0 calc(41.66667% - var(--grid-gutter));flex:0 0 calc(41.66667% - var(--grid-gutter));max-width:calc(41.66667% - var(--grid-gutter))}.col-5,.col-6{-webkit-box-flex:0}.col-6{-ms-flex:0 0 calc(50% - var(--grid-gutter));flex:0 0 calc(50% - var(--grid-gutter));max-width:calc(50% - var(--grid-gutter))}.col-7{-ms-flex:0 0 calc(58.33333% - var(--grid-gutter));flex:0 0 calc(58.33333% - var(--grid-gutter));max-width:calc(58.33333% - var(--grid-gutter))}.col-7,.col-8{-webkit-box-flex:0}.col-8{-ms-flex:0 0 calc(66.66667% - var(--grid-gutter));flex:0 0 calc(66.66667% - var(--grid-gutter));max-width:calc(66.66667% - var(--grid-gutter))}.col-9{-ms-flex:0 0 calc(75% - var(--grid-gutter));flex:0 0 calc(75% - var(--grid-gutter));max-width:calc(75% - var(--grid-gutter))}.col-9,.col-10{-webkit-box-flex:0}.col-10{-ms-flex:0 0 calc(83.33333% - var(--grid-gutter));flex:0 0 calc(83.33333% - var(--grid-gutter));max-width:calc(83.33333% - var(--grid-gutter))}.col-11{-ms-flex:0 0 calc(91.66667% - var(--grid-gutter));flex:0 0 calc(91.66667% - var(--grid-gutter));max-width:calc(91.66667% - var(--grid-gutter))}.col-11,.col-12{-webkit-box-flex:0}.col-12{-ms-flex:0 0 calc(100% - var(--grid-gutter));flex:0 0 calc(100% - var(--grid-gutter));max-width:calc(100% - var(--grid-gutter))}@media screen and (max-width:599px){.container{width:100%}.col,[class*=col-],[class^=col-]{-webkit-box-flex:0;-ms-flex:0 1 100%;flex:0 1 100%;max-width:100%}}@media screen and (min-width:900px){.col-1-md{-webkit-box-flex:0;-ms-flex:0 0 calc(8.33333% - var(--grid-gutter));flex:0 0 calc(8.33333% - var(--grid-gutter));max-width:calc(8.33333% - var(--grid-gutter))}.col-2-md{-webkit-box-flex:0;-ms-flex:0 0 calc(16.66667% - var(--grid-gutter));flex:0 0 calc(16.66667% - var(--grid-gutter));max-width:calc(16.66667% - var(--grid-gutter))}.col-3-md{-webkit-box-flex:0;-ms-flex:0 0 calc(25% - var(--grid-gutter));flex:0 0 calc(25% - var(--grid-gutter));max-width:calc(25% - var(--grid-gutter))}.col-4-md{-webkit-box-flex:0;-ms-flex:0 0 calc(33.33333% - var(--grid-gutter));flex:0 0 calc(33.33333% - var(--grid-gutter));max-width:calc(33.33333% - var(--grid-gutter))}.col-5-md{-webkit-box-flex:0;-ms-flex:0 0 calc(41.66667% - var(--grid-gutter));flex:0 0 calc(41.66667% - var(--grid-gutter));max-width:calc(41.66667% - var(--grid-gutter))}.col-6-md{-webkit-box-flex:0;-ms-flex:0 0 calc(50% - var(--grid-gutter));flex:0 0 calc(50% - var(--grid-gutter));max-width:calc(50% - var(--grid-gutter))}.col-7-md{-webkit-box-flex:0;-ms-flex:0 0 calc(58.33333% - var(--grid-gutter));flex:0 0 calc(58.33333% - var(--grid-gutter));max-width:calc(58.33333% - var(--grid-gutter))}.col-8-md{-webkit-box-flex:0;-ms-flex:0 0 calc(66.66667% - var(--grid-gutter));flex:0 0 calc(66.66667% - var(--grid-gutter));max-width:calc(66.66667% - var(--grid-gutter))}.col-9-md{-webkit-box-flex:0;-ms-flex:0 0 calc(75% - var(--grid-gutter));flex:0 0 calc(75% - var(--grid-gutter));max-width:calc(75% - var(--grid-gutter))}.col-10-md{-webkit-box-flex:0;-ms-flex:0 0 calc(83.33333% - var(--grid-gutter));flex:0 0 calc(83.33333% - var(--grid-gutter));max-width:calc(83.33333% - var(--grid-gutter))}.col-11-md{-webkit-box-flex:0;-ms-flex:0 0 calc(91.66667% - var(--grid-gutter));flex:0 0 calc(91.66667% - var(--grid-gutter));max-width:calc(91.66667% - var(--grid-gutter))}.col-12-md{-webkit-box-flex:0;-ms-flex:0 0 calc(100% - var(--grid-gutter));flex:0 0 calc(100% - var(--grid-gutter));max-width:calc(100% - var(--grid-gutter))}}@media screen and (min-width:1200px){.col-1-lg{-webkit-box-flex:0;-ms-flex:0 0 calc(8.33333% - var(--grid-gutter));flex:0 0 calc(8.33333% - var(--grid-gutter));max-width:calc(8.33333% - var(--grid-gutter))}.col-2-lg{-webkit-box-flex:0;-ms-flex:0 0 calc(16.66667% - var(--grid-gutter));flex:0 0 calc(16.66667% - var(--grid-gutter));max-width:calc(16.66667% - var(--grid-gutter))}.col-3-lg{-webkit-box-flex:0;-ms-flex:0 0 calc(25% - var(--grid-gutter));flex:0 0 calc(25% - var(--grid-gutter));max-width:calc(25% - var(--grid-gutter))}.col-4-lg{-webkit-box-flex:0;-ms-flex:0 0 calc(33.33333% - var(--grid-gutter));flex:0 0 calc(33.33333% - var(--grid-gutter));max-width:calc(33.33333% - var(--grid-gutter))}.col-5-lg{-webkit-box-flex:0;-ms-flex:0 0 calc(41.66667% - var(--grid-gutter));flex:0 0 calc(41.66667% - var(--grid-gutter));max-width:calc(41.66667% - var(--grid-gutter))}.col-6-lg{-webkit-box-flex:0;-ms-flex:0 0 calc(50% - var(--grid-gutter));flex:0 0 calc(50% - var(--grid-gutter));max-width:calc(50% - var(--grid-gutter))}.col-7-lg{-webkit-box-flex:0;-ms-flex:0 0 calc(58.33333% - var(--grid-gutter));flex:0 0 calc(58.33333% - var(--grid-gutter));max-width:calc(58.33333% - var(--grid-gutter))}.col-8-lg{-webkit-box-flex:0;-ms-flex:0 0 calc(66.66667% - var(--grid-gutter));flex:0 0 calc(66.66667% - var(--grid-gutter));max-width:calc(66.66667% - var(--grid-gutter))}.col-9-lg{-webkit-box-flex:0;-ms-flex:0 0 calc(75% - var(--grid-gutter));flex:0 0 calc(75% - var(--grid-gutter));max-width:calc(75% - var(--grid-gutter))}.col-10-lg{-webkit-box-flex:0;-ms-flex:0 0 calc(83.33333% - var(--grid-gutter));flex:0 0 calc(83.33333% - var(--grid-gutter));max-width:calc(83.33333% - var(--grid-gutter))}.col-11-lg{-webkit-box-flex:0;-ms-flex:0 0 calc(91.66667% - var(--grid-gutter));flex:0 0 calc(91.66667% - var(--grid-gutter));max-width:calc(91.66667% - var(--grid-gutter))}.col-12-lg{-webkit-box-flex:0;-ms-flex:0 0 calc(100% - var(--grid-gutter));flex:0 0 calc(100% - var(--grid-gutter));max-width:calc(100% - var(--grid-gutter))}}fieldset{padding:.5rem 2rem}legend{text-transform:uppercase;font-size:.8em;letter-spacing:.1rem}input:not([type=checkbox]):not([type=radio]):not([type=submit]):not([type=color]):not([type=button]):not([type=reset]),select,textarea,textarea[type=text]{font-family:inherit;padding:.8rem 1rem;border-radius:4px;border:1px solid var(--color-lightGrey);font-size:1em;-webkit-transition:all .2s ease;transition:all .2s ease;display:block;width:100%}input:not([type=checkbox]):not([type=radio]):not([type=submit]):not([type=color]):not([type=button]):not([type=reset]):not(:disabled):hover,select:hover,textarea:hover,textarea[type=text]:hover{border-color:var(--color-grey)}input:not([type=checkbox]):not([type=radio]):not([type=submit]):not([type=color]):not([type=button]):not([type=reset]):focus,select:focus,textarea:focus,textarea[type=text]:focus{outline:none;border-color:var(--color-primary);-webkit-box-shadow:0 0 1px var(--color-primary);box-shadow:0 0 1px var(--color-primary)}input.error:not([type=checkbox]):not([type=radio]):not([type=submit]):not([type=color]):not([type=button]):not([type=reset]),textarea.error{border-color:var(--color-error)}input.success:not([type=checkbox]):not([type=radio]):not([type=submit]):not([type=color]):not([type=button]):not([type=reset]),textarea.success{border-color:var(--color-success)}select{-webkit-appearance:none;background:#f3f3f6 no-repeat 100%;background-size:1ex;background-origin:content-box;background-image:url("data:image/svg+xml;utf8,")}[type=checkbox],[type=radio]{width:1.6rem;height:1.6rem}.button,[type=button],[type=reset],[type=submit],button{padding:1rem 2.5rem;color:var(--color-darkGrey);background:var(--color-lightGrey);border-radius:4px;border:1px solid transparent;font-size:var(--font-size);line-height:1;text-align:center;-webkit-transition:opacity .2s ease;transition:opacity .2s ease;text-decoration:none;-webkit-transform:scale(1);transform:scale(1);display:inline-block;cursor:pointer}.grouped{display:-webkit-box;display:-ms-flexbox;display:flex}.grouped>:not(:last-child){margin-right:16px}.grouped.gapless>*{margin:0 0 0 -1px!important;border-radius:0!important}.grouped.gapless>:first-child{margin:0!important;border-radius:4px 0 0 4px!important}.grouped.gapless>:last-child{border-radius:0 4px 4px 0!important}.button+.button{margin-left:1rem}.button:hover,[type=button]:hover,[type=reset]:hover,[type=submit]:hover,button:hover{opacity:.8}.button:active,[type=button]:active,[type=reset]:active,[type=submit]:active,button:active{-webkit-transform:scale(.98);transform:scale(.98)}button:disabled,button:disabled:hover,input:disabled,input:disabled:hover{opacity:.4;cursor:not-allowed}.button.dark,.button.error,.button.primary,.button.secondary,.button.success,[type=submit]{color:#fff;z-index:1;background-color:#000;background-color:var(--color-primary)}.button.secondary{background-color:var(--color-grey)}.button.dark{background-color:var(--color-darkGrey)}.button.error{background-color:var(--color-error)}.button.success{background-color:var(--color-success)}.button.outline{background-color:transparent;border-color:var(--color-lightGrey)}.button.outline.primary{border-color:var(--color-primary);color:var(--color-primary)}.button.outline.secondary{border-color:var(--color-grey);color:var(--color-grey)}.button.outline.dark{border-color:var(--color-darkGrey);color:var(--color-darkGrey)}.button.clear{background-color:transparent;border-color:transparent;color:var(--color-primary)}.button.icon{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.button.icon>img{margin-left:2px}.button.icon-only{padding:1rem}::-webkit-input-placeholder{color:#bdbfc4}::-moz-placeholder{color:#bdbfc4}:-ms-input-placeholder{color:#bdbfc4}::-ms-input-placeholder{color:#bdbfc4}::placeholder{color:#bdbfc4}.nav{display:-webkit-box;display:-ms-flexbox;display:flex;min-height:5rem;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.nav img{max-height:3rem}.nav-center,.nav-left,.nav-right,.nav>.container{display:-webkit-box;display:-ms-flexbox;display:flex}.nav-center,.nav-left,.nav-right{-webkit-box-flex:1;-ms-flex:1;flex:1}.nav-left{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.nav-right{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.nav-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}@media screen and (max-width:480px){.nav,.nav>.container{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.nav-center,.nav-left,.nav-right{-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}}.nav .brand,.nav a{text-decoration:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:1rem 2rem;color:var(--color-darkGrey)}.nav .active:not(.button){color:#000;color:var(--color-primary)}.nav .brand{font-size:1.75em;padding-top:0;padding-bottom:0}.nav .brand img{padding-right:1rem}.nav .button{margin:auto 1rem}.card{padding:1rem 2rem;border-radius:4px;background:var(--bg-color);-webkit-box-shadow:0 1px 3px var(--color-grey);box-shadow:0 1px 3px var(--color-grey)}.card p:last-child{margin:0}.card header>*{margin-top:0;margin-bottom:1rem}.tabs{display:-webkit-box;display:-ms-flexbox;display:flex}.tabs a{text-decoration:none}.tabs>.dropdown>summary,.tabs>a{padding:1rem 2rem;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;color:var(--color-darkGrey);border-bottom:2px solid var(--color-lightGrey);text-align:center}.tabs>a.active,.tabs>a:hover{opacity:1;border-bottom:2px solid var(--color-darkGrey)}.tabs>a.active{border-color:var(--color-primary)}.tabs.is-full a{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.tag{display:inline-block;border:1px solid var(--color-lightGrey);text-transform:uppercase;color:var(--color-grey);padding:.5rem;line-height:1;letter-spacing:.5px}.tag.is-small{padding:.4rem;font-size:.75em}.tag.is-large{padding:.7rem;font-size:1.125em}.tag+.tag{margin-left:1rem}details.dropdown{position:relative;display:inline-block}details.dropdown>:last-child{position:absolute;left:0;white-space:nowrap}.bg-primary{background-color:var(--color-primary)!important}.bg-light{background-color:var(--color-lightGrey)!important}.bg-dark{background-color:var(--color-darkGrey)!important}.bg-grey{background-color:var(--color-grey)!important}.bg-error{background-color:var(--color-error)!important}.bg-success{background-color:var(--color-success)!important}.bd-primary{border:1px solid var(--color-primary)!important}.bd-light{border:1px solid var(--color-lightGrey)!important}.bd-dark{border:1px solid var(--color-darkGrey)!important}.bd-grey{border:1px solid var(--color-grey)!important}.bd-error{border:1px solid var(--color-error)!important}.bd-success{border:1px solid var(--color-success)!important}.text-primary{color:var(--color-primary)!important}.text-light{color:var(--color-lightGrey)!important}.text-dark{color:var(--color-darkGrey)!important}.text-grey{color:var(--color-grey)!important}.text-error{color:var(--color-error)!important}.text-success{color:var(--color-success)!important}.text-white{color:#fff!important}.pull-right{float:right!important}.pull-left{float:left!important}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.text-justify{text-align:justify}.text-uppercase{text-transform:uppercase}.text-lowercase{text-transform:lowercase}.text-capitalize{text-transform:capitalize}.is-full-screen{width:100%;min-height:100vh}.is-full-width{width:100%!important}.is-vertical-align{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.is-center,.is-horizontal-align{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.is-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.is-right{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.is-left,.is-right{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.is-left{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.is-fixed{position:fixed;width:100%}.is-paddingless{padding:0!important}.is-marginless{margin:0!important}.is-pointer{cursor:pointer!important}.is-rounded{border-radius:100%}.clearfix{content:"";display:table;clear:both}.is-hidden{display:none!important}@media screen and (max-width:599px){.hide-xs{display:none!important}}@media screen and (min-width:600px) and (max-width:899px){.hide-sm{display:none!important}}@media screen and (min-width:900px) and (max-width:1199px){.hide-md{display:none!important}}@media screen and (min-width:1200px){.hide-lg{display:none!important}}@media print{.hide-pr{display:none!important}}
--------------------------------------------------------------------------------
/biomes_client.json:
--------------------------------------------------------------------------------
1 | {
2 | "biomes" : {
3 | "bamboo_jungle" : {
4 | "fog_identifier" : "minecraft:fog_bamboo_jungle",
5 | "fog_ids_to_merge" : [ "minecraft:fog_bamboo_jungle" ],
6 | "inherit_from_prior_fog" : false,
7 | "water_surface_color" : "#14A2C5"
8 | },
9 | "bamboo_jungle_hills" : {
10 | "fog_identifier" : "minecraft:fog_bamboo_jungle_hills",
11 | "fog_ids_to_merge" : [ "minecraft:fog_bamboo_jungle_hills" ],
12 | "inherit_from_prior_fog" : false,
13 | "water_surface_color" : "#1B9ED8"
14 | },
15 | "basalt_deltas" : {
16 | "fog_identifier" : "minecraft:fog_basalt_deltas",
17 | "fog_ids_to_merge" : [ "minecraft:fog_basalt_deltas" ],
18 | "inherit_from_prior_fog" : false,
19 | "water_surface_color" : "#3f76e4"
20 | },
21 | "beach" : {
22 | "fog_identifier" : "minecraft:fog_beach",
23 | "fog_ids_to_merge" : [ "minecraft:fog_beach" ],
24 | "inherit_from_prior_fog" : false,
25 | "water_surface_color" : "#157cab"
26 | },
27 | "birch_forest" : {
28 | "fog_identifier" : "minecraft:fog_birch_forest",
29 | "fog_ids_to_merge" : [ "minecraft:fog_birch_forest" ],
30 | "inherit_from_prior_fog" : false,
31 | "water_surface_color" : "#0677ce"
32 | },
33 | "birch_forest_hills" : {
34 | "fog_identifier" : "minecraft:fog_birch_forest_hills",
35 | "fog_ids_to_merge" : [ "minecraft:fog_birch_forest_hills" ],
36 | "inherit_from_prior_fog" : false,
37 | "water_surface_color" : "#0a74c4"
38 | },
39 | "cherry_grove" : {
40 | "fog_identifier" : "minecraft:fog_cherry_grove",
41 | "fog_ids_to_merge" : [ "minecraft:fog_cherry_grove" ],
42 | "inherit_from_prior_fog" : false,
43 | "water_surface_color" : "#5db7ef"
44 | },
45 | "cold_beach" : {
46 | "fog_identifier" : "minecraft:fog_cold_beach",
47 | "fog_ids_to_merge" : [ "minecraft:fog_cold_beach" ],
48 | "inherit_from_prior_fog" : false,
49 | "water_surface_color" : "#1463a5"
50 | },
51 | "cold_ocean" : {
52 | "fog_identifier" : "minecraft:fog_cold_ocean",
53 | "fog_ids_to_merge" : [ "minecraft:fog_cold_ocean" ],
54 | "inherit_from_prior_fog" : false,
55 | "water_surface_color" : "#2080C9"
56 | },
57 | "cold_taiga" : {
58 | "fog_identifier" : "minecraft:fog_cold_taiga",
59 | "fog_ids_to_merge" : [ "minecraft:fog_cold_taiga" ],
60 | "inherit_from_prior_fog" : false,
61 | "water_surface_color" : "#205e83"
62 | },
63 | "cold_taiga_hills" : {
64 | "fog_identifier" : "minecraft:fog_cold_taiga_hills",
65 | "fog_ids_to_merge" : [ "minecraft:fog_cold_taiga_hills" ],
66 | "inherit_from_prior_fog" : false,
67 | "water_surface_color" : "#245b78"
68 | },
69 | "cold_taiga_mutated" : {
70 | "fog_identifier" : "minecraft:fog_cold_taiga_mutated",
71 | "fog_ids_to_merge" : [ "minecraft:fog_cold_taiga_mutated" ],
72 | "inherit_from_prior_fog" : false,
73 | "water_surface_color" : "#205e83"
74 | },
75 | "crimson_forest" : {
76 | "fog_identifier" : "minecraft:fog_crimson_forest",
77 | "fog_ids_to_merge" : [ "minecraft:fog_crimson_forest" ],
78 | "inherit_from_prior_fog" : false,
79 | "water_surface_color" : "#905957"
80 | },
81 | "deep_cold_ocean" : {
82 | "fog_identifier" : "minecraft:fog_deep_cold_ocean",
83 | "fog_ids_to_merge" : [ "minecraft:fog_deep_cold_ocean" ],
84 | "inherit_from_prior_fog" : false,
85 | "water_surface_color" : "#2080C9"
86 | },
87 | "deep_frozen_ocean" : {
88 | "fog_identifier" : "minecraft:fog_deep_frozen_ocean",
89 | "fog_ids_to_merge" : [ "minecraft:fog_deep_frozen_ocean" ],
90 | "inherit_from_prior_fog" : false,
91 | "water_surface_color" : "#2570B5"
92 | },
93 | "deep_lukewarm_ocean" : {
94 | "fog_identifier" : "minecraft:fog_deep_lukewarm_ocean",
95 | "fog_ids_to_merge" : [ "minecraft:fog_deep_lukewarm_ocean" ],
96 | "inherit_from_prior_fog" : false,
97 | "water_surface_color" : "#0D96DB"
98 | },
99 | "deep_ocean" : {
100 | "fog_identifier" : "minecraft:fog_deep_ocean",
101 | "fog_ids_to_merge" : [ "minecraft:fog_deep_ocean" ],
102 | "inherit_from_prior_fog" : false,
103 | "water_surface_color" : "#1787D4"
104 | },
105 | "deep_warm_ocean" : {
106 | "fog_identifier" : "minecraft:fog_deep_warm_ocean",
107 | "fog_ids_to_merge" : [ "minecraft:fog_deep_warm_ocean" ],
108 | "inherit_from_prior_fog" : false,
109 | "water_surface_color" : "#02B0E5"
110 | },
111 | "default" : {
112 | "fog_identifier" : "minecraft:fog_default",
113 | "fog_ids_to_merge" : [ "minecraft:fog_default" ],
114 | "inherit_from_prior_fog" : false,
115 | "remove_all_prior_fog" : false,
116 | "water_surface_color" : "#44AFF5",
117 | "water_surface_transparency" : 0.5
118 | },
119 | "desert" : {
120 | "fog_identifier" : "minecraft:fog_desert",
121 | "fog_ids_to_merge" : [ "minecraft:fog_desert" ],
122 | "inherit_from_prior_fog" : false,
123 | "water_surface_color" : "#32A598"
124 | },
125 | "desert_hills" : {
126 | "fog_identifier" : "minecraft:fog_desert_hills",
127 | "fog_ids_to_merge" : [ "minecraft:fog_desert_hills" ],
128 | "inherit_from_prior_fog" : false,
129 | "water_surface_color" : "#1a7aa1"
130 | },
131 | "extreme_hills" : {
132 | "fog_identifier" : "minecraft:fog_extreme_hills",
133 | "fog_ids_to_merge" : [ "minecraft:fog_extreme_hills" ],
134 | "inherit_from_prior_fog" : false,
135 | "water_surface_color" : "#007BF7"
136 | },
137 | "extreme_hills_edge" : {
138 | "fog_identifier" : "minecraft:fog_extreme_hills_edge",
139 | "fog_ids_to_merge" : [ "minecraft:fog_extreme_hills_edge" ],
140 | "inherit_from_prior_fog" : false,
141 | "water_surface_color" : "#045cd5"
142 | },
143 | "extreme_hills_mutated" : {
144 | "fog_identifier" : "minecraft:fog_extreme_hills_mutated",
145 | "fog_ids_to_merge" : [ "minecraft:fog_extreme_hills_mutated" ],
146 | "inherit_from_prior_fog" : false,
147 | "water_surface_color" : "#0E63AB"
148 | },
149 | "extreme_hills_plus_trees" : {
150 | "fog_identifier" : "minecraft:fog_extreme_hills_plus_trees",
151 | "fog_ids_to_merge" : [ "minecraft:fog_extreme_hills_plus_trees" ],
152 | "inherit_from_prior_fog" : false,
153 | "water_surface_color" : "#0E63AB"
154 | },
155 | "extreme_hills_plus_trees_mutated" : {
156 | "fog_identifier" : "minecraft:fog_extreme_hills_plus_trees_mutated",
157 | "fog_ids_to_merge" : [ "minecraft:fog_extreme_hills_plus_trees_mutated" ],
158 | "inherit_from_prior_fog" : false,
159 | "water_surface_color" : "#0E63AB"
160 | },
161 | "flower_forest" : {
162 | "fog_identifier" : "minecraft:fog_flower_forest",
163 | "fog_ids_to_merge" : [ "minecraft:fog_flower_forest" ],
164 | "inherit_from_prior_fog" : false,
165 | "water_surface_color" : "#20A3CC"
166 | },
167 | "forest" : {
168 | "fog_identifier" : "minecraft:fog_forest",
169 | "fog_ids_to_merge" : [ "minecraft:fog_forest" ],
170 | "inherit_from_prior_fog" : false,
171 | "water_surface_color" : "#1E97F2"
172 | },
173 | "forest_hills" : {
174 | "fog_identifier" : "minecraft:fog_forest_hills",
175 | "fog_ids_to_merge" : [ "minecraft:fog_forest_hills" ],
176 | "inherit_from_prior_fog" : false,
177 | "water_surface_color" : "#056bd1"
178 | },
179 | "frozen_ocean" : {
180 | "fog_identifier" : "minecraft:fog_frozen_ocean",
181 | "fog_ids_to_merge" : [ "minecraft:fog_frozen_ocean" ],
182 | "inherit_from_prior_fog" : false,
183 | "water_surface_color" : "#2570B5"
184 | },
185 | "frozen_river" : {
186 | "fog_identifier" : "minecraft:fog_frozen_river",
187 | "fog_ids_to_merge" : [ "minecraft:fog_frozen_river" ],
188 | "inherit_from_prior_fog" : false,
189 | "water_surface_color" : "#185390"
190 | },
191 | "hell" : {
192 | "fog_identifier" : "minecraft:fog_hell",
193 | "fog_ids_to_merge" : [ "minecraft:fog_hell" ],
194 | "inherit_from_prior_fog" : false,
195 | "water_surface_color" : "#905957"
196 | },
197 | "ice_mountains" : {
198 | "fog_identifier" : "minecraft:fog_ice_mountains",
199 | "fog_ids_to_merge" : [ "minecraft:fog_ice_mountains" ],
200 | "inherit_from_prior_fog" : false,
201 | "water_surface_color" : "#1156a7"
202 | },
203 | "ice_plains" : {
204 | "fog_identifier" : "minecraft:fog_ice_plains",
205 | "fog_ids_to_merge" : [ "minecraft:fog_ice_plains" ],
206 | "inherit_from_prior_fog" : false,
207 | "water_surface_color" : "#14559b"
208 | },
209 | "ice_plains_spikes" : {
210 | "fog_identifier" : "minecraft:fog_ice_plains_spikes",
211 | "fog_ids_to_merge" : [ "minecraft:fog_ice_plains_spikes" ],
212 | "inherit_from_prior_fog" : false,
213 | "water_surface_color" : "#14559b"
214 | },
215 | "jungle" : {
216 | "fog_identifier" : "minecraft:fog_jungle",
217 | "fog_ids_to_merge" : [ "minecraft:fog_jungle" ],
218 | "inherit_from_prior_fog" : false,
219 | "water_surface_color" : "#14A2C5"
220 | },
221 | "jungle_edge" : {
222 | "fog_identifier" : "minecraft:fog_jungle_edge",
223 | "fog_ids_to_merge" : [ "minecraft:fog_jungle_edge" ],
224 | "inherit_from_prior_fog" : false,
225 | "water_surface_color" : "#0D8AE3"
226 | },
227 | "jungle_hills" : {
228 | "fog_identifier" : "minecraft:fog_jungle_hills",
229 | "fog_ids_to_merge" : [ "minecraft:fog_jungle_hills" ],
230 | "inherit_from_prior_fog" : false,
231 | "water_surface_color" : "#1B9ED8"
232 | },
233 | "jungle_mutated" : {
234 | "fog_identifier" : "minecraft:fog_jungle_mutated",
235 | "fog_ids_to_merge" : [ "minecraft:fog_jungle_mutated" ],
236 | "inherit_from_prior_fog" : false,
237 | "water_surface_color" : "#1B9ED8"
238 | },
239 | "lukewarm_ocean" : {
240 | "fog_identifier" : "minecraft:fog_lukewarm_ocean",
241 | "fog_ids_to_merge" : [ "minecraft:fog_lukewarm_ocean" ],
242 | "inherit_from_prior_fog" : false,
243 | "water_surface_color" : "#0D96DB"
244 | },
245 | "mangrove_swamp" : {
246 | "fog_identifier" : "minecraft:fog_mangrove_swamp",
247 | "fog_ids_to_merge" : [ "minecraft:fog_mangrove_swamp" ],
248 | "inherit_from_prior_fog" : false,
249 | "water_surface_color" : "#3a7a6a"
250 | },
251 | "mega_spruce_taiga" : {
252 | "fog_identifier" : "minecraft:fog_mega_spruce_taiga",
253 | "fog_ids_to_merge" : [ "minecraft:fog_mega_spruce_taiga" ],
254 | "inherit_from_prior_fog" : false,
255 | "water_surface_color" : "#2d6d77"
256 | },
257 | "mega_spruce_taiga_mutated" : {
258 | "fog_identifier" : "minecraft:fog_mega_spruce_taiga_mutated",
259 | "fog_ids_to_merge" : [ "minecraft:fog_mega_spruce_taiga_mutated" ],
260 | "inherit_from_prior_fog" : false,
261 | "water_surface_color" : "#2d6d77"
262 | },
263 | "mega_taiga" : {
264 | "fog_identifier" : "minecraft:fog_mega_taiga",
265 | "fog_ids_to_merge" : [ "minecraft:fog_mega_taiga" ],
266 | "inherit_from_prior_fog" : false,
267 | "water_surface_color" : "#2d6d77"
268 | },
269 | "mega_taiga_hills" : {
270 | "fog_identifier" : "minecraft:fog_mega_taiga_hills",
271 | "fog_ids_to_merge" : [ "minecraft:fog_mega_taiga_hills" ],
272 | "inherit_from_prior_fog" : false,
273 | "water_surface_color" : "#286378"
274 | },
275 | "mega_taiga_mutated" : {
276 | "fog_identifier" : "minecraft:fog_mega_taiga_mutated",
277 | "fog_ids_to_merge" : [ "minecraft:fog_mega_taiga_mutated" ],
278 | "inherit_from_prior_fog" : false,
279 | "water_surface_color" : "#2d6d77"
280 | },
281 | "mesa" : {
282 | "fog_identifier" : "minecraft:fog_mesa",
283 | "fog_ids_to_merge" : [ "minecraft:fog_mesa" ],
284 | "inherit_from_prior_fog" : false,
285 | "water_surface_color" : "#4E7F81"
286 | },
287 | "mesa_bryce" : {
288 | "fog_identifier" : "minecraft:fog_mesa_bryce",
289 | "fog_ids_to_merge" : [ "minecraft:fog_mesa_bryce" ],
290 | "inherit_from_prior_fog" : false,
291 | "water_surface_color" : "#497F99"
292 | },
293 | "mesa_mutated" : {
294 | "fog_identifier" : "minecraft:fog_mesa_mutated",
295 | "fog_ids_to_merge" : [ "minecraft:fog_mesa_mutated" ],
296 | "inherit_from_prior_fog" : false,
297 | "water_surface_color" : "#497F99"
298 | },
299 | "mesa_plateau" : {
300 | "fog_identifier" : "minecraft:fog_mesa_plateau",
301 | "fog_ids_to_merge" : [ "minecraft:fog_mesa_plateau" ],
302 | "inherit_from_prior_fog" : false,
303 | "water_surface_color" : "#55809E"
304 | },
305 | "mesa_plateau_stone" : {
306 | "fog_identifier" : "minecraft:fog_mesa_plateau_stone",
307 | "fog_ids_to_merge" : [ "minecraft:fog_mesa_plateau_stone" ],
308 | "inherit_from_prior_fog" : false,
309 | "water_surface_color" : "#55809E"
310 | },
311 | "mushroom_island" : {
312 | "fog_identifier" : "minecraft:fog_mushroom_island",
313 | "fog_ids_to_merge" : [ "minecraft:fog_mushroom_island" ],
314 | "inherit_from_prior_fog" : false,
315 | "water_surface_color" : "#8a8997"
316 | },
317 | "mushroom_island_shore" : {
318 | "fog_identifier" : "minecraft:fog_mushroom_island_shore",
319 | "fog_ids_to_merge" : [ "minecraft:fog_mushroom_island_shore" ],
320 | "inherit_from_prior_fog" : false,
321 | "water_surface_color" : "#818193"
322 | },
323 | "ocean" : {
324 | "fog_identifier" : "minecraft:fog_ocean",
325 | "fog_ids_to_merge" : [ "minecraft:fog_ocean" ],
326 | "inherit_from_prior_fog" : false,
327 | "water_surface_color" : "#1787D4"
328 | },
329 | "plains" : {
330 | "fog_identifier" : "minecraft:fog_plains",
331 | "fog_ids_to_merge" : [ "minecraft:fog_plains" ],
332 | "inherit_from_prior_fog" : false,
333 | "water_surface_color" : "#44AFF5"
334 | },
335 | "river" : {
336 | "fog_identifier" : "minecraft:fog_river",
337 | "fog_ids_to_merge" : [ "minecraft:fog_river" ],
338 | "inherit_from_prior_fog" : false,
339 | "water_surface_color" : "#0084FF"
340 | },
341 | "roofed_forest" : {
342 | "fog_identifier" : "minecraft:fog_roofed_forest",
343 | "fog_ids_to_merge" : [ "minecraft:fog_roofed_forest" ],
344 | "inherit_from_prior_fog" : false,
345 | "water_surface_color" : "#3B6CD1"
346 | },
347 | "savanna" : {
348 | "fog_identifier" : "minecraft:fog_savanna",
349 | "fog_ids_to_merge" : [ "minecraft:fog_savanna" ],
350 | "inherit_from_prior_fog" : false,
351 | "water_surface_color" : "#2C8B9C"
352 | },
353 | "savanna_mutated" : {
354 | "fog_identifier" : "minecraft:fog_savanna_mutated",
355 | "fog_ids_to_merge" : [ "minecraft:fog_savanna_mutated" ],
356 | "inherit_from_prior_fog" : false,
357 | "water_surface_color" : "#2590A8"
358 | },
359 | "savanna_plateau" : {
360 | "fog_identifier" : "minecraft:fog_savanna_plateau",
361 | "fog_ids_to_merge" : [ "minecraft:fog_savanna_plateau" ],
362 | "inherit_from_prior_fog" : false,
363 | "water_surface_color" : "#2590A8"
364 | },
365 | "soulsand_valley" : {
366 | "fog_identifier" : "minecraft:fog_soulsand_valley",
367 | "fog_ids_to_merge" : [ "minecraft:fog_soulsand_valley" ],
368 | "inherit_from_prior_fog" : false,
369 | "water_surface_color" : "#905957"
370 | },
371 | "stone_beach" : {
372 | "fog_identifier" : "minecraft:fog_stone_beach",
373 | "fog_ids_to_merge" : [ "minecraft:fog_stone_beach" ],
374 | "inherit_from_prior_fog" : false,
375 | "water_surface_color" : "#0d67bb"
376 | },
377 | "sunflower_plains" : {
378 | "fog_identifier" : "minecraft:fog_sunflower_plains",
379 | "fog_ids_to_merge" : [ "minecraft:fog_sunflower_plains" ],
380 | "inherit_from_prior_fog" : false,
381 | "water_surface_color" : "#44AFF5"
382 | },
383 | "swampland" : {
384 | "fog_identifier" : "minecraft:fog_swampland",
385 | "fog_ids_to_merge" : [ "minecraft:fog_swampland" ],
386 | "inherit_from_prior_fog" : false,
387 | "water_surface_color" : "#4c6559",
388 | "water_surface_transparency" : 0.5
389 | },
390 | "swampland_mutated" : {
391 | "fog_identifier" : "minecraft:fog_swampland_mutated",
392 | "fog_ids_to_merge" : [ "minecraft:fog_swampland_mutated" ],
393 | "inherit_from_prior_fog" : false,
394 | "water_surface_color" : "#4c6156",
395 | "water_surface_transparency" : 0.5
396 | },
397 | "taiga" : {
398 | "fog_identifier" : "minecraft:fog_taiga",
399 | "fog_ids_to_merge" : [ "minecraft:fog_taiga" ],
400 | "inherit_from_prior_fog" : false,
401 | "water_surface_color" : "#287082"
402 | },
403 | "taiga_hills" : {
404 | "fog_identifier" : "minecraft:fog_taiga_hills",
405 | "fog_ids_to_merge" : [ "minecraft:fog_taiga_hills" ],
406 | "inherit_from_prior_fog" : false,
407 | "water_surface_color" : "#236583"
408 | },
409 | "taiga_mutated" : {
410 | "fog_identifier" : "minecraft:fog_taiga_mutated",
411 | "fog_ids_to_merge" : [ "minecraft:fog_taiga_mutated" ],
412 | "inherit_from_prior_fog" : false,
413 | "water_surface_color" : "#1E6B82"
414 | },
415 | "the_end" : {
416 | "fog_identifier" : "minecraft:fog_the_end",
417 | "fog_ids_to_merge" : [ "minecraft:fog_the_end" ],
418 | "inherit_from_prior_fog" : false,
419 | "water_surface_color" : "#62529e"
420 | },
421 | "warm_ocean" : {
422 | "fog_identifier" : "minecraft:fog_warm_ocean",
423 | "fog_ids_to_merge" : [ "minecraft:fog_warm_ocean" ],
424 | "inherit_from_prior_fog" : false,
425 | "water_surface_color" : "#02B0E5",
426 | "water_surface_transparency" : 0.5
427 | },
428 | "warped_forest" : {
429 | "fog_identifier" : "minecraft:fog_warped_forest",
430 | "fog_ids_to_merge" : [ "minecraft:fog_warped_forest" ],
431 | "inherit_from_prior_fog" : false,
432 | "water_surface_color" : "#905957"
433 | }
434 | }
435 | }
436 |
--------------------------------------------------------------------------------