[Bf-blender-cvs] [10098812d3c] soc-2019-npr: LANPR: Intersection cache now updates before lanpr_cache_finish().
YimingWu
noreply at git.blender.org
Thu Jul 4 16:13:05 CEST 2019
Commit: 10098812d3c266ae9b01d1a60e641ee7e3b95344
Author: YimingWu
Date: Thu Jul 4 22:12:07 2019 +0800
Branches: soc-2019-npr
https://developer.blender.org/rB10098812d3c266ae9b01d1a60e641ee7e3b95344
LANPR: Intersection cache now updates before lanpr_cache_finish().
===================================================================
M source/blender/draw/engines/lanpr/lanpr_engine.c
===================================================================
diff --git a/source/blender/draw/engines/lanpr/lanpr_engine.c b/source/blender/draw/engines/lanpr/lanpr_engine.c
index 99732b804be..564915ecce1 100644
--- a/source/blender/draw/engines/lanpr/lanpr_engine.c
+++ b/source/blender/draw/engines/lanpr/lanpr_engine.c
@@ -185,6 +185,8 @@ static void lanpr_engine_free(void)
void lanpr_calculate_normal_object_vector(LANPR_LineLayer *ll, float *normal_object_direction);
int lanpr_dpix_texture_size(SceneLANPR *lanpr);
+void lanpr_rebuild_all_command(SceneLANPR *lanpr);
+
static void lanpr_cache_init(void *vedata)
{
@@ -417,6 +419,24 @@ static void lanpr_cache_init(void *vedata)
else if (lanpr->master_mode == LANPR_MASTER_MODE_SOFTWARE) {
;
}
+
+ /* Intersection cache must be calculated before drawing. */
+ int updated = 0;
+ if (draw_ctx->scene->lanpr.auto_update &&
+ (!lanpr_share.render_buffer_shared ||
+ lanpr_share.render_buffer_shared->cached_for_frame != draw_ctx->scene->r.cfra)) {
+ if (draw_ctx->scene->lanpr.master_mode == LANPR_MASTER_MODE_SOFTWARE) {
+ lanpr_compute_feature_lines_internal(draw_ctx->depsgraph, 0);
+ updated = 1;
+ }
+ else if (draw_ctx->scene->lanpr.master_mode == LANPR_MASTER_MODE_DPIX) {
+ lanpr_compute_feature_lines_internal(draw_ctx->depsgraph, 1);
+ }
+ }
+
+ if (updated) {
+ lanpr_rebuild_all_command(&draw_ctx->scene->lanpr);
+ }
}
static void lanpr_cache_populate(void *vedata, Object *ob)
@@ -579,28 +599,9 @@ static void lanpr_draw_scene_exec(void *vedata, GPUFrameBuffer *dfb, int is_rend
}
}
-void lanpr_rebuild_all_command(SceneLANPR *lanpr);
-
static void lanpr_draw_scene(void *vedata)
{
DefaultFramebufferList *dfbl = DRW_viewport_framebuffer_list_get();
- const DRWContextState *draw_ctx = DRW_context_state_get();
- int updated = 0;
- if (draw_ctx->scene->lanpr.auto_update &&
- (!lanpr_share.render_buffer_shared ||
- lanpr_share.render_buffer_shared->cached_for_frame != draw_ctx->scene->r.cfra)) {
- if (draw_ctx->scene->lanpr.master_mode == LANPR_MASTER_MODE_SOFTWARE) {
- lanpr_compute_feature_lines_internal(draw_ctx->depsgraph, 0);
- updated = 1;
- }
- else if (draw_ctx->scene->lanpr.master_mode == LANPR_MASTER_MODE_DPIX) {
- lanpr_compute_feature_lines_internal(draw_ctx->depsgraph, 1);
- }
- }
-
- if (updated) {
- lanpr_rebuild_all_command(&draw_ctx->scene->lanpr);
- }
lanpr_draw_scene_exec(vedata, dfbl->default_fb, 0);
}
More information about the Bf-blender-cvs
mailing list