Click on the filename to display or download the file.
front_bright_steps.mi
declare shader
color "front_bright_steps" (
color "tint" default 1 1 1,
integer "steps" default 3 )
version 1
apply material
end declare
front_bright_steps.c
#include "shader.h"
#include "miaux.h"
struct front_bright_steps {
miColor tint;
miInteger steps;
};
DLLEXPORT
int front_bright_steps_version(void) { return(1); }
DLLEXPORT
miBoolean front_bright_steps (
miColor *result, miState *state, struct front_bright_steps *params )
{
miColor *tint = mi_eval_color(¶ms->tint);
miScalar scale =
miaux_quantize(-state->dot_nd, *mi_eval_integer(¶ms->steps));
result->r = tint->r * scale;
result->g = tint->g * scale;
result->b = tint->b * scale;
result->a = 1.0;
return miTRUE;
}
front_bright_steps_util.c
miScalar miaux_quantize(miScalar value, miInteger count)
{
miScalar q = (miScalar)count;
if (count < 2)
return q;
else
return (miScalar)((int)(value * q) / (q - 1));
}
22 April 2008 23:40:01