Skip to content

Commit 71230d5

Browse files
committed
disable mipmapping and linear upscaling on posteffects
1 parent ad4b4b5 commit 71230d5

File tree

2 files changed

+18
-7
lines changed

2 files changed

+18
-7
lines changed

Data/Base.rte/Shaders/PostProcess.frag

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,16 @@ out vec4 FragColor;
77
uniform sampler2D rteTexture;
88
uniform vec4 rteColor;
99

10+
11+
vec4 texture2DAA(sampler2D tex, vec2 uv) {
12+
vec2 texsize = vec2(textureSize(tex, 0));
13+
vec2 uv_texspace = uv * texsize;
14+
vec2 seam = floor(uv_texspace + .5);
15+
uv_texspace = (uv_texspace - seam) / fwidth(uv_texspace) + seam;
16+
uv_texspace = clamp(uv_texspace, seam - .5, seam + .5);
17+
return texture(tex, uv_texspace / texsize);
18+
}
19+
1020
void main() {
11-
FragColor = texture(rteTexture, textureUV) * rteColor;
21+
FragColor = texture2DAA(rteTexture, textureUV) * rteColor;
1222
}

Source/Managers/PostProcessMan.cpp

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#include "PostProcessMan.h"
22

33
#include "CameraMan.h"
4+
#include "WindowMan.h"
45
#include "FrameMan.h"
56
#include "Scene.h"
67
#include "ContentFile.h"
@@ -126,7 +127,7 @@ void PostProcessMan::CreateGLBackBuffers() {
126127
GL_CHECK(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST));
127128
UpdatePalette();
128129
GL_CHECK(glActiveTexture(GL_TEXTURE0));
129-
m_ProjectionMatrix = std::make_unique<glm::mat4>(glm::ortho(0.0F, static_cast<float>(g_FrameMan.GetBackBuffer8()->w), 0.0F, static_cast<float>(g_FrameMan.GetBackBuffer8()->h), -1.0F, 1.0F));
130+
m_ProjectionMatrix = std::make_unique<glm::mat4>(glm::ortho(0.0F, static_cast<float>(g_WindowMan.GetResX()), 0.0F, static_cast<float>(g_WindowMan.GetResY()), -1.0F, 1.0F));
130131
}
131132

132133
void PostProcessMan::UpdatePalette() {
@@ -152,8 +153,8 @@ void PostProcessMan::LazyInitBitmap(BITMAP* bitmap) {
152153
GL_CHECK(glActiveTexture(GL_TEXTURE0));
153154
GL_CHECK(glBindTexture(GL_TEXTURE_2D, reinterpret_cast<GLBitmapInfo*>(bitmap->extra)->m_Texture));
154155
GL_CHECK(glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, bitmap->w, bitmap->h, 0, GL_RGBA, GL_UNSIGNED_BYTE, bitmap->line[0]));
155-
GL_CHECK(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR));
156-
GL_CHECK(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR));
156+
GL_CHECK(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR));
157+
GL_CHECK(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST));
157158
GL_CHECK(glGenerateMipmap(GL_TEXTURE_2D));
158159
}
159160

@@ -385,7 +386,7 @@ void PostProcessMan::PostProcess() {
385386
GL_CHECK(glBindTexture(GL_TEXTURE_2D, m_Palette8Texture));
386387
GL_CHECK(glBindFramebuffer(GL_DRAW_FRAMEBUFFER, m_BlitFramebuffer));
387388
GL_CHECK(glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, m_BackBuffer32, 0));
388-
GL_CHECK(glViewport(0, 0, g_FrameMan.GetBackBuffer8()->w, g_FrameMan.GetBackBuffer8()->h));
389+
GL_CHECK(glViewport(0, 0, g_WindowMan.GetResX(), g_WindowMan.GetResY()));
389390
m_Blit8->Use();
390391
m_Blit8->SetInt(m_Blit8->GetTextureUniform(), 0);
391392
int paletteUniform = m_Blit8->GetUniformLocation("rtePalette");
@@ -404,7 +405,7 @@ void PostProcessMan::PostProcess() {
404405
GL_CHECK(glBlendColor(0.5F, 0.5F, 0.5F, 0.5F));
405406
GL_CHECK(glBindFramebuffer(GL_FRAMEBUFFER, m_PostProcessFramebuffer));
406407
GL_CHECK(glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, m_BackBuffer32, 0));
407-
GL_CHECK(glViewport(0, 0, g_FrameMan.GetBackBuffer8()->w, g_FrameMan.GetBackBuffer8()->h));
408+
GL_CHECK(glViewport(0, 0, g_WindowMan.GetResX(), g_WindowMan.GetResY()));
408409

409410
m_PostProcessShader->Use();
410411

@@ -503,7 +504,7 @@ void PostProcessMan::DrawPostScreenEffects() {
503504
glm::mat4 transformMatrix(1);
504505
transformMatrix = glm::translate(transformMatrix, glm::vec3(effectPosX, effectPosY, 0));
505506
transformMatrix = glm::rotate(transformMatrix, -postEffect.m_Angle, glm::vec3(0, 0, 1));
506-
transformMatrix = glm::scale(transformMatrix, glm::vec3(effectBitmap->w * 0.5f, effectBitmap->h * 0.5f, 1.0));
507+
transformMatrix = glm::scale(transformMatrix, glm::vec3(static_cast<float>(effectBitmap->w)*.5f, static_cast<float>(effectBitmap->h)*.5f, 1.0f));
507508

508509
GL_CHECK(glBindTexture(GL_TEXTURE_2D, reinterpret_cast<GLBitmapInfo*>(postEffect.m_Bitmap->extra)->m_Texture));
509510
m_PostProcessShader->SetMatrix4f(m_PostProcessShader->GetTransformUniform(), transformMatrix);

0 commit comments

Comments
 (0)