Goal
A simple shader that combines the gain and offset shader
Methodology
1. create a color parameter called base
2. create a color parameter called gain
3. create a color parameter called offset
4. create a shader called "color_gain"
5. create a shader called "color_offset"
6. create a function where result = base * gain
7. create a function where result = result + offset
Mi File
declare shader color "color_balance" ( color "base" default 1 1 1, color "gain" default 1 1 1, color "offset" default 0 0 0, ) end declare
C File
#include "shader.h"
DLLEXPORT
struct color_balance {
miColor base;
miColor gain;
miColor offset;
};
DLLEXPORT
miBoolean color_balance (miColor *result, miState *state, struct color_balance *params) {
miColor *base = mi_eval_color(¶ms->base);
miColor *gain = mi_eval_color(¶ms->gain);
miColor *offset = mi_eval_color(¶ms->offset);
result->r = base->r * gain->r;
result->g = base->g * gain->g;
result->b = base->b * gain->b;
result->r += offset->r;
result->g += offset->g;
result->b += offset->b;
return miTRUE;
}

0 comments:
Post a Comment