/************************************************** ****************************/
/* Constant - texture */
/************************************************** ****************************/
#pragma annotation color_base "gadgettype=colorslider;label=Color;hint=Color base."
#pragma annotation Opacity "gadgettype=colorslider;label=Opacity;hint=Opacity ."
#pragma annotation textura "gadgettype=inputfile;label=Color map;hint=Usa este mapa de color."
#pragma annotation tint "gadgettype=colorslider;label=Tint;hint=Tint."
#pragma annotation saturation "gadgettype=floatfield;label=Saturation;hint=Satur ation."
#pragma annotation exposure "gadgettype=floatfield;label=Exposure;hint=Exposur e."
#pragma annotation blur "gadgettype=floatfield;label=Blur;hint=Blur."
#pragma annotation high "gadgettype=floatfield;label=High;hint=High."
#pragma annotation low "gadgettype=floatfield;label=Low;hint=Low."
#pragma annotation camProj "gadgettype=checkbox;label=Camera Projection;hint=CamProjLight Projection."
surface
surf_constant(
#pragma annotation "grouping" "color/color_base;"
#pragma annotation "grouping" "color/opacity;"
#pragma annotation "grouping" "color/textura;"
color color_base = 1;
float opacity = 1;
uniform string textura = "";
#pragma annotation "grouping" "cc/tint;"
#pragma annotation "grouping" "cc/saturation;"
#pragma annotation "grouping" "cc/exposure;"
#pragma annotation "grouping" "cc/blur;"
#pragma annotation "grouping" "cc/high;"
#pragma annotation "grouping" "cc/low;"
color tint = color (1.0);
float saturation = 1.0;
float exposure = 0.0;
float blur = 0.0;
float high = 1.0;
float low = 0.0;
#pragma annotation "grouping" "cameraProjection/camProj;"
#pragma annotation "grouping" "cameraProjection/camera;"
float camProj = 0;
)
{
float opac_tex = opacity;
color color_final = color_base;
if (camProj != 1)
{
if (textura != "")
{
color_final = color texture (textura, "blur", blur);
opac_tex = texture (textura[3], "fill", 1.0, "width", 0.8);
}
}
else
{ // do camProj
color projected = 0;
illuminance("camProj", P)
{
lightsource("__projection", projected);
projected += projected;
}
color_final = projected;
} // end do camProj
if (saturation != 1)
{
float lum = .2125 * comp(color_final, 0) +
.7154 * comp(color_final, 1) +
.0721 * comp(color_final, 2);
color_final = mix(color(lum), color_final, saturation);
}
color_final *= tint * pow (2, exposure);
color_final = clamp(color_final, low, high);
Oi = Os * opac_tex;
Ci = color_final * Oi;
}