Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 18, 2025 00:11

Foren-Übersicht » Programmierung » Shader
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Do Mär 11, 2010 17:17 
Offline
DGL Member

Registriert: Mi Sep 16, 2009 20:21
Beiträge: 9
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!


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Mär 11, 2010 18:45 
Offline
DGL Member

Registriert: Mi Sep 16, 2009 20:21
Beiträge: 9
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.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Sa Mär 13, 2010 03:05 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Aug 18, 2007 18:47
Beiträge: 694
Wohnort: Köln
Programmiersprache: Java
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?

_________________
Es werde Licht.
glEnable(GL_LIGHTING);
Und es ward Licht.


Zitat aus einem Java Buch: "C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off"

on error goto next


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Foren-Übersicht » Programmierung » Shader


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 11 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.007s | 16 Queries | GZIP : On ]