From 2ac43ba7df3b2c3dc40c6b87c2bc57c4b02ffa42 Mon Sep 17 00:00:00 2001 From: hop311 Date: Sun, 5 May 2024 18:36:21 +0100 Subject: Add GDScript XAC and XSM loaders --- game/src/Game/Model/flag.gdshader | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 game/src/Game/Model/flag.gdshader (limited to 'game/src/Game/Model/flag.gdshader') diff --git a/game/src/Game/Model/flag.gdshader b/game/src/Game/Model/flag.gdshader new file mode 100644 index 0000000..d338e36 --- /dev/null +++ b/game/src/Game/Model/flag.gdshader @@ -0,0 +1,26 @@ +shader_type spatial; + +render_mode cull_disabled; + +// Both vanilla flags use the same normal texture +uniform uvec2 flag_dims; +uniform sampler2D texture_flag_sheet_diffuse : source_color; +uniform sampler2D texture_normal : hint_normal; + +instance uniform uint flag_index; + +uniform vec2 scroll_speed = vec2(-0.25,0); + +// Scroll the Normal map, but leave the albedo alone +void fragment() { + uvec2 flag_sheet_dims = uvec2(textureSize(texture_flag_sheet_diffuse, 0)); + uint scaled_index = flag_index * flag_dims.x; + + uvec2 flag_pos = uvec2(scaled_index % flag_sheet_dims.x, scaled_index / flag_sheet_dims.x * flag_dims.y); + + vec2 flag_uv = (vec2(flag_pos) + UV * vec2(flag_dims)) / vec2(flag_sheet_dims); + + ALBEDO = texture(texture_flag_sheet_diffuse, flag_uv).rgb; + //ALBEDO = vec3(1, 0, 0); + NORMAL_MAP = texture(texture_normal, UV + TIME*scroll_speed).rgb; +} -- cgit v1.2.3-56-ga3b1