feat(render3d): the meadow's blades are culled on the GPU - under 1.5 ms of a MoltenVK frame for all the grass

- grass_cull.comp decides each candidate blade once a frame (place, ground, density, water,
  slope, frustum, colour field) and writes survivors into three bands by distance, one indirect
  draw each; grass_inst.vert only bends and places the vertices. OpenGL keeps grass.vert's
  per-vertex path; R3D_GRASS_GPU=0 compares
- compute programs take sampled textures after their buffers (gpu_compute_tex / gpu_dispatch_tex),
  and every dispatch now records a compute-to-draw memory barrier
- the blades as a sward: 4 m cells, bands with five, three and one-quad blades, spacing doubling
  every 18 m to 70 m, never narrower than a pixel; lit facing the sun and leaning to the sky,
  shadow looked up above the ground (it read the terrain as its caster), a colour ramp that
  leaves only the sheath dark, clumps, dry patches and a tussock shade worked out per blade
- scatter layers flagged grass are skipped while the blades draw (and under R3D_NOGRASS);
  R3D_BLADES, R3D_NOBLADES win over the game's setting; R3D_GRASS_S0/D0 for measuring

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Orkun ÇAKILKAYA 2026-09-27 15:38:43 +03:00
parent f815f3e3cf
commit cc384efee0
34 changed files with 798 additions and 212 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -843,7 +843,7 @@ T 74258189 u_shadow 6
T 74258189 u_tershadow 7
T 74258189 u_ts_height 8
P d48d6a48 grass.mesh model.frag #define FOLIAGE;#define BLADE;#define MESH;
B d48d6a48 vert 0 4384
B d48d6a48 vert 0 4388
U d48d6a48 vert u_view 0 mat4 1 0
U d48d6a48 vert u_proj 64 mat4 1 0
U d48d6a48 vert u_vp 128 mat4 1 0
@ -862,7 +862,8 @@ U d48d6a48 vert u_tiles 272 vec4 256 16
U d48d6a48 vert u_s0 4368 float 1 0
U d48d6a48 vert u_d0 4372 float 1 0
U d48d6a48 vert u_radius 4376 float 1 0
U d48d6a48 vert u_dbg 4380 int 1 0
U d48d6a48 vert u_px 4380 float 1 0
U d48d6a48 vert u_dbg 4384 int 1 0
B d48d6a48 frag 1 964
U d48d6a48 frag u_cascade_vp 0 mat4 5 64
U d48d6a48 frag u_cascade_split 320 float 5 16
@ -919,169 +920,171 @@ T d48d6a48 u_prefilter 9
T d48d6a48 u_shadow 10
T d48d6a48 u_tershadow 11
T d48d6a48 u_ts_height 12
P 7ed7de52 grass.vert model.frag #define FOLIAGE;#define BLADE;
B 7ed7de52 vert 0 320
U 7ed7de52 vert u_view 0 mat4 1 0
U 7ed7de52 vert u_proj 64 mat4 1 0
U 7ed7de52 vert u_vp 128 mat4 1 0
U 7ed7de52 vert u_cam_pos 192 vec3 1 0
U 7ed7de52 vert u_time 204 float 1 0
U 7ed7de52 vert u_ts_origin 208 vec2 1 0
U 7ed7de52 vert u_ts_half 216 float 1 0
U 7ed7de52 vert u_ortho_on 220 float 1 0
U 7ed7de52 vert u_lake_level 224 float 1 0
U 7ed7de52 vert u_sea_level 228 float 1 0
U 7ed7de52 vert u_lake 240 vec4 1 0
U 7ed7de52 vert u_snow_line 256 float 1 0
U 7ed7de52 vert u_wind 260 float 1 0
U 7ed7de52 vert u_push 272 vec3 1 0
U 7ed7de52 vert u_tile 288 vec2 1 0
U 7ed7de52 vert u_tile_cells 296 int 1 0
U 7ed7de52 vert u_per_cell 300 int 1 0
U 7ed7de52 vert u_s0 304 float 1 0
U 7ed7de52 vert u_d0 308 float 1 0
U 7ed7de52 vert u_radius 312 float 1 0
U 7ed7de52 vert u_dbg 316 int 1 0
I 7ed7de52 a_pos 0 vec3
I 7ed7de52 a_uv 2 vec2
B 7ed7de52 frag 1 964
U 7ed7de52 frag u_cascade_vp 0 mat4 5 64
U 7ed7de52 frag u_cascade_split 320 float 5 16
U 7ed7de52 frag u_cascade_range 400 float 5 16
U 7ed7de52 frag u_cascade_texel 480 float 5 16
U 7ed7de52 frag u_sun_dir 560 vec3 1 0
U 7ed7de52 frag u_sun_color 576 vec3 1 0
U 7ed7de52 frag u_cam_pos 592 vec3 1 0
U 7ed7de52 frag u_prefilter_levels 604 float 1 0
U 7ed7de52 frag u_fog_density 608 float 1 0
U 7ed7de52 frag u_fog_height_falloff 612 float 1 0
U 7ed7de52 frag u_fog_base 616 float 1 0
U 7ed7de52 frag u_clip_y 620 float 1 0
U 7ed7de52 frag u_spec_scale 624 float 1 0
U 7ed7de52 frag u_sky_rot 632 vec2 1 0
U 7ed7de52 frag u_ground_alb 640 vec3 1 0
U 7ed7de52 frag u_ground_alb_hi 656 vec3 1 0
U 7ed7de52 frag u_ground_hi_y 668 float 1 0
U 7ed7de52 frag u_ground_hi_w 672 float 1 0
U 7ed7de52 frag u_ibl_scale 688 vec3 1 0
U 7ed7de52 frag u_daylight 700 float 1 0
U 7ed7de52 frag u_fire_pos 704 vec3 1 0
U 7ed7de52 frag u_fire_color 720 vec3 1 0
U 7ed7de52 frag u_hand_pos 736 vec3 1 0
U 7ed7de52 frag u_hand_color 752 vec3 1 0
U 7ed7de52 frag u_hand_dir 768 vec3 1 0
U 7ed7de52 frag u_hand_cone 780 float 1 0
U 7ed7de52 frag u_hand_reach 784 float 1 0
U 7ed7de52 frag u_ts_origin 792 vec2 1 0
U 7ed7de52 frag u_ts_half 800 float 1 0
U 7ed7de52 frag u_ts_on 804 float 1 0
U 7ed7de52 frag u_force_cascade 808 int 1 0
U 7ed7de52 frag u_cloud_shadow 812 float 1 0
U 7ed7de52 frag u_time 816 float 1 0
U 7ed7de52 frag u_fog_inscatter 820 float 1 0
U 7ed7de52 frag u_fog_desat 824 float 1 0
U 7ed7de52 frag u_model_h 828 float 1 0
U 7ed7de52 frag u_view 832 mat4 1 0
U 7ed7de52 frag u_tint 896 vec3 1 0
U 7ed7de52 frag u_rough_scale 908 float 1 0
U 7ed7de52 frag u_emissive 912 float 1 0
U 7ed7de52 frag u_blade_base 928 vec3 1 0
U 7ed7de52 frag u_blade_tip 944 vec3 1 0
U 7ed7de52 frag u_blade_cols 956 float 1 0
U 7ed7de52 frag u_blade_tex_on 960 float 1 0
T 7ed7de52 u_arm 2
T 7ed7de52 u_blade_tex 3
T 7ed7de52 u_brdf 4
T 7ed7de52 u_diff 5
T 7ed7de52 u_irradiance 6
T 7ed7de52 u_nrm 7
T 7ed7de52 u_ortho 8
T 7ed7de52 u_prefilter 9
T 7ed7de52 u_shadow 10
T 7ed7de52 u_tershadow 11
T 7ed7de52 u_ts_height 12
P 7f096322 grass.vert model.frag #define FOLIAGE;#define BLADE;#define TILES;
B 7f096322 vert 0 4416
U 7f096322 vert u_view 0 mat4 1 0
U 7f096322 vert u_proj 64 mat4 1 0
U 7f096322 vert u_vp 128 mat4 1 0
U 7f096322 vert u_cam_pos 192 vec3 1 0
U 7f096322 vert u_time 204 float 1 0
U 7f096322 vert u_ts_origin 208 vec2 1 0
U 7f096322 vert u_ts_half 216 float 1 0
U 7f096322 vert u_ortho_on 220 float 1 0
U 7f096322 vert u_lake_level 224 float 1 0
U 7f096322 vert u_sea_level 228 float 1 0
U 7f096322 vert u_lake 240 vec4 1 0
U 7f096322 vert u_snow_line 256 float 1 0
U 7f096322 vert u_wind 260 float 1 0
U 7f096322 vert u_push 272 vec3 1 0
U 7f096322 vert u_tile 288 vec2 1 0
U 7f096322 vert u_tile_cells 296 int 1 0
U 7f096322 vert u_per_cell 300 int 1 0
U 7f096322 vert u_tiles 304 vec4 256 16
U 7f096322 vert u_s0 4400 float 1 0
U 7f096322 vert u_d0 4404 float 1 0
U 7f096322 vert u_radius 4408 float 1 0
U 7f096322 vert u_dbg 4412 int 1 0
I 7f096322 a_pos 0 vec3
I 7f096322 a_uv 2 vec2
B 7f096322 frag 1 964
U 7f096322 frag u_cascade_vp 0 mat4 5 64
U 7f096322 frag u_cascade_split 320 float 5 16
U 7f096322 frag u_cascade_range 400 float 5 16
U 7f096322 frag u_cascade_texel 480 float 5 16
U 7f096322 frag u_sun_dir 560 vec3 1 0
U 7f096322 frag u_sun_color 576 vec3 1 0
U 7f096322 frag u_cam_pos 592 vec3 1 0
U 7f096322 frag u_prefilter_levels 604 float 1 0
U 7f096322 frag u_fog_density 608 float 1 0
U 7f096322 frag u_fog_height_falloff 612 float 1 0
U 7f096322 frag u_fog_base 616 float 1 0
U 7f096322 frag u_clip_y 620 float 1 0
U 7f096322 frag u_spec_scale 624 float 1 0
U 7f096322 frag u_sky_rot 632 vec2 1 0
U 7f096322 frag u_ground_alb 640 vec3 1 0
U 7f096322 frag u_ground_alb_hi 656 vec3 1 0
U 7f096322 frag u_ground_hi_y 668 float 1 0
U 7f096322 frag u_ground_hi_w 672 float 1 0
U 7f096322 frag u_ibl_scale 688 vec3 1 0
U 7f096322 frag u_daylight 700 float 1 0
U 7f096322 frag u_fire_pos 704 vec3 1 0
U 7f096322 frag u_fire_color 720 vec3 1 0
U 7f096322 frag u_hand_pos 736 vec3 1 0
U 7f096322 frag u_hand_color 752 vec3 1 0
U 7f096322 frag u_hand_dir 768 vec3 1 0
U 7f096322 frag u_hand_cone 780 float 1 0
U 7f096322 frag u_hand_reach 784 float 1 0
U 7f096322 frag u_ts_origin 792 vec2 1 0
U 7f096322 frag u_ts_half 800 float 1 0
U 7f096322 frag u_ts_on 804 float 1 0
U 7f096322 frag u_force_cascade 808 int 1 0
U 7f096322 frag u_cloud_shadow 812 float 1 0
U 7f096322 frag u_time 816 float 1 0
U 7f096322 frag u_fog_inscatter 820 float 1 0
U 7f096322 frag u_fog_desat 824 float 1 0
U 7f096322 frag u_model_h 828 float 1 0
U 7f096322 frag u_view 832 mat4 1 0
U 7f096322 frag u_tint 896 vec3 1 0
U 7f096322 frag u_rough_scale 908 float 1 0
U 7f096322 frag u_emissive 912 float 1 0
U 7f096322 frag u_blade_base 928 vec3 1 0
U 7f096322 frag u_blade_tip 944 vec3 1 0
U 7f096322 frag u_blade_cols 956 float 1 0
U 7f096322 frag u_blade_tex_on 960 float 1 0
T 7f096322 u_arm 2
T 7f096322 u_blade_tex 3
T 7f096322 u_brdf 4
T 7f096322 u_diff 5
T 7f096322 u_irradiance 6
T 7f096322 u_nrm 7
T 7f096322 u_ortho 8
T 7f096322 u_prefilter 9
T 7f096322 u_shadow 10
T 7f096322 u_tershadow 11
T 7f096322 u_ts_height 12
P cb13f3c6 grass.vert model.frag #define FOLIAGE;#define BLADE;#define GBLADE;
B cb13f3c6 vert 0 324
U cb13f3c6 vert u_view 0 mat4 1 0
U cb13f3c6 vert u_proj 64 mat4 1 0
U cb13f3c6 vert u_vp 128 mat4 1 0
U cb13f3c6 vert u_cam_pos 192 vec3 1 0
U cb13f3c6 vert u_time 204 float 1 0
U cb13f3c6 vert u_ts_origin 208 vec2 1 0
U cb13f3c6 vert u_ts_half 216 float 1 0
U cb13f3c6 vert u_ortho_on 220 float 1 0
U cb13f3c6 vert u_lake_level 224 float 1 0
U cb13f3c6 vert u_sea_level 228 float 1 0
U cb13f3c6 vert u_lake 240 vec4 1 0
U cb13f3c6 vert u_snow_line 256 float 1 0
U cb13f3c6 vert u_wind 260 float 1 0
U cb13f3c6 vert u_push 272 vec3 1 0
U cb13f3c6 vert u_tile 288 vec2 1 0
U cb13f3c6 vert u_tile_cells 296 int 1 0
U cb13f3c6 vert u_per_cell 300 int 1 0
U cb13f3c6 vert u_s0 304 float 1 0
U cb13f3c6 vert u_d0 308 float 1 0
U cb13f3c6 vert u_radius 312 float 1 0
U cb13f3c6 vert u_px 316 float 1 0
U cb13f3c6 vert u_dbg 320 int 1 0
I cb13f3c6 a_pos 0 vec3
I cb13f3c6 a_uv 2 vec2
B cb13f3c6 frag 1 964
U cb13f3c6 frag u_cascade_vp 0 mat4 5 64
U cb13f3c6 frag u_cascade_split 320 float 5 16
U cb13f3c6 frag u_cascade_range 400 float 5 16
U cb13f3c6 frag u_cascade_texel 480 float 5 16
U cb13f3c6 frag u_sun_dir 560 vec3 1 0
U cb13f3c6 frag u_sun_color 576 vec3 1 0
U cb13f3c6 frag u_cam_pos 592 vec3 1 0
U cb13f3c6 frag u_prefilter_levels 604 float 1 0
U cb13f3c6 frag u_fog_density 608 float 1 0
U cb13f3c6 frag u_fog_height_falloff 612 float 1 0
U cb13f3c6 frag u_fog_base 616 float 1 0
U cb13f3c6 frag u_clip_y 620 float 1 0
U cb13f3c6 frag u_spec_scale 624 float 1 0
U cb13f3c6 frag u_sky_rot 632 vec2 1 0
U cb13f3c6 frag u_ground_alb 640 vec3 1 0
U cb13f3c6 frag u_ground_alb_hi 656 vec3 1 0
U cb13f3c6 frag u_ground_hi_y 668 float 1 0
U cb13f3c6 frag u_ground_hi_w 672 float 1 0
U cb13f3c6 frag u_ibl_scale 688 vec3 1 0
U cb13f3c6 frag u_daylight 700 float 1 0
U cb13f3c6 frag u_fire_pos 704 vec3 1 0
U cb13f3c6 frag u_fire_color 720 vec3 1 0
U cb13f3c6 frag u_hand_pos 736 vec3 1 0
U cb13f3c6 frag u_hand_color 752 vec3 1 0
U cb13f3c6 frag u_hand_dir 768 vec3 1 0
U cb13f3c6 frag u_hand_cone 780 float 1 0
U cb13f3c6 frag u_hand_reach 784 float 1 0
U cb13f3c6 frag u_ts_origin 792 vec2 1 0
U cb13f3c6 frag u_ts_half 800 float 1 0
U cb13f3c6 frag u_ts_on 804 float 1 0
U cb13f3c6 frag u_force_cascade 808 int 1 0
U cb13f3c6 frag u_cloud_shadow 812 float 1 0
U cb13f3c6 frag u_time 816 float 1 0
U cb13f3c6 frag u_fog_inscatter 820 float 1 0
U cb13f3c6 frag u_fog_desat 824 float 1 0
U cb13f3c6 frag u_model_h 828 float 1 0
U cb13f3c6 frag u_view 832 mat4 1 0
U cb13f3c6 frag u_tint 896 vec3 1 0
U cb13f3c6 frag u_rough_scale 908 float 1 0
U cb13f3c6 frag u_emissive 912 float 1 0
U cb13f3c6 frag u_blade_base 928 vec3 1 0
U cb13f3c6 frag u_blade_tip 944 vec3 1 0
U cb13f3c6 frag u_blade_cols 956 float 1 0
U cb13f3c6 frag u_blade_tex_on 960 float 1 0
T cb13f3c6 u_arm 2
T cb13f3c6 u_blade_tex 3
T cb13f3c6 u_brdf 4
T cb13f3c6 u_diff 5
T cb13f3c6 u_irradiance 6
T cb13f3c6 u_nrm 7
T cb13f3c6 u_ortho 8
T cb13f3c6 u_prefilter 9
T cb13f3c6 u_shadow 10
T cb13f3c6 u_tershadow 11
T cb13f3c6 u_ts_height 12
P b8cff226 grass.vert model.frag #define FOLIAGE;#define BLADE;#define GBLADE;#define TILES;
B b8cff226 vert 0 4420
U b8cff226 vert u_view 0 mat4 1 0
U b8cff226 vert u_proj 64 mat4 1 0
U b8cff226 vert u_vp 128 mat4 1 0
U b8cff226 vert u_cam_pos 192 vec3 1 0
U b8cff226 vert u_time 204 float 1 0
U b8cff226 vert u_ts_origin 208 vec2 1 0
U b8cff226 vert u_ts_half 216 float 1 0
U b8cff226 vert u_ortho_on 220 float 1 0
U b8cff226 vert u_lake_level 224 float 1 0
U b8cff226 vert u_sea_level 228 float 1 0
U b8cff226 vert u_lake 240 vec4 1 0
U b8cff226 vert u_snow_line 256 float 1 0
U b8cff226 vert u_wind 260 float 1 0
U b8cff226 vert u_push 272 vec3 1 0
U b8cff226 vert u_tile 288 vec2 1 0
U b8cff226 vert u_tile_cells 296 int 1 0
U b8cff226 vert u_per_cell 300 int 1 0
U b8cff226 vert u_tiles 304 vec4 256 16
U b8cff226 vert u_s0 4400 float 1 0
U b8cff226 vert u_d0 4404 float 1 0
U b8cff226 vert u_radius 4408 float 1 0
U b8cff226 vert u_px 4412 float 1 0
U b8cff226 vert u_dbg 4416 int 1 0
I b8cff226 a_pos 0 vec3
I b8cff226 a_uv 2 vec2
B b8cff226 frag 1 964
U b8cff226 frag u_cascade_vp 0 mat4 5 64
U b8cff226 frag u_cascade_split 320 float 5 16
U b8cff226 frag u_cascade_range 400 float 5 16
U b8cff226 frag u_cascade_texel 480 float 5 16
U b8cff226 frag u_sun_dir 560 vec3 1 0
U b8cff226 frag u_sun_color 576 vec3 1 0
U b8cff226 frag u_cam_pos 592 vec3 1 0
U b8cff226 frag u_prefilter_levels 604 float 1 0
U b8cff226 frag u_fog_density 608 float 1 0
U b8cff226 frag u_fog_height_falloff 612 float 1 0
U b8cff226 frag u_fog_base 616 float 1 0
U b8cff226 frag u_clip_y 620 float 1 0
U b8cff226 frag u_spec_scale 624 float 1 0
U b8cff226 frag u_sky_rot 632 vec2 1 0
U b8cff226 frag u_ground_alb 640 vec3 1 0
U b8cff226 frag u_ground_alb_hi 656 vec3 1 0
U b8cff226 frag u_ground_hi_y 668 float 1 0
U b8cff226 frag u_ground_hi_w 672 float 1 0
U b8cff226 frag u_ibl_scale 688 vec3 1 0
U b8cff226 frag u_daylight 700 float 1 0
U b8cff226 frag u_fire_pos 704 vec3 1 0
U b8cff226 frag u_fire_color 720 vec3 1 0
U b8cff226 frag u_hand_pos 736 vec3 1 0
U b8cff226 frag u_hand_color 752 vec3 1 0
U b8cff226 frag u_hand_dir 768 vec3 1 0
U b8cff226 frag u_hand_cone 780 float 1 0
U b8cff226 frag u_hand_reach 784 float 1 0
U b8cff226 frag u_ts_origin 792 vec2 1 0
U b8cff226 frag u_ts_half 800 float 1 0
U b8cff226 frag u_ts_on 804 float 1 0
U b8cff226 frag u_force_cascade 808 int 1 0
U b8cff226 frag u_cloud_shadow 812 float 1 0
U b8cff226 frag u_time 816 float 1 0
U b8cff226 frag u_fog_inscatter 820 float 1 0
U b8cff226 frag u_fog_desat 824 float 1 0
U b8cff226 frag u_model_h 828 float 1 0
U b8cff226 frag u_view 832 mat4 1 0
U b8cff226 frag u_tint 896 vec3 1 0
U b8cff226 frag u_rough_scale 908 float 1 0
U b8cff226 frag u_emissive 912 float 1 0
U b8cff226 frag u_blade_base 928 vec3 1 0
U b8cff226 frag u_blade_tip 944 vec3 1 0
U b8cff226 frag u_blade_cols 956 float 1 0
U b8cff226 frag u_blade_tex_on 960 float 1 0
T b8cff226 u_arm 2
T b8cff226 u_blade_tex 3
T b8cff226 u_brdf 4
T b8cff226 u_diff 5
T b8cff226 u_irradiance 6
T b8cff226 u_nrm 7
T b8cff226 u_ortho 8
T b8cff226 u_prefilter 9
T b8cff226 u_shadow 10
T b8cff226 u_tershadow 11
T b8cff226 u_ts_height 12
P 3733fc38 impostor.vert impostor.frag
B 3733fc38 vert 0 232
U 3733fc38 vert u_view 0 mat4 1 0
@ -3522,3 +3525,72 @@ T 46e2325c u_scene 7
T 46e2325c u_shadow 8
T 46e2325c u_tershadow 9
T 46e2325c u_ts_height 10
P b20fdcb5 grass_inst.vert model.frag #define FOLIAGE;#define BLADE;#define GBLADE;#define GINST;
B b20fdcb5 vert 0 160
U b20fdcb5 vert u_view 0 mat4 1 0
U b20fdcb5 vert u_proj 64 mat4 1 0
U b20fdcb5 vert u_time 128 float 1 0
U b20fdcb5 vert u_wind 132 float 1 0
U b20fdcb5 vert u_push 144 vec3 1 0
U b20fdcb5 vert u_dbg 156 int 1 0
I b20fdcb5 i_root 3 vec4
I b20fdcb5 i_shape 4 vec4
I b20fdcb5 i_ground 6 vec4
I b20fdcb5 a_pos 0 vec3
I b20fdcb5 i_tint 5 vec4
I b20fdcb5 a_uv 2 vec2
B b20fdcb5 frag 1 964
U b20fdcb5 frag u_cascade_vp 0 mat4 5 64
U b20fdcb5 frag u_cascade_split 320 float 5 16
U b20fdcb5 frag u_cascade_range 400 float 5 16
U b20fdcb5 frag u_cascade_texel 480 float 5 16
U b20fdcb5 frag u_sun_dir 560 vec3 1 0
U b20fdcb5 frag u_sun_color 576 vec3 1 0
U b20fdcb5 frag u_cam_pos 592 vec3 1 0
U b20fdcb5 frag u_prefilter_levels 604 float 1 0
U b20fdcb5 frag u_fog_density 608 float 1 0
U b20fdcb5 frag u_fog_height_falloff 612 float 1 0
U b20fdcb5 frag u_fog_base 616 float 1 0
U b20fdcb5 frag u_clip_y 620 float 1 0
U b20fdcb5 frag u_spec_scale 624 float 1 0
U b20fdcb5 frag u_sky_rot 632 vec2 1 0
U b20fdcb5 frag u_ground_alb 640 vec3 1 0
U b20fdcb5 frag u_ground_alb_hi 656 vec3 1 0
U b20fdcb5 frag u_ground_hi_y 668 float 1 0
U b20fdcb5 frag u_ground_hi_w 672 float 1 0
U b20fdcb5 frag u_ibl_scale 688 vec3 1 0
U b20fdcb5 frag u_daylight 700 float 1 0
U b20fdcb5 frag u_fire_pos 704 vec3 1 0
U b20fdcb5 frag u_fire_color 720 vec3 1 0
U b20fdcb5 frag u_hand_pos 736 vec3 1 0
U b20fdcb5 frag u_hand_color 752 vec3 1 0
U b20fdcb5 frag u_hand_dir 768 vec3 1 0
U b20fdcb5 frag u_hand_cone 780 float 1 0
U b20fdcb5 frag u_hand_reach 784 float 1 0
U b20fdcb5 frag u_ts_origin 792 vec2 1 0
U b20fdcb5 frag u_ts_half 800 float 1 0
U b20fdcb5 frag u_ts_on 804 float 1 0
U b20fdcb5 frag u_force_cascade 808 int 1 0
U b20fdcb5 frag u_cloud_shadow 812 float 1 0
U b20fdcb5 frag u_time 816 float 1 0
U b20fdcb5 frag u_fog_inscatter 820 float 1 0
U b20fdcb5 frag u_fog_desat 824 float 1 0
U b20fdcb5 frag u_model_h 828 float 1 0
U b20fdcb5 frag u_view 832 mat4 1 0
U b20fdcb5 frag u_tint 896 vec3 1 0
U b20fdcb5 frag u_rough_scale 908 float 1 0
U b20fdcb5 frag u_emissive 912 float 1 0
U b20fdcb5 frag u_blade_base 928 vec3 1 0
U b20fdcb5 frag u_blade_tip 944 vec3 1 0
U b20fdcb5 frag u_blade_cols 956 float 1 0
U b20fdcb5 frag u_blade_tex_on 960 float 1 0
T b20fdcb5 u_arm 2
T b20fdcb5 u_blade_tex 3
T b20fdcb5 u_brdf 4
T b20fdcb5 u_diff 5
T b20fdcb5 u_irradiance 6
T b20fdcb5 u_nrm 7
T b20fdcb5 u_prefilter 8
T b20fdcb5 u_shadow 9
T b20fdcb5 u_tershadow 10
T b20fdcb5 u_ts_height 11