From 4274c9a035793eb58fcb95c8e5c58d0ebecb5bf7 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Wed, 18 Jun 2008 11:04:19 -0400 Subject: [PATCH] Added real SRCMOD_ABS/SRCMOD_ABSNEGATE support in nv2 profile. --HG-- branch : trunk --- mojoshader.c | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/mojoshader.c b/mojoshader.c index f3a0d3d4..566c2447 100644 --- a/mojoshader.c +++ b/mojoshader.c @@ -3424,14 +3424,22 @@ static const char *make_ARB1_srcarg_string_in_buf(Context *ctx, premod_str = "-"; // fall through. case SRCMOD_ABS: - regtype_str = allocate_ARB1_scratch_reg_name(ctx); - regnum_str[0] = '\0'; // move value to scratch register. - rel_lbracket = ""; // scratch register won't use array. - rel_rbracket = ""; - rel_offset[0] = '\0'; - rel_swizzle[0] = '\0'; - rel_regtype_str = ""; - output_line(ctx, "ABS %s, %s;", regtype_str, buf); + if (ctx->support_nv2) // GL_NV_vertex_program2_option adds this. + { + premod_str = (arg->src_mod == SRCMOD_ABSNEGATE) ? "-|" : "|"; + postmod_str = "|"; + } // if + else + { + regtype_str = allocate_ARB1_scratch_reg_name(ctx); + regnum_str[0] = '\0'; // move value to scratch register. + rel_lbracket = ""; // scratch register won't use array. + rel_rbracket = ""; + rel_offset[0] = '\0'; + rel_swizzle[0] = '\0'; + rel_regtype_str = ""; + output_line(ctx, "ABS %s, %s;", regtype_str, buf); + } // else break; case SRCMOD_NOT: