mirror of
https://github.com/stenzek/duckstation.git
synced 2025-06-07 03:55:33 +00:00
PostProcessing/GLSL: Fix image moved off-screen with alignment
This commit is contained in:
parent
c03b6f3d84
commit
7c2488c942
@ -190,12 +190,17 @@ GPUDevice::PresentResult PostProcessing::GLSLShader::Apply(GPUTexture* input_col
|
|||||||
|
|
||||||
g_gpu_device->SetPipeline(m_pipeline.get());
|
g_gpu_device->SetPipeline(m_pipeline.get());
|
||||||
g_gpu_device->SetTextureSampler(0, input_color, m_sampler.get());
|
g_gpu_device->SetTextureSampler(0, input_color, m_sampler.get());
|
||||||
g_gpu_device->SetViewportAndScissor(final_rect);
|
|
||||||
|
// need to flip the rect, since we're not drawing the entire fb
|
||||||
|
const GSVector4i real_final_rect =
|
||||||
|
g_gpu_device->UsesLowerLeftOrigin() ? g_gpu_device->FlipToLowerLeft(final_rect, target_height) : final_rect;
|
||||||
|
g_gpu_device->SetViewportAndScissor(real_final_rect);
|
||||||
|
|
||||||
const u32 uniforms_size = GetUniformsSize();
|
const u32 uniforms_size = GetUniformsSize();
|
||||||
void* uniforms = g_gpu_device->MapUniformBuffer(uniforms_size);
|
void* uniforms = g_gpu_device->MapUniformBuffer(uniforms_size);
|
||||||
FillUniformBuffer(uniforms, final_rect.left, final_rect.top, final_rect.width(), final_rect.height(), target_width,
|
FillUniformBuffer(uniforms, real_final_rect.left, real_final_rect.top, real_final_rect.width(),
|
||||||
target_height, orig_width, orig_height, native_width, native_height, time);
|
real_final_rect.height(), target_width, target_height, orig_width, orig_height, native_width,
|
||||||
|
native_height, time);
|
||||||
g_gpu_device->UnmapUniformBuffer(uniforms_size);
|
g_gpu_device->UnmapUniformBuffer(uniforms_size);
|
||||||
g_gpu_device->Draw(3, 0);
|
g_gpu_device->Draw(3, 0);
|
||||||
return GPUDevice::PresentResult::OK;
|
return GPUDevice::PresentResult::OK;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user