diff options
| author | bunnei <bunneidev@gmail.com> | 2016-01-20 22:27:33 -0500 |
|---|---|---|
| committer | bunnei <bunneidev@gmail.com> | 2016-01-20 22:27:33 -0500 |
| commit | 0b6cc0592dec5584d1a2211e9d777f0b2640faea (patch) | |
| tree | 055bc437e6d0dbf37d7d6440ba4992be6c051e4e /src/video_core/renderer_opengl/gl_rasterizer.cpp | |
| parent | 1b9012aea00efc4afa4c2e22acb335de9c31ed4f (diff) | |
| parent | f53dbafdae6b6ca8ab718d2299437df469441389 (diff) | |
Merge pull request #1334 from tfarley/hw-depth-modifiers
hwrasterizer: Use depth offset
Diffstat (limited to 'src/video_core/renderer_opengl/gl_rasterizer.cpp')
| -rw-r--r-- | src/video_core/renderer_opengl/gl_rasterizer.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp index 092351dce..291ef737d 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer.cpp +++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp @@ -126,6 +126,7 @@ void RasterizerOpenGL::InitObjects() { void RasterizerOpenGL::Reset() { SyncCullMode(); + SyncDepthModifiers(); SyncBlendEnabled(); SyncBlendFuncs(); SyncBlendColor(); @@ -194,6 +195,12 @@ void RasterizerOpenGL::NotifyPicaRegisterChanged(u32 id) { SyncCullMode(); break; + // Depth modifiers + case PICA_REG_INDEX(viewport_depth_range): + case PICA_REG_INDEX(viewport_depth_far_plane): + SyncDepthModifiers(); + break; + // Blending case PICA_REG_INDEX(output_merger.alphablend_enable): SyncBlendEnabled(); @@ -602,6 +609,15 @@ void RasterizerOpenGL::SyncCullMode() { } } +void RasterizerOpenGL::SyncDepthModifiers() { + float depth_scale = -Pica::float24::FromRawFloat24(Pica::g_state.regs.viewport_depth_range).ToFloat32(); + float depth_offset = Pica::float24::FromRawFloat24(Pica::g_state.regs.viewport_depth_far_plane).ToFloat32() / 2.0f; + + // TODO: Implement scale modifier + uniform_block_data.data.depth_offset = depth_offset; + uniform_block_data.dirty = true; +} + void RasterizerOpenGL::SyncBlendEnabled() { state.blend.enabled = (Pica::g_state.regs.output_merger.alphablend_enable == 1); } |
