My little Raytracer - ORCA
-
also, ich muss protestieren!!

mit der konvergenz gegen 0 hat das alles recht wenig zu tun, bzw. es gibt bei der mandelbrotmenge nur einen einzigen superfixpunkt, dessen orbit jemals den wert 0+0i annimmt: die null selbst.
Es muss vielmehr heissen: alles, was nicht in die unendlichkeit divergiert, gehört zur mandelbrotmenge.zum fehler: bist du dir sicher, dass du die komplexen zahlen richtig potenzierst? Die bestehen aus zwei komponenten, du musst eine immer zwischenspeichern. Auf dem bild sieht es so aus, als ob du sowas in schleife machen würdest:
z_re=(z_re*z_re-z_im*z_im) +c_re; z_im=(2*z_re*z_im) +c_im;bin mir fast 99.8% sicher, dass ich den fehler auch zwischendurch hatte

es soll aber so aussehen:NEW_z_re=(z_re*z_re-z_im*z_im) +c_re; z_im=(2*z_re*z_im) +c_im; z_re=NEW_z_re;weil man ansonsten mit bereits veränderten werten weiterrechnet

-
so, hab heute nochmal nen ganz bissle gebastelt.
http://i14.photobucket.com/albums/a322/TheGameMaker/reflactpolyobj.jpg
http://i14.photobucket.com/albums/a322/TheGameMaker/specular.png
(speculare Materialeigenschaften).. das Bild vorher zeigt einfach nochmal das feature für Poly objekte und Spiegelungen
greetz TGMverät mir mal jemand, wie ich hier Bilder verlinke??
-
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..