mirror of
https://github.com/JHDev2006/Super-Mario-Bros.-Remastered-Public.git
synced 2025-10-22 15:38:14 +00:00
added the game
This commit is contained in:
52
Scenes/Parts/colour_palette.gdshader
Normal file
52
Scenes/Parts/colour_palette.gdshader
Normal file
@@ -0,0 +1,52 @@
|
||||
shader_type canvas_item;
|
||||
|
||||
uniform sampler2D screen_texture : hint_screen_texture, filter_nearest;
|
||||
uniform sampler2D palette_texture;
|
||||
uniform vec4 shadow_colour : source_color;
|
||||
uniform float y_offset : hint_range(0, 2);
|
||||
uniform int palette_size = 8;
|
||||
|
||||
uniform bool is_debug = false;
|
||||
|
||||
int get_palette_index(vec4 color) {
|
||||
ivec4 quantized_color = ivec4(floor(color * 255.0 + 0.5)); // Quantize the color
|
||||
|
||||
for (int i = 0; i < palette_size; i++) {
|
||||
float index = (float(i) + 0.5) / float(palette_size); // Sample at the center of each color slot
|
||||
vec4 palette_color = texture(palette_texture, vec2(index, 0.0));
|
||||
|
||||
ivec4 quantized_palette = ivec4(floor(palette_color * 255.0 + 0.5)); // Quantize the palette color
|
||||
|
||||
if (quantized_color == quantized_palette) {
|
||||
return i; // Found exact match
|
||||
}
|
||||
}
|
||||
|
||||
return -1; // No match found
|
||||
}
|
||||
|
||||
void fragment() {
|
||||
vec4 screen_color = texture(screen_texture, SCREEN_UV);
|
||||
|
||||
// Check if the color is close to the shadow colo
|
||||
|
||||
int palette_index;
|
||||
|
||||
palette_index = get_palette_index(screen_color);
|
||||
|
||||
// Normalize the palette index for UV lookup
|
||||
if (palette_index != -1) {
|
||||
float palette_uv_x = (float(palette_index) + 0.5) / float(palette_size);
|
||||
float palette_uv_y = (float(y_offset) + 0.5) / float(3);
|
||||
COLOR = texture(palette_texture, vec2(palette_uv_x, palette_uv_y));
|
||||
} else {
|
||||
// Fallback if no match (this should only happen if no matching palette index is found)
|
||||
if (is_debug)
|
||||
{
|
||||
COLOR = texture(palette_texture, vec2(float(palette_size), 0.0));
|
||||
} else
|
||||
{
|
||||
COLOR = screen_color;
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user