Shader depth_fade_tint_2

Click on the filename to display or download the file.

depth_fade_tint_2.mi
declare shader 
    color "depth_fade_tint_2" ( 
        scalar "near", 
	color  "near_color" default 1 1 1, 
        scalar "far", 
	color  "far_color" default 0 0 0 ) 
    version 1 
end declare 

depth_fade_tint_2.c
#include "shader.h" 
#include "miaux.h" 
 
struct depth_fade_tint_2 {  
    miScalar near; 
    miColor near_color; 
    miScalar far; 
    miColor far_color; 
}; 
 
DLLEXPORT 
int depth_fade_tint_2_version(void) { return(1); } 
 
DLLEXPORT 
miBoolean depth_fade_tint_2 (  
    miColor *result, miState *state, struct depth_fade_tint_2 *params  ) 
{ 
    miScalar near = *mi_eval_scalar(&params->near); 
    miColor *near_color = mi_eval_color(&params->near_color); 
    miScalar far = *mi_eval_scalar(&params->far); 
    miColor *far_color = mi_eval_color(&params->far_color); 
 
    miaux_blend_colors(result, near_color, far_color, 
                       miaux_fit(state->point.z, far, near, 0.0, 1.0)); 
 
    return miTRUE; 
} 

depth_fade_tint_2_util.c
void miaux_blend_colors(miColor *result,  
			miColor *color1, miColor *color2, miScalar factor) 
{ 
    result->r = miaux_blend(color1->r, color2->r, factor); 
    result->g = miaux_blend(color1->g, color2->g, factor); 
    result->b = miaux_blend(color1->b, color2->b, factor); 
} 
 
double miaux_blend(miScalar a, miScalar b, miScalar factor) 
{ 
    return a * factor + b * (1.0 - factor); 
} 
 
double miaux_fit( 
    double v, double oldmin, double oldmax, double newmin, double newmax)     
{ 
    return newmin + ((v - oldmin) / (oldmax - oldmin)) * (newmax - newmin); 
} 

22 April 2008 23:39:51