Shader depth_fade_tint_3
|
Home
|
Click on the filename to display or download the file.
depth_fade_tint_3.mi
declare shader
color "depth_fade_tint_3" (
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_3.c
#include "shader.h"
#include "miaux.h"
struct depth_fade_tint_3 {
miScalar near;
miColor near_color;
miScalar far;
miColor far_color;
};
DLLEXPORT
int depth_fade_tint_3_version(void) { return(1); }
DLLEXPORT
miBoolean depth_fade_tint_3 (
miColor *result, miState *state, struct depth_fade_tint_3 *params )
{
miaux_blend_colors(result,
mi_eval_color(¶ms->near_color),
mi_eval_color(¶ms->far_color),
miaux_fit(state->point.z,
*mi_eval_scalar(¶ms->far),
*mi_eval_scalar(¶ms->near),
0.0, 1.0));
return miTRUE;
}
depth_fade_tint_3_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:52