top of page

Licht in een voxelwereld: echte lampen of flood fill?

Foto van schrijver: Marcel Dütscher
Marcel Dütscher
27 jun
1 minuten om te lezen

Een speler zet een gloeilamp in zijn basis. Wat gebeurt er technisch? Deze onschuldige vraag leidde tot een fundamentele keuze – en het antwoord is een mooi voorbeeld van hoe de “modernere” oplossing niet altijd de betere is.


Optie A: echte Unity-lichten. Elk gloeiend blok wordt een puntlichtbron, de engine rekent alles uit. Ziet er geweldig uit – maar schaalt niet. In een voxelwereld kunnen honderden gloeiende blokken in beeld zijn; realtime puntlichten in zulke aantallen laten elke GPU zweten, zeker in de browserversie.


Optie B: flood-fill-licht. De klassieker van het genre: licht is een getalwaarde per blok die zich vanaf de bron verspreidt en bij elke stap afneemt. Spotgoedkoop, willekeurig veel bronnen – maar het resultaat ziet er plat uit, want het licht heeft geen richting. Een muur naast de lamp is net zo helder als het oppervlak eronder.


Onze keuze: flood fill met richting. We bleven bij de flood-fill-aanpak, maar leerden hem richtingsinformatie: het licht weet uit welke richting het komt, en oppervlakken worden daardoor verschillend verlicht. Het resultaat wordt tijdens het meshen in de chunk-mesh gebakken – tijdens het spelen kost het praktisch niets, maar het ziet er merkbaar driedimensionaler uit dan klassiek blokkenlicht.


De les daaruit nemen we sindsdien overal mee: vraag eerst wat het echte probleem van het genre is (hier: heel veel bronnen, statische geometrie) en kies dan pas de technologie. Echte lichten losten een probleem op dat we niet hadden – en zouden er een scheppen dat we niet kunnen oplossen.

Recente blogposts

Alles weergeven

Opmerkingen


Het is niet meer mogelijk om opmerkingen te plaatsen bij deze post. Neem contact op met de website-eigenaar voor meer info.
bottom of page