//-----------------------------------------
// LScript Image Filter - www.StephenCulley.co.uk - Depth Desaturation
//
@version 2.5
@warnings
@script image
Saturation,Minimum,Maximum,Multiply,Distance;
create
{
Saturation = 0;
Minimum = -75;
Maximum = 75;
Multiply = 2;
Distance = 25;
setdesc("www.StephenCulley.co.uk - Depth Desaturation : " + Saturation + " " + Minimum + " " + Maximum + " " + Multiply + " " + Distance);
}
process: ifo
{
moninit(ifo.height) unless runningUnder() == SCREAMERNET;
for(i = 1;i <= ifo.height;++i)
{
for(j = 1;j <= ifo.width;++j)
{
Avg = 256 * (ifo.red[j,i] + ifo.green[j,i] + ifo.blue[j,i]) / 3;
R = 256 * ifo.red[j,i];
G = 256 * ifo.green[j,i];
B = 256 * ifo.blue[j,i];
if(ifo.depth[j,i] > Distance)
{
D = ifo.depth[j,i] - Distance;
}
else
{
D = 0;
}
S = (Saturation - D) * Multiply;
if(S < Minimum)
{
S = Minimum;
}
else
{
if(S > Maximum)
{
S = Maximum;
}
}
ifo.red[j,i] = (1 / 256) * (R + S / 100 * (R - Avg));
ifo.green[j,i] = (1 / 256) * (G + S / 100 * (G - Avg));
ifo.blue[j,i] = (1 / 256) * (B + S / 100 * (B - Avg));
}
if(runningUnder() != SCREAMERNET)
{
return if monstep();
}
}
monend() unless runningUnder() == SCREAMERNET;
}
load: what,io
{
if(what == SCENEMODE)
{
Saturation = number(io.read());
Minimum = number(io.read());
Maximim = number(io.read());
Multiply = number(io.read());
Distance = number(io.read());
setdesc("www.StephenCulley.co.uk - Depth Desaturation : " + Saturation + " " + Minimum + " " + Maximum + " " + Multiply + " " + Distance);
}
}
save: what,io
{
if(what == SCENEMODE)
{
io.writeln(Saturation);
io.writeln(Minimum);
io.writeln(Maximum);
io.writeln(Multiply);
io.writeln(Distance);
}
}
options
{
reqbegin("Depth Desaturation");
c1 = ctlnumber("Amount",Saturation);
c2 = ctlnumber("Minimum",Minimum);
c3 = ctlnumber("Maximum",Maximum);
c4 = ctlnumber("Multiply",Multiply);
c5 = ctlnumber("Distance",Distance);
return if !reqpost();
Saturation = getvalue(c1);
Minimum = getvalue(c2);
Maximum = getvalue(c3);
Multiply = getvalue(c4);
Distance = getvalue(c5);
setdesc("www.StephenCulley.co.uk - Depth Desaturation : " + Saturation + " " + Minimum + " " + Maximum + " " + Multiply + " " + Distance);
reqend();
}
|