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>2019-05-22 17:09:03 +0300
committerClément Foucault <foucault.clem@gmail.com>2019-05-22 17:09:10 +0300
commit8b52619ff82279e1e97785e2352ed9f4782a3741 (patch)
treeb6bbad522e460c5fa7a83d9c7ca0e2780ac0e61f /source/blender/draw/intern
parentd10bab71602634ff1ca5ed97fbd4ba9f3964cdc5 (diff)
DRW/Eevee: Fix camera texture coordinates in renders
This patch fix the issue introduced by recent refactor and fixes computation when using overscans.
Diffstat (limited to 'source/blender/draw/intern')
-rw-r--r--source/blender/draw/intern/DRW_render.h1
-rw-r--r--source/blender/draw/intern/draw_manager.c2
-rw-r--r--source/blender/draw/intern/draw_manager_data.c17
3 files changed, 8 insertions, 12 deletions
diff --git a/source/blender/draw/intern/DRW_render.h b/source/blender/draw/intern/DRW_render.h
index 938f9921972..0f019df9d86 100644
--- a/source/blender/draw/intern/DRW_render.h
+++ b/source/blender/draw/intern/DRW_render.h
@@ -548,6 +548,7 @@ void DRW_view_default_set(DRWView *view);
void DRW_view_set_active(DRWView *view);
void DRW_view_clip_planes_set(DRWView *view, float (*planes)[4], int plane_len);
+void DRW_view_camtexco_set(DRWView *view, float texco[4]);
/* For all getters, if view is NULL, default view is assumed. */
void DRW_view_winmat_get(const DRWView *view, float mat[4][4], bool inverse);
diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c
index cabf6849e43..be046abfc8c 100644
--- a/source/blender/draw/intern/draw_manager.c
+++ b/source/blender/draw/intern/draw_manager.c
@@ -656,7 +656,7 @@ static void drw_viewport_var_init(void)
DST.pixsize = rv3d->pixsize;
DST.view_default = DRW_view_create(rv3d->viewmat, rv3d->winmat, NULL, NULL, NULL);
- copy_v4_v4(DST.view_default->storage.viewcamtexcofac, rv3d->viewcamtexcofac);
+ DRW_view_camtexco_set(DST.view_default, rv3d->viewcamtexcofac);
if (DST.draw_ctx.sh_cfg == GPU_SHADER_CFG_CLIPPED) {
int plane_len = (rv3d->viewlock & RV3D_BOXCLIP) ? 4 : 6;
diff --git a/source/blender/draw/intern/draw_manager_data.c b/source/blender/draw/intern/draw_manager_data.c
index d0480108920..70f7d28d551 100644
--- a/source/blender/draw/intern/draw_manager_data.c
+++ b/source/blender/draw/intern/draw_manager_data.c
@@ -874,8 +874,6 @@ static void drw_shgroup_init(DRWShadingGroup *shgroup, GPUShader *shader)
drw_shgroup_builtin_uniform(shgroup, GPU_UNIFORM_VIEWPROJECTION_INV, storage->persinv, 16, 1);
drw_shgroup_builtin_uniform(shgroup, GPU_UNIFORM_PROJECTION, storage->winmat, 16, 1);
drw_shgroup_builtin_uniform(shgroup, GPU_UNIFORM_PROJECTION_INV, storage->wininv, 16, 1);
- drw_shgroup_builtin_uniform(
- shgroup, GPU_UNIFORM_CAMERATEXCO, DST.view_storage_cpy.viewcamtexcofac, 4, 1);
}
/* Not supported. */
@@ -1327,10 +1325,7 @@ DRWView *DRW_view_create(const float viewmat[4][4],
view->visibility_fn = visibility_fn;
view->parent = NULL;
- /* TODO move elsewhere */
- if (DST.view_default) {
- copy_v4_v4(view->storage.viewcamtexcofac, DST.view_default->storage.viewcamtexcofac);
- }
+ copy_v4_fl4(view->storage.viewcamtexcofac, 1.0f, 1.0f, 0.0f, 0.0f);
DRW_view_update(view, viewmat, winmat, culling_viewmat, culling_winmat);
@@ -1350,11 +1345,6 @@ DRWView *DRW_view_create_sub(const DRWView *parent_view,
*view = *parent_view;
view->parent = (DRWView *)parent_view;
- /* TODO move elsewhere */
- if (DST.view_default) {
- copy_v4_v4(view->storage.viewcamtexcofac, DST.view_default->storage.viewcamtexcofac);
- }
-
DRW_view_update_sub(view, viewmat, winmat);
return view;
@@ -1471,6 +1461,11 @@ void DRW_view_clip_planes_set(DRWView *view, float (*planes)[4], int plane_len)
}
}
+void DRW_view_camtexco_set(DRWView *view, float texco[4])
+{
+ copy_v4_v4(view->storage.viewcamtexcofac, texco);
+}
+
/* Return world space frustum corners. */
void DRW_view_frustum_corners_get(const DRWView *view, BoundBox *corners)
{