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
diff options
context:
space:
mode:
authorClément Foucault <foucault.clem@gmail.com>2021-02-24 13:24:49 +0300
committerClément Foucault <foucault.clem@gmail.com>2021-02-24 13:37:03 +0300
commitbb2af40ec7dd9a0c41991bc2faaf6eb3f0618016 (patch)
tree409b59369741195821c35dcba3b4ce5daa258ff1
parent1a427973b4593b6f61a0100147236664c79eec41 (diff)
Fix T85726 Workbench: Orthographic view is blurry
This was caused by the window_translate_m4 not offsetting the winmat in the right direction for perspective view. Thus leading to incorrect weights. The workbench sample weight computation was also inverted. This fix will change the sampling pattern for EEVEE too (it will just mirror it in perspective view).
-rw-r--r--source/blender/blenlib/intern/math_geom.c4
-rw-r--r--source/blender/draw/engines/workbench/workbench_effect_antialiasing.c2
2 files changed, 3 insertions, 3 deletions
diff --git a/source/blender/blenlib/intern/math_geom.c b/source/blender/blenlib/intern/math_geom.c
index b7e94e6c512..01cda6c9e4a 100644
--- a/source/blender/blenlib/intern/math_geom.c
+++ b/source/blender/blenlib/intern/math_geom.c
@@ -4886,8 +4886,8 @@ void window_translate_m4(float winmat[4][4], float perspmat[4][4], const float x
len1 = (1.0f / len_v3(v1));
len2 = (1.0f / len_v3(v2));
- winmat[2][0] += len1 * winmat[0][0] * x;
- winmat[2][1] += len2 * winmat[1][1] * y;
+ winmat[2][0] -= len1 * winmat[0][0] * x;
+ winmat[2][1] -= len2 * winmat[1][1] * y;
}
else {
winmat[3][0] += x;
diff --git a/source/blender/draw/engines/workbench/workbench_effect_antialiasing.c b/source/blender/draw/engines/workbench/workbench_effect_antialiasing.c
index c9f876f9573..77fdbde99ef 100644
--- a/source/blender/draw/engines/workbench/workbench_effect_antialiasing.c
+++ b/source/blender/draw/engines/workbench/workbench_effect_antialiasing.c
@@ -285,7 +285,7 @@ static void workbench_antialiasing_weights_get(const float offset[2],
for (int x = -1; x <= 1; x++) {
for (int y = -1; y <= 1; y++, i++) {
float sample_co[2] = {x, y};
- add_v2_v2(sample_co, offset);
+ sub_v2_v2(sample_co, offset);
float r = len_v2(sample_co);
/* fclem: is radial distance ok here? */
float weight = filter_blackman_harris(r, filter_width);