DGL
https://delphigl.com/forum/

GLSL Raycasting an gl_ModelViewProjectionMatrix anpassen!
https://delphigl.com/forum/viewtopic.php?f=20&t=9080
Seite 1 von 1

Autor:  moka [ Do Mär 11, 2010 17:17 ]
Betreff des Beitrags:  GLSL Raycasting an gl_ModelViewProjectionMatrix anpassen!

Hi,

Ich raycaste gerade ein paar 3D metaballs was generell auch schon sehr gut klappt. Allerdings würde ich nun gerne in einem ersten pass 3D boundingSpheres mit der openGL fixed pipeline zeichnen, die dann als maske für den raycasting pass dienen sollen.

Die vorraussetzung damit das funktioniert ist, dass ich die gl_ModelViewPorjectionMatrix aus dem ersten Pass irgendwie auf die Kameraeinstellungen für meinen Raycasting shader übertrage.

Ich habe auch schon eine simple version, die funktioniert, allerding nur unter der vorraussetzung, dass die kamera die negative z achse hinunter schaut. dafür habe ich lediglich folgendes gemacht:
Code:
  1.  
  2. //cam stuff
  3. float near = 1.0;
  4. float far = 100.0;
  5. float fov = 60.0;
  6. float asp = resolution.x/resolution.y;
  7.  
  8. float half_height = near*tan(fov*0.5*half_pi);
  9. float half_width = half_height*asp;
  10. vec2 projPlane = vec2(half_width*2.0, half_height*2.0);
  11. ...
  12. void main(){
  13.         vec3 camPos = vec3(0.0, 0.0, 4.0);
  14.     vec3 pixel = vec3(-projPlane/2.0+(gl_FragCoord.xy/resolution.xy)*projPlane, camPos.z-near); //ray origin auf die nearplane setzen
  15.        vec3 rayDir = normalize(pixel-camPos);
  16.         ....raycasting
  17. }
  18.  


Meine frage ist nun: Was ist, wenn ich auch kamera rotationen erlauben möchte? Um die korrekte perspektive zu bekommen müsste ich doch gl_FragCoord.xy auf die nearplane projezieren, die dann aber eben gedreht wäre oder nicht? Muss ich zusätzlich meine metaball Positionen mit der entsprechenden Matrix multiplizieren?

Ich wäre für jegliche tipps dankbar!

Autor:  moka [ Do Mär 11, 2010 18:45 ]
Betreff des Beitrags:  Re: GLSL Raycasting an gl_ModelViewProjectionMatrix anpassen!

ah, ich habs.- Letztenendes war ich mal wieder ein wenig verwirrt, welche matrix an welche stelle muss. die projektion setze ich mit dem code aus dem vorherigen beitrag, mit dem unterschied, dass ich die camPos immer vec3(0.0) setze. Ansonsten multipliziere ich die metaball position einfach mit der modelViewMatrix aus dem vorherigen Pass.

Autor:  damadmax [ Sa Mär 13, 2010 03:05 ]
Betreff des Beitrags:  Re: GLSL Raycasting an gl_ModelViewProjectionMatrix anpassen!

Hast du da mal ein paar Bilder? Interessiert mich ja brennend wie das ausschaut!

Was passiert denn wenn man Reflektionen implementiert? Muss man dann in den Shader den Code für jeden Körper einbauen? Bzw. Wie übergibst du ihm überhaupt, dass du einen Metaball haben willst?

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/