37 lines
797 B
Plaintext
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;
|
|
}
|