initial commit

This commit is contained in:
saarsena@gmail.com 2026-04-22 10:19:57 -04:00
commit c2bb3893a9
1038 changed files with 75846 additions and 0 deletions

View file

@ -0,0 +1,90 @@
shader_type spatial;
render_mode unshaded, blend_mix, depth_draw_opaque, cull_back;
/* Wizardry + Tron aesthetic: neon brick wall effect. */
uniform float uv_scale : hint_range(0.01, 5.0) = 0.25;
uniform float trace_speed : hint_range(0.1, 8.0) = 2.5;
uniform float trace_brightness : hint_range(0.0, 4.0) = 1.2;
uniform float trace_length : hint_range(0.1, 10.0) = 2.5;
uniform float trace_density : hint_range(0.0, 1.0) = 0.55;
uniform vec3 trace_color : source_color = vec3(1.0, 0.55, 0.1);
uniform vec3 trace_head_color : source_color = vec3(1.0, 0.95, 0.7);
// Pseudo-random hash for randomizing traces per mortar segment
float hash(vec2 p) {
return fract(sin(dot(p, vec2(127.1, 311.7))) * 43758.5453);
}
void fragment() {
// Scale UVs so bricks tile across the quad
vec2 uv = UV * uv_scale;
// Block grid for visual consistency
vec2 block_size = vec2(0.4, 0.55);
float mortar = 0.005;
float row = floor(uv.y / block_size.y);
float offset = mod(row, 2.0) * 0.5 * block_size.x;
float bx = fract((uv.x + offset) / block_size.x);
float by = fract(uv.y / block_size.y);
// Distance to nearest mortar/edge line
float dx = min(bx, 1.0 - bx);
float dy = min(by, 1.0 - by);
float d_mortar = min(dx, dy);
// --- Tron light-cycle tracers flowing continuously along mortar lines ---
// Masks: which mortar line we're currently on (horizontal vs vertical)
float h_mask = step(dy, dx) * (1.0 - smoothstep(0.0, mortar * 2.0, dy));
float v_mask = step(dx, dy) * (1.0 - smoothstep(0.0, mortar * 2.0, dx));
float col = floor((uv.x + offset) / block_size.x);
float period = trace_length * 3.0; // spacing between pulse heads along a line
// Horizontal mortar: one pulse per row, traveling along x (direction randomized)
float h_seed = hash(vec2(row, 17.3));
float h_dir = (h_seed < 0.5) ? -1.0 : 1.0;
float h_spd = trace_speed * (0.6 + h_seed * 0.8);
float h_head = uv.x * h_dir - TIME * h_spd + h_seed * 50.0;
float h_back = mod(h_head, period); // 0 at head, grows backward
float h_tail = max(0.0, 1.0 - h_back / trace_length);
h_tail *= h_tail; // quadratic falloff
float h_tip = exp(-24.0 * h_back * h_back / (trace_length * trace_length));
float h_gate = smoothstep(1.0 - trace_density, 1.0 - trace_density + 0.05,
hash(vec2(row, 3.1)));
// Vertical mortar: one pulse per column, traveling along y
float v_seed = hash(vec2(col, 91.7));
float v_dir = (v_seed < 0.5) ? -1.0 : 1.0;
float v_spd = trace_speed * (0.6 + v_seed * 0.8);
float v_head = uv.y * v_dir - TIME * v_spd + v_seed * 50.0;
float v_back = mod(v_head, period);
float v_tail = max(0.0, 1.0 - v_back / trace_length);
v_tail *= v_tail;
float v_tip = exp(-24.0 * v_back * v_back / (trace_length * trace_length));
float v_gate = smoothstep(1.0 - trace_density, 1.0 - trace_density + 0.05,
hash(vec2(col, 57.8)));
float trace_body = (h_tail * h_gate * h_mask) + (v_tail * v_gate * v_mask);
float trace_head = (h_tip * h_gate * h_mask) + (v_tip * v_gate * v_mask);
trace_body = clamp(trace_body, 0.0, 1.0);
trace_head = clamp(trace_head, 0.0, 1.0);
// Neon edge: bright core line + soft glow falloff
float core = 1.0 - smoothstep(0.0, mortar, d_mortar);
float glow = 1.0 - smoothstep(0.0, mortar * 5.0, d_mortar);
// Tron colors: bright white-cyan core, blue glow halo
vec3 core_color = vec3(0.9, 0.95, 1.0);
vec3 glow_color = vec3(0.7, 0.2, 0.9);
vec3 final_color = core * core_color + glow * glow_color * 0.9;
ALPHA = 0.9 + 0.6 * core;
// Trails add a warm body glow; heads pop with a bright hot tip
final_color += trace_body * trace_color * trace_brightness;
final_color += trace_head * trace_head_color * trace_brightness * 1.8;
ALBEDO = final_color;
}