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

Merge pull request #1132 from Subv/gl_FragDepth

Shaders: Implement depth writing in fragment shaders.
bunnei 8 лет назад
Родитель
Сommit
b0f7713fce
1 измененных файлов с 6 добавлено и 1 удалено
  1. 6 1
      src/video_core/renderer_opengl/gl_shader_decompiler.cpp

+ 6 - 1
src/video_core/renderer_opengl/gl_shader_decompiler.cpp

@@ -918,7 +918,6 @@ private:
         FragmentHeader header;
         std::memcpy(&header, program_code.data(), PROGRAM_HEADER_SIZE);
 
-        ASSERT_MSG(header.writes_depth == 0, "Depth write is unimplemented");
         ASSERT_MSG(header.writes_samplemask == 0, "Samplemask write is unimplemented");
 
         // Write the color outputs using the data in the shader registers, disabled
@@ -935,6 +934,12 @@ private:
                 }
             }
         }
+
+        if (header.writes_depth) {
+            // The depth output is always 2 registers after the last color output, and current_reg
+            // already contains one past the last color register.
+            shader.AddLine("gl_FragDepth = " + regs.GetRegisterAsFloat(current_reg + 1) + ';');
+        }
     }
 
     /**