29 lines
750 B
Plaintext
29 lines
750 B
Plaintext
|
#version 330
|
||
|
|
||
|
/* A fragment shader: Grayscale Filter with Alpha Exclusion */
|
||
|
|
||
|
precision highp float; // High quality
|
||
|
|
||
|
// Draw directly to the screen rather than to an off-screen framebuffer
|
||
|
layout(location = 0) out vec4 colorOut;
|
||
|
|
||
|
uniform sampler2D sampler; // Texture sampler
|
||
|
uniform float alphaCutOff; // Alpha values below this get discarded
|
||
|
|
||
|
in vec3 texCoord;
|
||
|
|
||
|
void main(void)
|
||
|
{
|
||
|
vec4 texColor = texture(sampler, texCoord.xy);
|
||
|
if(texColor.a < alphaCutOff)
|
||
|
discard;
|
||
|
|
||
|
// Grayscale intensity = Average of a pixel's RGB components
|
||
|
float intensity = (texColor.r + texColor.g + texColor.b) / 3.0;
|
||
|
|
||
|
// Output the fragment
|
||
|
colorOut = vec4(intensity, intensity, intensity, texColor.a);
|
||
|
|
||
|
const int numViewports = gl_MaxViewports; // Error line
|
||
|
}
|