A simple shader that takes a base color and multiplies by another color.
Mi File
Methodology
1. create a color parameter called base
2. create a color parameter called gain
3. create a shader called "color_gain"
4. create a function where result = base * gain
Mi File
declare shader color "color_gain" ( color "base" default 1 1 1, color "gain" default 1 1 1 ) version 1 apply material end declare
C File
#include "shader.h"
DLLEXPORT
struct color_gain {
miColor base;
miColor gain;
};
DLLEXPORT
miBoolean color_gain (miColor *result, miState *state, struct color_gain *params) {
miColor *base = mi_eval_color(¶ms->base);
miColor *gain = mi_eval_color(¶ms->gain);
result->r = base->r * gain->r;
result->g = base->g * gain->g;
result->b = base->b * gain->b;
return miTRUE;
}

0 comments:
Post a Comment