Terrain texture bake: per-region coarse bake + near-camera page cache #811
Labels
No labels
amd
avatars
bug
builder
cannot-reproduce
crash
epic
feature
from-viewer
gl-removal
known-limitation
monitoring
parity
perf
platform
priority
critical
priority
high
priority
low
priority
medium
provenance
rendering
rt
status
in-progress
status
testing
status
up-next
triage
ui
upstream
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
sky_line/Slipstream#811
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Terrain pixels re-fetch and blend all 4 terrain materials every frame (up to 16 texture fetches per pixel, x3 with hex tiling), and the terrain G-buffer shader needs 72 registers (112 with hex) against 48 for everything else.
Design
Sharing baked tiles between segments was considered and dropped: tiles only match when composition and elevation blend weights match, which is rare outside flat uniform ground; the detail textures themselves are already shared.
Measure: terrain G-buffer time and registers vs the live path; VRAM use; bake cost when moving and when terrain is edited.
Context: measured on a GTX 1080 (Pascal) at 4K with the test-control channel and the shader clock (RenderVKShaderClockLighting) / pipeline stats (RenderVKPipelineStats). The frame is GPU-bound but not bandwidth-bound (memory controller ~36% busy on the 1080, ~14% on a 5090): it is latency / occupancy bound, so trading a little memory traffic for fewer registers and fewer dependent loads should help every GPU generation.
Fixed in 1.4.1 (
997c0ea315). Reopen if you still see it.