Răsfoiți Sursa

fix(shaders): parenthesize log10 macro to prevent precedence bugs (#530)

The log10 compatibility macro expands to `log2(x) * 0.301029995663981`
without parentheses, causing incorrect results in expressions like
`1.0 / log10(x)` which becomes `1.0 / log2(x) * 0.301029995663981`
(division before multiplication, due to left-to-right evaluation).

Wrapping the macro body in parentheses matches the convention already
used by other SHADER_HEADER macros like `mul`, `saturate`, and `fmod`.
Alexander Stoyanov 4 luni în urmă
părinte
comite
92db907889
1 a modificat fișierele cu 1 adăugiri și 1 ștergeri
  1. 1 1
      src/WallpaperEngine/Render/Shaders/ShaderUnit.cpp

+ 1 - 1
src/WallpaperEngine/Render/Shaders/ShaderUnit.cpp

@@ -37,7 +37,7 @@
 	  "#define saturate(x) (clamp(x, 0.0, 1.0))\n"                                                                 \
 	  "#define saturate(x) (clamp(x, 0.0, 1.0))\n"                                                                 \
 	  "#define texSample2D texture\n"                                                                              \
 	  "#define texSample2D texture\n"                                                                              \
 	  "#define texSample2DLod textureLod\n"                                                                        \
 	  "#define texSample2DLod textureLod\n"                                                                        \
-	  "#define log10(x) log2(x) * 0.301029995663981\n"                                                             \
+	  "#define log10(x) (log2(x) * 0.301029995663981)\n"                                                             \
 	  "#define atan2 atan\n"                                                                                       \
 	  "#define atan2 atan\n"                                                                                       \
 	  "#define fmod(x, y) ((x)-(y)*trunc((x)/(y)))\n"                                                              \
 	  "#define fmod(x, y) ((x)-(y)*trunc((x)/(y)))\n"                                                              \
 	  "#define ddx dFdx\n"                                                                                         \
 	  "#define ddx dFdx\n"                                                                                         \