Voxel-Darstellung aus dreidimensionalem Array
Verfasst: 16.04.2017 20:00
Okay, des ist jetz so ziemlich das zweite Code-Snippet was ich hier veröffentliche...
Für Leute, die Grafikkarten verabscheuen und stattdessen lieber 354GHz Einkernprozessoren* bevorzugen habe ich nun die ultimative Lösung zur Darstellung von 3D-Grafiken gefunden - wenn auch extrem langsam, und ohne Polygone.
*Jetzt auch in gethreadeter Version.
Hier jetzt also eine kleine Voxeldarstellungsengine.
Bewegung erfolgt via IJKL, sich umgucken kann man via WASD.
LShift steigt nach oben, LCtrl sinkt nach unten.
Die vertikale Blickrichtung ist aufgrund von starken Verzerrungen auf 30° in beide Richtungen limitiert.
Die Bilddatei für das Sprite wird als mehrschichtiges, quadratisches Modell behandelt, in etwa wie eine MRT-Aufnahme, wobei dort $FF00FF als durchsichtig gilt.
Auch wenn der Code nicht besonders gut ist, so könnte er dennoch einige Leute interessieren, hoffe ich zumindest.
Anmerkung: Der Debugger verringert die Ausführungsgeschwindigkeit erheblich, also vorher ausschalten.
Im .zip befinden sich SRT[Nummer], der framebasierte, konventionelle Raytracer, und SRT[Nummer]T, die threadbasierte Version mit dynamischen Updates.
Letztere könnte bei einigen Konfigurationen nicht funktionieren, und ich bin mir immer noch nicht ganz sicher, warum das so ist.
Screenshot vom gethreadeten Renderer auf vierfacher Auflösung mit 16facher Genauigkeit:
Link zum aktuellsten .zip:
Klick!
EDIT:
Neueste Singlethreadversion.
Noch mehr Klick!
Für Leute, die Grafikkarten verabscheuen und stattdessen lieber 354GHz Einkernprozessoren* bevorzugen habe ich nun die ultimative Lösung zur Darstellung von 3D-Grafiken gefunden - wenn auch extrem langsam, und ohne Polygone.
*Jetzt auch in gethreadeter Version.
Hier jetzt also eine kleine Voxeldarstellungsengine.
Bewegung erfolgt via IJKL, sich umgucken kann man via WASD.
LShift steigt nach oben, LCtrl sinkt nach unten.
Die vertikale Blickrichtung ist aufgrund von starken Verzerrungen auf 30° in beide Richtungen limitiert.
Die Bilddatei für das Sprite wird als mehrschichtiges, quadratisches Modell behandelt, in etwa wie eine MRT-Aufnahme, wobei dort $FF00FF als durchsichtig gilt.
Auch wenn der Code nicht besonders gut ist, so könnte er dennoch einige Leute interessieren, hoffe ich zumindest.
Anmerkung: Der Debugger verringert die Ausführungsgeschwindigkeit erheblich, also vorher ausschalten.
Im .zip befinden sich SRT[Nummer], der framebasierte, konventionelle Raytracer, und SRT[Nummer]T, die threadbasierte Version mit dynamischen Updates.
Letztere könnte bei einigen Konfigurationen nicht funktionieren, und ich bin mir immer noch nicht ganz sicher, warum das so ist.
Screenshot vom gethreadeten Renderer auf vierfacher Auflösung mit 16facher Genauigkeit:
Link zum aktuellsten .zip:
Klick!
EDIT:
Neueste Singlethreadversion.
Noch mehr Klick!