My little Raytracer - ORCA



  • eventuel ist das ja lustig^^

    ja, durchaus "lustig" , ich hab mir damals diese ganzen fraktale wochenlang angesehen, bis ich dann irgendwann beim anblick einer einfachen weißgestrichenen wand fast erbrechen musste 😃 mit LSD wäre das wahrscheinlich noch cooler geworden 🤡 jez abr schluss, zurück zum thema:

    Damit sind Caustics/GI leider unmöglich. Aber hier hilft photon mapping, bei den erst eine sammlung "photonen"
    uber die szene verteilt werden

    Ich hätte da mal eine frage: afaik werden beim photon-mapping die photonen von den lichtquellen aus gesandt. Ist das nicht so, dass da die meisten photonen irgendwo landen, wo sie vom betrachter aus nicht zu sehen sind? Ist das nicht furchtbar verschwenderisch, wenn man nur ein bild aus einer blickrichtung zeichnen will?



  • Andrey schrieb:

    Damit sind Caustics/GI leider unmöglich. Aber hier hilft photon mapping, bei den erst eine sammlung "photonen"
    uber die szene verteilt werden

    Ich hätte da mal eine frage: afaik werden beim photon-mapping die photonen von den lichtquellen aus gesandt. Ist das nicht so, dass da die meisten photonen irgendwo landen, wo sie vom betrachter aus nicht zu sehen sind? Ist das nicht furchtbar verschwenderisch, wenn man nur ein bild aus einer blickrichtung zeichnen will?

    richtig. für einzelne bilder ist photonmapping leicht overkill. genauso bei beweglichen lichtern in einem echtzeit renderer. Anders sind kaustiken aber leider auch nicht so ohne weiteres zu berechnen(die alternative wäre, n strahlen von jedem zu zeichnenden punkt aus in alle richtungen zu verschicken, dann über reflektionen/brechungen bis zu einer bestimmten tiefe/intensität wandern zu lassen und schauen, ob sie irgendwo direkt auf eine lichtquelle treffen).



  • ist das nicht das prinzip von "path tracing" oder vertausche ich da irgendwas?



  • genau^^ das ist pathtracing variante 1^^

    variante 2 schießt wirklich von jedem licht Strahlen ab und guckt wo sie auftreffen& weiterreflektiert werden..

    hab auch mal nen bissle fraktal rumgespielt:
    http://www.3d-ring.de/3d_bilder.php?bild_autor=4298&bild_id=26

    greetz



  • TGM schrieb:

    hab auch mal nen bissle fraktal rumgespielt:
    http://www.3d-ring.de/3d_bilder.php?bild_autor=4298&bild_id=26

    Interessant, dass ich genau das selbe Bild damals hatte, als ich Mandelbrot visualisieren wollte 😛 Weiß aber grad nicht mehr, was der Fehler war..
    http://bloody-blades.de/?page_id=21



  • 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 TGM

    verä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.png

    Die 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.JPG

    Hat 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.JPG

    Hat 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:

    1. Irgentein skuriles Filformat
    2. (und sehr viel wahrscheinlicher: ein CPU Befehlsatzt..)

    😕





  • na also^^ Richtig getippt..


Anmelden zum Antworten