[Bf-blender-cvs] [e6a5da472fb] temp-lanpr-cleanup2: LANPR: Fix ortho mode view direction.

YimingWu noreply at git.blender.org
Thu Nov 14 04:42:00 CET 2019


Commit: e6a5da472fbed2d4e1dda9b6bcd4a3b1341a1824
Author: YimingWu
Date:   Thu Nov 14 11:41:14 2019 +0800
Branches: temp-lanpr-cleanup2
https://developer.blender.org/rBe6a5da472fbed2d4e1dda9b6bcd4a3b1341a1824

LANPR: Fix ortho mode view direction.

===================================================================

M	source/blender/draw/engines/lanpr/lanpr_engine.c
M	source/blender/editors/include/ED_lanpr.h
M	source/blender/editors/lanpr/lanpr_cpu.c

===================================================================

diff --git a/source/blender/draw/engines/lanpr/lanpr_engine.c b/source/blender/draw/engines/lanpr/lanpr_engine.c
index 1e00e75a2fa..3af1e2352f8 100644
--- a/source/blender/draw/engines/lanpr/lanpr_engine.c
+++ b/source/blender/draw/engines/lanpr/lanpr_engine.c
@@ -228,9 +228,10 @@ static void lanpr_cache_init(void *vedata)
 
   BLI_spin_lock(&lanpr_share.lock_render_status);
   if (rv3d && lanpr_share.viewport_camera_override >= 0) {
-    copy_v3db_v3fl(lanpr_share.camera_pos, rv3d->viewinv[3]);
-    copy_m4d_m4(lanpr_share.viewinv, rv3d->viewinv);
-    copy_m4d_m4(lanpr_share.persp, rv3d->persmat);
+    copy_v3_v3(lanpr_share.camera_pos, rv3d->viewinv[3]);
+    copy_m4_m4(lanpr_share.viewinv, rv3d->viewinv);
+    copy_m4_m4(lanpr_share.persp, rv3d->persmat);
+    copy_v4_v4(lanpr_share.viewquat, rv3d->viewquat);
     lanpr_share.near_clip = v3d->clip_start;
     lanpr_share.far_clip = v3d->clip_end;
     lanpr_share.viewport_camera_override = 1;
diff --git a/source/blender/editors/include/ED_lanpr.h b/source/blender/editors/include/ED_lanpr.h
index 808f3cc814f..3a6dd1c3600 100644
--- a/source/blender/editors/include/ED_lanpr.h
+++ b/source/blender/editors/include/ED_lanpr.h
@@ -352,10 +352,11 @@ typedef struct LANPR_SharedResource {
   /** Set to override to -1 before creating lanpr render buffer to use scene camera. */
   int viewport_camera_override;
   char camera_is_persp;
-  double camera_pos[3];
-  double near_clip, far_clip;
-  double viewinv[4][4];
-  double persp[4][4];
+  float camera_pos[3];
+  float near_clip, far_clip;
+  float viewinv[4][4];
+  float persp[4][4];
+  float viewquat[4];
 } LANPR_SharedResource;
 
 #define DBL_TRIANGLE_LIM 1e-8
diff --git a/source/blender/editors/lanpr/lanpr_cpu.c b/source/blender/editors/lanpr/lanpr_cpu.c
index d566e1057d8..f44fb050fee 100644
--- a/source/blender/editors/lanpr/lanpr_cpu.c
+++ b/source/blender/editors/lanpr/lanpr_cpu.c
@@ -1826,11 +1826,8 @@ static void lanpr_make_render_geometry_buffers(Depsgraph *depsgraph,
   memset(rb->material_pointers, 0, sizeof(void *) * 2048);
 
   if (lanpr_share.viewport_camera_override) {
-    copy_m4_m4_db(proj, lanpr_share.persp);
+    copy_m4d_m4(proj, lanpr_share.persp);
     invert_m4_m4(inv, lanpr_share.viewinv);
-    unit_m4_db(lanpr_share.viewinv);
-    mul_m4_m4m4_db_uniq(result, proj, lanpr_share.viewinv);
-    copy_m4_m4_db(proj, result);
     copy_m4_m4_db(rb->view_projection, proj);
   }
   else {
@@ -2480,7 +2477,12 @@ static void lanpr_compute_view_vector(LANPR_RenderBuffer *rb)
 
   BLI_spin_lock(&lanpr_share.lock_render_status);
   if (lanpr_share.viewport_camera_override) {
-    invert_m4_m4(inv, lanpr_share.viewinv);
+    if (lanpr_share.camera_is_persp) {
+      invert_m4_m4(inv, lanpr_share.viewinv);
+    }
+    else {
+      quat_to_mat4(inv, lanpr_share.viewquat);
+    }
   }
   else {
     invert_m4_m4(inv, rb->scene->camera->obmat);
@@ -2639,7 +2641,7 @@ LANPR_RenderBuffer *ED_lanpr_create_render_buffer(void)
     LANPR_RenderBuffer *rb = lanpr_share.render_buffer_shared;
     ED_lanpr_destroy_render_data(lanpr_share.render_buffer_shared);
     rb->viewport_override = lanpr_share.viewport_camera_override;
-    copy_v3_v3_db(rb->camera_pos, lanpr_share.camera_pos);
+    copy_v3db_v3fl(rb->camera_pos, lanpr_share.camera_pos);
     rb->viewport_is_persp = lanpr_share.camera_is_persp;
     rb->near_clip = lanpr_share.near_clip;
     rb->far_clip = lanpr_share.far_clip;
@@ -2650,7 +2652,7 @@ LANPR_RenderBuffer *ED_lanpr_create_render_buffer(void)
 
   lanpr_share.render_buffer_shared = rb;
   rb->viewport_override = lanpr_share.viewport_camera_override;
-  copy_v3_v3_db(rb->camera_pos, lanpr_share.camera_pos);
+  copy_v3db_v3fl(rb->camera_pos, lanpr_share.camera_pos);
   rb->viewport_is_persp = lanpr_share.camera_is_persp;
   rb->near_clip = lanpr_share.near_clip;
   rb->far_clip = lanpr_share.far_clip;



More information about the Bf-blender-cvs mailing list