SynthWave Grid shader

Shader material for 3d meshes

(my first shader)

 

Shader code
shader_type spatial;

render_mode unshaded, depth_draw_always, cull_disabled;

uniform vec4 grid_color : source_color = vec4(0.0, 0.3, 0.8, 1.0);
uniform vec4 background_color : source_color = vec4(0.02, 0.0, 0.05, 1.0);
uniform float line_thickness = 0.02;
uniform float grid_spacing = 2.5;
uniform float glow_strength = 1.3;

varying vec3 world_pos;

void vertex() {
	world_pos = (MODEL_MATRIX * vec4(VERTEX, 1.0)).xyz;
}

float filtered_grid(float coord, float spacing, float thickness) {
	float coord_mod = mod(coord, spacing);
	float dist = min(coord_mod, spacing - coord_mod);
	float scale = fwidth(coord);
	return smoothstep(thickness + scale, thickness - scale, dist);
}

void fragment() {
	float grid_x = filtered_grid(world_pos.x, grid_spacing, line_thickness);
	float grid_z = filtered_grid(world_pos.z, grid_spacing, line_thickness);

	float line_intensity = max(grid_x, grid_z);
	float glow = pow(line_intensity, glow_strength);

	ALBEDO = mix(background_color.rgb, grid_color.rgb, glow);
	ALPHA = 1.0;
}
Tags
grid, Neon, Outrun, Synthwave
The shader code and all code snippets in this post are under MIT license and can be used freely. Images and videos, and assets depicted in those, do not fall under this license. For more info, see our License terms.

Related shaders

Dashed Grid (The Best Darn Grid Shader (Yet))

world coordinates grid b&w shader

Grid shader tutorial

guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments