Emulator Issues #13209open
[Feature Request] Custom Textures: Add RGBA16 support
Super Smash Bros. Brawl
Game ID? (right click the game in the game list, Properties, Info tab)
What's the problem? Describe what went wrong.
Testing out HD textures for use in Brawl has led to learning about Dolphin's current hardcoded support of RGBA8 PNGs.
While that is good enough for most scenarios, gradient heavy images tend to have banding in the 8-bit color depth.
If attempting to use a 16-bit depth PNG, dolphin can render the image darker than usual or ignore it. Your mileage may vary.
What steps will reproduce the problem?
Use an image like the one included that has 16-bit depth color as an HD texture for Brawl.
After ensuring that it is named properly and placed in the correct location for Dolphin to load the image as an HD texture, issues like the one described earlier can occur.
If the image is ignored, the vanilla texture from the disc / iso will be used.
If the image is used, it can potentially render darker than normal.
Is the issue present in the latest development version? For future reference, please also write down the version number of the latest development version.
latest indev version, as far as I know.
Is the issue present in the latest stable version?
Yes, 5.0 stable
What are your PC specifications? (CPU, GPU, Operating System, more)
Processor Intel(R) Core(TM) i5-8300H CPU @ 2.30GHz 2.30 GHz
Installed RAM 32.0 GB (31.8 GB usable)
System type 64-bit operating system, x64-based processor
GPU Intel(R) UHD Graphics 630
Driver version 188.8.131.5276
Driver date 2/7/2019
DirectX Ver 12 (FL 12.1)
Updated by pokechu22 15 days ago
- Status changed from New to Questionable
I'm not sure how meaningful this would be to implement. The TEV only handles integers from 0-255 (well, it can actually be -1024 to 1023, but in most cases games clamp it to 0-255), and since Dolphin emulates the TEV using integers, even if we had higher bit depths in a texture it'd need to be truncated to 0-255 for rendering.
Theoretically we could add an option to use floats for TEV logic, but floats historically caused lots of problems and I don't know how much stuff would break from that. Floats would solve some color banding issues (e.g. Super Mario Galaxy has color banding on some planets due to interpolating between two dark shades of grey and then multiplying that interpolated value by a texture) and could allow for actual HDR, but they also broke a ton of stuff in the past and I'm not sure if that's caused by only some uses of floats (e.g. for texture coordinates) or if floats in general broke things.