profiles/mojoshader_profile_glsl.c
changeset 1293 ee08d870641b
parent 1292 32d4493dc144
child 1308 ff7fe8bdbb8f
equal deleted inserted replaced
1292:32d4493dc144 1293:ee08d870641b
  1192     output_line(ctx, "%s", code);
  1192     output_line(ctx, "%s", code);
  1193 } // emit_GLSL_MUL
  1193 } // emit_GLSL_MUL
  1194 
  1194 
  1195 void emit_GLSL_RCP(Context *ctx)
  1195 void emit_GLSL_RCP(Context *ctx)
  1196 {
  1196 {
  1197     char src0[64]; make_GLSL_srcarg_string_masked(ctx, 0, src0, sizeof (src0));
  1197     const int vecsize = vecsize_from_writemask(ctx->dest_arg.writemask);
       
  1198     char cast[16] = { '\0' };
       
  1199     if (vecsize != 1)
       
  1200         snprintf(cast, sizeof (cast), "vec%d", vecsize);
       
  1201     char src0[64]; make_GLSL_srcarg_string_scalar(ctx, 0, src0, sizeof (src0));
  1198     char code[128];
  1202     char code[128];
  1199     ctx->need_max_float = 1;
  1203     ctx->need_max_float = 1;
  1200     make_GLSL_destarg_assign(ctx, code, sizeof (code), "(%s == 0.0) ? FLT_MAX : 1.0 / %s", src0, src0);
  1204     make_GLSL_destarg_assign(ctx, code, sizeof (code), "%s((%s == 0.0) ? FLT_MAX : 1.0 / %s)", cast, src0, src0);
  1201     output_line(ctx, "%s", code);
  1205     output_line(ctx, "%s", code);
  1202 } // emit_GLSL_RCP
  1206 } // emit_GLSL_RCP
  1203 
  1207 
  1204 void emit_GLSL_RSQ(Context *ctx)
  1208 void emit_GLSL_RSQ(Context *ctx)
  1205 {
  1209 {
  1206     char src0[64]; make_GLSL_srcarg_string_masked(ctx, 0, src0, sizeof (src0));
  1210     const int vecsize = vecsize_from_writemask(ctx->dest_arg.writemask);
       
  1211     char cast[16] = { '\0' };
       
  1212     if (vecsize != 1)
       
  1213         snprintf(cast, sizeof (cast), "vec%d", vecsize);
       
  1214 
       
  1215     char src0[64]; make_GLSL_srcarg_string_scalar(ctx, 0, src0, sizeof (src0));
  1207     char code[128];
  1216     char code[128];
  1208     ctx->need_max_float = 1;
  1217     ctx->need_max_float = 1;
  1209     make_GLSL_destarg_assign(ctx, code, sizeof (code), "(%s == 0.0) ? FLT_MAX : inversesqrt(abs(%s))", src0, src0);
  1218     make_GLSL_destarg_assign(ctx, code, sizeof (code), "%s((%s == 0.0) ? FLT_MAX : inversesqrt(abs(%s)))", cast, src0, src0);
  1210     output_line(ctx, "%s", code);
  1219     output_line(ctx, "%s", code);
  1211 } // emit_GLSL_RSQ
  1220 } // emit_GLSL_RSQ
  1212 
  1221 
  1213 void emit_GLSL_dotprod(Context *ctx, const char *src0, const char *src1,
  1222 void emit_GLSL_dotprod(Context *ctx, const char *src0, const char *src1,
  1214                        const char *extra)
  1223                        const char *extra)