[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