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

Aktuelle Zeit: Di Mai 14, 2024 20:32

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



Ein neues Thema erstellen Auf das Thema antworten  [ 21 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags: Re: eigenartige Fehlermeldung
BeitragVerfasst: Do Jun 24, 2010 08:53 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
@damadmax:
Du kannst im Geometryshader die gleichen Dinge tun wie auch im Vertexshader, aber eben noch mehr. Du hast immer Zugriff auf ein ganzes Primitiv (z.B. ein Dreieck), wenn die Daten entsprechend aufbereitet sind auch auf benachbarte Dreiecke. Zudem kannst du im Geometryshader selbst neue Geometrie erzeugen. Siehe auch GL_EXT_geometry_shader4.

Der Shader von sharkman macht nichts weiter als das ankommende Dreieck zu nehmen, die Normale zu berechnen und das Dreieck wieder auszugeben. Weil der Input-Datentyp Dreiecke sind, sind eingehende Varyings hier ein Array der Größe 3: pos[3] ist eine selbst definierte Varying und gl_PositionIn[3] ist das was du im Vertexshader als gl_Position kennst.

@sharkman:
Es ist ratsam die Normale nach der Berechnung im Geometryshader zu normalisieren.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: eigenartige Fehlermeldung
BeitragVerfasst: Do Jun 24, 2010 11:45 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 11, 2009 08:02
Beiträge: 532
Programmiersprache: pascal (Delphi 7)
Zitat:
@sharkman:
Es ist ratsam die Normale nach der Berechnung im Geometryshader zu normalisieren.


hast recht. sieht schon viel besser aus.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: eigenartige Fehlermeldung
BeitragVerfasst: Do Jun 24, 2010 12:08 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 11, 2009 08:02
Beiträge: 532
Programmiersprache: pascal (Delphi 7)
Die schlechten Frameraten ließen sich auch beheben. Ich hatte
Code:
  Done:= false;

vergessen.

jetzt läuft soweit alles ganz gut, bis auf Per Pixel Beleuchtung.

lg & thx

Sharkman


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: eigenartige Fehlermeldung
BeitragVerfasst: Do Jun 24, 2010 14:29 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 11, 2009 08:02
Beiträge: 532
Programmiersprache: pascal (Delphi 7)
Hai

ich hab den vertexshader etwas verändert, und siehe da: die nächste Fehlermeldung:
Code:
ERROR: 0:4 error(#132) Syntax error '}' parse error


der Vertexshader wird wie folgt zusammengebastelt:
Code:
Vertex:= 'uniform int time; varying vec3 pos; ' + Memo1.Text +
    'void main() {' +
    '  vec4 Vertex = the_function( gl_Vertex );' +
    '  gl_Position = gl_ModelViewProjectionMatrix * Vertex;' +
    '  gl_FrontColor = gl_Color;' +
    '  pos = vec3( gl_ModelViewMatrix * gl_Vertex )' +
    '}';

Memo1.Text sieht so aus:
Code:
vec4 the_function( vec4 Vert ) { 
  return Vert;



zusammen sollte das dann so aussehen:
Code:
uniform int time; varying vec3 pos;
vec4 the_function( vec4 Vert ) { 
  return Vert;

void main() {
   vec4 Vertex = the_function( gl_Vertex );
   gl_Position = gl_ModelViewProjectionMatrix * Vertex;
   gl_FrontColor = gl_Color;
   pos = vec3( gl_ModelViewMatrix * gl_Vertex )
}


also ich sehe da nicht mehr '}' als '{'
was ist da jetzt schon wieder falsch?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: eigenartige Fehlermeldung
BeitragVerfasst: Do Jun 24, 2010 14:37 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Code:
pos = vec3( gl_ModelViewMatrix * gl_Vertex )' +

Semikolon?

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: eigenartige Fehlermeldung
BeitragVerfasst: Do Jun 24, 2010 16:51 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 11, 2009 08:02
Beiträge: 532
Programmiersprache: pascal (Delphi 7)
JA. geht jetzt

Code:
uniform int time; varying vec3 pos;
vec4 the_function( vec4 Vert ) {
  vec4 Vertex = Vert;
  // eigentliche funktion
  return Vertex;
}
void main() {
   vec4 Vertex = the_function( gl_Vertex );
   gl_Position = gl_ModelViewProjectionMatrix * Vertex;
   gl_FrontColor = gl_Color;
   pos = vec3( gl_ModelViewMatrix * Vertex  /*nicht gl_Vertex*/ );
}


thx

Sharkman


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 21 Beiträge ]  Gehe zu Seite Vorherige  1, 2
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.034s | 17 Queries | GZIP : On ]