Shaders: Implement depth writing in fragment shaders.
We'll write <last color output reg + 2> to gl_FragDepth.
This commit is contained in:
parent
c4ce7e456a
commit
e3bddf8137
@ -918,7 +918,6 @@ private:
|
|||||||
FragmentHeader header;
|
FragmentHeader header;
|
||||||
std::memcpy(&header, program_code.data(), PROGRAM_HEADER_SIZE);
|
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");
|
ASSERT_MSG(header.writes_samplemask == 0, "Samplemask write is unimplemented");
|
||||||
|
|
||||||
// Write the color outputs using the data in the shader registers, disabled
|
// 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) + ';');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user