45 lines
990 B
GLSL
45 lines
990 B
GLSL
|
|
#version 300 es
|
||
|
|
#extension GL_ARB_shading_language_include : enable
|
||
|
|
|
||
|
|
precision highp float;
|
||
|
|
in vec2 v_texcoord;
|
||
|
|
uniform sampler2D tex;
|
||
|
|
|
||
|
|
uniform int sourceTF; // eTransferFunction
|
||
|
|
uniform int targetTF; // eTransferFunction
|
||
|
|
uniform mat3 targetPrimariesXYZ;
|
||
|
|
|
||
|
|
uniform float alpha;
|
||
|
|
|
||
|
|
uniform bool discardOpaque;
|
||
|
|
uniform bool discardAlpha;
|
||
|
|
uniform float discardAlphaValue;
|
||
|
|
|
||
|
|
uniform bool applyTint;
|
||
|
|
uniform vec3 tint;
|
||
|
|
|
||
|
|
#include "rounding.glsl"
|
||
|
|
#include "CM.glsl"
|
||
|
|
|
||
|
|
layout(location = 0) out vec4 fragColor;
|
||
|
|
void main() {
|
||
|
|
vec4 pixColor = texture(tex, v_texcoord);
|
||
|
|
|
||
|
|
if (discardOpaque && pixColor.a * alpha == 1.0)
|
||
|
|
discard;
|
||
|
|
|
||
|
|
if (discardAlpha && pixColor.a <= discardAlphaValue)
|
||
|
|
discard;
|
||
|
|
|
||
|
|
// this shader shouldn't be used when skipCM == 1
|
||
|
|
pixColor = doColorManagement(pixColor, sourceTF, targetTF, targetPrimariesXYZ);
|
||
|
|
|
||
|
|
if (applyTint)
|
||
|
|
pixColor.rgb *= tint;
|
||
|
|
|
||
|
|
if (radius > 0.0)
|
||
|
|
pixColor = rounding(pixColor);
|
||
|
|
|
||
|
|
fragColor = pixColor * alpha;
|
||
|
|
}
|