Shader texture_uv

Click on the filename to display or download the file.

texture_uv.mi
declare shader 
    color "texture_uv" ( 
        color texture "tex", 
	scalar "u_scale"  default 1, 
	scalar "v_scale"  default 1, 
	scalar "u_offset" default 0, 
	scalar "v_offset" default 0 ) 
    version 1 
    apply material, texture 
end declare 

texture_uv.c
#include "shader.h" 
#include  
 
struct texture_uv { 
    miTag tex; 
    miScalar u_scale; 
    miScalar v_scale; 
    miScalar u_offset; 
    miScalar v_offset; 
}; 
 
DLLEXPORT 
int texture_uv_version(void) {return 1;} 
 
DLLEXPORT 
miBoolean texture_uv (  
    miColor *result, miState *state, struct texture_uv *params ) 
{ 
    miVector uv_coord = {0.0, 0.0, 0.0}; 
    miScalar u_scale  = *mi_eval_scalar(&params->u_scale); 
    miScalar v_scale  = *mi_eval_scalar(&params->v_scale); 
    miScalar u_offset = *mi_eval_scalar(&params->u_offset); 
    miScalar v_offset = *mi_eval_scalar(&params->v_offset); 
 
    uv_coord.x = fmod((state->tex_list[0].x * u_scale) + u_offset, 1.0); 
    uv_coord.y = fmod((state->tex_list[0].y * v_scale) + v_offset, 1.0); 
 
    mi_lookup_color_texture( 
        result, state, *mi_eval_tag(&params->tex), &uv_coord); 
 
    return miTRUE; 
} 

22 April 2008 23:39:56