AndyX hat geschrieben:Wie wär´s mit Softshadows und einer akzeptablen Framerate?
Ich weiß, istn bisschen viel verlangt, aber du schaffst das schon
Softshadows kriegst du schon bald, aber die akzeptable Framerate baue
ich jetzt noch nicht ein. Das dauert jetzt zu lange um es zu
implementieren, aber ist durchaus möglich.
Genau, genau, der macht dir nähmlich Echtzeitkonkurrenz .
Nene, schon toll. Ich bin immer wieder erstaunt, was ich so für Leute um mich herum sehe und entdecke... Seltsam.
Klar mache ich es mit StartDrawing. Das ist ja wohl am einfachsten.
Und wenn sowieso weniger als 100 Pixel pro Sekunde gerendert werden,
bringt das direkte Schreiben in den Speicher auch nicht mehr.
Das langsame ist das RayTracen an sich.
Wenn ich 100 Objekte im 3D-Raum habe, dann werden pro Pixel alle
diese 100 Objekte auf Kollision überprüft und die nächste Kollision zur
Kamera wird dann weiter berechnet. Bei der weiteren Berechnung kommt
es jetzt darauf an, ob das getroffene Objekt vielleicht noch transparent ist
oder spiegelt oder direktes Licht abbekommt. Bei direktem Licht wird
wieder vom Treffpunkt ein Strahl zu allen Lichtquellen berechnet und
dieser wiederum auf Kollision mit allen restlichen 100 Objekten überprüft.
So entsteht dann Schatten, wenn ein Objekt im Weg ist. Wenn das
Objekte spiegelt, dann wird der gespiegelte Strahl berechnet und die
erste Funktion rekursiv aufgerufen. Bei Transparenz dasselbe Spielchen,
bloß mit einem gebrochenen Lichtstrahl. So kann es bei einer
vollverspiegelten, halbtransparenten Szene mit 100 Objekten schnell zu
9000000 Kollisionsüberprüfungen kommen, allein nach drei Rekursionen.
Und genau darin liegt die Kunst des Optimierens: Kollisionsüberprüfungen
einsparen!