feat(client): terrain hillshade — shade the ground so relief reads (#239) #242
No reviewers
Labels
No labels
alpha:wave-0
alpha:wave-1
alpha:wave-2
alpha:wave-3
area:assets
area:combat
area:ecology
area:infra
area:render
area:scripting
area:ui
area:world
enhancement
epic
migration
post-alpha
roadmap
tech-debt
type:bug
type:chore
type:design
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
marco/IsoMmo!242
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/terrain-hillshade"
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?
Summary
Il terreno viene sollevato in Z (heightfield) ma senza ombreggiatura l'altezza era invisibile su terreno uniforme (una tile grigia alzata su grigio). Questo aggiunge un hillshade per-vertice:
GroundBlendRenderercalcola una shade dal gradiente di Z locale (differenze finite suGroundZAt→ normale · luce obliqua da NW), la impacchetta nel Color del vertice, e il ground shader la moltiplica (col *= input.Color.rgb). Costo trascurabile (nessun sample GPU extra) → rilievo e coste finalmente si vedono, 60fps.content/ground_blend.fx(+.xnbricompilato via MGCB):MainPSmoltiplica per la shade del vertice.GroundBlendRenderer:Hillshade()per-vertice + luce/ambient tunabili (LightDirNW,AmbientShade0.55,SlopeScale0.18).Screenshots / recording
Hillshade attivo sul massiccio vulcanico: i pendii ora si vedono come rilievo (ombreggiati), non più piatti. Terreno OK, 60fps.
Costa d'erba piatta: l'interno resta uniforme (giusto — nessun gradiente), il rilievo si legge solo dove il terreno cambia quota.
Catturati pilotando il client (harness, DB fresco): vulcano
(7563,5034)e costa spawn.How it was tested
dotnet testverde, CSharpier pulito.Checklist
just lintpasses (CSharpier + analyzers, zero warnings)just testis greenChiude #239. Nota: l'overdraw #240 (blend costoso sui frammenti occlusi nelle zone di rilievo) resta aperto — i fix depth-based non funzionano su DesktopGL/SM3 (documentato su #240); micro-stutter tollerabile intanto.