// Found Here https://godotshaders.com/shader/pearlescent/ shader_type spatial; uniform float fresnel_power = 3.0; uniform float interference_frequency = 3.0; uniform sampler2D color_ramp; uniform sampler2D noise; uniform float noise_speed = 0.1; uniform vec3 shift : source_color = vec3(1.0, 1.0, 1.0); uniform vec3 fresnel_color : source_color = vec3(1.0, 1.0, 1.0); uniform vec3 light_direction = vec3(0.0, -1.0, 0.0); float fresnel(vec3 view, vec3 normal) { return pow(1.0 - dot(view, normal), fresnel_power); } vec3 irridescence(vec3 view, vec3 normal, vec3 light, vec2 uv2, float time) { float dot_view = dot(view, normal); float dot_light = dot(light, normal); float angle = abs(dot_view - dot_light); float interference = sin(angle * interference_frequency) * 0.5 + 0.5; interference = clamp(interference, 0.01, 0.99); float noise_value = ( texture(noise,uv2 + vec2(time * noise_speed)).r + texture(noise,uv2 - vec2(time * noise_speed,0.)).r ); vec3 base_color = texture(color_ramp,vec2(noise_value)).rgb; return mix(base_color, shift, interference); } void fragment() { ALBEDO = mix( irridescence(VIEW, NORMAL, light_direction, UV, TIME), fresnel_color, fresnel(VIEW, NORMAL)); }