aboutsummaryrefslogtreecommitdiff
path: root/game/src/Game/Model/flag.gdshader
diff options
context:
space:
mode:
author hop311 <hop3114@gmail.com>2024-05-05 19:36:21 +0200
committer hop311 <hop3114@gmail.com>2024-05-07 23:06:38 +0200
commit2ac43ba7df3b2c3dc40c6b87c2bc57c4b02ffa42 (patch)
treef251adec091f704d889360a0eb32bd4ad018192d /game/src/Game/Model/flag.gdshader
parentc29cc0dabe3e3c7d03280e74d2d10fc3cc479c7f (diff)
Add GDScript XAC and XSM loaders
Diffstat (limited to 'game/src/Game/Model/flag.gdshader')
-rw-r--r--game/src/Game/Model/flag.gdshader26
1 files changed, 26 insertions, 0 deletions
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;
+}