Click on the filename to display or download the file.
streak.mi
declare shader
color "streak" (
scalar "max_distance" default .1 )
version 1
apply lens
scanline off
trace on
end declare
streak.c
#include "shader.h"
#include "miaux.h"
struct streak {
miScalar max_distance;
};
DLLEXPORT
int streak_version(void) { return 1; }
DLLEXPORT
miBoolean streak (
miColor *result, miState *state, struct streak *params )
{
miScalar max_distance = *mi_eval_scalar(¶ms->max_distance);
state->org.z += miaux_random_range(-max_distance, max_distance);
return mi_trace_eye(result, state, &state->org, &state->dir);
}
streak_util.c
result->r += miaux_random_range(-red_variance, red_variance);
result->r = miaux_clamp(result->r, 0.0, 1.0);
result->g += miaux_random_range(-green_variance, green_variance);
result->g = miaux_clamp(result->g, 0.0, 1.0);
result->b += miaux_random_range(-blue_variance, blue_variance);
result->b = miaux_clamp(result->b, 0.0, 1.0);
}
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:40:58