29 lines
802 B
GLSL
29 lines
802 B
GLSL
// simple gradient map
|
|
|
|
vec4 BilinearSample( in sampler2D tex, in vec2 pos, in vec2 size, in vec2 pxsize )
|
|
{
|
|
vec2 f = fract(pos*size);
|
|
pos += (.5-f)*pxsize;
|
|
vec4 p0q0 = texture(tex,pos);
|
|
vec4 p1q0 = texture(tex,pos+vec2(pxsize.x,0.));
|
|
vec4 p0q1 = texture(tex,pos+vec2(0.,pxsize.y));
|
|
vec4 p1q1 = texture(tex,pos+vec2(pxsize.x,pxsize.y));
|
|
vec4 pInterp_q0 = mix(p0q0,p1q0,f.x);
|
|
vec4 pInterp_q1 = mix(p0q1,p1q1,f.x);
|
|
return mix(pInterp_q0,pInterp_q1,f.y);
|
|
}
|
|
|
|
vec3 GradientMap( in float gray )
|
|
{
|
|
vec2 size = vec2(512.,4.);
|
|
vec2 pxsize = 1./size;
|
|
return BilinearSample(gradtex,vec2(gray/2.+.25,0.),size,pxsize).rgb;
|
|
}
|
|
|
|
void SetupMaterial( inout Material mat )
|
|
{
|
|
vec4 base = getTexel(vTexCoord.st);
|
|
base.rgb = GradientMap(base.x);
|
|
mat.Base = base;
|
|
mat.Normal = ApplyNormalMap(vTexCoord.st);
|
|
}
|