Shader transmit_specular_photon

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(&params->transparency)); 
    mi_refraction_dir(&photon_direction, state, 1.0,  
                      *mi_eval_scalar(&params->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