Click on the filename to display or download the file.
transmit_specular_photon.mi
declare shader
color "transmit_specular_photon" (
color "transparency" default 1 1 1,
scalar "index_of_refraction" default 1.33 )
version 1
apply photon
end declare
transmit_specular_photon.c
#include "shader.h"
#include "miaux.h"
struct transmit_specular_photon {
miColor transparency;
miScalar index_of_refraction;
};
DLLEXPORT
int transmit_specular_photon_version(void) { return 1; }
DLLEXPORT
miBoolean transmit_specular_photon (
miColor *result, miState *state, struct transmit_specular_photon *params )
{
miVector photon_direction;
miColor new_energy;
miaux_multiply_colors(&new_energy, result,
mi_eval_color(¶ms->transparency));
mi_refraction_dir(&photon_direction, state, 1.0,
*mi_eval_scalar(¶ms->index_of_refraction));
mi_photon_transmission_specular(&new_energy, state, &photon_direction);
return miTRUE;
}
transmit_specular_photon_util.c
void miaux_multiply_colors(miColor *result, miColor *x, miColor *y)
{
result->r = x->r * y->r;
result->g = x->g * y->g;
result->b = x->b * y->b;
}
22 April 2008 23:40:27