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

Aktuelle Zeit: Fr Jul 18, 2025 08:57

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



Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: ClipPlane im Shader verwenden
BeitragVerfasst: Sa Mai 12, 2007 15:53 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Hallo allerseits

Ich möchte etwas clippen. Das hat auch soweit perfekt geklappt, allerdings musste ich feststellen, dass wenn man einen Shader verwendet, die Standard-Clipping funktionen von OpenGL deaktiviert sind. Ich habe jetzt schon eine weile rumprobiert allerdings habe ich es nicht hinbekommen, die ClipPlane in GLSL zu emulieren. Ich weiss wohl, wie ich auf die einzelnen Clip-Planes zugreife (gl_ClipPlane[0]), allerdings habe ich keine Ahnung, was ich dann mit diesen Koordinaten anstellen soll. Es wäre mir lieb, wenn mir jemand ein komplettes Clipping-Beispiel mit vertex und fragment shader geben könnte oder eine gute erklärung :wink:

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Mai 12, 2007 16:04 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Wenn du im Vertex-Shader clipping willst musst du in gl_ClipVertex schreiben. Siehe dazu auch das Extension-dokument zu GL_ARB_Vertex_Shader unter Issues und dort dann Punkt 8, da wirds genau beschrieben.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Mai 12, 2007 17:42 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Ok....
Das mit dem gl_ClipVertex ist ja schön und gut, allerdings bringt mich das nicht wirklich weiter. Ich weiss jetzt nicht, wie ich gl_Vertex transformieren muss, damit das Ergebnis einigermaßen ok wird. Ich habe mir schon per Uniform die ModelView-Matrix übergeben, die zu dem Zeitpunkt des erstellens der ClipPlane galt und gl_Vertex damit multipliziert und an gl_ClipVertex übergeben. Das Ergebnis war, dass das Objekt an einer Ebene abgeschnitten wurde, die 90° gedreht war zu der, an der es abgeschnitten werden sollte...

So siehts in meinem Vertex-Shader aus:
Code:
  1. varying vec4 vpos;
  2. varying vec4 cmpos;
  3. varying vec4 cpos;
  4. uniform mat4 cm;
  5.  
  6. void main(void)
  7. {
  8.   vpos            = gl_Vertex;
  9.   cmpos = gl_Vertex * cm;
  10.   cpos            = gl_ModelViewMatrix * gl_Vertex;
  11.   gl_Position     = gl_ModelViewProjectionMatrix * gl_Vertex;
  12.   gl_TexCoord[0]  = gl_MultiTexCoord0;
  13.   gl_FrontColor   = gl_Color;
  14.   gl_ClipVertex = cmpos;
  15. }

cm ist die übergebene Matrix.

//Edit: möglicherweise habe ich die Matrix falsch übergeben:
Alter Aufruf:
Code:
  1. glUniformMatrix4fv(DepthShader.GetUniformLocationARB('cm'), 1, False, @CM);

Neuer Aufruf:
Code:
  1. glUniformMatrix4fv(DepthShader.GetUniformLocationARB('cm'), 16, False, @CM);

Jetzt wird garnichts mehr geclippt... Was ist richtig?

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 01, 2007 19:26 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Apr 25, 2005 17:51
Beiträge: 464
Kennst du das? http://www.gamedev.net/reference/articles/article2138.asp

Und wegen dem Clipping schau mal hier: http://www.terathon.com/code/oblique.php

Hatte vor kurzem auch an nem Wassershader gearbeitet :D

_________________
__________
"C++ is the best language for garbage collection principally because it creates less garbage." Bjarne Stroustrup


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 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:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.007s | 16 Queries | GZIP : On ]