- 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>
38 lines
1.2 KiB
Text
38 lines
1.2 KiB
Text
# ============================================================================
|
|
# ludic.render3d — a physically based 3D renderer on Gl.* (OpenGL 4.1 core).
|
|
# Import this one file, and register what a frame draws: r3d_on_draw, r3d_on_casters and, for a
|
|
# streamed layer, r3d_on_stream_fill (hooks.ludic).
|
|
# ============================================================================
|
|
numbers float # the renderer's numbers are floats whoever imports it
|
|
import "env.ludic"
|
|
import "hooks.ludic"
|
|
import "fmath.ludic"
|
|
import "gpu.ludic"
|
|
import "gpu_manifest.ludic"
|
|
import "gpu_vk.ludic"
|
|
import "gpu_vk_res.ludic"
|
|
import "prof.ludic"
|
|
import "drawstats.ludic"
|
|
import "programs.ludic"
|
|
import "texture.ludic"
|
|
import "mesh.ludic"
|
|
import "gpu_vk_draw.ludic"
|
|
import "camera.ludic"
|
|
import "sky.ludic"
|
|
import "daylight.ludic"
|
|
import "terrain.ludic"
|
|
import "overlay.ludic"
|
|
import "shadow.ludic"
|
|
import "post.ludic"
|
|
import "quat.ludic"
|
|
import "gltf.ludic"
|
|
import "skin.ludic"
|
|
import "scatter.ludic"
|
|
import "actor.ludic"
|
|
import "stream.ludic"
|
|
import "grass.ludic"
|
|
import "grass_gpu.ludic"
|
|
import "water.ludic"
|
|
import "streamline.ludic"
|
|
import "render.ludic"
|
|
import "safe_api.ludic"
|