Wat is dit? Naar aanleiding van een aantal discussies in de Half-Life2, Doom 3, Far Cry en STALKER topics over de technologie achter de verschillende engines nu topic. De bedoeling is dat er gefundeerd (!) gediscussieerd wordt, posts a la "Doom 3 heeft betere graphics, maar Half-Life 2 betere gameplay!!!11" of "Ik vind Far Cry er lelijk uitzien" worden niet gewaardeerd. ![]() Waar gaan we het over hebben? De technieken achter 3d, geluid, physics en andere effecten van moderne en komende engines. Er mag graag technisch gepraat worden over OpenGL, EAX en physics, tenslotte is dit een tech forum. Disclaimer Zelf ben ik erg geïnteresseerd in het renderen. Ik heb zelf een simpele software renderer in Java geschreven en ben nu bezig met een OpenGL engine geschreven in C++ (source code wil ik graag delen). Ik ben echter geen expert op dit gebied! Ik weet nog lang niet genoeg over renderen om hier een foutloos verhaal neer te kunnen zetten. De bedoeling van dit topic is dan ook om te leren hoe het wel zit. Commentaar van mensen die het wel weten is dus van harte welkom! Referenties Hier een paar verwijzingen naar sites die interessant zijn voor mensen die wat meer inzicht in de technische kant van games willen hebben. Deze lijst wil ik graag aanvullen met jullie favoriete sites! • Gamedev.net - Mooie verzameling artikels en tutorials over game programming. • Practical and Robust Shadow Volumes - Site van nVidia met een (erg technische!) email van John Carmack |
Kickoff - Doom 3 rendering
Om te beginnen wil ik het hebben over mijn all time favoriete onderwerp laatste tijd: De Doom 3 engine.
John Carmack, iedereen bekend als de hoofd programmeur van id, begon vier jaar geleden met zijn volgende engine. Deze zou gebruik maken van shadow volumes om zo realistische schaduw effecten te maken.
Tot op dit moment worden de meeste schaduw effecten van tevoren berekend dmv lightmaps. Het probleem hiermee is dat je geen bewegende lichtbronnen kan gebruiken of schaduwen geleidelijk kan laten verlopen bij animaties zoals het openen van een deur.
Uiteraard zijn daar een hoop trucs voor te verzinnen! Als we kijken naar Far Cry zien we dat bewegende schaduw effecten al mogelijk zijn. Echter, ook in Far Cry zijn alleen de schaduwen van dynamische objecten (tegenstanders, kisten, etc) ook dynamisch. De schaduwen van statische objecten (zoals muren en generatoren) zijn zelf ook statisch.
Enter Doom 3.
Voor deze engine zijn alle objecten gelijk wat betreft het berekenen van licht en schaduw. Dat betekent dat bij een zwaaiend licht ook de schaduw van bijv. een toilet (
Det kost echter wel extreem veel rekenkracht (omdat je NIETS van tevoren kan berekenen, alles moet on the fly), voor drukke buitenlocaties is deze engine dan ook nog (!) niet geschikt.
Mijn mening:
Dit is gewoon de volgende stap in de evolutie van 3d engines. Half-Life 2 en zelfs Far Cry zijn nog steeds gebaseerd op de technologie die ingevoerd werd met Quake I. Uiteraard zijn veel effecten toegevoegd en upgrades doorgevoerd.
Deze werken echter niet altijd even goed: In Far Cry bewegen niet alle schaduwen en in Half-Life 2 zie je bijvoorbeeld een mannetje achter een muur staan (in de schaduw) en toch een eigen schaduw hebben.
Of hij loopt door een straal licht dat door een raam komt heen en wordt afwisselend compleet verlicht of dus niet.
Doom 3 heeft de eerste engine die deze "problemen" fundamenteel oplost door een stap verder te gaan. Weliswaar kunnen nog geen grote buitenlocaties met deze technologie gerendert worden. Over een paar jaar zal de hardware echter ver genoeg zijn.
Net als de Quake IIIs en Half-Life 2s krijgen we dan engines die voort bouwen op de ideeën die hier voor het eerst gebruikt worden om fantastische beelden te renderen.
ASCII stupid question, get a stupid ANSI!