summaryrefslogtreecommitdiff
path: root/shaders
diff options
context:
space:
mode:
Diffstat (limited to 'shaders')
-rw-r--r--shaders/fragment.glsl16
-rw-r--r--shaders/vertex.glsl20
2 files changed, 36 insertions, 0 deletions
diff --git a/shaders/fragment.glsl b/shaders/fragment.glsl
new file mode 100644
index 0000000..1c9f3b1
--- /dev/null
+++ b/shaders/fragment.glsl
@@ -0,0 +1,16 @@
+precision mediump float;
+
+varying vec3 v_color;
+
+void main() {
+ // Create a circular particle with soft edges
+ vec2 center = gl_PointCoord - vec2(0.5);
+ float dist = length(center);
+
+ if (dist > 0.5) {
+ discard;
+ }
+
+ float alpha = 1.0 - smoothstep(0.0, 0.5, dist);
+ gl_FragColor = vec4(v_color, alpha * 0.3); // Subtle opacity
+} \ No newline at end of file
diff --git a/shaders/vertex.glsl b/shaders/vertex.glsl
new file mode 100644
index 0000000..2383346
--- /dev/null
+++ b/shaders/vertex.glsl
@@ -0,0 +1,20 @@
+attribute vec2 a_position;
+attribute float a_size;
+attribute vec3 a_color;
+
+uniform mat4 u_matrix;
+uniform float u_time;
+
+varying vec3 v_color;
+
+void main() {
+ // Simple particle position with subtle time-based variation
+ vec4 position = vec4(a_position, 0.0, 1.0);
+ position.x += sin(u_time * 0.001 + a_position.y * 0.01) * 0.05;
+ position.y += cos(u_time * 0.0005 + a_position.x * 0.01) * 0.02;
+
+ gl_Position = u_matrix * position;
+ gl_PointSize = a_size;
+
+ v_color = a_color;
+} \ No newline at end of file