Corrosion Shader – 3D

This shader was inspired by games like Silent Hill, and how they transform their environments. Even though it was originally created with the shader graph, using Godot’s built-in converter I’ve switched it to a script, so it could be uploaded here. This means that this will not be a perfect conversion but it should be good enough to edit and further iterate upon!

 

I am hoping to remake this shader entirely in code later on, but for now, this should work for any project that may need something like this!

Shader code
shader_type spatial;
render_mode cull_disabled, specular_schlick_ggx;

uniform sampler2D noise_texture;
uniform float fade_scale;
uniform sampler2D end_texture : hint_albedo;
uniform sampler2D base_texture : hint_black_albedo;



void vertex() {
// Output:0

}

void fragment() {
// Input:2
	vec3 n_out2p0 = vec3(UV, 0.0);

// Input:35
	vec3 n_out35p0 = vec3(UV, 0.0);

// Texture:30
	vec4 tex_frg_30_read = texture(noise_texture, n_out35p0.xy);
	vec3 n_out30p0 = tex_frg_30_read.rgb;
	float n_out30p1 = tex_frg_30_read.a;

// ScalarUniform:36
	float n_out36p0 = fade_scale;

// ScalarClamp:44
	float n_in44p1 = 0.00000;
	float n_in44p2 = 1.00000;
	float n_out44p0 = clamp(n_out36p0, n_in44p1, n_in44p2);

// ScalarMix:33
	float n_in33p2 = 0.50000;
	float n_out33p0 = mix(n_out44p0, dot(n_out30p0, vec3(0.333333, 0.333333, 0.333333)), n_in33p2);

// ScalarFunc:34
	float n_out34p0 = round(n_out33p0);

// TextureUniform:37
	vec3 n_out37p0;
	float n_out37p1;
	{
		vec4 n_tex_read = texture(end_texture, UV.xy);
		n_out37p0 = n_tex_read.rgb;
		n_out37p1 = n_tex_read.a;
	}

// TextureUniform:38
	vec3 n_out38p0;
	float n_out38p1;
	{
		vec4 n_tex_read = texture(base_texture, UV.xy);
		n_out38p0 = n_tex_read.rgb;
		n_out38p1 = n_tex_read.a;
	}

// If:29
	vec3 n_out29p0;
	if(abs(dot(n_out2p0, vec3(0.333333, 0.333333, 0.333333)) - dot(n_out30p0, vec3(0.333333, 0.333333, 0.333333))) < n_out34p0)
	{
		n_out29p0 = n_out37p0;
	}
	else if(dot(n_out2p0, vec3(0.333333, 0.333333, 0.333333)) < dot(n_out30p0, vec3(0.333333, 0.333333, 0.333333)))
	{
		n_out29p0 = n_out38p0;
	}
	else
	{
		n_out29p0 = n_out38p0;
	}

// Output:0
	ALBEDO = n_out29p0;

}

void light() {
// Output:0

}
Tags
3d, Corrosion, pixel, Spatial, Transformation
The shader code and all code snippets in this post are under CC0 license and can be used freely without the author's permission. Images and videos, and assets depicted in those, do not fall under this license. For more info, see our License terms.

Related shaders

Procedural Marble Shader

3D simple animated flag shader

Procedural Window Rain Drop Shader

guest

0 Comments
Inline Feedbacks
View all comments