render3d: the survey DEM is let go once the height field is made, and the terrain sun shadow is R32F + RG16F
The DEM (R16 with mips, 44 MB) was read only by terrain_generate and kept for the map's life; a world swap loads its own again. The height-field sun shadow was one RGBA32F for three values and an unused fourth: the lowest lit height stays 32-bit (a receiver 3000 m up compares against it to a quarter metre), the occluder distance and the cloud mask go beside it in RG16F (64 -> 32 MB), baked in a pass of their own (TS_AUX): a pipeline takes one colour format for all its targets, and drawn together into R32F + RG16F the writes went nowhere and nothing was lit. -75 MB at every fog level, off included (2008 -> 1933 MB at the overlook); the fog-off frame is unchanged (0 pixels over 8). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
f8c81e4066
commit
c5e58d14ea
89 changed files with 205 additions and 74 deletions
|
|
@ -828,7 +828,9 @@ export state Render3dState {
|
||||||
ter_dem_base: float = 0.0
|
ter_dem_base: float = 0.0
|
||||||
ter_ortho_tex: int = 0 # a photograph of the same window, draped with distance
|
ter_ortho_tex: int = 0 # a photograph of the same window, draped with distance
|
||||||
ter_carpet: int = 0 # the distant-grass carpet (carpet_bake), 0 = none
|
ter_carpet: int = 0 # the distant-grass carpet (carpet_bake), 0 = none
|
||||||
ter_shadow_tex: int = 0 # height-field sun shadow: RG32F (lowest lit height, occluder distance)
|
ter_shadow_tex: int = 0 # height-field sun shadow: R32F, the lowest lit height
|
||||||
|
ter_shadow_prog_aux: int = 0 # the bake of the aux target (TS_AUX)
|
||||||
|
ter_shadow_aux: int = 0 # beside it, RG16F: the occluder distance and the cloud mask
|
||||||
ter_shadow_yaw: float = 1000000000.0 # the sky yaw it was baked for
|
ter_shadow_yaw: float = 1000000000.0 # the sky yaw it was baked for
|
||||||
ter_shadow_gen: int = -1 # the daylight generation it was baked for
|
ter_shadow_gen: int = -1 # the daylight generation it was baked for
|
||||||
ter_shadow_prog: int = 0
|
ter_shadow_prog: int = 0
|
||||||
|
|
|
||||||
|
|
@ -158,7 +158,8 @@ float shadowSlope(int c, vec3 wpos, vec3 n, float tanT) {
|
||||||
// ground texel, G = distance to the occluder that set it. Any receiver — ground, crown,
|
// ground texel, G = distance to the occluder that set it. Any receiver — ground, crown,
|
||||||
// card, water — compares its own height, so everything agrees on where the hill's
|
// card, water — compares its own height, so everything agrees on where the hill's
|
||||||
// shadow falls. The penumbra widens with the occluder's distance like a real one.
|
// shadow falls. The penumbra widens with the occluder's distance like a real one.
|
||||||
uniform sampler2D u_tershadow;
|
uniform sampler2D u_tershadow; // R: the lowest lit height
|
||||||
|
uniform sampler2D u_tershadow_aux; // R: the occluder distance, G: the cloud mask
|
||||||
uniform vec2 u_ts_origin;
|
uniform vec2 u_ts_origin;
|
||||||
uniform float u_ts_half;
|
uniform float u_ts_half;
|
||||||
uniform float u_ts_on;
|
uniform float u_ts_on;
|
||||||
|
|
@ -177,7 +178,7 @@ float terrainShadow(vec3 wpos) {
|
||||||
if (u_ts_on < 0.5) return 1.0;
|
if (u_ts_on < 0.5) return 1.0;
|
||||||
vec2 uv = (wpos.xz - u_ts_origin) / (2.0 * u_ts_half) + 0.5;
|
vec2 uv = (wpos.xz - u_ts_origin) / (2.0 * u_ts_half) + 0.5;
|
||||||
if (uv.x < 0.0 || uv.x > 1.0 || uv.y < 0.0 || uv.y > 1.0) return 1.0;
|
if (uv.x < 0.0 || uv.x > 1.0 || uv.y < 0.0 || uv.y > 1.0) return 1.0;
|
||||||
vec2 s = texture(u_tershadow, uv).rg;
|
vec2 s = vec2(texture(u_tershadow, uv).r, texture(u_tershadow_aux, uv).r);
|
||||||
float w = 0.6 + 0.02 * s.y;
|
float w = 0.6 + 0.02 * s.y;
|
||||||
return smoothstep(-w, w, wpos.y + 0.25 - s.x);
|
return smoothstep(-w, w, wpos.y + 0.25 - s.x);
|
||||||
}
|
}
|
||||||
|
|
@ -219,7 +220,7 @@ float sunShadow(vec3 wpos, vec3 n, float viewDepth) {
|
||||||
// patchy sunlight: a cloud layer projected along the sun onto the ground
|
// patchy sunlight: a cloud layer projected along the sun onto the ground
|
||||||
uniform float u_cloud_shadow; // strength
|
uniform float u_cloud_shadow; // strength
|
||||||
uniform float u_time;
|
uniform float u_time;
|
||||||
// the mask is baked into the height-field shadow texture's B (tershadow.frag); the
|
// the mask is baked beside the height-field shadow, in its aux texture's G (tershadow.frag); the
|
||||||
// projection along the sun and the drift are a uv shift
|
// projection along the sun and the drift are a uv shift
|
||||||
float cloudShadow(vec3 wpos) {
|
float cloudShadow(vec3 wpos) {
|
||||||
if (u_cloud_shadow <= 0.0 || u_ts_on < 0.5) return 1.0;
|
if (u_cloud_shadow <= 0.0 || u_ts_on < 0.5) return 1.0;
|
||||||
|
|
@ -228,7 +229,7 @@ float cloudShadow(vec3 wpos) {
|
||||||
c += vec2(u_time * 3.0, u_time * 1.2);
|
c += vec2(u_time * 3.0, u_time * 1.2);
|
||||||
vec2 uv = (c - u_ts_origin) / (2.0 * u_ts_half) + 0.5;
|
vec2 uv = (c - u_ts_origin) / (2.0 * u_ts_half) + 0.5;
|
||||||
if (uv.x < 0.0 || uv.x > 1.0 || uv.y < 0.0 || uv.y > 1.0) return 1.0;
|
if (uv.x < 0.0 || uv.x > 1.0 || uv.y < 0.0 || uv.y > 1.0) return 1.0;
|
||||||
return 1.0 - u_cloud_shadow * texture(u_tershadow, uv).b;
|
return 1.0 - u_cloud_shadow * texture(u_tershadow_aux, uv).g;
|
||||||
}
|
}
|
||||||
|
|
||||||
// regional vegetation colour: aspen groves and drier ridges read lighter and yellower than
|
// regional vegetation colour: aspen groves and drier ridges read lighter and yellower than
|
||||||
|
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
packages/ludic.render3d/shaders/spv/3a1797ab.frag.spv
Normal file
BIN
packages/ludic.render3d/shaders/spv/3a1797ab.frag.spv
Normal file
Binary file not shown.
BIN
packages/ludic.render3d/shaders/spv/3a1797ab.vert.spv
Normal file
BIN
packages/ludic.render3d/shaders/spv/3a1797ab.vert.spv
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -49,7 +49,8 @@ T 2ee6d2e3 u_prev 5
|
||||||
T 2ee6d2e3 u_scene 6
|
T 2ee6d2e3 u_scene 6
|
||||||
T 2ee6d2e3 u_shadow 7
|
T 2ee6d2e3 u_shadow 7
|
||||||
T 2ee6d2e3 u_tershadow 8
|
T 2ee6d2e3 u_tershadow 8
|
||||||
T 2ee6d2e3 u_ts_height 9
|
T 2ee6d2e3 u_tershadow_aux 9
|
||||||
|
T 2ee6d2e3 u_ts_height 10
|
||||||
P 9d3e2ddd fullscreen.vert bloom_down.frag
|
P 9d3e2ddd fullscreen.vert bloom_down.frag
|
||||||
B 9d3e2ddd frag 1 844
|
B 9d3e2ddd frag 1 844
|
||||||
U 9d3e2ddd frag u_cascade_vp 0 mat4 5 64
|
U 9d3e2ddd frag u_cascade_vp 0 mat4 5 64
|
||||||
|
|
@ -96,7 +97,8 @@ T 9d3e2ddd u_prefilter 4
|
||||||
T 9d3e2ddd u_shadow 5
|
T 9d3e2ddd u_shadow 5
|
||||||
T 9d3e2ddd u_src 6
|
T 9d3e2ddd u_src 6
|
||||||
T 9d3e2ddd u_tershadow 7
|
T 9d3e2ddd u_tershadow 7
|
||||||
T 9d3e2ddd u_ts_height 8
|
T 9d3e2ddd u_tershadow_aux 8
|
||||||
|
T 9d3e2ddd u_ts_height 9
|
||||||
P c57b4f14 fullscreen.vert bloom_up.frag
|
P c57b4f14 fullscreen.vert bloom_up.frag
|
||||||
B c57b4f14 frag 1 844
|
B c57b4f14 frag 1 844
|
||||||
U c57b4f14 frag u_cascade_vp 0 mat4 5 64
|
U c57b4f14 frag u_cascade_vp 0 mat4 5 64
|
||||||
|
|
@ -143,7 +145,8 @@ T c57b4f14 u_prefilter 4
|
||||||
T c57b4f14 u_shadow 5
|
T c57b4f14 u_shadow 5
|
||||||
T c57b4f14 u_src 6
|
T c57b4f14 u_src 6
|
||||||
T c57b4f14 u_tershadow 7
|
T c57b4f14 u_tershadow 7
|
||||||
T c57b4f14 u_ts_height 8
|
T c57b4f14 u_tershadow_aux 8
|
||||||
|
T c57b4f14 u_ts_height 9
|
||||||
P 5161e6ba fullscreen.vert dof.frag
|
P 5161e6ba fullscreen.vert dof.frag
|
||||||
B 5161e6ba frag 1 916
|
B 5161e6ba frag 1 916
|
||||||
U 5161e6ba frag u_cascade_vp 0 mat4 5 64
|
U 5161e6ba frag u_cascade_vp 0 mat4 5 64
|
||||||
|
|
@ -194,7 +197,8 @@ T 5161e6ba u_prefilter 5
|
||||||
T 5161e6ba u_shadow 6
|
T 5161e6ba u_shadow 6
|
||||||
T 5161e6ba u_src 7
|
T 5161e6ba u_src 7
|
||||||
T 5161e6ba u_tershadow 8
|
T 5161e6ba u_tershadow 8
|
||||||
T 5161e6ba u_ts_height 9
|
T 5161e6ba u_tershadow_aux 9
|
||||||
|
T 5161e6ba u_ts_height 10
|
||||||
P 4be7acd9 fullscreen.vert heightgen.frag #define DEM;
|
P 4be7acd9 fullscreen.vert heightgen.frag #define DEM;
|
||||||
B 4be7acd9 frag 1 920
|
B 4be7acd9 frag 1 920
|
||||||
U 4be7acd9 frag u_cascade_vp 0 mat4 5 64
|
U 4be7acd9 frag u_cascade_vp 0 mat4 5 64
|
||||||
|
|
@ -251,7 +255,8 @@ T 4be7acd9 u_irradiance 4
|
||||||
T 4be7acd9 u_prefilter 5
|
T 4be7acd9 u_prefilter 5
|
||||||
T 4be7acd9 u_shadow 6
|
T 4be7acd9 u_shadow 6
|
||||||
T 4be7acd9 u_tershadow 7
|
T 4be7acd9 u_tershadow 7
|
||||||
T 4be7acd9 u_ts_height 8
|
T 4be7acd9 u_tershadow_aux 8
|
||||||
|
T 4be7acd9 u_ts_height 9
|
||||||
P 858f5089 fullscreen.vert ibl_brdf.frag
|
P 858f5089 fullscreen.vert ibl_brdf.frag
|
||||||
B 858f5089 frag 0 832
|
B 858f5089 frag 0 832
|
||||||
U 858f5089 frag u_cascade_vp 0 mat4 5 64
|
U 858f5089 frag u_cascade_vp 0 mat4 5 64
|
||||||
|
|
@ -295,7 +300,8 @@ T 858f5089 u_irradiance 3
|
||||||
T 858f5089 u_prefilter 4
|
T 858f5089 u_prefilter 4
|
||||||
T 858f5089 u_shadow 5
|
T 858f5089 u_shadow 5
|
||||||
T 858f5089 u_tershadow 6
|
T 858f5089 u_tershadow 6
|
||||||
T 858f5089 u_ts_height 7
|
T 858f5089 u_tershadow_aux 7
|
||||||
|
T 858f5089 u_ts_height 8
|
||||||
P e18e40c9 fullscreen.vert ibl_irradiance.frag
|
P e18e40c9 fullscreen.vert ibl_irradiance.frag
|
||||||
B e18e40c9 frag 1 836
|
B e18e40c9 frag 1 836
|
||||||
U e18e40c9 frag u_cascade_vp 0 mat4 5 64
|
U e18e40c9 frag u_cascade_vp 0 mat4 5 64
|
||||||
|
|
@ -341,7 +347,8 @@ T e18e40c9 u_prefilter 4
|
||||||
T e18e40c9 u_shadow 5
|
T e18e40c9 u_shadow 5
|
||||||
T e18e40c9 u_sky 6
|
T e18e40c9 u_sky 6
|
||||||
T e18e40c9 u_tershadow 7
|
T e18e40c9 u_tershadow 7
|
||||||
T e18e40c9 u_ts_height 8
|
T e18e40c9 u_tershadow_aux 8
|
||||||
|
T e18e40c9 u_ts_height 9
|
||||||
P 638623c2 fullscreen.vert ibl_prefilter.frag
|
P 638623c2 fullscreen.vert ibl_prefilter.frag
|
||||||
B 638623c2 frag 1 844
|
B 638623c2 frag 1 844
|
||||||
U 638623c2 frag u_cascade_vp 0 mat4 5 64
|
U 638623c2 frag u_cascade_vp 0 mat4 5 64
|
||||||
|
|
@ -389,7 +396,8 @@ T 638623c2 u_prefilter 4
|
||||||
T 638623c2 u_shadow 5
|
T 638623c2 u_shadow 5
|
||||||
T 638623c2 u_sky 6
|
T 638623c2 u_sky 6
|
||||||
T 638623c2 u_tershadow 7
|
T 638623c2 u_tershadow 7
|
||||||
T 638623c2 u_ts_height 8
|
T 638623c2 u_tershadow_aux 8
|
||||||
|
T 638623c2 u_ts_height 9
|
||||||
P 4cf96468 fullscreen.vert sharpen.frag
|
P 4cf96468 fullscreen.vert sharpen.frag
|
||||||
B 4cf96468 frag 1 852
|
B 4cf96468 frag 1 852
|
||||||
U 4cf96468 frag u_cascade_vp 0 mat4 5 64
|
U 4cf96468 frag u_cascade_vp 0 mat4 5 64
|
||||||
|
|
@ -438,7 +446,8 @@ T 4cf96468 u_prefilter 4
|
||||||
T 4cf96468 u_shadow 5
|
T 4cf96468 u_shadow 5
|
||||||
T 4cf96468 u_src 6
|
T 4cf96468 u_src 6
|
||||||
T 4cf96468 u_tershadow 7
|
T 4cf96468 u_tershadow 7
|
||||||
T 4cf96468 u_ts_height 8
|
T 4cf96468 u_tershadow_aux 8
|
||||||
|
T 4cf96468 u_ts_height 9
|
||||||
P 428caa3a fullscreen.vert sky.frag
|
P 428caa3a fullscreen.vert sky.frag
|
||||||
B 428caa3a frag 1 940
|
B 428caa3a frag 1 940
|
||||||
U 428caa3a frag u_cascade_vp 0 mat4 5 64
|
U 428caa3a frag u_cascade_vp 0 mat4 5 64
|
||||||
|
|
@ -491,7 +500,8 @@ T 428caa3a u_prefilter 4
|
||||||
T 428caa3a u_shadow 5
|
T 428caa3a u_shadow 5
|
||||||
T 428caa3a u_sky 6
|
T 428caa3a u_sky 6
|
||||||
T 428caa3a u_tershadow 7
|
T 428caa3a u_tershadow 7
|
||||||
T 428caa3a u_ts_height 8
|
T 428caa3a u_tershadow_aux 8
|
||||||
|
T 428caa3a u_ts_height 9
|
||||||
P 3e4b62f9 fullscreen.vert ssao_blur.frag
|
P 3e4b62f9 fullscreen.vert ssao_blur.frag
|
||||||
B 3e4b62f9 frag 1 840
|
B 3e4b62f9 frag 1 840
|
||||||
U 3e4b62f9 frag u_cascade_vp 0 mat4 5 64
|
U 3e4b62f9 frag u_cascade_vp 0 mat4 5 64
|
||||||
|
|
@ -538,7 +548,8 @@ T 3e4b62f9 u_irradiance 5
|
||||||
T 3e4b62f9 u_prefilter 6
|
T 3e4b62f9 u_prefilter 6
|
||||||
T 3e4b62f9 u_shadow 7
|
T 3e4b62f9 u_shadow 7
|
||||||
T 3e4b62f9 u_tershadow 8
|
T 3e4b62f9 u_tershadow 8
|
||||||
T 3e4b62f9 u_ts_height 9
|
T 3e4b62f9 u_tershadow_aux 9
|
||||||
|
T 3e4b62f9 u_ts_height 10
|
||||||
P 676965ab fullscreen.vert ssgi.frag
|
P 676965ab fullscreen.vert ssgi.frag
|
||||||
B 676965ab frag 1 984
|
B 676965ab frag 1 984
|
||||||
U 676965ab frag u_cascade_vp 0 mat4 5 64
|
U 676965ab frag u_cascade_vp 0 mat4 5 64
|
||||||
|
|
@ -591,7 +602,8 @@ T 676965ab u_prefilter 5
|
||||||
T 676965ab u_prev_color 6
|
T 676965ab u_prev_color 6
|
||||||
T 676965ab u_shadow 7
|
T 676965ab u_shadow 7
|
||||||
T 676965ab u_tershadow 8
|
T 676965ab u_tershadow 8
|
||||||
T 676965ab u_ts_height 9
|
T 676965ab u_tershadow_aux 9
|
||||||
|
T 676965ab u_ts_height 10
|
||||||
P a45356c7 fullscreen.vert ternormal.frag
|
P a45356c7 fullscreen.vert ternormal.frag
|
||||||
B a45356c7 frag 1 836
|
B a45356c7 frag 1 836
|
||||||
U a45356c7 frag u_cascade_vp 0 mat4 5 64
|
U a45356c7 frag u_cascade_vp 0 mat4 5 64
|
||||||
|
|
@ -637,7 +649,8 @@ T a45356c7 u_prefilter 4
|
||||||
T a45356c7 u_shadow 5
|
T a45356c7 u_shadow 5
|
||||||
T a45356c7 u_src 6
|
T a45356c7 u_src 6
|
||||||
T a45356c7 u_tershadow 7
|
T a45356c7 u_tershadow 7
|
||||||
T a45356c7 u_ts_height 8
|
T a45356c7 u_tershadow_aux 8
|
||||||
|
T a45356c7 u_ts_height 9
|
||||||
P 4a8e9f28 fullscreen.vert tershadow.frag #define NOISE_ONLY;
|
P 4a8e9f28 fullscreen.vert tershadow.frag #define NOISE_ONLY;
|
||||||
B 4a8e9f28 frag 1 860
|
B 4a8e9f28 frag 1 860
|
||||||
U 4a8e9f28 frag u_cascade_vp 0 mat4 5 64
|
U 4a8e9f28 frag u_cascade_vp 0 mat4 5 64
|
||||||
|
|
@ -684,7 +697,56 @@ T 4a8e9f28 u_irradiance 4
|
||||||
T 4a8e9f28 u_prefilter 5
|
T 4a8e9f28 u_prefilter 5
|
||||||
T 4a8e9f28 u_shadow 6
|
T 4a8e9f28 u_shadow 6
|
||||||
T 4a8e9f28 u_tershadow 7
|
T 4a8e9f28 u_tershadow 7
|
||||||
T 4a8e9f28 u_ts_height 8
|
T 4a8e9f28 u_tershadow_aux 8
|
||||||
|
T 4a8e9f28 u_ts_height 9
|
||||||
|
P 3a1797ab fullscreen.vert tershadow.frag #define NOISE_ONLY;#define TS_AUX;
|
||||||
|
B 3a1797ab frag 1 860
|
||||||
|
U 3a1797ab frag u_cascade_vp 0 mat4 5 64
|
||||||
|
U 3a1797ab frag u_cascade_split 320 float 5 16
|
||||||
|
U 3a1797ab frag u_cascade_range 400 float 5 16
|
||||||
|
U 3a1797ab frag u_cascade_texel 480 float 5 16
|
||||||
|
U 3a1797ab frag u_sun_dir 560 vec3 1 0
|
||||||
|
U 3a1797ab frag u_sun_color 576 vec3 1 0
|
||||||
|
U 3a1797ab frag u_cam_pos 592 vec3 1 0
|
||||||
|
U 3a1797ab frag u_prefilter_levels 604 float 1 0
|
||||||
|
U 3a1797ab frag u_fog_density 608 float 1 0
|
||||||
|
U 3a1797ab frag u_fog_height_falloff 612 float 1 0
|
||||||
|
U 3a1797ab frag u_fog_base 616 float 1 0
|
||||||
|
U 3a1797ab frag u_clip_y 620 float 1 0
|
||||||
|
U 3a1797ab frag u_spec_scale 624 float 1 0
|
||||||
|
U 3a1797ab frag u_sky_rot 632 vec2 1 0
|
||||||
|
U 3a1797ab frag u_ground_alb 640 vec3 1 0
|
||||||
|
U 3a1797ab frag u_ground_alb_hi 656 vec3 1 0
|
||||||
|
U 3a1797ab frag u_ground_hi_y 668 float 1 0
|
||||||
|
U 3a1797ab frag u_ground_hi_w 672 float 1 0
|
||||||
|
U 3a1797ab frag u_ibl_scale 688 vec3 1 0
|
||||||
|
U 3a1797ab frag u_daylight 700 float 1 0
|
||||||
|
U 3a1797ab frag u_fire_pos 704 vec3 1 0
|
||||||
|
U 3a1797ab frag u_fire_color 720 vec3 1 0
|
||||||
|
U 3a1797ab frag u_hand_pos 736 vec3 1 0
|
||||||
|
U 3a1797ab frag u_hand_color 752 vec3 1 0
|
||||||
|
U 3a1797ab frag u_hand_dir 768 vec3 1 0
|
||||||
|
U 3a1797ab frag u_hand_cone 780 float 1 0
|
||||||
|
U 3a1797ab frag u_hand_reach 784 float 1 0
|
||||||
|
U 3a1797ab frag u_ts_origin 792 vec2 1 0
|
||||||
|
U 3a1797ab frag u_ts_half 800 float 1 0
|
||||||
|
U 3a1797ab frag u_ts_on 804 float 1 0
|
||||||
|
U 3a1797ab frag u_force_cascade 808 int 1 0
|
||||||
|
U 3a1797ab frag u_cloud_shadow 812 float 1 0
|
||||||
|
U 3a1797ab frag u_time 816 float 1 0
|
||||||
|
U 3a1797ab frag u_fog_inscatter 820 float 1 0
|
||||||
|
U 3a1797ab frag u_fog_desat 824 float 1 0
|
||||||
|
U 3a1797ab frag u_fog_wall 828 float 1 0
|
||||||
|
U 3a1797ab frag u_half 832 float 1 0
|
||||||
|
U 3a1797ab frag u_sun 848 vec3 1 0
|
||||||
|
T 3a1797ab u_brdf 2
|
||||||
|
T 3a1797ab u_height 3
|
||||||
|
T 3a1797ab u_irradiance 4
|
||||||
|
T 3a1797ab u_prefilter 5
|
||||||
|
T 3a1797ab u_shadow 6
|
||||||
|
T 3a1797ab u_tershadow 7
|
||||||
|
T 3a1797ab u_tershadow_aux 8
|
||||||
|
T 3a1797ab u_ts_height 9
|
||||||
P 725523d9 fullscreen.vert tonemap.frag
|
P 725523d9 fullscreen.vert tonemap.frag
|
||||||
B 725523d9 frag 1 916
|
B 725523d9 frag 1 916
|
||||||
U 725523d9 frag u_cascade_vp 0 mat4 5 64
|
U 725523d9 frag u_cascade_vp 0 mat4 5 64
|
||||||
|
|
@ -743,7 +805,8 @@ T 725523d9 u_irradiance 7
|
||||||
T 725523d9 u_prefilter 8
|
T 725523d9 u_prefilter 8
|
||||||
T 725523d9 u_shadow 9
|
T 725523d9 u_shadow 9
|
||||||
T 725523d9 u_tershadow 10
|
T 725523d9 u_tershadow 10
|
||||||
T 725523d9 u_ts_height 11
|
T 725523d9 u_tershadow_aux 11
|
||||||
|
T 725523d9 u_ts_height 12
|
||||||
P a4683767 fullscreen.vert tonemap.frag #define HDR10;
|
P a4683767 fullscreen.vert tonemap.frag #define HDR10;
|
||||||
B a4683767 frag 1 928
|
B a4683767 frag 1 928
|
||||||
U a4683767 frag u_cascade_vp 0 mat4 5 64
|
U a4683767 frag u_cascade_vp 0 mat4 5 64
|
||||||
|
|
@ -805,7 +868,8 @@ T a4683767 u_irradiance 7
|
||||||
T a4683767 u_prefilter 8
|
T a4683767 u_prefilter 8
|
||||||
T a4683767 u_shadow 9
|
T a4683767 u_shadow 9
|
||||||
T a4683767 u_tershadow 10
|
T a4683767 u_tershadow 10
|
||||||
T a4683767 u_ts_height 11
|
T a4683767 u_tershadow_aux 11
|
||||||
|
T a4683767 u_ts_height 12
|
||||||
P 74258189 fullscreen.vert volumetric.frag
|
P 74258189 fullscreen.vert volumetric.frag
|
||||||
B 74258189 frag 1 924
|
B 74258189 frag 1 924
|
||||||
U 74258189 frag u_cascade_vp 0 mat4 5 64
|
U 74258189 frag u_cascade_vp 0 mat4 5 64
|
||||||
|
|
@ -858,7 +922,8 @@ T 74258189 u_irradiance 4
|
||||||
T 74258189 u_prefilter 5
|
T 74258189 u_prefilter 5
|
||||||
T 74258189 u_shadow 6
|
T 74258189 u_shadow 6
|
||||||
T 74258189 u_tershadow 7
|
T 74258189 u_tershadow 7
|
||||||
T 74258189 u_ts_height 8
|
T 74258189 u_tershadow_aux 8
|
||||||
|
T 74258189 u_ts_height 9
|
||||||
P d48d6a48 grass.mesh model.frag #define FOLIAGE;#define BLADE;#define MESH;
|
P d48d6a48 grass.mesh model.frag #define FOLIAGE;#define BLADE;#define MESH;
|
||||||
B d48d6a48 vert 0 4388
|
B d48d6a48 vert 0 4388
|
||||||
U d48d6a48 vert u_view 0 mat4 1 0
|
U d48d6a48 vert u_view 0 mat4 1 0
|
||||||
|
|
@ -938,7 +1003,8 @@ T d48d6a48 u_prefilter 9
|
||||||
T d48d6a48 u_shadow 10
|
T d48d6a48 u_shadow 10
|
||||||
T d48d6a48 u_ter_normal 11
|
T d48d6a48 u_ter_normal 11
|
||||||
T d48d6a48 u_tershadow 12
|
T d48d6a48 u_tershadow 12
|
||||||
T d48d6a48 u_ts_height 13
|
T d48d6a48 u_tershadow_aux 13
|
||||||
|
T d48d6a48 u_ts_height 14
|
||||||
P cb13f3c6 grass.vert model.frag #define FOLIAGE;#define BLADE;#define GBLADE;
|
P cb13f3c6 grass.vert model.frag #define FOLIAGE;#define BLADE;#define GBLADE;
|
||||||
B cb13f3c6 vert 0 324
|
B cb13f3c6 vert 0 324
|
||||||
U cb13f3c6 vert u_view 0 mat4 1 0
|
U cb13f3c6 vert u_view 0 mat4 1 0
|
||||||
|
|
@ -1022,7 +1088,8 @@ T cb13f3c6 u_prefilter 9
|
||||||
T cb13f3c6 u_shadow 10
|
T cb13f3c6 u_shadow 10
|
||||||
T cb13f3c6 u_ter_normal 11
|
T cb13f3c6 u_ter_normal 11
|
||||||
T cb13f3c6 u_tershadow 12
|
T cb13f3c6 u_tershadow 12
|
||||||
T cb13f3c6 u_ts_height 13
|
T cb13f3c6 u_tershadow_aux 13
|
||||||
|
T cb13f3c6 u_ts_height 14
|
||||||
P b8cff226 grass.vert model.frag #define FOLIAGE;#define BLADE;#define GBLADE;#define TILES;
|
P b8cff226 grass.vert model.frag #define FOLIAGE;#define BLADE;#define GBLADE;#define TILES;
|
||||||
B b8cff226 vert 0 4420
|
B b8cff226 vert 0 4420
|
||||||
U b8cff226 vert u_view 0 mat4 1 0
|
U b8cff226 vert u_view 0 mat4 1 0
|
||||||
|
|
@ -1107,7 +1174,8 @@ T b8cff226 u_prefilter 9
|
||||||
T b8cff226 u_shadow 10
|
T b8cff226 u_shadow 10
|
||||||
T b8cff226 u_ter_normal 11
|
T b8cff226 u_ter_normal 11
|
||||||
T b8cff226 u_tershadow 12
|
T b8cff226 u_tershadow 12
|
||||||
T b8cff226 u_ts_height 13
|
T b8cff226 u_tershadow_aux 13
|
||||||
|
T b8cff226 u_ts_height 14
|
||||||
P 3733fc38 impostor.vert impostor.frag
|
P 3733fc38 impostor.vert impostor.frag
|
||||||
B 3733fc38 vert 0 232
|
B 3733fc38 vert 0 232
|
||||||
U 3733fc38 vert u_view 0 mat4 1 0
|
U 3733fc38 vert u_view 0 mat4 1 0
|
||||||
|
|
@ -1170,7 +1238,8 @@ T 3733fc38 u_irradiance 5
|
||||||
T 3733fc38 u_prefilter 6
|
T 3733fc38 u_prefilter 6
|
||||||
T 3733fc38 u_shadow 7
|
T 3733fc38 u_shadow 7
|
||||||
T 3733fc38 u_tershadow 8
|
T 3733fc38 u_tershadow 8
|
||||||
T 3733fc38 u_ts_height 9
|
T 3733fc38 u_tershadow_aux 9
|
||||||
|
T 3733fc38 u_ts_height 10
|
||||||
P 4d4fa91b impostor.vert impostor.frag #define SHADOW_PASS;
|
P 4d4fa91b impostor.vert impostor.frag #define SHADOW_PASS;
|
||||||
B 4d4fa91b vert 0 232
|
B 4d4fa91b vert 0 232
|
||||||
U 4d4fa91b vert u_view 0 mat4 1 0
|
U 4d4fa91b vert u_view 0 mat4 1 0
|
||||||
|
|
@ -1233,7 +1302,8 @@ T 4d4fa91b u_irradiance 5
|
||||||
T 4d4fa91b u_prefilter 6
|
T 4d4fa91b u_prefilter 6
|
||||||
T 4d4fa91b u_shadow 7
|
T 4d4fa91b u_shadow 7
|
||||||
T 4d4fa91b u_tershadow 8
|
T 4d4fa91b u_tershadow 8
|
||||||
T 4d4fa91b u_ts_height 9
|
T 4d4fa91b u_tershadow_aux 9
|
||||||
|
T 4d4fa91b u_ts_height 10
|
||||||
P 9dce3246 model.vert bake.frag
|
P 9dce3246 model.vert bake.frag
|
||||||
B 9dce3246 vert 0 236
|
B 9dce3246 vert 0 236
|
||||||
U 9dce3246 vert u_view 0 mat4 1 0
|
U 9dce3246 vert u_view 0 mat4 1 0
|
||||||
|
|
@ -1297,7 +1367,8 @@ T 9dce3246 u_irradiance 5
|
||||||
T 9dce3246 u_prefilter 6
|
T 9dce3246 u_prefilter 6
|
||||||
T 9dce3246 u_shadow 7
|
T 9dce3246 u_shadow 7
|
||||||
T 9dce3246 u_tershadow 8
|
T 9dce3246 u_tershadow 8
|
||||||
T 9dce3246 u_ts_height 9
|
T 9dce3246 u_tershadow_aux 9
|
||||||
|
T 9dce3246 u_ts_height 10
|
||||||
P 439a2253 model.vert bake.frag #define CARD;
|
P 439a2253 model.vert bake.frag #define CARD;
|
||||||
B 439a2253 vert 0 236
|
B 439a2253 vert 0 236
|
||||||
U 439a2253 vert u_view 0 mat4 1 0
|
U 439a2253 vert u_view 0 mat4 1 0
|
||||||
|
|
@ -1361,7 +1432,8 @@ T 439a2253 u_irradiance 5
|
||||||
T 439a2253 u_prefilter 6
|
T 439a2253 u_prefilter 6
|
||||||
T 439a2253 u_shadow 7
|
T 439a2253 u_shadow 7
|
||||||
T 439a2253 u_tershadow 8
|
T 439a2253 u_tershadow 8
|
||||||
T 439a2253 u_ts_height 9
|
T 439a2253 u_tershadow_aux 9
|
||||||
|
T 439a2253 u_ts_height 10
|
||||||
P 86f427b0 model.vert bake.frag #define FLOWER;
|
P 86f427b0 model.vert bake.frag #define FLOWER;
|
||||||
B 86f427b0 vert 0 236
|
B 86f427b0 vert 0 236
|
||||||
U 86f427b0 vert u_view 0 mat4 1 0
|
U 86f427b0 vert u_view 0 mat4 1 0
|
||||||
|
|
@ -1425,7 +1497,8 @@ T 86f427b0 u_irradiance 5
|
||||||
T 86f427b0 u_prefilter 6
|
T 86f427b0 u_prefilter 6
|
||||||
T 86f427b0 u_shadow 7
|
T 86f427b0 u_shadow 7
|
||||||
T 86f427b0 u_tershadow 8
|
T 86f427b0 u_tershadow 8
|
||||||
T 86f427b0 u_ts_height 9
|
T 86f427b0 u_tershadow_aux 9
|
||||||
|
T 86f427b0 u_ts_height 10
|
||||||
P bfa15301 model.vert depth.frag #define FOLIAGE;#define WIND;#define ALPHA_TEST;
|
P bfa15301 model.vert depth.frag #define FOLIAGE;#define WIND;#define ALPHA_TEST;
|
||||||
B bfa15301 vert 0 236
|
B bfa15301 vert 0 236
|
||||||
U bfa15301 vert u_view 0 mat4 1 0
|
U bfa15301 vert u_view 0 mat4 1 0
|
||||||
|
|
@ -1488,7 +1561,8 @@ T bfa15301 u_irradiance 4
|
||||||
T bfa15301 u_prefilter 5
|
T bfa15301 u_prefilter 5
|
||||||
T bfa15301 u_shadow 6
|
T bfa15301 u_shadow 6
|
||||||
T bfa15301 u_tershadow 7
|
T bfa15301 u_tershadow 7
|
||||||
T bfa15301 u_ts_height 8
|
T bfa15301 u_tershadow_aux 8
|
||||||
|
T bfa15301 u_ts_height 9
|
||||||
P 266d2401 model.vert depth.frag #define FOLIAGE;#define WIND;#define ALPHA_TEST;#define NEAR_FADE;
|
P 266d2401 model.vert depth.frag #define FOLIAGE;#define WIND;#define ALPHA_TEST;#define NEAR_FADE;
|
||||||
B 266d2401 vert 0 236
|
B 266d2401 vert 0 236
|
||||||
U 266d2401 vert u_view 0 mat4 1 0
|
U 266d2401 vert u_view 0 mat4 1 0
|
||||||
|
|
@ -1551,7 +1625,8 @@ T 266d2401 u_irradiance 4
|
||||||
T 266d2401 u_prefilter 5
|
T 266d2401 u_prefilter 5
|
||||||
T 266d2401 u_shadow 6
|
T 266d2401 u_shadow 6
|
||||||
T 266d2401 u_tershadow 7
|
T 266d2401 u_tershadow 7
|
||||||
T 266d2401 u_ts_height 8
|
T 266d2401 u_tershadow_aux 8
|
||||||
|
T 266d2401 u_ts_height 9
|
||||||
P 01089da8 model.vert model.frag
|
P 01089da8 model.vert model.frag
|
||||||
B 01089da8 vert 0 236
|
B 01089da8 vert 0 236
|
||||||
U 01089da8 vert u_view 0 mat4 1 0
|
U 01089da8 vert u_view 0 mat4 1 0
|
||||||
|
|
@ -1622,7 +1697,8 @@ T 01089da8 u_nrm 7
|
||||||
T 01089da8 u_prefilter 8
|
T 01089da8 u_prefilter 8
|
||||||
T 01089da8 u_shadow 9
|
T 01089da8 u_shadow 9
|
||||||
T 01089da8 u_tershadow 10
|
T 01089da8 u_tershadow 10
|
||||||
T 01089da8 u_ts_height 11
|
T 01089da8 u_tershadow_aux 11
|
||||||
|
T 01089da8 u_ts_height 12
|
||||||
P 254e7887 model.vert model.frag #define CARD;#define CHEAP;
|
P 254e7887 model.vert model.frag #define CARD;#define CHEAP;
|
||||||
B 254e7887 vert 0 236
|
B 254e7887 vert 0 236
|
||||||
U 254e7887 vert u_view 0 mat4 1 0
|
U 254e7887 vert u_view 0 mat4 1 0
|
||||||
|
|
@ -1694,7 +1770,8 @@ T 254e7887 u_nrm 7
|
||||||
T 254e7887 u_prefilter 8
|
T 254e7887 u_prefilter 8
|
||||||
T 254e7887 u_shadow 9
|
T 254e7887 u_shadow 9
|
||||||
T 254e7887 u_tershadow 10
|
T 254e7887 u_tershadow 10
|
||||||
T 254e7887 u_ts_height 11
|
T 254e7887 u_tershadow_aux 11
|
||||||
|
T 254e7887 u_ts_height 12
|
||||||
P 1ce5c5d1 model.vert model.frag #define FOLIAGE;#define WIND;#define ALPHA_TEST;
|
P 1ce5c5d1 model.vert model.frag #define FOLIAGE;#define WIND;#define ALPHA_TEST;
|
||||||
B 1ce5c5d1 vert 0 236
|
B 1ce5c5d1 vert 0 236
|
||||||
U 1ce5c5d1 vert u_view 0 mat4 1 0
|
U 1ce5c5d1 vert u_view 0 mat4 1 0
|
||||||
|
|
@ -1765,7 +1842,8 @@ T 1ce5c5d1 u_nrm 7
|
||||||
T 1ce5c5d1 u_prefilter 8
|
T 1ce5c5d1 u_prefilter 8
|
||||||
T 1ce5c5d1 u_shadow 9
|
T 1ce5c5d1 u_shadow 9
|
||||||
T 1ce5c5d1 u_tershadow 10
|
T 1ce5c5d1 u_tershadow 10
|
||||||
T 1ce5c5d1 u_ts_height 11
|
T 1ce5c5d1 u_tershadow_aux 11
|
||||||
|
T 1ce5c5d1 u_ts_height 12
|
||||||
P 5e70d731 model.vert model.frag #define FOLIAGE;#define WIND;#define ALPHA_TEST;#define NEAR_FADE;
|
P 5e70d731 model.vert model.frag #define FOLIAGE;#define WIND;#define ALPHA_TEST;#define NEAR_FADE;
|
||||||
B 5e70d731 vert 0 236
|
B 5e70d731 vert 0 236
|
||||||
U 5e70d731 vert u_view 0 mat4 1 0
|
U 5e70d731 vert u_view 0 mat4 1 0
|
||||||
|
|
@ -1836,7 +1914,8 @@ T 5e70d731 u_nrm 7
|
||||||
T 5e70d731 u_prefilter 8
|
T 5e70d731 u_prefilter 8
|
||||||
T 5e70d731 u_shadow 9
|
T 5e70d731 u_shadow 9
|
||||||
T 5e70d731 u_tershadow 10
|
T 5e70d731 u_tershadow 10
|
||||||
T 5e70d731 u_ts_height 11
|
T 5e70d731 u_tershadow_aux 11
|
||||||
|
T 5e70d731 u_ts_height 12
|
||||||
P f4a2b586 model.vert model.frag #define FOLIAGE;#define WIND;#define BLADE;
|
P f4a2b586 model.vert model.frag #define FOLIAGE;#define WIND;#define BLADE;
|
||||||
B f4a2b586 vert 0 252
|
B f4a2b586 vert 0 252
|
||||||
U f4a2b586 vert u_view 0 mat4 1 0
|
U f4a2b586 vert u_view 0 mat4 1 0
|
||||||
|
|
@ -1913,7 +1992,8 @@ T f4a2b586 u_nrm 7
|
||||||
T f4a2b586 u_prefilter 8
|
T f4a2b586 u_prefilter 8
|
||||||
T f4a2b586 u_shadow 9
|
T f4a2b586 u_shadow 9
|
||||||
T f4a2b586 u_tershadow 10
|
T f4a2b586 u_tershadow 10
|
||||||
T f4a2b586 u_ts_height 11
|
T f4a2b586 u_tershadow_aux 11
|
||||||
|
T f4a2b586 u_ts_height 12
|
||||||
P b4587cd4 model.vert model.frag #define FOLIAGE;#define WIND;#define CARD;
|
P b4587cd4 model.vert model.frag #define FOLIAGE;#define WIND;#define CARD;
|
||||||
B b4587cd4 vert 0 236
|
B b4587cd4 vert 0 236
|
||||||
U b4587cd4 vert u_view 0 mat4 1 0
|
U b4587cd4 vert u_view 0 mat4 1 0
|
||||||
|
|
@ -1985,7 +2065,8 @@ T b4587cd4 u_nrm 7
|
||||||
T b4587cd4 u_prefilter 8
|
T b4587cd4 u_prefilter 8
|
||||||
T b4587cd4 u_shadow 9
|
T b4587cd4 u_shadow 9
|
||||||
T b4587cd4 u_tershadow 10
|
T b4587cd4 u_tershadow 10
|
||||||
T b4587cd4 u_ts_height 11
|
T b4587cd4 u_tershadow_aux 11
|
||||||
|
T b4587cd4 u_ts_height 12
|
||||||
P 4dda406a model.vert model.frag #define FOLIAGE;#define WIND;#define EQ_PASS;
|
P 4dda406a model.vert model.frag #define FOLIAGE;#define WIND;#define EQ_PASS;
|
||||||
B 4dda406a vert 0 236
|
B 4dda406a vert 0 236
|
||||||
U 4dda406a vert u_view 0 mat4 1 0
|
U 4dda406a vert u_view 0 mat4 1 0
|
||||||
|
|
@ -2056,7 +2137,8 @@ T 4dda406a u_nrm 7
|
||||||
T 4dda406a u_prefilter 8
|
T 4dda406a u_prefilter 8
|
||||||
T 4dda406a u_shadow 9
|
T 4dda406a u_shadow 9
|
||||||
T 4dda406a u_tershadow 10
|
T 4dda406a u_tershadow 10
|
||||||
T 4dda406a u_ts_height 11
|
T 4dda406a u_tershadow_aux 11
|
||||||
|
T 4dda406a u_ts_height 12
|
||||||
P b603a056 model.vert model.frag #define FOLIAGE;#define WIND;#define EQ_PASS;#define NEAR_FADE;
|
P b603a056 model.vert model.frag #define FOLIAGE;#define WIND;#define EQ_PASS;#define NEAR_FADE;
|
||||||
B b603a056 vert 0 236
|
B b603a056 vert 0 236
|
||||||
U b603a056 vert u_view 0 mat4 1 0
|
U b603a056 vert u_view 0 mat4 1 0
|
||||||
|
|
@ -2127,7 +2209,8 @@ T b603a056 u_nrm 7
|
||||||
T b603a056 u_prefilter 8
|
T b603a056 u_prefilter 8
|
||||||
T b603a056 u_shadow 9
|
T b603a056 u_shadow 9
|
||||||
T b603a056 u_tershadow 10
|
T b603a056 u_tershadow 10
|
||||||
T b603a056 u_ts_height 11
|
T b603a056 u_tershadow_aux 11
|
||||||
|
T b603a056 u_ts_height 12
|
||||||
P 3b183d8f model.vert model.frag #define FOLIAGE;#define WIND;#define FLOWER;
|
P 3b183d8f model.vert model.frag #define FOLIAGE;#define WIND;#define FLOWER;
|
||||||
B 3b183d8f vert 0 236
|
B 3b183d8f vert 0 236
|
||||||
U 3b183d8f vert u_view 0 mat4 1 0
|
U 3b183d8f vert u_view 0 mat4 1 0
|
||||||
|
|
@ -2198,7 +2281,8 @@ T 3b183d8f u_nrm 7
|
||||||
T 3b183d8f u_prefilter 8
|
T 3b183d8f u_prefilter 8
|
||||||
T 3b183d8f u_shadow 9
|
T 3b183d8f u_shadow 9
|
||||||
T 3b183d8f u_tershadow 10
|
T 3b183d8f u_tershadow 10
|
||||||
T 3b183d8f u_ts_height 11
|
T 3b183d8f u_tershadow_aux 11
|
||||||
|
T 3b183d8f u_ts_height 12
|
||||||
P 79b77ed9 model.vert model.frag #define SHADOW_PASS;#define WIND;#define CARD;
|
P 79b77ed9 model.vert model.frag #define SHADOW_PASS;#define WIND;#define CARD;
|
||||||
B 79b77ed9 vert 0 236
|
B 79b77ed9 vert 0 236
|
||||||
U 79b77ed9 vert u_view 0 mat4 1 0
|
U 79b77ed9 vert u_view 0 mat4 1 0
|
||||||
|
|
@ -2270,7 +2354,8 @@ T 79b77ed9 u_nrm 7
|
||||||
T 79b77ed9 u_prefilter 8
|
T 79b77ed9 u_prefilter 8
|
||||||
T 79b77ed9 u_shadow 9
|
T 79b77ed9 u_shadow 9
|
||||||
T 79b77ed9 u_tershadow 10
|
T 79b77ed9 u_tershadow 10
|
||||||
T 79b77ed9 u_ts_height 11
|
T 79b77ed9 u_tershadow_aux 11
|
||||||
|
T 79b77ed9 u_ts_height 12
|
||||||
P b9fc2041 model.vert model.frag #define WIND;
|
P b9fc2041 model.vert model.frag #define WIND;
|
||||||
B b9fc2041 vert 0 236
|
B b9fc2041 vert 0 236
|
||||||
U b9fc2041 vert u_view 0 mat4 1 0
|
U b9fc2041 vert u_view 0 mat4 1 0
|
||||||
|
|
@ -2341,7 +2426,8 @@ T b9fc2041 u_nrm 7
|
||||||
T b9fc2041 u_prefilter 8
|
T b9fc2041 u_prefilter 8
|
||||||
T b9fc2041 u_shadow 9
|
T b9fc2041 u_shadow 9
|
||||||
T b9fc2041 u_tershadow 10
|
T b9fc2041 u_tershadow 10
|
||||||
T b9fc2041 u_ts_height 11
|
T b9fc2041 u_tershadow_aux 11
|
||||||
|
T b9fc2041 u_ts_height 12
|
||||||
P f34dce08 model.vert shadow.frag #define SHADOW_PASS;
|
P f34dce08 model.vert shadow.frag #define SHADOW_PASS;
|
||||||
B f34dce08 vert 0 236
|
B f34dce08 vert 0 236
|
||||||
U f34dce08 vert u_view 0 mat4 1 0
|
U f34dce08 vert u_view 0 mat4 1 0
|
||||||
|
|
@ -2404,7 +2490,8 @@ T f34dce08 u_irradiance 4
|
||||||
T f34dce08 u_prefilter 5
|
T f34dce08 u_prefilter 5
|
||||||
T f34dce08 u_shadow 6
|
T f34dce08 u_shadow 6
|
||||||
T f34dce08 u_tershadow 7
|
T f34dce08 u_tershadow 7
|
||||||
T f34dce08 u_ts_height 8
|
T f34dce08 u_tershadow_aux 8
|
||||||
|
T f34dce08 u_ts_height 9
|
||||||
P 512004a1 model.vert shadow.frag #define SHADOW_PASS;#define WIND;
|
P 512004a1 model.vert shadow.frag #define SHADOW_PASS;#define WIND;
|
||||||
B 512004a1 vert 0 236
|
B 512004a1 vert 0 236
|
||||||
U 512004a1 vert u_view 0 mat4 1 0
|
U 512004a1 vert u_view 0 mat4 1 0
|
||||||
|
|
@ -2467,7 +2554,8 @@ T 512004a1 u_irradiance 4
|
||||||
T 512004a1 u_prefilter 5
|
T 512004a1 u_prefilter 5
|
||||||
T 512004a1 u_shadow 6
|
T 512004a1 u_shadow 6
|
||||||
T 512004a1 u_tershadow 7
|
T 512004a1 u_tershadow 7
|
||||||
T 512004a1 u_ts_height 8
|
T 512004a1 u_tershadow_aux 8
|
||||||
|
T 512004a1 u_ts_height 9
|
||||||
P b964507f model.vert shadow.frag #define SHADOW_PASS;#define WIND;#define ALPHA_TEST;
|
P b964507f model.vert shadow.frag #define SHADOW_PASS;#define WIND;#define ALPHA_TEST;
|
||||||
B b964507f vert 0 236
|
B b964507f vert 0 236
|
||||||
U b964507f vert u_view 0 mat4 1 0
|
U b964507f vert u_view 0 mat4 1 0
|
||||||
|
|
@ -2530,7 +2618,8 @@ T b964507f u_irradiance 4
|
||||||
T b964507f u_prefilter 5
|
T b964507f u_prefilter 5
|
||||||
T b964507f u_shadow 6
|
T b964507f u_shadow 6
|
||||||
T b964507f u_tershadow 7
|
T b964507f u_tershadow 7
|
||||||
T b964507f u_ts_height 8
|
T b964507f u_tershadow_aux 8
|
||||||
|
T b964507f u_ts_height 9
|
||||||
P 1b654972 overlay.vert overlay.frag
|
P 1b654972 overlay.vert overlay.frag
|
||||||
B 1b654972 vert 0 8
|
B 1b654972 vert 0 8
|
||||||
U 1b654972 vert u_screen 0 vec2 1 0
|
U 1b654972 vert u_screen 0 vec2 1 0
|
||||||
|
|
@ -2580,8 +2669,9 @@ T 1b654972 u_irradiance 4
|
||||||
T 1b654972 u_prefilter 5
|
T 1b654972 u_prefilter 5
|
||||||
T 1b654972 u_shadow 6
|
T 1b654972 u_shadow 6
|
||||||
T 1b654972 u_tershadow 7
|
T 1b654972 u_tershadow 7
|
||||||
T 1b654972 u_tex 8
|
T 1b654972 u_tershadow_aux 8
|
||||||
T 1b654972 u_ts_height 9
|
T 1b654972 u_tex 9
|
||||||
|
T 1b654972 u_ts_height 10
|
||||||
P e86f78e8 overlay.vert overlay.frag #define HDR10;
|
P e86f78e8 overlay.vert overlay.frag #define HDR10;
|
||||||
B e86f78e8 vert 0 8
|
B e86f78e8 vert 0 8
|
||||||
U e86f78e8 vert u_screen 0 vec2 1 0
|
U e86f78e8 vert u_screen 0 vec2 1 0
|
||||||
|
|
@ -2633,8 +2723,9 @@ T e86f78e8 u_irradiance 4
|
||||||
T e86f78e8 u_prefilter 5
|
T e86f78e8 u_prefilter 5
|
||||||
T e86f78e8 u_shadow 6
|
T e86f78e8 u_shadow 6
|
||||||
T e86f78e8 u_tershadow 7
|
T e86f78e8 u_tershadow 7
|
||||||
T e86f78e8 u_tex 8
|
T e86f78e8 u_tershadow_aux 8
|
||||||
T e86f78e8 u_ts_height 9
|
T e86f78e8 u_tex 9
|
||||||
|
T e86f78e8 u_ts_height 10
|
||||||
P 1fde9cd2 skin.vert model.frag
|
P 1fde9cd2 skin.vert model.frag
|
||||||
B 1fde9cd2 vert 0 3344
|
B 1fde9cd2 vert 0 3344
|
||||||
U 1fde9cd2 vert u_model 0 mat4 1 0
|
U 1fde9cd2 vert u_model 0 mat4 1 0
|
||||||
|
|
@ -2699,7 +2790,8 @@ T 1fde9cd2 u_nrm 7
|
||||||
T 1fde9cd2 u_prefilter 8
|
T 1fde9cd2 u_prefilter 8
|
||||||
T 1fde9cd2 u_shadow 9
|
T 1fde9cd2 u_shadow 9
|
||||||
T 1fde9cd2 u_tershadow 10
|
T 1fde9cd2 u_tershadow 10
|
||||||
T 1fde9cd2 u_ts_height 11
|
T 1fde9cd2 u_tershadow_aux 11
|
||||||
|
T 1fde9cd2 u_ts_height 12
|
||||||
P a5ad521e skin.vert model.frag #define ALPHA_TEST;
|
P a5ad521e skin.vert model.frag #define ALPHA_TEST;
|
||||||
B a5ad521e vert 0 3344
|
B a5ad521e vert 0 3344
|
||||||
U a5ad521e vert u_model 0 mat4 1 0
|
U a5ad521e vert u_model 0 mat4 1 0
|
||||||
|
|
@ -2764,7 +2856,8 @@ T a5ad521e u_nrm 7
|
||||||
T a5ad521e u_prefilter 8
|
T a5ad521e u_prefilter 8
|
||||||
T a5ad521e u_shadow 9
|
T a5ad521e u_shadow 9
|
||||||
T a5ad521e u_tershadow 10
|
T a5ad521e u_tershadow 10
|
||||||
T a5ad521e u_ts_height 11
|
T a5ad521e u_tershadow_aux 11
|
||||||
|
T a5ad521e u_ts_height 12
|
||||||
P 9068df1c skin.vert outline.frag #define OUTLINE;
|
P 9068df1c skin.vert outline.frag #define OUTLINE;
|
||||||
B 9068df1c vert 0 3348
|
B 9068df1c vert 0 3348
|
||||||
U 9068df1c vert u_model 0 mat4 1 0
|
U 9068df1c vert u_model 0 mat4 1 0
|
||||||
|
|
@ -2823,7 +2916,8 @@ T 9068df1c u_irradiance 4
|
||||||
T 9068df1c u_prefilter 5
|
T 9068df1c u_prefilter 5
|
||||||
T 9068df1c u_shadow 6
|
T 9068df1c u_shadow 6
|
||||||
T 9068df1c u_tershadow 7
|
T 9068df1c u_tershadow 7
|
||||||
T 9068df1c u_ts_height 8
|
T 9068df1c u_tershadow_aux 8
|
||||||
|
T 9068df1c u_ts_height 9
|
||||||
P e9b6300c skin.vert outline.frag #define OUTLINE;#define ALPHA_TEST;
|
P e9b6300c skin.vert outline.frag #define OUTLINE;#define ALPHA_TEST;
|
||||||
B e9b6300c vert 0 3348
|
B e9b6300c vert 0 3348
|
||||||
U e9b6300c vert u_model 0 mat4 1 0
|
U e9b6300c vert u_model 0 mat4 1 0
|
||||||
|
|
@ -2882,7 +2976,8 @@ T e9b6300c u_irradiance 4
|
||||||
T e9b6300c u_prefilter 5
|
T e9b6300c u_prefilter 5
|
||||||
T e9b6300c u_shadow 6
|
T e9b6300c u_shadow 6
|
||||||
T e9b6300c u_tershadow 7
|
T e9b6300c u_tershadow 7
|
||||||
T e9b6300c u_ts_height 8
|
T e9b6300c u_tershadow_aux 8
|
||||||
|
T e9b6300c u_ts_height 9
|
||||||
P b79a1f4e skin.vert shadow.frag #define SHADOW_PASS;
|
P b79a1f4e skin.vert shadow.frag #define SHADOW_PASS;
|
||||||
B b79a1f4e vert 0 3344
|
B b79a1f4e vert 0 3344
|
||||||
U b79a1f4e vert u_model 0 mat4 1 0
|
U b79a1f4e vert u_model 0 mat4 1 0
|
||||||
|
|
@ -2939,7 +3034,8 @@ T b79a1f4e u_irradiance 4
|
||||||
T b79a1f4e u_prefilter 5
|
T b79a1f4e u_prefilter 5
|
||||||
T b79a1f4e u_shadow 6
|
T b79a1f4e u_shadow 6
|
||||||
T b79a1f4e u_tershadow 7
|
T b79a1f4e u_tershadow 7
|
||||||
T b79a1f4e u_ts_height 8
|
T b79a1f4e u_tershadow_aux 8
|
||||||
|
T b79a1f4e u_ts_height 9
|
||||||
P a64015f2 skin.vert shadow.frag #define SHADOW_PASS;#define ALPHA_TEST;
|
P a64015f2 skin.vert shadow.frag #define SHADOW_PASS;#define ALPHA_TEST;
|
||||||
B a64015f2 vert 0 3344
|
B a64015f2 vert 0 3344
|
||||||
U a64015f2 vert u_model 0 mat4 1 0
|
U a64015f2 vert u_model 0 mat4 1 0
|
||||||
|
|
@ -2996,7 +3092,8 @@ T a64015f2 u_irradiance 4
|
||||||
T a64015f2 u_prefilter 5
|
T a64015f2 u_prefilter 5
|
||||||
T a64015f2 u_shadow 6
|
T a64015f2 u_shadow 6
|
||||||
T a64015f2 u_tershadow 7
|
T a64015f2 u_tershadow 7
|
||||||
T a64015f2 u_ts_height 8
|
T a64015f2 u_tershadow_aux 8
|
||||||
|
T a64015f2 u_ts_height 9
|
||||||
P 2e2908c8 terrain.vert terrain.frag
|
P 2e2908c8 terrain.vert terrain.frag
|
||||||
B 2e2908c8 vert 0 204
|
B 2e2908c8 vert 0 204
|
||||||
U 2e2908c8 vert u_half 0 float 1 0
|
U 2e2908c8 vert u_half 0 float 1 0
|
||||||
|
|
@ -3075,7 +3172,8 @@ T 2e2908c8 u_snow_d 15
|
||||||
T 2e2908c8 u_sunshadow 16
|
T 2e2908c8 u_sunshadow 16
|
||||||
T 2e2908c8 u_ter_normal 17
|
T 2e2908c8 u_ter_normal 17
|
||||||
T 2e2908c8 u_tershadow 18
|
T 2e2908c8 u_tershadow 18
|
||||||
T 2e2908c8 u_ts_height 19
|
T 2e2908c8 u_tershadow_aux 19
|
||||||
|
T 2e2908c8 u_ts_height 20
|
||||||
P 1f95f31b terrain.vert terrain.frag #define FAR_ONLY;
|
P 1f95f31b terrain.vert terrain.frag #define FAR_ONLY;
|
||||||
B 1f95f31b vert 0 204
|
B 1f95f31b vert 0 204
|
||||||
U 1f95f31b vert u_half 0 float 1 0
|
U 1f95f31b vert u_half 0 float 1 0
|
||||||
|
|
@ -3154,7 +3252,8 @@ T 1f95f31b u_snow_d 15
|
||||||
T 1f95f31b u_sunshadow 16
|
T 1f95f31b u_sunshadow 16
|
||||||
T 1f95f31b u_ter_normal 17
|
T 1f95f31b u_ter_normal 17
|
||||||
T 1f95f31b u_tershadow 18
|
T 1f95f31b u_tershadow 18
|
||||||
T 1f95f31b u_ts_height 19
|
T 1f95f31b u_tershadow_aux 19
|
||||||
|
T 1f95f31b u_ts_height 20
|
||||||
P f4382918 terrain.vert terrain.frag #define NEAR_ONLY;
|
P f4382918 terrain.vert terrain.frag #define NEAR_ONLY;
|
||||||
B f4382918 vert 0 204
|
B f4382918 vert 0 204
|
||||||
U f4382918 vert u_half 0 float 1 0
|
U f4382918 vert u_half 0 float 1 0
|
||||||
|
|
@ -3233,7 +3332,8 @@ T f4382918 u_snow_d 15
|
||||||
T f4382918 u_sunshadow 16
|
T f4382918 u_sunshadow 16
|
||||||
T f4382918 u_ter_normal 17
|
T f4382918 u_ter_normal 17
|
||||||
T f4382918 u_tershadow 18
|
T f4382918 u_tershadow 18
|
||||||
T f4382918 u_ts_height 19
|
T f4382918 u_tershadow_aux 19
|
||||||
|
T f4382918 u_ts_height 20
|
||||||
P f2952361 terrain.vert terrain.frag #define SUN_INLINE;
|
P f2952361 terrain.vert terrain.frag #define SUN_INLINE;
|
||||||
B f2952361 vert 0 204
|
B f2952361 vert 0 204
|
||||||
U f2952361 vert u_half 0 float 1 0
|
U f2952361 vert u_half 0 float 1 0
|
||||||
|
|
@ -3312,7 +3412,8 @@ T f2952361 u_snow_d 15
|
||||||
T f2952361 u_sunshadow 16
|
T f2952361 u_sunshadow 16
|
||||||
T f2952361 u_ter_normal 17
|
T f2952361 u_ter_normal 17
|
||||||
T f2952361 u_tershadow 18
|
T f2952361 u_tershadow 18
|
||||||
T f2952361 u_ts_height 19
|
T f2952361 u_tershadow_aux 19
|
||||||
|
T f2952361 u_ts_height 20
|
||||||
P a0f2dbac terrain.vert terrain.frag #define SUN_INLINE;#define FAR_ONLY;
|
P a0f2dbac terrain.vert terrain.frag #define SUN_INLINE;#define FAR_ONLY;
|
||||||
B a0f2dbac vert 0 204
|
B a0f2dbac vert 0 204
|
||||||
U a0f2dbac vert u_half 0 float 1 0
|
U a0f2dbac vert u_half 0 float 1 0
|
||||||
|
|
@ -3391,7 +3492,8 @@ T a0f2dbac u_snow_d 15
|
||||||
T a0f2dbac u_sunshadow 16
|
T a0f2dbac u_sunshadow 16
|
||||||
T a0f2dbac u_ter_normal 17
|
T a0f2dbac u_ter_normal 17
|
||||||
T a0f2dbac u_tershadow 18
|
T a0f2dbac u_tershadow 18
|
||||||
T a0f2dbac u_ts_height 19
|
T a0f2dbac u_tershadow_aux 19
|
||||||
|
T a0f2dbac u_ts_height 20
|
||||||
P 5e4589a1 terrain.vert terrain.frag #define SUN_INLINE;#define NEAR_ONLY;
|
P 5e4589a1 terrain.vert terrain.frag #define SUN_INLINE;#define NEAR_ONLY;
|
||||||
B 5e4589a1 vert 0 204
|
B 5e4589a1 vert 0 204
|
||||||
U 5e4589a1 vert u_half 0 float 1 0
|
U 5e4589a1 vert u_half 0 float 1 0
|
||||||
|
|
@ -3470,7 +3572,8 @@ T 5e4589a1 u_snow_d 15
|
||||||
T 5e4589a1 u_sunshadow 16
|
T 5e4589a1 u_sunshadow 16
|
||||||
T 5e4589a1 u_ter_normal 17
|
T 5e4589a1 u_ter_normal 17
|
||||||
T 5e4589a1 u_tershadow 18
|
T 5e4589a1 u_tershadow 18
|
||||||
T 5e4589a1 u_ts_height 19
|
T 5e4589a1 u_tershadow_aux 19
|
||||||
|
T 5e4589a1 u_ts_height 20
|
||||||
P bf3151c8 terrain.vert tersun.frag
|
P bf3151c8 terrain.vert tersun.frag
|
||||||
B bf3151c8 vert 0 204
|
B bf3151c8 vert 0 204
|
||||||
U bf3151c8 vert u_half 0 float 1 0
|
U bf3151c8 vert u_half 0 float 1 0
|
||||||
|
|
@ -3529,7 +3632,8 @@ T bf3151c8 u_prefilter 5
|
||||||
T bf3151c8 u_shadow 6
|
T bf3151c8 u_shadow 6
|
||||||
T bf3151c8 u_ter_normal 7
|
T bf3151c8 u_ter_normal 7
|
||||||
T bf3151c8 u_tershadow 8
|
T bf3151c8 u_tershadow 8
|
||||||
T bf3151c8 u_ts_height 9
|
T bf3151c8 u_tershadow_aux 9
|
||||||
|
T bf3151c8 u_ts_height 10
|
||||||
P 46e2325c water.vert water.frag
|
P 46e2325c water.vert water.frag
|
||||||
B 46e2325c vert 0 152
|
B 46e2325c vert 0 152
|
||||||
U 46e2325c vert u_view 0 mat4 1 0
|
U 46e2325c vert u_view 0 mat4 1 0
|
||||||
|
|
@ -3591,7 +3695,8 @@ T 46e2325c u_refl 6
|
||||||
T 46e2325c u_scene 7
|
T 46e2325c u_scene 7
|
||||||
T 46e2325c u_shadow 8
|
T 46e2325c u_shadow 8
|
||||||
T 46e2325c u_tershadow 9
|
T 46e2325c u_tershadow 9
|
||||||
T 46e2325c u_ts_height 10
|
T 46e2325c u_tershadow_aux 10
|
||||||
|
T 46e2325c u_ts_height 11
|
||||||
P b20fdcb5 grass_inst.vert model.frag #define FOLIAGE;#define BLADE;#define GBLADE;#define GINST;
|
P b20fdcb5 grass_inst.vert model.frag #define FOLIAGE;#define BLADE;#define GBLADE;#define GINST;
|
||||||
B b20fdcb5 vert 0 160
|
B b20fdcb5 vert 0 160
|
||||||
U b20fdcb5 vert u_view 0 mat4 1 0
|
U b20fdcb5 vert u_view 0 mat4 1 0
|
||||||
|
|
@ -3661,4 +3766,5 @@ T b20fdcb5 u_nrm 7
|
||||||
T b20fdcb5 u_prefilter 8
|
T b20fdcb5 u_prefilter 8
|
||||||
T b20fdcb5 u_shadow 9
|
T b20fdcb5 u_shadow 9
|
||||||
T b20fdcb5 u_tershadow 10
|
T b20fdcb5 u_tershadow 10
|
||||||
T b20fdcb5 u_ts_height 11
|
T b20fdcb5 u_tershadow_aux 11
|
||||||
|
T b20fdcb5 u_ts_height 12
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@
|
||||||
// The second channel is the distance to the occluder that set the bound, which widens
|
// The second channel is the distance to the occluder that set the bound, which widens
|
||||||
// the penumbra the way a real shadow softens with distance from its caster.
|
// the penumbra the way a real shadow softens with distance from its caster.
|
||||||
in vec2 v_uv;
|
in vec2 v_uv;
|
||||||
out vec4 o;
|
out vec4 o; // TS_AUX: the occluder distance and the cloud mask (RG16F); else the lowest lit height (R32F)
|
||||||
uniform sampler2D u_height;
|
uniform sampler2D u_height;
|
||||||
uniform float u_half;
|
uniform float u_half;
|
||||||
uniform vec3 u_sun;
|
uniform vec3 u_sun;
|
||||||
|
|
@ -31,9 +31,13 @@ void main() {
|
||||||
step *= 1.045;
|
step *= 1.045;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// the cloud layer's mask, once, into B: sampled by cloudShadow() with the sun offset and
|
// the cloud layer's mask, once, into the aux target's G: sampled by cloudShadow() with the sun offset and
|
||||||
// the drift applied as a uv shift, instead of a five-octave fbm in every lit pixel of
|
// the drift applied as a uv shift, instead of a five-octave fbm in every lit pixel of
|
||||||
// every pass
|
// every pass
|
||||||
float cloud = smoothstep(0.02, 0.32, fbm(xz * 0.0011, 5));
|
float cloud = smoothstep(0.02, 0.32, fbm(xz * 0.0011, 5));
|
||||||
o = vec4(lit, at, cloud, 1.0);
|
#ifdef TS_AUX
|
||||||
|
o = vec4(at, cloud, 0.0, 1.0);
|
||||||
|
#else
|
||||||
|
o = vec4(lit, 0.0, 0.0, 1.0);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@ fullscreen.vert|ssao_blur.frag|
|
||||||
fullscreen.vert|ssgi.frag|
|
fullscreen.vert|ssgi.frag|
|
||||||
fullscreen.vert|ternormal.frag|
|
fullscreen.vert|ternormal.frag|
|
||||||
fullscreen.vert|tershadow.frag|#define NOISE_ONLY;
|
fullscreen.vert|tershadow.frag|#define NOISE_ONLY;
|
||||||
|
fullscreen.vert|tershadow.frag|#define NOISE_ONLY;#define TS_AUX;
|
||||||
fullscreen.vert|tonemap.frag|
|
fullscreen.vert|tonemap.frag|
|
||||||
fullscreen.vert|tonemap.frag|#define HDR10;
|
fullscreen.vert|tonemap.frag|#define HDR10;
|
||||||
fullscreen.vert|volumetric.frag|
|
fullscreen.vert|volumetric.frag|
|
||||||
|
|
|
||||||
|
|
@ -239,9 +239,11 @@ function shadow_bind(render3d_st: mut Render3dState, prog: int) -> void {
|
||||||
r3d_bind_tex(render3d_st, prog, "u_shadow", 15, GPU_TEX2D_ARRAY, render3d_st.sh_tex)
|
r3d_bind_tex(render3d_st, prog, "u_shadow", 15, GPU_TEX2D_ARRAY, render3d_st.sh_tex)
|
||||||
# the height-field shadow (terrain.ludic); a stand-in texture keeps the unit valid before the bake
|
# the height-field shadow (terrain.ludic); a stand-in texture keeps the unit valid before the bake
|
||||||
var ts = render3d_st.ter_shadow_tex
|
var ts = render3d_st.ter_shadow_tex
|
||||||
|
var ta = render3d_st.ter_shadow_aux
|
||||||
var ts_on = 1.0
|
var ts_on = 1.0
|
||||||
if ts == 0 { ts = render3d_st.ter_height_tex; ts_on = 0.0 }
|
if ts == 0 or ta == 0 { ts = render3d_st.ter_height_tex; ta = render3d_st.ter_height_tex; ts_on = 0.0 }
|
||||||
r3d_bind_2d(render3d_st, prog, "u_tershadow", 6, ts)
|
r3d_bind_2d(render3d_st, prog, "u_tershadow", 6, ts)
|
||||||
|
r3d_bind_2d(render3d_st, prog, "u_tershadow_aux", 7, ta)
|
||||||
terrain_bind_height(render3d_st, prog)
|
terrain_bind_height(render3d_st, prog)
|
||||||
u_f(render3d_st, gpu_uniform(render3d_st, prog, "u_ts_on"), ts_on)
|
u_f(render3d_st, gpu_uniform(render3d_st, prog, "u_ts_on"), ts_on)
|
||||||
u_f(render3d_st, gpu_uniform(render3d_st, prog, "u_ts_half"), float(render3d_st.TERRAIN_HALF))
|
u_f(render3d_st, gpu_uniform(render3d_st, prog, "u_ts_half"), float(render3d_st.TERRAIN_HALF))
|
||||||
|
|
|
||||||
|
|
@ -242,6 +242,9 @@ function terrain_generate__t(render3d_st: mut Render3dState) -> void {
|
||||||
gpu_fb_bind(render3d_st, 0)
|
gpu_fb_bind(render3d_st, 0)
|
||||||
gpu_fb_free(render3d_st, fbo)
|
gpu_fb_free(render3d_st, fbo)
|
||||||
gpu_program_free(render3d_st, p)
|
gpu_program_free(render3d_st, p)
|
||||||
|
# the survey is read only here: kept, it was 44 MB (R16 with mips) for the life of the map. A
|
||||||
|
# world swap loads its own again (terrain_reload), and nothing else generates
|
||||||
|
if render3d_st.ter_dem_tex != 0 { gpu_tex_free(render3d_st, render3d_st.ter_dem_tex); render3d_st.ter_dem_tex = 0 }
|
||||||
gpu_check(render3d_st, "terrain generate")
|
gpu_check(render3d_st, "terrain generate")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -257,12 +260,26 @@ function terrain_bind_height(render3d_st: mut Render3dState, p: int) -> void {
|
||||||
# the sun moves; r3d_frame calls it again when sky_set_yaw has changed the yaw.
|
# the sun moves; r3d_frame calls it again when sky_set_yaw has changed the yaw.
|
||||||
function terrain_bake_shadow(render3d_st: mut Render3dState) -> void {
|
function terrain_bake_shadow(render3d_st: mut Render3dState) -> void {
|
||||||
if render3d_st.sun_dir == null { return }
|
if render3d_st.sun_dir == null { return }
|
||||||
if render3d_st.ter_shadow_tex == 0 { render3d_st.ter_shadow_tex = tex_target(render3d_st, TERRAIN_SHADOW_RES, TERRAIN_SHADOW_RES, GL_RGBA32F, GL_RGBA, GL_FLOAT, GL_LINEAR) }
|
# the lowest lit height needs 32 bits (a receiver 3000 m up compares against it to a quarter metre);
|
||||||
|
# the occluder's distance and the cloud mask do not, and go beside it in RG16F - 32 MB where one
|
||||||
|
# RGBA32F carrying all three (and an unused fourth) was 64
|
||||||
|
if render3d_st.ter_shadow_tex == 0 { render3d_st.ter_shadow_tex = tex_target(render3d_st, TERRAIN_SHADOW_RES, TERRAIN_SHADOW_RES, GL_R32F, GL_RED, GL_FLOAT, GL_LINEAR) }
|
||||||
|
if render3d_st.ter_shadow_aux == 0 { render3d_st.ter_shadow_aux = tex_target(render3d_st, TERRAIN_SHADOW_RES, TERRAIN_SHADOW_RES, GL_RG16F, GL_RG, GL_FLOAT, GL_LINEAR) }
|
||||||
if render3d_st.ter_shadow_prog == 0 { render3d_st.ter_shadow_prog = r3d_program(render3d_st, "fullscreen.vert", "tershadow.frag", "#define NOISE_ONLY\n") }
|
if render3d_st.ter_shadow_prog == 0 { render3d_st.ter_shadow_prog = r3d_program(render3d_st, "fullscreen.vert", "tershadow.frag", "#define NOISE_ONLY\n") }
|
||||||
let p = render3d_st.ter_shadow_prog
|
if render3d_st.ter_shadow_prog_aux == 0 { render3d_st.ter_shadow_prog_aux = r3d_program(render3d_st, "fullscreen.vert", "tershadow.frag", "#define NOISE_ONLY\n#define TS_AUX\n") }
|
||||||
|
# two passes, one target each: a pipeline takes one colour format for all its targets, and the two
|
||||||
|
# are R32F and RG16F (drawn together, the second's writes went nowhere and nothing was lit)
|
||||||
|
terrain_bake_pass(render3d_st, render3d_st.ter_shadow_prog, render3d_st.ter_shadow_tex)
|
||||||
|
terrain_bake_pass(render3d_st, render3d_st.ter_shadow_prog_aux, render3d_st.ter_shadow_aux)
|
||||||
|
render3d_st.ter_shadow_yaw = render3d_st.sky_yaw
|
||||||
|
gpu_check(render3d_st, "terrain shadow bake")
|
||||||
|
}
|
||||||
|
|
||||||
|
# one of the bake's two targets drawn: the march is the same, the define picks what it writes
|
||||||
|
function terrain_bake_pass(render3d_st: mut Render3dState, p: int, target: int) -> void {
|
||||||
let fbo = gpu_fb_new(render3d_st)
|
let fbo = gpu_fb_new(render3d_st)
|
||||||
gpu_fb_bind(render3d_st, fbo)
|
gpu_fb_bind(render3d_st, fbo)
|
||||||
gpu_fb_color(render3d_st, 0, render3d_st.ter_shadow_tex)
|
gpu_fb_color(render3d_st, 0, target)
|
||||||
gpu_viewport(render3d_st, 0, 0, TERRAIN_SHADOW_RES, TERRAIN_SHADOW_RES)
|
gpu_viewport(render3d_st, 0, 0, TERRAIN_SHADOW_RES, TERRAIN_SHADOW_RES)
|
||||||
gpu_depth_test(render3d_st, false)
|
gpu_depth_test(render3d_st, false)
|
||||||
gpu_blend(render3d_st, false)
|
gpu_blend(render3d_st, false)
|
||||||
|
|
@ -274,8 +291,6 @@ function terrain_bake_shadow(render3d_st: mut Render3dState) -> void {
|
||||||
mesh_draw(render3d_st, render3d_st.sky_fullscreen)
|
mesh_draw(render3d_st, render3d_st.sky_fullscreen)
|
||||||
gpu_fb_bind(render3d_st, 0)
|
gpu_fb_bind(render3d_st, 0)
|
||||||
gpu_fb_free(render3d_st, fbo)
|
gpu_fb_free(render3d_st, fbo)
|
||||||
render3d_st.ter_shadow_yaw = render3d_st.sky_yaw
|
|
||||||
gpu_check(render3d_st, "terrain shadow bake")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# height at world (x, z) — float bits, bilinear over the CPU copy
|
# height at world (x, z) — float bits, bilinear over the CPU copy
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue