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