Von greenhybrid - Montag, 15. Mai 2006 um 09:24

Das ist ein Bild des ersten Rewrites meines Tracers. Nun bin ich wieder an dem Punkt angekommen, wo ich ihn erneut neu schreibe (das ist nicht soviel Arbeit bei den paar hundert Zeilen, die ein einfacher Tracer braucht). Als letzten Atemzug präsentiere ich euch das Höchste, was der Release 2 hervorgebracht hat, ein wenig Monte-Carlo-Tracing.

Auf meiner Seite findet ihr fast vierzig weitere Snapshots: www.greenhybrid.net.

Zum Bewerten musst du registriert und angemeldet sein.
1. Von Schrompf am Montag, 15. Mai 2006 um 11:13:

Hübsch. Ist doch erstaunlich, wie ein globaler Ansatz bei der Beleuchtung die Optik verbessern kann. Für eine wirkliche +3 fehlen mir allerdings noch ein paar technische Details, zum Beispiel die Art der Lichtberechnung oder die Rechenzeit für das Bild.

Anhand des Gekriesels auf den Oberflächen vermute ich, Du streust von jedem Punkt aus eine Handvoll zufällige Strahlen in den Raum und schaust, wieviel Licht von dort kommt. Wahrscheinlich auch gewichtet mit dem Cosinus zur Senkrechte. Wenn Du das iterativ machen würdest, also auf diese Art mehrfach über die ganze Szene gehst und dabei jeweils das akkumulierte Licht auf allen Oberflächen mit einberechnest, müsstest Du auch noch eine schöne indirekte Beleuchtung mit reinbekommen. So daß zum Beispiel der grüne Körper rechts unten ein wenig grünes Licht auf die Rückseite des rosa Körpers davor zurückwirft.

Bye, Thomas



Zum Bewerten musst du registriert und angemeldet sein.
2. Von greenhybrid am Montag, 15. Mai 2006 um 12:27:

ich verwende eine naive monte-carlo simulation, soweit richtig erkannt, deswegen dauert das ganze ziemlich lange ( ca. 4 Stunden ). grundsätzlich wäre das möglich, dann wäre aber die Zeit explodiert.

Der Winkel findet keine Beachtung, es wird nur getestet, wieviele Lichtstrahlen einen Punkt treffen, ich war ehrlich gesagt selbst überrascht, das keine Winkelberechnung nötig ist, im Endeffekt ist es aber durchaus logisch nachvollziehbar, denn eine zum Licht ausgerichtete Oberfläche wird natürlich von mehr Strahlen getroffen als eine schräge.



Zum Bewerten musst du registriert und angemeldet sein.
3. Von Schrompf am Montag, 15. Mai 2006 um 12:17:

Hmm... probiere mal die Gewichtung der Einzelstrahlen mit dem Cosinus. Das entspricht dem echten geometrischen Zusammenhang und dürfte nebenbei auch das Gekriesel beseitigen bzw. dämpfen. Auf der HP habe ich gelesen, daß Du teilweise bis zu 6000 Strahlen pro Pixel verschickst... eigentlich müssten 256 reichen, weil Du sowieso nicht mehr als 8 Bit Genauigkeit im Bild unterbringen kannst. Eine regelmäßige Streuung der Strahlung auf einer Halbkugel und eben jene Cosinus-Gewichtung müssten eigentlich erreichen können, daß Du auch mit 256 Strahlen auskommst.

Nuja, nur ein paar Ideen. Die +2 von mir hast Du ja bereits.

Bye, Thomas



Zum Bewerten musst du registriert und angemeldet sein.
4. Von greenhybrid am Montag, 15. Mai 2006 um 12:38:

8 Bit Genauigkeit stimmt nicht ganz. bis zum Release eines Pixels an die Screen-Surface handle ich die Farben als float[4]. Dinge wie Importance-Sampling und Photon-Maps würden das Gekriesel auch stark reduzieren.

Das mit dem Cosinus schau ich mir auf jeden Fall mal an



Zum Bewerten musst du registriert und angemeldet sein.
5. Von greenhybrid am Montag, 15. Mai 2006 um 12:25:

P.S.: Die regelmäßige Streuung sollte durch den Twister-Algorithmus gegeben sein. Das Gekriesel wird glaube ich durch den Kosinus nicht reduziert, es ist ja auch kriselig bei auf einer Ebene benachbarten Intersections.



Zum Bewerten musst du registriert und angemeldet sein.
6. Von TGGC am Montag, 15. Mai 2006 um 15:37:

Neben meinem üblichen Kritikpunkt, dem kurzen Erklärungstext, möchte ich mal noch was zur GI sagen. Ich sehe nämlich keine. Der Witz an GI ist doch da nicht nur direkte Beleuchtung sondern auch indirekte Beleuchtung möglich ist. Also das Licht von links reflektiert an der Decke und dann ist es rechts neben der Säule nicht komplett dunkel. Also entweder ist die Quali ein bissl zu schlecht um das zu erkennen, oder das kann der Raytracer wirklich nicht.



Zum Bewerten musst du registriert und angemeldet sein.
7. Von greenhybrid am Montag, 15. Mai 2006 um 15:50:

sry TGGC, aber von GI hab ich nun wirklich nichts gesagt ;)



Zum Bewerten musst du registriert und angemeldet sein.
8. Von zet am Montag, 15. Mai 2006 um 18:33:

Benutzt du irgendwelche Beschleunigerstrukturen wie Octrees oder so?



Zum Bewerten musst du registriert und angemeldet sein.
9. Von greenhybrid am Montag, 15. Mai 2006 um 19:42:

Ich verwende einen kd-baum ( ein achsenparalleler bsp-baum ) mit iterativem ( = nicht rekursivem ) Traversal. Den Baum baue ich mit SAH ( = Surface Area Heuristics ).



Zum Bewerten musst du registriert und angemeldet sein.
10. Von Schrompf am Dienstag, 16. Mai 2006 um 01:02:

Klingt wie Octtree.



Zum Bewerten musst du registriert und angemeldet sein.
11. Von greenhybrid am Dienstag, 16. Mai 2006 um 09:58:

octree = 8-fach split

bsp = kd = 2-fach split



Zum Bewerten musst du registriert und angemeldet sein.
Kommentartext:
Zum Kommentieren musst du registriert und angemeldet sein.