batrix/shaders/cel_shader/includes/refraction.gdshaderinc
2025-02-27 02:08:29 +10:00

37 lines
797 B
Plaintext

group_uniforms Refraction;
uniform float refraction : hint_range(-16, 16) = 0.05;
uniform float blurriness : hint_range(0.0, 1.0) = 0.0;
group_uniforms;
uniform sampler2D screen_texture :
hint_screen_texture,
repeat_disable,
filter_linear_mipmap;
uniform sampler2D depth_texture :
hint_depth_texture,
repeat_disable,
filter_linear_mipmap;
vec3 refraction_fragment(
float alpha,
vec3 normal,
vec2 screen_uv,
float depth
) {
float amount = 1.0 - alpha;
vec2 offset = screen_uv - normal.xy * refraction;
float image_depth = texture(depth_texture, offset).r;
return image_depth < depth
? textureLod(
screen_texture,
screen_uv,
blurriness * 8.0
).rgb * amount
: textureLod(
screen_texture,
offset,
blurriness * 8.0
).rgb * amount;
}