Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

kiba

Alter Hase

  • »kiba« ist der Autor dieses Themas

Beiträge: 327

Wohnort: NRW

Beruf: Azubi: Fach-Info. Anw.

  • Private Nachricht senden

1

30.04.2011, 16:31

Shader Problem mit GLSL

Hi leute ich versuch gerade einige
Post process Shader hin zu bekommen(mit GLSL) aber es funktioniert nicht.
Einigen Warnungen und die Meldung das das comp. und linken erfolgreich war.

Hab 3 Beispiel und keines von den Funktioniert, also es wird kein Bild angezeigt.
Hab Ubuntu und benutzt GLEW (GLX)

Vertex:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
void main()

{

   gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;

   gl_FrontColor = gl_Color;

}


Fragment:
Blur

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//Blur-Shader by Skeptiker/Coolcat, delphigl.com 
 
uniform sampler2D uTexture; 
uniform float textureWidth; 
uniform float textureHeight; 
  
const int gaussRadius = 11; 
const float gaussFilter[gaussRadius] = float[gaussRadius]( 
    0.0402,0.0623,0.0877, 
    0.1120,0.1297,0.1362, 
    0.1297,0.1120,0.0877, 
    0.0623,0.0402 
); 
  
void main() { 
    vec2 uShift = vec2(1.0 / textureWidth,1.0 / textureHeight); 
    vec2 texCoord = vec2(gl_TexCoord[0]).xy - float(int(gaussRadius/2)) * uShift; 
    vec3 color = vec3(0.0, 0.0, 0.0);  
    for (int i = 0; i < gaussRadius; ++i) {  
        color += gaussFilter[i] * texture2D(uTexture, texCoord).rgb; 
        texCoord += uShift; 
    } 
    gl_FragColor = vec4(color,1.0); 
}


Grayscale

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
uniform sampler2D gTexture; 
 
void main( void ) 
{ 
    vec4 texelColor = texture2D( gTexture, vec2(gl_TexCoord[0]).xy ); 
 
    float luminance = float(texelColor.r)*0.299 + float(texelColor.g)*0.587 + float(texelColor.b)*0.114; 
    
    gl_FragColor = vec4( luminance, luminance, luminance, texelColor.a); 
}


Sepia (hier wird was angezeigt aber nur ein Rechteck in einer Sepia Farbe)

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//Sepia-Shader by Markus, delphigl.com 
 
// scene texture 
uniform sampler2D Texture; 
  
void main(void) 
{   
  // Sepia colors                   
  vec4 Sepia1 = vec4( 0.2, 0.05, 0.0, 1.0 );    
  vec4 Sepia2 = vec4( 1.0, 0.9, 0.5, 1.0 ); 
  
  vec4 Color = texture2D(Texture, vec2(gl_TexCoord[0])); 
  
  float SepiaMix = dot(vec3(0.3, 0.59, 0.11), vec3(Color)); 
  Color = mix(Color, vec4(SepiaMix), vec4(0.5)); 
  vec4 Sepia = mix(Sepia1, Sepia2, SepiaMix); 
  
  gl_FragColor = mix(Color, Sepia, 1.0); 
}


Log:
Shader Filename: Shader/grayscale.afs
Fragment shader was successfully compiled to run on hardware.
Shader Filename: Shader/vertex.avs
Vertex shader was successfully compiled to run on hardware.
Fragment shader(s) linked, vertex shader(s) linked.
WARNING: warning(#276) Symbol 'gl_TexCoord[0]' usage doesn't match between two stages
WARNING: warning(#276) Symbol 'gl_TexCoord[0]' usage doesn't match between two stages


Shader Filename: Shader/sepia.afs
Fragment shader was successfully compiled to run on hardware.
Shader Filename: Shader/vertex.avs
Vertex shader was successfully compiled to run on hardware.
Fragment shader(s) linked, vertex shader(s) linked.
WARNING: warning(#276) Symbol 'gl_TexCoord[0]' usage doesn't match between two stages
WARNING: warning(#276) Symbol 'gl_TexCoord[0]' usage doesn't match between two stages


Shader Filename: Shader/blur.afs
Fragment shader was successfully compiled to run on hardware.
Shader Filename: Shader/vertex.avs
Vertex shader was successfully compiled to run on hardware.
Fragment shader(s) linked, vertex shader(s) linked.
WARNING: warning(#276) Symbol 'gl_TexCoord[0]' usage doesn't match between two stages
WARNING: warning(#276) Symbol 'gl_TexCoord[0]' usage doesn't match between two stages

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

30.04.2011, 17:01

Dein VertexShader gibt kein gl_TexCoord[0] aus.

Quellcode

1
vec2(gl_TexCoord[0])

Besser so:

Quellcode

1
gl_TexCoord[0].xy


Abgesehen davon würd ich mal mit einem trivialen FragmentShader testen ob überhaupt was passiert bevor ich gleich mit irgendeinem Blur Kernel ankomm ;)

kiba

Alter Hase

  • »kiba« ist der Autor dieses Themas

Beiträge: 327

Wohnort: NRW

Beruf: Azubi: Fach-Info. Anw.

  • Private Nachricht senden

3

30.04.2011, 19:02

ahh, thx

sieht jetzt so aus und läuft:

C-/C++-Quelltext

1
2
3
4
5
6
void main(void)
{
 gl_Position     = gl_ModelViewProjectionMatrix * gl_Vertex;
 gl_FrontColor   = gl_Color;
 gl_TexCoord[0]  = gl_MultiTexCoord0;
}

Werbeanzeige