Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
Diffstat (limited to 'source')
-rw-r--r--source/blender/draw/engines/eevee/shaders/effect_ssr_frag.glsl5
-rw-r--r--source/blender/draw/engines/eevee/shaders/raytrace_lib.glsl5
-rw-r--r--source/blender/draw/engines/eevee/shaders/ssr_lib.glsl1
3 files changed, 6 insertions, 5 deletions
diff --git a/source/blender/draw/engines/eevee/shaders/effect_ssr_frag.glsl b/source/blender/draw/engines/eevee/shaders/effect_ssr_frag.glsl
index 355c2038dd2..520dc7b9624 100644
--- a/source/blender/draw/engines/eevee/shaders/effect_ssr_frag.glsl
+++ b/source/blender/draw/engines/eevee/shaders/effect_ssr_frag.glsl
@@ -252,12 +252,13 @@ vec4 get_ssr_sample(
inout float weight_acc)
{
vec4 hit_co_pdf = texelFetch(hitBuffer, target_texel, 0).rgba;
- bool has_hit = (hit_co_pdf.z < 0.0);
+ bool has_hit = (hit_co_pdf.z > 0.0);
bool is_planar = (hit_co_pdf.w < 0.0);
- hit_co_pdf.z = -abs(hit_co_pdf.z);
+ hit_co_pdf.z = abs(hit_co_pdf.z);
hit_co_pdf.w = abs(hit_co_pdf.w);
/* Hit position in world space. */
+ hit_co_pdf.xyz = get_view_space_from_depth(hit_co_pdf.xy, hit_co_pdf.z);
vec3 hit_pos = transform_point(ViewMatrixInverse, hit_co_pdf.xyz);
vec2 ref_uvs;
diff --git a/source/blender/draw/engines/eevee/shaders/raytrace_lib.glsl b/source/blender/draw/engines/eevee/shaders/raytrace_lib.glsl
index d0fc14f8a29..b9aacde264d 100644
--- a/source/blender/draw/engines/eevee/shaders/raytrace_lib.glsl
+++ b/source/blender/draw/engines/eevee/shaders/raytrace_lib.glsl
@@ -211,11 +211,10 @@ vec3 raycast(int index, vec3 ray_origin, vec3 ray_dir, float thickness, float ra
ray_time = max(0.001, min(ray_time, max_time - 1.5));
vec4 ss_ray = ss_start + ss_step * ray_time;
- vec3 hit_pos = get_view_space_from_depth(ss_ray.xy, ss_ray.z);
/* Tag Z if ray failed. */
- hit_pos.z *= (hit) ? 1.0 : -1.0;
- return hit_pos;
+ ss_ray.z *= (hit) ? 1.0 : -1.0;
+ return ss_ray.xyz;
}
float screen_border_mask(vec2 hit_co)
diff --git a/source/blender/draw/engines/eevee/shaders/ssr_lib.glsl b/source/blender/draw/engines/eevee/shaders/ssr_lib.glsl
index 68e0c2a682f..6dbd761ba8d 100644
--- a/source/blender/draw/engines/eevee/shaders/ssr_lib.glsl
+++ b/source/blender/draw/engines/eevee/shaders/ssr_lib.glsl
@@ -36,6 +36,7 @@ vec4 screen_space_refraction(vec3 viewPosition, vec3 N, vec3 V, float ior, float
vec3 hit_pos = raycast(-1, viewPosition, R, ssrThickness, jitter, roughnessSquared);
if ((hit_pos.z < 0.0) && (F_eta(ior, dot(H, V)) < 1.0)) {
+ hit_pos = get_view_space_from_depth(hit_pos.xy, hit_pos.z);
float hit_dist = distance(hit_pos, viewPosition);
float cone_cos = cone_cosine(roughnessSquared);