chunky-dev / chunky

A path tracer to create realistic images of your Minecraft worlds.
https://chunky-dev.github.io/docs
GNU General Public License v3.0
643 stars 76 forks source link

Add dyed signs. #1626

Closed leMaik closed 11 months ago

leMaik commented 12 months ago

This PR adds dyed signs. Dyes can be different on the front and back side of a sign.

Note that the 16 dye colors are different from the usual sign text colors (except for black). This means that we can't use the existing 4-bit palette for the dye color. In order to not have to add more bits to the palette, I made it so that if the palette contains a 1 but the text mask is 0, the sign texture treats the pixel as dye color, which requires only 32 or 64 bits (ie. an enum value) per sign texture.

I extracted the colors via screenshots from dyed signs. They may be incorrect.

Closes #1625 and related to #789.

ThatRedox commented 12 months ago
These should be the text colors: Color ARGB
WHITE 0xFFFFFFFF
ORANGE 0xFFFF681F
MAGENTA 0xFFFF00FF
LIGHT_BLUE 0xFF9AC0CD
YELLOW 0xFFFFFF00
LIME 0xFFBFFF00
PINK 0xFFFF69B4
GRAY 0xFF808080
LIGHT_GRAY 0xFFD3D3D3
CYAN 0xFF00FFFF
PURPLE 0xFFA020F0
BLUE 0xFF0000FF
BROWN 0xFF8B4513
GREEN 0xFF00FF00
RED 0xFFFF0000
BLACK 0xFF000000
leMaik commented 12 months ago

The text of white dyed signs is light gray in game. Do we need to multiply all of them by some factor if the sign doesn't glow?

ThatRedox commented 11 months ago

Yes, it looks like each channel is multiplied by 0.4 if the sign isn't glowing.

leMaik commented 11 months ago

Note to self: The outline on glowing signs is 0.4 * dye color.