Shader front_bright_steps

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(&params->tint); 
    miScalar scale =  
        miaux_quantize(-state->dot_nd, *mi_eval_integer(&params->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