Thomas Huijzer

Slikveld 22
3311VT Dordrecht

+31 (0)6 - 52 18 06 31
thomas@thuijzer.nl
PGP key
Of contact me via Signal

IBAN: NL93INGB0006752359
KvK: 57865841
btw: NL181253240B02

user@thuijzer.nl:/home/blog/javascript_path_tracer/

Javascript Path Tracer

Om me meer te verdiepen in het (foto)realistisch renderen van 3D modellen heb ik een path tracer in Javascript geschreven.

Path tracing is een vorm van ray tracing waarbij je op zoek gaat naar de energie van lichtbronnen die uiteindelijk in de camera terecht komt.
In het kort worden de volgende stappen gevolgd:

  1. Er wordt een 'camera-pixel' gekozen om te renderen.
  2. Vanuit de camera wordt door de pixel een 'straal' (ray) de ruimte in geschoten.
  3. Er wordt gecontroleerd of een 3D-object door de straal geraakt wordt.
  4. Zo ja, dan wordt gecontroleerd of het geraakte punt een lamp kan zien.
  5. Zo ja, dan wordt berekend hoeveel licht (energie) van de lamp terug kaatst richting de camera.
  6. Daarna wordt de straal via het geraakte 3D-object verder de ruimte in gestuiterd.
  7. Vanaf punt 3 wordt dit herhaald, totdat er vaak genoeg 'gestuiterd' is.

Wanneer je het bovenstaande voor een pixel hebt gedaan, heb je 1 sample genomen. Omdat licht vaak in willekeurige richtingen stuitert, heb je aan 1 sample niet genoeg. Vaak krijg je pas een nauwkeurige meting wanneer je meer dan 200 samples per pixel berekent.

Het resultaat is hier onder te zien. Voor elke pixel zijn hier meer dan 500 samples genomen.

Javascript Path Tracer

Wil je het zelf ook renderen? De path tracer is hier te vinden.

Reacties


Plaats een reactie