gl_rasterizer: implement mipmap for proctex

This commit is contained in:
wwylele
2018-07-04 17:16:38 +03:00
parent 4564fc5baa
commit 2927c88fd3
7 changed files with 97 additions and 23 deletions

View File

@@ -186,6 +186,7 @@ void RasterizerOpenGL::SyncEntireState() {
SyncFogColor();
SyncProcTexNoise();
SyncProcTexBias();
SyncShadowBias();
}
@@ -894,6 +895,7 @@ void RasterizerOpenGL::NotifyPicaRegisterChanged(u32 id) {
case PICA_REG_INDEX(texturing.proctex):
case PICA_REG_INDEX(texturing.proctex_lut):
case PICA_REG_INDEX(texturing.proctex_lut_offset):
SyncProcTexBias();
shader_dirty = true;
break;
@@ -1681,6 +1683,15 @@ void RasterizerOpenGL::SyncProcTexNoise() {
uniform_block_data.dirty = true;
}
void RasterizerOpenGL::SyncProcTexBias() {
const auto& regs = Pica::g_state.regs.texturing;
uniform_block_data.data.proctex_bias =
Pica::float16::FromRaw(regs.proctex.bias_low | (regs.proctex_lut.bias_high << 8))
.ToFloat32();
uniform_block_data.dirty = true;
}
void RasterizerOpenGL::SyncAlphaTest() {
const auto& regs = Pica::g_state.regs;
if (regs.framebuffer.output_merger.alpha_test.ref != uniform_block_data.data.alphatest_ref) {