Просмотр исходного кода

gl_shader_decompiler: Fix TXQ types

TXQ returns integer types. Shaders usually do:

R0 = TXQ(); // => int
R0 = static_cast<float>(R0);

If we don't treat it as an integer, it will cast a binary float value as
float - resulting in a corrupted number.
ReinUsesLisp 7 лет назад
Родитель
Сommit
88a3c05b7b
1 измененных файлов с 3 добавлено и 2 удалено
  1. 3 2
      src/video_core/renderer_opengl/gl_shader_decompiler.cpp

+ 3 - 2
src/video_core/renderer_opengl/gl_shader_decompiler.cpp

@@ -1196,11 +1196,12 @@ private:
         switch (meta->element) {
         case 0:
         case 1:
-            return "textureSize(" + sampler + ", " + lod + ')' + GetSwizzle(meta->element);
+            return "itof(int(textureSize(" + sampler + ", " + lod + ')' +
+                   GetSwizzle(meta->element) + "))";
         case 2:
             return "0";
         case 3:
-            return "textureQueryLevels(" + sampler + ')';
+            return "itof(textureQueryLevels(" + sampler + "))";
         }
         UNREACHABLE();
         return "0";