My little Raytracer - ORCA
-
Hier ist schon so viel Lob gekommen... da muss ich mich einfach anschließen: Ich bin schwer beeindruckt!
Ich hoffe, Du machst noch ein ganzes Stück weiter mit diesem Projekt.
-
Das sieht sehr cool aus.
Ich bastele im Moment auch an einem Raytracer (eine Übung für Computergrafik & Bildverarbeitung in meiner FH). Macht echt Spaß sowas ...
Objekttypen: Kugel, Ebene, Polyeder (alles, was durch Ebenen abgegrenzt werden kann, wie z.B. Würfel, Pyramiden)
Lichttypen: Point und Sphere (Soft-Shadows, Anzahl der Samples einstellbar)
Materialien: "Normal" mit Spiegelung, diffuser Spiegelung (Anzahl der Samples und Unschärfe einstellbar), Schachbrett (kombiniert 2 Materialien)
Anti-Aliasing mit beliebigen Sub-Pixel-Mustern.
Hier zwei Bilder:
http://img512.imageshack.us/img512/8070/shot3bh8.png
http://img522.imageshack.us/img522/7098/shot4yz8.pngDie Bilder wurden mit 3 AA-Samples pro Pixel gerendert und 2 Samples für die diffuse Spiegelung und die Soft-Shadows. Wenn man die Anzahl der Samples erhöht, verschwindet das Rauschen, aber es dauert natürlich auch länger. Die Bilder haben nur ein paar Sekunden gebraucht. Es gibt aber auch noch keine räumlichen Datenstrukturen zur Optimierung.
-
Dann will ich auch mal nen aktuellen Screenshot zu meinem Raytracer posten, den ich gerade für nen Uni Praktikum entwickle:
http://www.infoboard.org/screenshots/ray2.JPGHat die üblichen Dinge wie Reflektionen, Refraktionen, nen Meshloader, KD-Trees als Beschleunigungsstrukuren usw usw.
-
@this->that: nice.. schaut gut aus! Leider hat meiner mom noch keinen KD-tree.. werde mich in (sehr) naher zukunft erst mal an nem Octree versuchen.
@TomasRiker: jo.. Diffuse Reflection wollte ich auch einbauen.. (Diffuse Reflection war sogar der Antrieb für diesen Raytracer^^ Ich hab nen Kugelschreiber angeguckt,und dachte mir"hey das will ich nachbauen")
Wenn du wilst, kannst du den code für meinen Meshloader haben (iust aber recht beschränckt.. sehr sogar.. nur für nen eigendes Meshformat, das auf dem Silo dateiformat basiert, aber durch nen konverte gejagt wird, keine UVs und Keine SMoothgroups)@Gregor: das hört man gerne^^ thx..
-
this->that schrieb:
Dann will ich auch mal nen aktuellen Screenshot zu meinem Raytracer posten, den ich gerade für nen Uni Praktikum entwickle:
http://www.infoboard.org/screenshots/ray2.JPGHat die üblichen Dinge wie Reflektionen, Refraktionen, nen Meshloader, KD-Trees als Beschleunigungsstrukuren usw usw.
Respekt!
Man, ich hatte auch schon mal dran gedacht, sowas zu machen. Aber dafür bin ich dann doch zu doof.

-
is net besonders schwer.. sogar ich habs geschaft nen grundstein zu legen^^
Das grundgerüst ist an einem Tag zu machen.. no problem..
-
Nur zur Ergänzung für die Interessierten:
Das OMPF Forum http://ompf.org/forum ist ein Tummelplatz für echte Raytraycing-Cracks. Da kann man sehr viel lernen über (Realtime-)Raytraycing, Optimierung, Physik, Datenstrukturen, SIMD...
Auf jeden Fall empfehlenswert!
-
jo.. guter tip.. aber kennt man schon^^ (wenn man nen bissle googelt bleibt einem garnichts anderes übrig..)
Hab ne kleine verbesserung gemacht.. AABBs für Polyobjekte, damit erhöht sich die Rendergeschwindigkeit bei nem 512x512 Bild mit 2 Lichtern und ner 2200 Poly Kugel von *schauder* 125sec auf 25 sec..
-
Und noch ein Kleines Update:
Fullscreen AA (aus, 5x und 9x) ist aber noch scheiße Langsam.. Fullscreen Eben
Und ein Kompleter Umstieg auf HDRI. (Anstelle von 1 Byte 4Byte floatingpoint pro Farbchannel)
-
Float bietet sich auch an, wenn man SSE benutzen will

-
hmm... SSE... was das jetzt Heißt?? (Ich muss gestehen, ich hab keine Ahnung..)
Über googel bin ich auf 2 Möglichkeiten Gekommen:- Irgentein skuriles Filformat
- (und sehr viel wahrscheinlicher: ein CPU Befehlsatzt..)

-
-
na also^^ Richtig getippt..
-
So: noch nen Upadate!!
Diffuse Reflexionen.
http://i14.photobucket.com/albums/a322/TheGameMaker/Diffuse2.png
(schön hier auch das 3x3 AA zu sehen..)
greetz TGM
-
Wie viele Samples nimmst du für die diffusen Reflexionen?
Dein Schachbrett hat da in der Mitte einen Fehler. Das hatte ich am Anfang auch. Wenn du vor dem int-Cast noch 0.5 addierst, verschwindet der Fehler

-
hey, thx^^
das sind 30 samples, und aber dank fullscreen AA für jeden Pixel nochmal 3x3 samples... insgesammt also 270.. Das ist aber alles über simple Materialparameter einstellbar. Es ist kein Problem, 3 verschiedende Materialien mit verschiedenden streuungs und sample werten zu benutzen..
-
Warum entwickelt ihr nicht einen raytracer zusammen, der am ende vielleicht sogar (anders als die meisten anderen im Netz) offen ist? Können eure Versionen Global Illumination?
-
Ähm.. raytracer per se unterstützen kein GI, aber man kann über Photonmapping GI hinzufügen..
Offen sol meiner Schon werden, und jeder der intressier ist, bekomt von mir auch den source, aber noch ist mir alles zu schlecht gemacht, um den code richtig zu veröffentlichen..
-
Hört sich doch schonmal toll an ... ich würde mir den code gerne anschaun, auch wenn ich wohl erstmal nix checken werde ^^. Dafür nutzt man keine Polygone mehr sondern reine Mathematik, oder?
-
uhm.. neeeee.. als rein Mathematisches Objekt hab ich bis jetzt nur ne Kugel.. nen vernünftiger (und anwendbarer) Renderer muss Polygone unterstützen... ansonnsten sind so sachen wie Menschliche gesichter etc ja nicht drinnen..
schreib mir ne PM mit deiner Mail, und du sollst die volle source bekommen^^
Zu vertehen ist der code eigentlich recht einfach.. oder naja.. is sonne sache..
aber hey, dafür git es ja gratis support^^