profiles/mojoshader_profile_glsl.c
changeset 1255 0135d797e287
parent 1222 c6e847dd9d4b
child 1292 32d4493dc144
equal deleted inserted replaced
1254:422f68756c9f 1255:0135d797e287
   639     output_GLSL_uniform_array(ctx, REG_TYPE_CONSTBOOL, ctx->uniform_bool_count);
   639     output_GLSL_uniform_array(ctx, REG_TYPE_CONSTBOOL, ctx->uniform_bool_count);
   640 #ifdef MOJOSHADER_FLIP_RENDERTARGET
   640 #ifdef MOJOSHADER_FLIP_RENDERTARGET
   641     if (shader_is_vertex(ctx))
   641     if (shader_is_vertex(ctx))
   642         output_line(ctx, "uniform float vpFlip;");
   642         output_line(ctx, "uniform float vpFlip;");
   643 #endif
   643 #endif
   644     if (ctx->glsl_need_max_float)
   644     if (ctx->need_max_float)
   645         output_line(ctx, "const float FLT_MAX = 1e38;");
   645         output_line(ctx, "const float FLT_MAX = 1e38;");
   646     pop_output(ctx);
   646     pop_output(ctx);
   647 } // emit_GLSL_finalize
   647 } // emit_GLSL_finalize
   648 
   648 
   649 void emit_GLSL_global(Context *ctx, RegisterType regtype, int regnum)
   649 void emit_GLSL_global(Context *ctx, RegisterType regtype, int regnum)
  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     char src0[64]; make_GLSL_srcarg_string_masked(ctx, 0, src0, sizeof (src0));
  1198     char code[128];
  1198     char code[128];
  1199     ctx->glsl_need_max_float = 1;
  1199     ctx->need_max_float = 1;
  1200     make_GLSL_destarg_assign(ctx, code, sizeof (code), "(%s == 0.0) ? FLT_MAX : 1.0 / %s", src0, src0);
  1200     make_GLSL_destarg_assign(ctx, code, sizeof (code), "(%s == 0.0) ? FLT_MAX : 1.0 / %s", src0, src0);
  1201     output_line(ctx, "%s", code);
  1201     output_line(ctx, "%s", code);
  1202 } // emit_GLSL_RCP
  1202 } // emit_GLSL_RCP
  1203 
  1203 
  1204 void emit_GLSL_RSQ(Context *ctx)
  1204 void emit_GLSL_RSQ(Context *ctx)
  1205 {
  1205 {
  1206     char src0[64]; make_GLSL_srcarg_string_masked(ctx, 0, src0, sizeof (src0));
  1206     char src0[64]; make_GLSL_srcarg_string_masked(ctx, 0, src0, sizeof (src0));
  1207     char code[128];
  1207     char code[128];
  1208     ctx->glsl_need_max_float = 1;
  1208     ctx->need_max_float = 1;
  1209     make_GLSL_destarg_assign(ctx, code, sizeof (code), "(%s == 0.0) ? FLT_MAX : inversesqrt(abs(%s))", src0, src0);
  1209     make_GLSL_destarg_assign(ctx, code, sizeof (code), "(%s == 0.0) ? FLT_MAX : inversesqrt(abs(%s))", src0, src0);
  1210     output_line(ctx, "%s", code);
  1210     output_line(ctx, "%s", code);
  1211 } // emit_GLSL_RSQ
  1211 } // emit_GLSL_RSQ
  1212 
  1212 
  1213 void emit_GLSL_dotprod(Context *ctx, const char *src0, const char *src1,
  1213 void emit_GLSL_dotprod(Context *ctx, const char *src0, const char *src1,