[Bf-blender-cvs] [c980f9e652a] tmp-overlay-engine: Overlay Engine: Make overlay parameters reset TAA
Clément Foucault
noreply at git.blender.org
Wed Nov 27 10:39:50 CET 2019
Commit: c980f9e652a87ecf6dde7a10c117b5623232f2a2
Author: Clément Foucault
Date: Wed Nov 27 11:09:40 2019 +0100
Branches: tmp-overlay-engine
https://developer.blender.org/rBc980f9e652a87ecf6dde7a10c117b5623232f2a2
Overlay Engine: Make overlay parameters reset TAA
===================================================================
M source/blender/draw/engines/overlay/overlay_engine.c
M source/blender/draw/engines/overlay/overlay_grid.c
M source/blender/draw/engines/overlay/overlay_private.h
===================================================================
diff --git a/source/blender/draw/engines/overlay/overlay_engine.c b/source/blender/draw/engines/overlay/overlay_engine.c
index 5aefdd20c54..0c1d0657432 100644
--- a/source/blender/draw/engines/overlay/overlay_engine.c
+++ b/source/blender/draw/engines/overlay/overlay_engine.c
@@ -41,15 +41,54 @@ static void OVERLAY_engine_init(void *vedata)
OVERLAY_Data *data = vedata;
OVERLAY_StorageList *stl = data->stl;
const DRWContextState *draw_ctx = DRW_context_state_get();
+ const RegionView3D *rv3d = draw_ctx->rv3d;
+ const View3D *v3d = draw_ctx->v3d;
if (!stl->pd) {
/* Alloc transient pointers */
stl->pd = MEM_callocN(sizeof(*stl->pd), __func__);
}
- stl->pd->ctx_mode = CTX_data_mode_enum_ex(
+ OVERLAY_PrivateData *pd = stl->pd;
+ View3DOverlay overlay;
+ short v3d_flag, v3d_gridflag;
+
+ pd->hide_overlays = (v3d->flag2 & V3D_HIDE_OVERLAYS) != 0;
+ pd->ctx_mode = CTX_data_mode_enum_ex(
draw_ctx->object_edit, draw_ctx->obact, draw_ctx->object_mode);
+ if (!pd->hide_overlays) {
+ overlay = v3d->overlay;
+ v3d_flag = v3d->flag;
+ v3d_gridflag = v3d->gridflag;
+ }
+ else {
+ memset(&overlay, 0, sizeof(overlay));
+ v3d_flag = 0;
+ v3d_gridflag = 0;
+ overlay.flag = V3D_OVERLAY_HIDE_TEXT | V3D_OVERLAY_HIDE_MOTION_PATHS | V3D_OVERLAY_HIDE_BONES |
+ V3D_OVERLAY_HIDE_OBJECT_XTRAS | V3D_OVERLAY_HIDE_OBJECT_ORIGINS;
+ }
+
+ if (v3d->shading.type == OB_WIRE) {
+ overlay.flag |= V3D_OVERLAY_WIREFRAMES;
+ }
+
+ /* Check if anything changed, and if so, reset AA. */
+ if (v3d_flag != pd->v3d_flag || pd->v3d_gridflag != v3d_gridflag ||
+ memcmp(&pd->overlay, &overlay, sizeof(overlay))) {
+ pd->overlay = overlay;
+ pd->v3d_flag = v3d_flag;
+ pd->v3d_gridflag = v3d_gridflag;
+ OVERLAY_antialiasing_reset(vedata);
+ }
+
+ pd->wireframe_mode = (v3d->shading.type == OB_WIRE);
+ pd->clipping_state = (rv3d->rflag & RV3D_CLIPPING) ? DRW_STATE_CLIP_PLANES : 0;
+ pd->xray_enabled = XRAY_ACTIVE(v3d);
+ pd->xray_enabled_and_not_wire = pd->xray_enabled && v3d->shading.type > OB_WIRE;
+ pd->clear_in_front = (v3d->shading.type != OB_SOLID);
+
OVERLAY_antialiasing_init(vedata);
switch (stl->pd->ctx_mode) {
@@ -73,34 +112,6 @@ static void OVERLAY_cache_init(void *vedata)
OVERLAY_StorageList *stl = data->stl;
OVERLAY_PrivateData *pd = stl->pd;
- const DRWContextState *draw_ctx = DRW_context_state_get();
- const RegionView3D *rv3d = draw_ctx->rv3d;
- const View3D *v3d = draw_ctx->v3d;
-
- pd->hide_overlays = (v3d->flag2 & V3D_HIDE_OVERLAYS) != 0;
-
- if (!pd->hide_overlays) {
- pd->overlay = v3d->overlay;
- pd->v3d_flag = v3d->flag;
- }
- else {
- memset(&pd->overlay, 0, sizeof(pd->overlay));
- pd->v3d_flag = 0;
- pd->overlay.flag = V3D_OVERLAY_HIDE_TEXT | V3D_OVERLAY_HIDE_MOTION_PATHS |
- V3D_OVERLAY_HIDE_BONES | V3D_OVERLAY_HIDE_OBJECT_XTRAS |
- V3D_OVERLAY_HIDE_OBJECT_ORIGINS;
- }
-
- if (v3d->shading.type == OB_WIRE) {
- pd->overlay.flag |= V3D_OVERLAY_WIREFRAMES;
- }
-
- pd->wireframe_mode = (v3d->shading.type == OB_WIRE);
- pd->clipping_state = (rv3d->rflag & RV3D_CLIPPING) ? DRW_STATE_CLIP_PLANES : 0;
- pd->xray_enabled = XRAY_ACTIVE(v3d);
- pd->xray_enabled_and_not_wire = pd->xray_enabled && v3d->shading.type > OB_WIRE;
- pd->clear_in_front = (v3d->shading.type != OB_SOLID);
-
switch (pd->ctx_mode) {
case CTX_MODE_EDIT_MESH:
OVERLAY_edit_mesh_cache_init(vedata);
diff --git a/source/blender/draw/engines/overlay/overlay_grid.c b/source/blender/draw/engines/overlay/overlay_grid.c
index 85e5be08f4c..7dea6c198d0 100644
--- a/source/blender/draw/engines/overlay/overlay_grid.c
+++ b/source/blender/draw/engines/overlay/overlay_grid.c
@@ -53,11 +53,11 @@ void OVERLAY_grid_init(OVERLAY_Data *vedata)
Scene *scene = draw_ctx->scene;
RegionView3D *rv3d = draw_ctx->rv3d;
- const bool show_axis_x = (v3d->gridflag & V3D_SHOW_X) != 0;
- const bool show_axis_y = (v3d->gridflag & V3D_SHOW_Y) != 0;
- const bool show_axis_z = (v3d->gridflag & V3D_SHOW_Z) != 0;
- const bool show_floor = (v3d->gridflag & V3D_SHOW_FLOOR) != 0;
- const bool show_ortho_grid = (v3d->gridflag & V3D_SHOW_ORTHO_GRID) != 0;
+ const bool show_axis_x = (pd->v3d_gridflag & V3D_SHOW_X) != 0;
+ const bool show_axis_y = (pd->v3d_gridflag & V3D_SHOW_Y) != 0;
+ const bool show_axis_z = (pd->v3d_gridflag & V3D_SHOW_Z) != 0;
+ const bool show_floor = (pd->v3d_gridflag & V3D_SHOW_FLOOR) != 0;
+ const bool show_ortho_grid = (pd->v3d_gridflag & V3D_SHOW_ORTHO_GRID) != 0;
shd->grid_flag = 0;
diff --git a/source/blender/draw/engines/overlay/overlay_private.h b/source/blender/draw/engines/overlay/overlay_private.h
index 8642ee49a63..9dbe6ea4627 100644
--- a/source/blender/draw/engines/overlay/overlay_private.h
+++ b/source/blender/draw/engines/overlay/overlay_private.h
@@ -272,7 +272,8 @@ typedef struct OVERLAY_PrivateData {
bool hide_overlays;
bool xray_enabled;
bool xray_enabled_and_not_wire;
- short v3d_flag;
+ short v3d_flag; /* TODO move to View3DOverlay */
+ short v3d_gridflag; /* TODO move to View3DOverlay */
DRWState clipping_state;
OVERLAY_ShadingData shdata;
More information about the Bf-blender-cvs
mailing list