render3d: a grass kind - the GPU blades' per-kind numbers are a GrassKind record the game hands over (grass_kind_set), not constants
GrassKind (grass_kind.ludic) carries what grass.ludic, grass_gpu.ludic, grass.vert, grass_cull.comp and model.frag's BLADE path held as constants: the cell, s0 / d0 / radius, the row bands and rows, the blade profile (neck, root, swell, tip, bend), the heights, clumps, widths and arch, where it grows (slope, snow, the photograph's test), the root / tip / gone-to-seed colours, the far tufts, the root occlusion, the roughness, the sheen and the wind. Its defaults are those constants exactly, so a game that sets nothing draws as before. The shaders read them as u_gk_* (the cull as five more Params vec4s, 288 bytes); grass_reset.comp writes each band's index count so a kind of other rows reaches the draw in order. grass_quality holds the kind to a settings tier (never denser, never farther); R3D_GRASS_* still win. grass_profile_w / _bend are the one profile, for the meshes and a game's preview. grass.mesh takes only the cell: the rest of it is an older copy that already differs from grass.vert, left as it draws. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
d9a73d63bd
commit
e908672034
25 changed files with 335 additions and 75 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.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -926,7 +926,7 @@ T 74258189 u_tershadow 7
|
|||
T 74258189 u_tershadow_aux 8
|
||||
T 74258189 u_ts_height 9
|
||||
P d48d6a48 grass.mesh model.frag #define FOLIAGE;#define BLADE;#define MESH;
|
||||
B d48d6a48 vert 0 4420
|
||||
B d48d6a48 vert 0 4448
|
||||
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
|
||||
|
|
@ -949,7 +949,8 @@ U d48d6a48 vert u_d0 4404 float 1 0
|
|||
U d48d6a48 vert u_radius 4408 float 1 0
|
||||
U d48d6a48 vert u_px 4412 float 1 0
|
||||
U d48d6a48 vert u_dbg 4416 int 1 0
|
||||
B d48d6a48 frag 1 1028
|
||||
U d48d6a48 vert u_gk_ortho 4432 vec4 1 0
|
||||
B d48d6a48 frag 1 1088
|
||||
U d48d6a48 frag u_cascade_vp 0 mat4 5 64
|
||||
U d48d6a48 frag u_cascade_split 320 float 5 16
|
||||
U d48d6a48 frag u_cascade_range 400 float 5 16
|
||||
|
|
@ -998,6 +999,9 @@ U d48d6a48 frag u_blade_base 992 vec3 1 0
|
|||
U d48d6a48 frag u_blade_tip 1008 vec3 1 0
|
||||
U d48d6a48 frag u_blade_cols 1020 float 1 0
|
||||
U d48d6a48 frag u_blade_tex_on 1024 float 1 0
|
||||
U d48d6a48 frag u_gk_seed 1040 vec4 1 0
|
||||
U d48d6a48 frag u_gk_look 1056 vec4 1 0
|
||||
U d48d6a48 frag u_gk_mat 1072 vec4 1 0
|
||||
T d48d6a48 u_arm 2
|
||||
T d48d6a48 u_blade_tex 3
|
||||
T d48d6a48 u_brdf 4
|
||||
|
|
@ -1015,7 +1019,7 @@ T d48d6a48 u_tp_nrm 15
|
|||
T d48d6a48 u_tp_page 16
|
||||
T d48d6a48 u_ts_height 17
|
||||
P cb13f3c6 grass.vert model.frag #define FOLIAGE;#define BLADE;#define GBLADE;
|
||||
B cb13f3c6 vert 0 356
|
||||
B cb13f3c6 vert 0 448
|
||||
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
|
||||
|
|
@ -1040,9 +1044,14 @@ U cb13f3c6 vert u_d0 340 float 1 0
|
|||
U cb13f3c6 vert u_radius 344 float 1 0
|
||||
U cb13f3c6 vert u_px 348 float 1 0
|
||||
U cb13f3c6 vert u_dbg 352 int 1 0
|
||||
U cb13f3c6 vert u_gk_tall 368 vec4 1 0
|
||||
U cb13f3c6 vert u_gk_grow 384 vec4 1 0
|
||||
U cb13f3c6 vert u_gk_clump 400 vec4 1 0
|
||||
U cb13f3c6 vert u_gk_ground 416 vec4 1 0
|
||||
U cb13f3c6 vert u_gk_ortho 432 vec4 1 0
|
||||
I cb13f3c6 a_pos 0 vec3
|
||||
I cb13f3c6 a_uv 2 vec2
|
||||
B cb13f3c6 frag 1 1028
|
||||
B cb13f3c6 frag 1 1088
|
||||
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
|
||||
|
|
@ -1091,6 +1100,9 @@ U cb13f3c6 frag u_blade_base 992 vec3 1 0
|
|||
U cb13f3c6 frag u_blade_tip 1008 vec3 1 0
|
||||
U cb13f3c6 frag u_blade_cols 1020 float 1 0
|
||||
U cb13f3c6 frag u_blade_tex_on 1024 float 1 0
|
||||
U cb13f3c6 frag u_gk_seed 1040 vec4 1 0
|
||||
U cb13f3c6 frag u_gk_look 1056 vec4 1 0
|
||||
U cb13f3c6 frag u_gk_mat 1072 vec4 1 0
|
||||
T cb13f3c6 u_arm 2
|
||||
T cb13f3c6 u_blade_tex 3
|
||||
T cb13f3c6 u_brdf 4
|
||||
|
|
@ -1108,7 +1120,7 @@ T cb13f3c6 u_tp_nrm 15
|
|||
T cb13f3c6 u_tp_page 16
|
||||
T cb13f3c6 u_ts_height 17
|
||||
P b8cff226 grass.vert model.frag #define FOLIAGE;#define BLADE;#define GBLADE;#define TILES;
|
||||
B b8cff226 vert 0 4452
|
||||
B b8cff226 vert 0 4544
|
||||
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
|
||||
|
|
@ -1134,9 +1146,14 @@ U b8cff226 vert u_d0 4436 float 1 0
|
|||
U b8cff226 vert u_radius 4440 float 1 0
|
||||
U b8cff226 vert u_px 4444 float 1 0
|
||||
U b8cff226 vert u_dbg 4448 int 1 0
|
||||
U b8cff226 vert u_gk_tall 4464 vec4 1 0
|
||||
U b8cff226 vert u_gk_grow 4480 vec4 1 0
|
||||
U b8cff226 vert u_gk_clump 4496 vec4 1 0
|
||||
U b8cff226 vert u_gk_ground 4512 vec4 1 0
|
||||
U b8cff226 vert u_gk_ortho 4528 vec4 1 0
|
||||
I b8cff226 a_pos 0 vec3
|
||||
I b8cff226 a_uv 2 vec2
|
||||
B b8cff226 frag 1 1028
|
||||
B b8cff226 frag 1 1088
|
||||
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
|
||||
|
|
@ -1185,6 +1202,9 @@ U b8cff226 frag u_blade_base 992 vec3 1 0
|
|||
U b8cff226 frag u_blade_tip 1008 vec3 1 0
|
||||
U b8cff226 frag u_blade_cols 1020 float 1 0
|
||||
U b8cff226 frag u_blade_tex_on 1024 float 1 0
|
||||
U b8cff226 frag u_gk_seed 1040 vec4 1 0
|
||||
U b8cff226 frag u_gk_look 1056 vec4 1 0
|
||||
U b8cff226 frag u_gk_mat 1072 vec4 1 0
|
||||
T b8cff226 u_arm 2
|
||||
T b8cff226 u_blade_tex 3
|
||||
T b8cff226 u_brdf 4
|
||||
|
|
@ -2015,7 +2035,7 @@ I f4a2b586 a_pos 0 vec3
|
|||
I f4a2b586 i_pos 3 vec4
|
||||
I f4a2b586 a_nrm 1 vec3
|
||||
I f4a2b586 a_uv 2 vec2
|
||||
B f4a2b586 frag 1 1028
|
||||
B f4a2b586 frag 1 1088
|
||||
U f4a2b586 frag u_cascade_vp 0 mat4 5 64
|
||||
U f4a2b586 frag u_cascade_split 320 float 5 16
|
||||
U f4a2b586 frag u_cascade_range 400 float 5 16
|
||||
|
|
@ -2064,6 +2084,9 @@ U f4a2b586 frag u_blade_base 992 vec3 1 0
|
|||
U f4a2b586 frag u_blade_tip 1008 vec3 1 0
|
||||
U f4a2b586 frag u_blade_cols 1020 float 1 0
|
||||
U f4a2b586 frag u_blade_tex_on 1024 float 1 0
|
||||
U f4a2b586 frag u_gk_seed 1040 vec4 1 0
|
||||
U f4a2b586 frag u_gk_look 1056 vec4 1 0
|
||||
U f4a2b586 frag u_gk_mat 1072 vec4 1 0
|
||||
T f4a2b586 u_arm 2
|
||||
T f4a2b586 u_blade_tex 3
|
||||
T f4a2b586 u_brdf 4
|
||||
|
|
@ -3909,7 +3932,7 @@ 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 1028
|
||||
B b20fdcb5 frag 1 1088
|
||||
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
|
||||
|
|
@ -3958,6 +3981,9 @@ U b20fdcb5 frag u_blade_base 992 vec3 1 0
|
|||
U b20fdcb5 frag u_blade_tip 1008 vec3 1 0
|
||||
U b20fdcb5 frag u_blade_cols 1020 float 1 0
|
||||
U b20fdcb5 frag u_blade_tex_on 1024 float 1 0
|
||||
U b20fdcb5 frag u_gk_seed 1040 vec4 1 0
|
||||
U b20fdcb5 frag u_gk_look 1056 vec4 1 0
|
||||
U b20fdcb5 frag u_gk_mat 1072 vec4 1 0
|
||||
T b20fdcb5 u_arm 2
|
||||
T b20fdcb5 u_blade_tex 3
|
||||
T b20fdcb5 u_brdf 4
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue