Fixed initializing the 'leave' enable mask on every shader iteration.
diff --git a/src/Shader/PixelRoutine.cpp b/src/Shader/PixelRoutine.cpp index 2528a9c..42f6189 100644 --- a/src/Shader/PixelRoutine.cpp +++ b/src/Shader/PixelRoutine.cpp
@@ -3781,6 +3781,11 @@ r.enableIndex = 0; r.stackIndex = 0; + if(shader->containsLeaveInstruction()) + { + r.enableLeave = Int4(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF); + } + bool out[4][4] = {false}; // Create all call site return blocks up front
diff --git a/src/Shader/PixelRoutine.hpp b/src/Shader/PixelRoutine.hpp index de8533d..1439467 100644 --- a/src/Shader/PixelRoutine.hpp +++ b/src/Shader/PixelRoutine.hpp
@@ -66,11 +66,6 @@ enableContinue = Int4(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF); } - if(shader && shader->containsLeaveInstruction()) - { - enableLeave = Int4(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF); - } - occlusion = 0; #if PERF_PROFILE
diff --git a/src/Shader/VertexProgram.cpp b/src/Shader/VertexProgram.cpp index 6075d1f..75dc5df 100644 --- a/src/Shader/VertexProgram.cpp +++ b/src/Shader/VertexProgram.cpp
@@ -70,6 +70,11 @@ r.enableIndex = 0; r.stackIndex = 0; + if(shader->containsLeaveInstruction()) + { + r.enableLeave = Int4(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF); + } + // Create all call site return blocks up front for(int i = 0; i < shader->getLength(); i++) {
diff --git a/src/Shader/VertexRoutine.hpp b/src/Shader/VertexRoutine.hpp index 7c174e8..17c04dd 100644 --- a/src/Shader/VertexRoutine.hpp +++ b/src/Shader/VertexRoutine.hpp
@@ -41,11 +41,6 @@ { enableContinue = Int4(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF); } - - if(shader && shader->containsLeaveInstruction()) - { - enableLeave = Int4(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF); - } } Pointer<Byte> data;