From 02fb8f2a24c9035861cd5f7b966d831daf06e5e8 Mon Sep 17 00:00:00 2001 From: xndcn Date: Wed, 26 May 2021 22:43:26 +0800 Subject: [PATCH] Add comment after inf/nan float number for clarifying. --- .../asm/frag/inf-nan-constant.asm.frag | 2 +- .../asm/frag/inf-nan-constant.asm.frag | 2 +- .../asm/frag/inf-nan-constant-double.asm.frag | 2 +- .../shaders/asm/frag/inf-nan-constant.asm.frag | 2 +- .../asm/frag/inf-nan-constant.asm.frag | 2 +- .../asm/frag/inf-nan-constant.asm.frag | 2 +- .../asm/frag/inf-nan-constant-double.asm.frag | 2 +- .../shaders/asm/frag/inf-nan-constant.asm.frag | 2 +- spirv_glsl.cpp | 16 ++++++++++++++-- 9 files changed, 22 insertions(+), 10 deletions(-) diff --git a/reference/opt/shaders-hlsl/asm/frag/inf-nan-constant.asm.frag b/reference/opt/shaders-hlsl/asm/frag/inf-nan-constant.asm.frag index d20cf995..25dc6939 100644 --- a/reference/opt/shaders-hlsl/asm/frag/inf-nan-constant.asm.frag +++ b/reference/opt/shaders-hlsl/asm/frag/inf-nan-constant.asm.frag @@ -7,7 +7,7 @@ struct SPIRV_Cross_Output void frag_main() { - FragColor = float3(asfloat(0x7f800000u), asfloat(0xff800000u), asfloat(0x7fc00000u)); + FragColor = float3(asfloat(0x7f800000u /* inf */), asfloat(0xff800000u /* -inf */), asfloat(0x7fc00000u /* nan */)); } SPIRV_Cross_Output main() diff --git a/reference/opt/shaders-msl/asm/frag/inf-nan-constant.asm.frag b/reference/opt/shaders-msl/asm/frag/inf-nan-constant.asm.frag index 8537dac1..06771989 100644 --- a/reference/opt/shaders-msl/asm/frag/inf-nan-constant.asm.frag +++ b/reference/opt/shaders-msl/asm/frag/inf-nan-constant.asm.frag @@ -11,7 +11,7 @@ struct main0_out fragment main0_out main0() { main0_out out = {}; - out.FragColor = float3(as_type(0x7f800000u), as_type(0xff800000u), as_type(0x7fc00000u)); + out.FragColor = float3(as_type(0x7f800000u /* inf */), as_type(0xff800000u /* -inf */), as_type(0x7fc00000u /* nan */)); return out; } diff --git a/reference/opt/shaders/asm/frag/inf-nan-constant-double.asm.frag b/reference/opt/shaders/asm/frag/inf-nan-constant-double.asm.frag index d8e29aa4..d3e29ab9 100644 --- a/reference/opt/shaders/asm/frag/inf-nan-constant-double.asm.frag +++ b/reference/opt/shaders/asm/frag/inf-nan-constant-double.asm.frag @@ -6,6 +6,6 @@ layout(location = 0) flat in double vTmp; void main() { - FragColor = vec3(dvec3(uint64BitsToDouble(0x7ff0000000000000ul), uint64BitsToDouble(0xfff0000000000000ul), uint64BitsToDouble(0x7ff8000000000000ul)) + dvec3(vTmp)); + FragColor = vec3(dvec3(uint64BitsToDouble(0x7ff0000000000000ul /* inf */), uint64BitsToDouble(0xfff0000000000000ul /* -inf */), uint64BitsToDouble(0x7ff8000000000000ul /* nan */)) + dvec3(vTmp)); } diff --git a/reference/opt/shaders/asm/frag/inf-nan-constant.asm.frag b/reference/opt/shaders/asm/frag/inf-nan-constant.asm.frag index dd4284c9..b5e0c6e9 100644 --- a/reference/opt/shaders/asm/frag/inf-nan-constant.asm.frag +++ b/reference/opt/shaders/asm/frag/inf-nan-constant.asm.frag @@ -6,6 +6,6 @@ layout(location = 0) out highp vec3 FragColor; void main() { - FragColor = vec3(uintBitsToFloat(0x7f800000u), uintBitsToFloat(0xff800000u), uintBitsToFloat(0x7fc00000u)); + FragColor = vec3(uintBitsToFloat(0x7f800000u /* inf */), uintBitsToFloat(0xff800000u /* -inf */), uintBitsToFloat(0x7fc00000u /* nan */)); } diff --git a/reference/shaders-hlsl/asm/frag/inf-nan-constant.asm.frag b/reference/shaders-hlsl/asm/frag/inf-nan-constant.asm.frag index d20cf995..25dc6939 100644 --- a/reference/shaders-hlsl/asm/frag/inf-nan-constant.asm.frag +++ b/reference/shaders-hlsl/asm/frag/inf-nan-constant.asm.frag @@ -7,7 +7,7 @@ struct SPIRV_Cross_Output void frag_main() { - FragColor = float3(asfloat(0x7f800000u), asfloat(0xff800000u), asfloat(0x7fc00000u)); + FragColor = float3(asfloat(0x7f800000u /* inf */), asfloat(0xff800000u /* -inf */), asfloat(0x7fc00000u /* nan */)); } SPIRV_Cross_Output main() diff --git a/reference/shaders-msl/asm/frag/inf-nan-constant.asm.frag b/reference/shaders-msl/asm/frag/inf-nan-constant.asm.frag index 8537dac1..06771989 100644 --- a/reference/shaders-msl/asm/frag/inf-nan-constant.asm.frag +++ b/reference/shaders-msl/asm/frag/inf-nan-constant.asm.frag @@ -11,7 +11,7 @@ struct main0_out fragment main0_out main0() { main0_out out = {}; - out.FragColor = float3(as_type(0x7f800000u), as_type(0xff800000u), as_type(0x7fc00000u)); + out.FragColor = float3(as_type(0x7f800000u /* inf */), as_type(0xff800000u /* -inf */), as_type(0x7fc00000u /* nan */)); return out; } diff --git a/reference/shaders/asm/frag/inf-nan-constant-double.asm.frag b/reference/shaders/asm/frag/inf-nan-constant-double.asm.frag index d8e29aa4..d3e29ab9 100644 --- a/reference/shaders/asm/frag/inf-nan-constant-double.asm.frag +++ b/reference/shaders/asm/frag/inf-nan-constant-double.asm.frag @@ -6,6 +6,6 @@ layout(location = 0) flat in double vTmp; void main() { - FragColor = vec3(dvec3(uint64BitsToDouble(0x7ff0000000000000ul), uint64BitsToDouble(0xfff0000000000000ul), uint64BitsToDouble(0x7ff8000000000000ul)) + dvec3(vTmp)); + FragColor = vec3(dvec3(uint64BitsToDouble(0x7ff0000000000000ul /* inf */), uint64BitsToDouble(0xfff0000000000000ul /* -inf */), uint64BitsToDouble(0x7ff8000000000000ul /* nan */)) + dvec3(vTmp)); } diff --git a/reference/shaders/asm/frag/inf-nan-constant.asm.frag b/reference/shaders/asm/frag/inf-nan-constant.asm.frag index dd4284c9..b5e0c6e9 100644 --- a/reference/shaders/asm/frag/inf-nan-constant.asm.frag +++ b/reference/shaders/asm/frag/inf-nan-constant.asm.frag @@ -6,6 +6,6 @@ layout(location = 0) out highp vec3 FragColor; void main() { - FragColor = vec3(uintBitsToFloat(0x7f800000u), uintBitsToFloat(0xff800000u), uintBitsToFloat(0x7fc00000u)); + FragColor = vec3(uintBitsToFloat(0x7f800000u /* inf */), uintBitsToFloat(0xff800000u /* -inf */), uintBitsToFloat(0x7fc00000u /* nan */)); } diff --git a/spirv_glsl.cpp b/spirv_glsl.cpp index 6feac01a..028c98d1 100644 --- a/spirv_glsl.cpp +++ b/spirv_glsl.cpp @@ -4948,7 +4948,13 @@ string CompilerGLSL::convert_float_to_string(const SPIRConstant &c, uint32_t col char print_buffer[32]; sprintf(print_buffer, "0x%xu", c.scalar(col, row)); - res = join(bitcast_glsl_op(out_type, in_type), "(", print_buffer, ")"); + + const char *comment = "inf"; + if (float_value == -numeric_limits::infinity()) + comment = "-inf"; + else if (std::isnan(float_value)) + comment = "nan"; + res = join(bitcast_glsl_op(out_type, in_type), "(", print_buffer, " /* ", comment, " */)"); } else { @@ -5015,7 +5021,13 @@ std::string CompilerGLSL::convert_double_to_string(const SPIRConstant &c, uint32 char print_buffer[64]; sprintf(print_buffer, "0x%llx%s", static_cast(u64_value), backend.long_long_literal_suffix ? "ull" : "ul"); - res = join(bitcast_glsl_op(out_type, in_type), "(", print_buffer, ")"); + + const char *comment = "inf"; + if (double_value == -numeric_limits::infinity()) + comment = "-inf"; + else if (std::isnan(double_value)) + comment = "nan"; + res = join(bitcast_glsl_op(out_type, in_type), "(", print_buffer, " /* ", comment, " */)"); } else {