(Echtzeit-)Raytracing-Engine

Anwendungen, Tools, Userlibs und anderes nützliches.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

(Echtzeit-)Raytracing-Engine

Beitrag von NicTheQuick »

Hallo!

Wie einige vielleicht schon wissen, bin ich momentan an einem kleinen Raytracer, der die einfachsten Körper berechnen und darstellen kann, also Kugeln, Ebenen und Dreiecke.

Jetzt bin ich schon um einiges weiter gekommen, nachdem ich die komplette Engine nochmals neu geschrieben habe.
Hier ein paar Screenshots:

rötliches Licht, Ebene rechts, 30% Verspiegelung bei den Kugeln
Bild

rötliches Licht, Ebene rechts und links, 100% Verspiegelung bei den Kugeln
Bild

rötliches Licht, Ebene oben und unten, 100% Verspiegelung bei den Kugeln
Bild

1. Programm
  • 200x200 Auflösung
  • Koordinaten- und Winkelanzeige
  • rötliches umherfliegendes Licht
  • bläuliches Licht an der Kamera
  • Schattenwurf
  • zwei Ebenen ohne Verspiegelung
  • Kugeln vollverspiegelt
2. Programm
  • Größe einstellbar
  • Anzeige ein- ausblendbar
  • Rekursionstiefe einstellbar
  • 30% spiegelnde Ebenen oben und unten
  • vollverspiegelte Kugeln
  • rötliches umherfliegendes Licht
  • Schattenwurf
3. Programm
  • Größe einstellbar
  • Anzeige ein- ausblendbar
  • Rekursionstiefe einstellbar
  • nicht spiegelnde Ebenen oben und unten
  • vollverspiegelte Kugeln
  • rötliches umherfliegendes Licht
  • Schattenwurf
///Edit1:
Wenn jemand an dem Quellcode interessiert ist, der die RayTracing-Engine benutzt, soll er Bescheid sagen. Dann kann man sich auch schonmal einen Eindruck darüber verschaffen, wie leicht sie zu handhaben ist.

///Edit2:
Für alle, bei denen die Links mal wieder nicht gehen: http://mitglied.lycos.de/NicTheQuick1986/Forum/013/
Zuletzt geändert von NicTheQuick am 25.09.2005 23:45, insgesamt 3-mal geändert.
Benutzeravatar
Franky
Beiträge: 1132
Registriert: 29.08.2004 16:31
Wohnort: Münsterland
Kontaktdaten:

Beitrag von Franky »

Interessante Sache :D

Nur ist es bei mir leider recht langsam (das muss aber scheinbar so, wenn ich da auf deine FPS-Anzeigen schau)

Viel mehr kann ich dazu auch nicht sagen, da ich mich mit Raytracing net auskenn :roll:
Falsch zugeordnetes Zitat des Tages: "O'zapft is" - Edward Snowden :)
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag von NicTheQuick »

Okay.

Wer wissen will, was Raytracing ist und wie es funktioniert, hier ein 36-Seitiges PDF.
THEEX
Beiträge: 804
Registriert: 07.09.2004 03:13

Beitrag von THEEX »

Hut ab, nur solltest vielleicht mal weniger Details oder sonst was abspecken, damit es mal auf Deinem eigenen Server flüssig läuft (dann isses auch auf meinem schnell).
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag von NicTheQuick »

Ich rendere einfach jeden Pixel. Das mit dem Subsampling finde ich dafür nicht so toll. /:-> Außerdem hab ich es sowieso noch nicht geschafft, es auf x- und y-Achse anzuwenden. :wink:

Auf meinem Rechner läuft es bei kleinen Auflösungen schnell genug. Aber da auf den Screenshots immer das erste gerenderte Bild zu sehen ist und meine FPS-Routine immer den Durchschnitt der ersten 5 Bilder zurückgibt, sieht es so aus, als ob meine FPS so klein wäre.

Ich mache demnächst mal eine kleine Video-Demo, wo Kugeln rumrollen, sich gegenseitig anstoßen, usw. :allright: (Dauert aber sicherlich noch etwas --> lernen :roll: )
Benutzeravatar
Epyx
Beiträge: 247
Registriert: 29.08.2004 01:40
Computerausstattung: AMD64 X2 DualCore 6000+ , 3GB Ram , WinXP sp3
2x Ati Radeon HD4800 ~ CrossFireX
Kontaktdaten:

Beitrag von Epyx »

WHOOAA einfach nur der Hammer, echt!!!! :shock: :shock: :shock:
Auf die UserLib freue ich mich schon :D
If you can't make it good, at least make it look good.
Bill Gates
Benutzeravatar
_ZOMTEX_
Beiträge: 41
Registriert: 29.08.2004 06:30
Wohnort: BW
Kontaktdaten:

Beitrag von _ZOMTEX_ »

Hallo Nic,

leider laufen die Programme bei mir nicht, wenn ich es starte geht kurz ein Konsolenfenster auf und weiter passiert nix. Wahrscheinlich liegt es wieder an meiner bescheidenen Graka.

Nun ja!

Gruß

Michael
Googleist Dein bester Freund!
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

_ZOMTEX_ hat geschrieben:Hallo Nic,

leider laufen die Programme bei mir nicht, wenn ich es starte geht kurz ein Konsolenfenster auf und weiter passiert nix. Wahrscheinlich liegt es wieder an meiner bescheidenen Graka.

Nun ja!

Gruß

Michael
Nein, schau dir die dateien die du downloadest mal mit notepad an. Du wirst merken du hast die Tripod Fehlerseite runtergeladen ;) . Geh manuell durch seine Verzeichnisse und lad dir da den spaß runter ;) .
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
_ZOMTEX_
Beiträge: 41
Registriert: 29.08.2004 06:30
Wohnort: BW
Kontaktdaten:

Beitrag von _ZOMTEX_ »

@DarkDragon

danke, jetzt gehts! :-)
Googleist Dein bester Freund!
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag von NicTheQuick »

Epyx hat geschrieben:WHOOAA einfach nur der Hammer, echt!!!! :shock: :shock: :shock:
Auf die UserLib freue ich mich schon :D
Die Userlib ist in der Mache. Leider funktioniert da irgendwas mit Tailbite nicht. Aber keine Angst, für die Endfassung der Userlib lasse ich einen ASM-Freak dran, der da vielleicht noch was dran machen kann und es somit schneller gehen wird.

Es sind bisher 60 Befehle verfügbar (oder sie sollten zumindest verfügbar sein). Hier die Liste:

Code: Alles auswählen

RTMovePoint
RTInitCam
RTDeInit
RTSetGamma
RTGetGamma
RTSetRecursionDepth
RTGetRecursionDepth
RTSetCamPosition
RTSetCamPositionEx
RTGetCamPosition
RTSetCamAngle
RTSetCamAngleEx
RTGetCamAngle
RTSetCamFOV
RTGetCamFOV
RTGetCamDirection
RTSetBackroundColor
RTSetBackroundColorEx
RTGetBackroundColor
RTSetAmbientLight
RTSetAmbientLightEx
RTGetAmbientLight
RTCalculateRays
RTRayTrace
RTDrawWorld
RTGetPixelRGB
RTCreateSphere
RTCreateSphereEx
RTCreateTriangle
RTCreateTriangleEx
RTCreatePlane
RTCreatePlaneEx
RTSetColorTriangle
RTSetColorTriangleEx
RTSetColor
RTSetColorEx
RTSetAttributes
RTSetReflection
RTSetReflectionTriangle
RTSetTransparency
RTSetTransparencyTriangle
RTMoveObject
RTMoveObjectEx
RTFreeObject
RTCreatePointLight
RTCreatePointLightEx
RTCreateSpotLight
RTCreateSpotLightEx
RTSetSpotLightFOV
RTGetSpotLightFOV
RTSetSpotLightDirection
RTGetSpotLightDirection
RTSetLightColor
RTSetLightColorEx
RTSetLightPosition
RTSetLightPositionEx
RTMoveLight
RTMoveLightEx
RTFreeLight
RTEngineShared
Tailtbite kompiliert problemlos. Die ersten paar Funktionen im Testcode werden auch wunderbar ausgeführt, aber eine dann nicht mehr. Kann es sein, dass eine Library-Funktion keine andere Library-Funktion mehr aufrufen darf? Z.B. rufe ich die Funktion [c]RTCreateSphereEx()[/c] aus der Userlib auf, die aber intern nochmal die Funktion [c]RTCreateSphere()[/c] aufruft. Funktioniert sowas nicht?

///Edit: Anscheinend funktioniert das wirklich nicht. Liegt das vielleicht daran, dass die Funktion [c]RTCreateSphere()[/c] nicht mit in die EXE eingebunden wird, weil ich sie nicht direkt im Code aufrufe, sondern nur indirekt durch [c]RTCreateSphereEx()[/c]? Kann man daran was ändern? Wer kennt sich aus? Fast alle Befehle mit der Endung "Ex" benutzen die gleichnamigen Befehle ohne das "Ex".
Antworten