Godot shader compatibility tweaks
This commit is contained in:
45
shader-test/source/MirroredOrnament.frag
Normal file
45
shader-test/source/MirroredOrnament.frag
Normal file
@@ -0,0 +1,45 @@
|
||||
#pragma header
|
||||
|
||||
// Source: https://godotshaders.com/shader/animated-mirrored-ornament/
|
||||
// Modified by Nat
|
||||
|
||||
uniform vec3 color_a = vec3(0.5);
|
||||
uniform vec3 color_b = vec3(0.5);
|
||||
uniform vec3 color_c = vec3(1.0);
|
||||
uniform vec3 color_d = vec3(0.0, 0.33, 0.67);
|
||||
uniform int iterations = 10; // : hint_range(1, 50, 1)
|
||||
uniform float speed = 1.0; // : hint_range(0.1, 10.0)
|
||||
uniform float zoom = 1.0; // : hint_range(0.1, 5.0)
|
||||
uniform float subtract = 0.5; // : hint_range(0.1, 1.0)
|
||||
uniform float multiply = 1.1; // : hint_range(1.0, 2.0)
|
||||
|
||||
vec3 palette(float t, vec3 a, vec3 b, vec3 c, vec3 d) {
|
||||
return a + b * cos(2.0 * PI * (c * t + d));
|
||||
}
|
||||
|
||||
vec2 rotate(vec2 uv, float angle) {
|
||||
return uv * mat2(
|
||||
vec2(cos(angle), -sin(angle)),
|
||||
vec2(sin(angle), cos(angle))
|
||||
);
|
||||
}
|
||||
|
||||
vec3 invert_color(vec3 color, float intensity) {
|
||||
return mix(color.rgb, 1.0 - color.rgb, intensity);
|
||||
}
|
||||
|
||||
void fragment() {
|
||||
float time = TIME;
|
||||
float angle = time * speed * 0.1;
|
||||
vec2 uv = (SCREEN_UV - 0.5) / vec2(SCREEN_PIXEL_SIZE.x / SCREEN_PIXEL_SIZE.y, 1.0);
|
||||
vec3 color = vec3(0.0);
|
||||
uv /= zoom + sin(time * 0.1) * 0.5 + 0.5;
|
||||
for (int i = 0; i < iterations; i++) {
|
||||
uv = rotate((abs(uv) - subtract) * multiply, angle);
|
||||
}
|
||||
vec3 p = palette(length(uv) + dot(uv, uv), color_a, color_b, color_c, color_d);
|
||||
color = clamp(vec3(length(uv) * p), vec3(0.0), vec3(1.0));
|
||||
float intensity = sin(time) * 0.25 - 0.2;
|
||||
color = invert_color(color, intensity);
|
||||
COLOR = vec4(color, 1.0);
|
||||
}
|
@@ -17,7 +17,7 @@
|
||||
(bg.screenCenter)
|
||||
(set bg.alpha 0.5)
|
||||
(add bg))
|
||||
(set shader (new kiss_flixel.shaders.CheckerBoard))
|
||||
(set shader (new MirroredOrnament))
|
||||
// (set shader.data.invert.value [true])
|
||||
// (set shader.data.color1.value [1.0 1.0 1.0 1.0])
|
||||
// (set shader.data.color2.value [0.0 0.0 0.0 1.0])
|
||||
|
Reference in New Issue
Block a user