Skip to content

File tree

2 files changed

+16
-28
lines changed

2 files changed

+16
-28
lines changed
 

‎drivers/gles3/shaders/scene.glsl

+8-14
Original file line numberDiff line numberDiff line change
@@ -1619,21 +1619,15 @@ void reflection_process(samplerCube reflection_map,
16191619
return;
16201620
}
16211621

1622-
vec3 inner_pos = abs(local_pos / box_extents);
1623-
vec3 blend_axes = vec3(0.0, 0.0, 0.0);
1624-
float blend = 0.0;
1625-
if (blend_distance != 0) {
1626-
for (int i = 0; i < 3; i++) {
1627-
float axis_blend_distance = min(blend_distance, box_extents[i]);
1628-
blend_axes[i] = (inner_pos[i] * box_extents[i]) - box_extents[i] + axis_blend_distance;
1629-
blend_axes[i] = blend_axes[i] / axis_blend_distance;
1630-
blend_axes[i] = clamp(blend_axes[i], 0.0, 1.0);
1631-
}
1632-
blend = pow((1.0 - blend_axes.x) * (1.0 - blend_axes.y) * (1.0 - blend_axes.z), 2);
1633-
blend = 1 - blend;
1622+
float blend = 1.0;
1623+
if (blend_distance != 0.0) {
1624+
vec3 axis_blend_distance = min(vec3(blend_distance), box_extents);
1625+
vec3 blend_axes = abs(local_pos) - box_extents + axis_blend_distance;
1626+
blend_axes /= axis_blend_distance;
1627+
blend_axes = clamp(1.0 - blend_axes, vec3(0.0), vec3(1.0));
1628+
1629+
blend = pow(blend_axes.x * blend_axes.y * blend_axes.z, 2.0);
16341630
}
1635-
blend = max(0.0, 1.0 - blend);
1636-
blend = clamp(blend, 0.0, 1.0);
16371631

16381632
//reflect and make local
16391633
vec3 ref_normal = normalize(reflect(vertex, normal));

‎servers/rendering/renderer_rd/shaders/scene_forward_lights_inc.glsl

+8-14
Original file line numberDiff line numberDiff line change
@@ -875,21 +875,15 @@ void reflection_process(uint ref_index, vec3 vertex, vec3 ref_vec, vec3 normal,
875875
return;
876876
}
877877

878-
vec3 inner_pos = abs(local_pos / box_extents);
879-
vec3 blend_axes = vec3(0.0, 0.0, 0.0);
880-
float blend = 0.0;
881-
if (reflections.data[ref_index].blend_distance != 0) {
882-
for (int i = 0; i < 3; i++) {
883-
float axis_blend_distance = min(reflections.data[ref_index].blend_distance, box_extents[i]);
884-
blend_axes[i] = (inner_pos[i] * box_extents[i]) - box_extents[i] + axis_blend_distance;
885-
blend_axes[i] = blend_axes[i] / axis_blend_distance;
886-
blend_axes[i] = clamp(blend_axes[i], 0.0, 1.0);
887-
}
888-
blend = pow((1.0 - blend_axes.x) * (1.0 - blend_axes.y) * (1.0 - blend_axes.z), 2);
889-
blend = 1 - blend;
878+
float blend = 1.0;
879+
if (reflections.data[ref_index].blend_distance != 0.0) {
880+
vec3 axis_blend_distance = min(vec3(reflections.data[ref_index].blend_distance), box_extents);
881+
vec3 blend_axes = abs(local_pos) - box_extents + axis_blend_distance;
882+
blend_axes /= axis_blend_distance;
883+
blend_axes = clamp(1.0 - blend_axes, vec3(0.0), vec3(1.0));
884+
885+
blend = pow(blend_axes.x * blend_axes.y * blend_axes.z, 2.0);
890886
}
891-
blend = max(0.0, 1.0 - blend);
892-
blend = clamp(blend, 0.0, 1.0);
893887

894888
if (reflections.data[ref_index].intensity > 0.0) { // compute reflection
895889

0 commit comments

Comments
 (0)
Please sign in to comment.