profiles/mojoshader_profile_glsl.c
changeset 1221 012dec2787aa
parent 1216 9d725de6c61c
child 1222 c6e847dd9d4b
equal deleted inserted replaced
1220:048797e6aae1 1221:012dec2787aa
   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)
       
   645         output_line(ctx, "const float FLT_MAX = 1e38;");
   644     pop_output(ctx);
   646     pop_output(ctx);
   645 } // emit_GLSL_finalize
   647 } // emit_GLSL_finalize
   646 
   648 
   647 void emit_GLSL_global(Context *ctx, RegisterType regtype, int regnum)
   649 void emit_GLSL_global(Context *ctx, RegisterType regtype, int regnum)
   648 {
   650 {
  1197 
  1199 
  1198 void emit_GLSL_RCP(Context *ctx)
  1200 void emit_GLSL_RCP(Context *ctx)
  1199 {
  1201 {
  1200     char src0[64]; make_GLSL_srcarg_string_masked(ctx, 0, src0, sizeof (src0));
  1202     char src0[64]; make_GLSL_srcarg_string_masked(ctx, 0, src0, sizeof (src0));
  1201     char code[128];
  1203     char code[128];
  1202     make_GLSL_destarg_assign(ctx, code, sizeof (code), "1.0 / %s", src0);
  1204     ctx->glsl_need_max_float = 1;
       
  1205     make_GLSL_destarg_assign(ctx, code, sizeof (code), "(%s == 0.0) ? FLT_MAX : 1.0 / %s", src0, src0);
  1203     output_line(ctx, "%s", code);
  1206     output_line(ctx, "%s", code);
  1204 } // emit_GLSL_RCP
  1207 } // emit_GLSL_RCP
  1205 
  1208 
  1206 void emit_GLSL_RSQ(Context *ctx)
  1209 void emit_GLSL_RSQ(Context *ctx)
  1207 {
  1210 {
  1208     char src0[64]; make_GLSL_srcarg_string_masked(ctx, 0, src0, sizeof (src0));
  1211     char src0[64]; make_GLSL_srcarg_string_masked(ctx, 0, src0, sizeof (src0));
  1209     char code[128];
  1212     char code[128];
  1210     make_GLSL_destarg_assign(ctx, code, sizeof (code), "inversesqrt(%s)", src0);
  1213     ctx->glsl_need_max_float = 1;
       
  1214     make_GLSL_destarg_assign(ctx, code, sizeof (code), "(%s == 0.0) ? FLT_MAX : inversesqrt(abs(%s))", src0, src0);
  1211     output_line(ctx, "%s", code);
  1215     output_line(ctx, "%s", code);
  1212 } // emit_GLSL_RSQ
  1216 } // emit_GLSL_RSQ
  1213 
  1217 
  1214 void emit_GLSL_dotprod(Context *ctx, const char *src0, const char *src1,
  1218 void emit_GLSL_dotprod(Context *ctx, const char *src0, const char *src1,
  1215                        const char *extra)
  1219                        const char *extra)