blob: 829f51b4732a88145e1c5f2aecae6febbfb11df2 [file] [log] [blame]
#import "Common/ShaderLib/Common.glsllib"
vec3 Texture_GetNormal(in sampler2D normalMap, in vec2 texCoord){
#ifdef NORMAL_LATC
return Common_UnpackNormalLA( texture2D(normalMap, texCoord) );
#else
return Common_UnpackNormal( texture2D(normalMap, texCoord).rgb );
#endif
}
#ifdef DXT_YCOCG
const mat4 ycocg_mat = mat4( 1.0, -1.0, 0.0, 1.0,
0.0, 1.0, -0.5 * 256.0 / 255.0, 1.0,
-1.0, -1.0, 256.0 / 255.0, 1.0,
0.0, 0.0, 0.0, 0.0 );
#endif
vec4 Texture_GetColor(in sampler2D colorMap, in vec2 texCoord){
#ifdef DXT_YCOCG
vec4 color = texture2D(colorMap, texCoord);
// fast YCoCg decode:
color.z = 1.0 / ((color.z * ( 255.0 / 8.0 )) + 1.0);
color.xy *= color.z;
return color * ycocg_mat;
// slow decode:
//float Y = color.a;
//float scale = 1.0 / ((255.0 / 8.0) * color.b + 1.0);
//const float offset = 128.0 / 255.0;
//float Co = (color.r - offset) * scale;
//float Cg = (color.g - offset) * scale;
//float R = Y + Co - Cg;
//float G = Y + Cg;
//float B = Y - Co - Cg;
//return vec4(R, G, B, 1.0);
#else
return texture2D(colorMap, texCoord);
#endif
}