From 84db6052b3c7599f94d75aa5028c085e0c4aeaf5 Mon Sep 17 00:00:00 2001 From: wheremyfoodat Date: Mon, 3 Apr 2023 18:12:03 +0300 Subject: [PATCH] [PICA] Implement RG8 textures --- include/renderer_gl/textures.hpp | 1 - src/core/renderer_gl/textures.cpp | 11 +++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/include/renderer_gl/textures.hpp b/include/renderer_gl/textures.hpp index 427c6361..f047e01f 100644 --- a/include/renderer_gl/textures.hpp +++ b/include/renderer_gl/textures.hpp @@ -80,5 +80,4 @@ struct Texture { // TODO: Make hasAlpha a template parameter u32 getTexelETC(bool hasAlpha, u32 u, u32 v, u32 width, const void* data); u32 decodeETC(u32 alpha, u32 u, u32 v, u64 colourData); - }; \ No newline at end of file diff --git a/src/core/renderer_gl/textures.cpp b/src/core/renderer_gl/textures.cpp index 3e43c1ad..5ac7e907 100644 --- a/src/core/renderer_gl/textures.cpp +++ b/src/core/renderer_gl/textures.cpp @@ -131,6 +131,17 @@ u32 Texture::decodeTexel(u32 u, u32 v, Texture::Formats fmt, const void* data) { return (0xff << 24) | (b << 16) | (g << 8) | r; } + case Formats::RG8: { + u32 offset = getSwizzledOffset(u, v, size.u(), 2); + auto ptr = static_cast(data); + + constexpr u8 b = 0; + u8 g = ptr[offset]; + u8 r = ptr[offset + 1]; + + return (0xff << 24) | (b << 16) | (g << 8) | r; + } + case Formats::RGB8: { u32 offset = getSwizzledOffset(u, v, size.u(), 3); auto ptr = static_cast(data);