Skip to content

Commit 9c0acdf

Browse files
committed
Make palette a 1-pixel-wide 2d texture, use more broadly supported formats
1 parent 5009d3d commit 9c0acdf

File tree

3 files changed

+15
-15
lines changed

3 files changed

+15
-15
lines changed

Data/Base.rte/Shaders/Blit8.frag

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ in vec2 textureUV;
66
out vec4 FragColor;
77

88
uniform sampler2D rteTexture;
9-
uniform sampler1D rtePalette;
9+
uniform sampler2D rtePalette;
1010

1111
void main() {
1212
float colorIndex = texture(rteTexture, vec2(textureUV.x, -textureUV.y)).r;
13-
FragColor = texture(rtePalette, colorIndex);
13+
FragColor = texture(rtePalette, vec2(colorIndex, 0.f));
1414
}

Data/Base.rte/Shaders/ScreenBlit.frag

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,5 @@ void main() {
2020
vec4 guiColor = texture2DAA(rteGUITexture, textureUV);
2121
float guiSolid = step(0.00000001, guiColor.r + guiColor.g + guiColor.b);
2222
float blendRatio = max(guiColor.a, guiSolid);
23-
FragColor = (texture2DAA(rteTexture, textureUV) * (1 - blendRatio)) + guiColor * blendRatio;
23+
FragColor = (texture2DAA(rteTexture, textureUV) * (1.0 - blendRatio)) + guiColor * blendRatio;
2424
}

Source/Managers/PostProcessMan.cpp

+12-12
Original file line numberDiff line numberDiff line change
@@ -112,25 +112,25 @@ void PostProcessMan::DestroyGLPointers() {
112112

113113
void PostProcessMan::CreateGLBackBuffers() {
114114
GL_CHECK(glBindTexture(GL_TEXTURE_2D, m_BackBuffer8));
115-
GL_CHECK(glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, g_FrameMan.GetBackBuffer8()->w, g_FrameMan.GetBackBuffer8()->h, 0, GL_RED, GL_UNSIGNED_BYTE, 0));
115+
GL_CHECK(glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, g_FrameMan.GetBackBuffer8()->w, g_FrameMan.GetBackBuffer8()->h, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0));
116116
GL_CHECK(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR));
117117
GL_CHECK(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR));
118118
GL_CHECK(glBindTexture(GL_TEXTURE_2D, m_BackBuffer32));
119-
GL_CHECK(glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, g_FrameMan.GetBackBuffer8()->w, g_FrameMan.GetBackBuffer8()->h, 0, GL_RED, GL_UNSIGNED_BYTE, 0));
119+
GL_CHECK(glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, g_FrameMan.GetBackBuffer8()->w, g_FrameMan.GetBackBuffer8()->h, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0));
120120
GL_CHECK(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR));
121121
GL_CHECK(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR));
122122
GL_CHECK(glBindTexture(GL_TEXTURE_2D, 0));
123-
GL_CHECK(glBindTexture(GL_TEXTURE_1D, m_Palette8Texture));
124-
GL_CHECK(glTexImage1D(GL_TEXTURE_1D, 0, GL_RGBA, c_PaletteEntriesNumber, 0, GL_RGBA, GL_UNSIGNED_INT, 0));
125-
GL_CHECK(glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER, GL_NEAREST));
126-
GL_CHECK(glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, GL_NEAREST));
123+
GL_CHECK(glBindTexture(GL_TEXTURE_2D, m_Palette8Texture));
124+
GL_CHECK(glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, c_PaletteEntriesNumber, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0));
125+
GL_CHECK(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST));
126+
GL_CHECK(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST));
127127
UpdatePalette();
128128
GL_CHECK(glActiveTexture(GL_TEXTURE0));
129129
m_ProjectionMatrix = glm::ortho(0.0F, static_cast<float>(g_FrameMan.GetBackBuffer8()->w), 0.0F, static_cast<float>(g_FrameMan.GetBackBuffer8()->h), -1.0F, 1.0F);
130130
}
131131

132132
void PostProcessMan::UpdatePalette() {
133-
GL_CHECK(glBindTexture(GL_TEXTURE_1D, m_Palette8Texture));
133+
GL_CHECK(glBindTexture(GL_TEXTURE_2D, m_Palette8Texture));
134134
std::array<unsigned int, c_PaletteEntriesNumber> palette;
135135
for (int i = 0; i < c_PaletteEntriesNumber; ++i) {
136136
if (i == g_MaskColor) {
@@ -139,9 +139,9 @@ void PostProcessMan::UpdatePalette() {
139139
}
140140
palette[i] = makeacol32(getr8(i), getg8(i), getb8(i), 255);
141141
}
142-
GL_CHECK(glTexSubImage1D(GL_TEXTURE_1D, 0, 0, c_PaletteEntriesNumber, GL_RGBA, GL_UNSIGNED_BYTE, palette.data()));
143-
GL_CHECK(glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER, GL_NEAREST));
144-
GL_CHECK(glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, GL_NEAREST));
142+
GL_CHECK(glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, c_PaletteEntriesNumber, 1, GL_RGBA, GL_UNSIGNED_BYTE, palette.data()));
143+
GL_CHECK(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST));
144+
GL_CHECK(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST));
145145
}
146146

147147
void PostProcessMan::LazyInitBitmap(BITMAP* bitmap) {
@@ -380,9 +380,9 @@ void PostProcessMan::PostProcess() {
380380
GL_CHECK(glActiveTexture(GL_TEXTURE0));
381381
GL_CHECK(glBindTexture(GL_TEXTURE_2D, m_BackBuffer8));
382382
GL_CHECK(glPixelStorei(GL_UNPACK_ALIGNMENT, 1));
383-
GL_CHECK(glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, g_FrameMan.GetBackBuffer8()->w, g_FrameMan.GetBackBuffer8()->h, 0, GL_RED, GL_UNSIGNED_BYTE, g_FrameMan.GetBackBuffer8()->line[0]));
383+
GL_CHECK(glTexImage2D(GL_TEXTURE_2D, 0, GL_R8, g_FrameMan.GetBackBuffer8()->w, g_FrameMan.GetBackBuffer8()->h, 0, GL_RED, GL_UNSIGNED_BYTE, g_FrameMan.GetBackBuffer8()->line[0]));
384384
GL_CHECK(glActiveTexture(GL_TEXTURE1));
385-
GL_CHECK(glBindTexture(GL_TEXTURE_1D, m_Palette8Texture));
385+
GL_CHECK(glBindTexture(GL_TEXTURE_2D, m_Palette8Texture));
386386
GL_CHECK(glBindFramebuffer(GL_DRAW_FRAMEBUFFER, m_BlitFramebuffer));
387387
GL_CHECK(glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, m_BackBuffer32, 0));
388388
GL_CHECK(glViewport(0, 0, g_FrameMan.GetBackBuffer8()->w, g_FrameMan.GetBackBuffer8()->h));

0 commit comments

Comments
 (0)