Click on the filename to display or download the file.
depth_fade_tint.mi
declare shader
color "depth_fade_tint" (
scalar "near",
color "near_color" default 1 1 1,
scalar "far",
color "far_color" default 0 0 0 )
version 1
apply material
end declare
depth_fade_tint.c
#include "shader.h"
struct depth_fade_tint {
miScalar near;
miColor near_color;
miScalar far;
miColor far_color;
};
DLLEXPORT
int depth_fade_tint_version(void) { return(1); }
DLLEXPORT
miBoolean depth_fade_tint (
miColor *result, miState *state, struct depth_fade_tint *params )
{
miScalar near = *mi_eval_scalar(¶ms->near);
miColor *near_color = mi_eval_color(¶ms->near_color);
miScalar far = *mi_eval_scalar(¶ms->far);
miColor *far_color = mi_eval_color(¶ms->far_color);
miScalar zpos = state->point.z, factor;
if (zpos > near)
factor = 1.0;
else if (zpos < far)
factor = 0.0;
else
factor = (zpos - far) / (near - far);
result->r = near_color->r * factor + far_color->r * (1.0 - factor);
result->g = near_color->g * factor + far_color->g * (1.0 - factor);
result->b = near_color->b * factor + far_color->b * (1.0 - factor);
return miTRUE;
}
22 April 2008 23:39:51