void GeneralFunctionStruct::Invoke(int stage, int portion, BiasScaleEnum bs) { GLenum portionEnum = (RCP_RGB == portion) ? GL_RGB : GL_ALPHA; glCombinerInputNV(GL_COMBINER0_NV + stage, portionEnum, GL_VARIABLE_A_NV, op[0].reg[1].reg.bits.name, op[0].reg[1].map, MAP_CHANNEL(op[0].reg[1].reg.bits.channel)); glCombinerInputNV(GL_COMBINER0_NV + stage, portionEnum, GL_VARIABLE_B_NV, op[0].reg[2].reg.bits.name, op[0].reg[2].map, MAP_CHANNEL(op[0].reg[2].reg.bits.channel)); glCombinerInputNV(GL_COMBINER0_NV + stage, portionEnum, GL_VARIABLE_C_NV, op[1].reg[1].reg.bits.name, op[1].reg[1].map, MAP_CHANNEL(op[1].reg[1].reg.bits.channel)); glCombinerInputNV(GL_COMBINER0_NV + stage, portionEnum, GL_VARIABLE_D_NV, op[1].reg[2].reg.bits.name, op[1].reg[2].map, MAP_CHANNEL(op[1].reg[2].reg.bits.channel)); glCombinerOutputNV(GL_COMBINER0_NV + stage, portionEnum, op[0].reg[0].reg.bits.name, op[1].reg[0].reg.bits.name, op[2].reg[0].reg.bits.name, bs.bits.scale, bs.bits.bias, op[0].op, op[1].op, (op[2].op == RCP_MUX) ? true : false); }
void FinalCombinerStruct::Invoke() { if(clamp) glCombinerParameteriNV(GL_COLOR_SUM_CLAMP_NV, GL_TRUE); else glCombinerParameteriNV(GL_COLOR_SUM_CLAMP_NV, GL_FALSE); glFinalCombinerInputNV( GL_VARIABLE_A_NV, rgb.a.reg.bits.name, rgb.a.map, MAP_CHANNEL(rgb.a.reg.bits.channel)); glFinalCombinerInputNV( GL_VARIABLE_B_NV, rgb.b.reg.bits.name, rgb.b.map, MAP_CHANNEL(rgb.b.reg.bits.channel)); glFinalCombinerInputNV( GL_VARIABLE_C_NV, rgb.c.reg.bits.name, rgb.c.map, MAP_CHANNEL(rgb.c.reg.bits.channel)); glFinalCombinerInputNV( GL_VARIABLE_D_NV, rgb.d.reg.bits.name, rgb.d.map, MAP_CHANNEL(rgb.d.reg.bits.channel)); glFinalCombinerInputNV( GL_VARIABLE_E_NV, product.e.reg.bits.name, product.e.map, MAP_CHANNEL(product.e.reg.bits.channel)); glFinalCombinerInputNV( GL_VARIABLE_F_NV, product.f.reg.bits.name, product.f.map, MAP_CHANNEL(product.f.reg.bits.channel)); glFinalCombinerInputNV( GL_VARIABLE_G_NV, alpha.g.reg.bits.name, alpha.g.map, MAP_CHANNEL(alpha.g.reg.bits.channel)); }