[Bf-blender-cvs] [ca0c24c9df0] soc-2019-npr: LANPR: Manual stroke update functions. (Not working yet)
YimingWu
noreply at git.blender.org
Wed Jun 19 11:43:27 CEST 2019
Commit: ca0c24c9df0a542856c97d26b802ff494e007c96
Author: YimingWu
Date: Wed Jun 19 17:41:02 2019 +0800
Branches: soc-2019-npr
https://developer.blender.org/rBca0c24c9df0a542856c97d26b802ff494e007c96
LANPR: Manual stroke update functions. (Not working yet)
===================================================================
M release/scripts/startup/bl_ui/properties_data_modifier.py
M source/blender/draw/engines/lanpr/lanpr_access.c
M source/blender/draw/engines/lanpr/lanpr_access.h
M source/blender/draw/engines/lanpr/lanpr_engine.c
M source/blender/draw/engines/lanpr/lanpr_ops.c
M source/blender/editors/render/render_intern.h
M source/blender/editors/render/render_ops.c
===================================================================
diff --git a/release/scripts/startup/bl_ui/properties_data_modifier.py b/release/scripts/startup/bl_ui/properties_data_modifier.py
index 4f37cf04265..e2416de1410 100644
--- a/release/scripts/startup/bl_ui/properties_data_modifier.py
+++ b/release/scripts/startup/bl_ui/properties_data_modifier.py
@@ -1669,7 +1669,7 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
col.prop(md, "face_influence")
def FEATURE_LINE(self, layout, ob, md):
- layout.label(text='Not operational yet')
+ layout.operator("scene.lanpr_update_gp_strokes", icon='RENDER_STILL', text='Manual Update')
layout.label(text='Usage:')
row = layout.row()
row.prop(md,'usage',expand=True)
@@ -1684,7 +1684,7 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
row.prop(md,'enable_modifier_mark',toggle=True)
layout.label(text='Result GP:')
layout.prop(md,'target')
- layout.prop(md,'replace')
+ layout.prop(md,'replace', text='Replace existing frames')
row = layout.row()
row.prop(md,'layer')
diff --git a/source/blender/draw/engines/lanpr/lanpr_access.c b/source/blender/draw/engines/lanpr/lanpr_access.c
index 50abf53bbd2..95cfe3dd2e7 100644
--- a/source/blender/draw/engines/lanpr/lanpr_access.c
+++ b/source/blender/draw/engines/lanpr/lanpr_access.c
@@ -292,7 +292,7 @@ void lanpr_update_data_for_external(Depsgraph *depsgraph)
return;
if (!lanpr_share.render_buffer_shared ||
lanpr_share.render_buffer_shared->cached_for_frame != scene->r.cfra) {
- lanpr_compute_feature_lines_internal(depsgraph, lanpr, scene);
+ lanpr_compute_feature_lines_internal(depsgraph);
}
}
diff --git a/source/blender/draw/engines/lanpr/lanpr_access.h b/source/blender/draw/engines/lanpr/lanpr_access.h
index 0e3903c9f37..5703cc2e52e 100644
--- a/source/blender/draw/engines/lanpr/lanpr_access.h
+++ b/source/blender/draw/engines/lanpr/lanpr_access.h
@@ -20,7 +20,7 @@ void lanpr_update_data_for_external(Depsgraph *depsgraph);
int lanpr_count_chain(LANPR_RenderLineChain *rlc);
-int lanpr_compute_feature_lines_internal(Depsgraph *depsgraph, SceneLANPR *lanpr, Scene *scene);
+int lanpr_compute_feature_lines_internal(Depsgraph *depsgraph);
void lanpr_destroy_render_data(struct LANPR_RenderBuffer *rb);
diff --git a/source/blender/draw/engines/lanpr/lanpr_engine.c b/source/blender/draw/engines/lanpr/lanpr_engine.c
index 2294af796b1..f588e87a0b3 100644
--- a/source/blender/draw/engines/lanpr/lanpr_engine.c
+++ b/source/blender/draw/engines/lanpr/lanpr_engine.c
@@ -587,8 +587,8 @@ static void lanpr_render_matrices_init(RenderEngine *engine, Depsgraph *depsgrap
DRW_view_set_active(view);
}
-int lanpr_compute_feature_lines_internal(Depsgraph *depsgraph, SceneLANPR *lanpr, Scene *scene);
-LANPR_RenderBuffer *lanpr_create_render_buffer(SceneLANPR *lanpr);
+int lanpr_compute_feature_lines_internal(Depsgraph *depsgraph);
+LANPR_RenderBuffer *lanpr_create_render_buffer();
extern DrawEngineType draw_engine_lanpr_type;
@@ -628,10 +628,10 @@ static void lanpr_render_to_image(LANPR_Data *vedata,
if (lanpr->master_mode == LANPR_MASTER_MODE_SOFTWARE ||
(lanpr->master_mode == LANPR_MASTER_MODE_DPIX && lanpr->enable_intersections)) {
if (!lanpr_share.render_buffer_shared)
- lanpr_create_render_buffer(lanpr);
+ lanpr_create_render_buffer();
if (lanpr_share.render_buffer_shared->cached_for_frame != scene->r.cfra ||
LANPR_GLOBAL_update_tag) {
- lanpr_compute_feature_lines_internal(draw_ctx->depsgraph, lanpr, scene);
+ lanpr_compute_feature_lines_internal(draw_ctx->depsgraph);
}
}
diff --git a/source/blender/draw/engines/lanpr/lanpr_ops.c b/source/blender/draw/engines/lanpr/lanpr_ops.c
index 2324f50d83d..90e60ebfd53 100644
--- a/source/blender/draw/engines/lanpr/lanpr_ops.c
+++ b/source/blender/draw/engines/lanpr/lanpr_ops.c
@@ -40,6 +40,11 @@
#include "RNA_access.h"
#include "RNA_define.h"
+#include "BKE_modifier.h"
+#include "BKE_gpencil.h"
+#include "BKE_gpencil_modifier.h"
+#include "lanpr_access.h"
+
extern LANPR_SharedResource lanpr_share;
struct Object;
@@ -3308,7 +3313,7 @@ void lanpr_destroy_render_data(LANPR_RenderBuffer *rb)
mem_static_destroy(&rb->render_data_pool);
}
-LANPR_RenderBuffer *lanpr_create_render_buffer(SceneLANPR *lanpr)
+LANPR_RenderBuffer *lanpr_create_render_buffer()
{
if (lanpr_share.render_buffer_shared) {
lanpr_destroy_render_data(lanpr_share.render_buffer_shared);
@@ -3941,22 +3946,24 @@ void lanpr_software_draw_scene(void *vedata, GPUFrameBuffer *dfb, int is_render)
/* ============================================ operators =========================================
*/
-int lanpr_compute_feature_lines_internal(Depsgraph *depsgraph, SceneLANPR *lanpr, Scene *scene)
+int lanpr_compute_feature_lines_internal(Depsgraph *depsgraph)
{
LANPR_RenderBuffer *rb;
+ SceneLANPR* lanpr;
- rb = lanpr_create_render_buffer(lanpr);
+ rb = lanpr_create_render_buffer();
lanpr_share.render_buffer_shared = rb;
- rb->scene = scene;
- rb->w = scene->r.xsch;
- rb->h = scene->r.ysch;
+ rb->scene = DEG_get_evaluated_scene(depsgraph);
+ rb->w = rb->scene->r.xsch;
+ rb->h = rb->scene->r.ysch;
+ lanpr = &rb->scene->lanpr;
rb->enable_intersections = lanpr->enable_intersections;
rb->triangle_size = lanpr_get_render_triangle_size(rb);
- lanpr_make_render_geometry_buffers(depsgraph, scene, scene->camera, rb);
+ lanpr_make_render_geometry_buffers(depsgraph, rb->scene, rb->scene->camera, rb);
lanpr_compute_view_Vector(rb);
lanpr_cull_triangles(rb);
@@ -3977,7 +3984,7 @@ int lanpr_compute_feature_lines_internal(Depsgraph *depsgraph, SceneLANPR *lanpr
lanpr_connect_chains_image_space(rb);
}
- rb->cached_for_frame = scene->r.cfra;
+ rb->cached_for_frame = rb->scene->r.cfra;
return OPERATOR_FINISHED;
}
@@ -4005,7 +4012,7 @@ static int lanpr_compute_feature_lines_exec(struct bContext *C, struct wmOperato
return OPERATOR_FINISHED;
}
- return lanpr_compute_feature_lines_internal(CTX_data_depsgraph(C), lanpr, scene);
+ return lanpr_compute_feature_lines_internal(CTX_data_depsgraph(C));
}
static void lanpr_compute_feature_lines_cancel(struct bContext *C, struct wmOperator *op)
{
@@ -4214,6 +4221,35 @@ int lanpr_auto_create_line_layer_exec(struct bContext *C, struct wmOperator *op)
return OPERATOR_FINISHED;
}
+int lanpr_update_gp_strokes_exec(struct bContext *C, struct wmOperator *op)
+{
+ Scene *scene = CTX_data_scene(C);
+ SceneLANPR *lanpr = &scene->lanpr;
+ Object* ob;
+ Object* gpobj;
+ ModifierData* md;
+ bGPdata* gpd;
+ bGPDlayer* gpl;
+ bGPDframe* gpf;
+
+ return;
+ //XXX this iteration will not work. try to get an object list.
+ for(ob = scene->collection->objects.first; ob; ob=ob->id.next){
+ //TODO: Object visibility in render and viewport.
+ for(md = ob->modifiers.first;md;md=md->next){
+ if(md->type == eModifierType_FeatureLine){
+ FeatureLineModifierData* flmd = (FeatureLineModifierData*)flmd;
+ if(flmd->target && flmd->target->type == OB_GPENCIL){
+ gpobj = flmd->target;
+ gpd = gpobj->data;
+ // add strokes
+ }
+ }
+ }
+ }
+
+ return OPERATOR_FINISHED;
+}
void SCENE_OT_lanpr_add_line_layer(struct wmOperatorType *ot)
{
@@ -4301,134 +4337,13 @@ void SCENE_OT_lanpr_delete_line_component(struct wmOperatorType *ot)
RNA_def_int(ot->srna, "index", 0, 0, 10000, "index", "index of this line component", 0, 10000);
}
-#ifdef USE_LANPR_HINT
-
-// how to access LANPR's occlusion info after LANPR software mode calculation
-
-// You can access descrete occlusion data from every edge,
-// but you can also access occlusion using LANPR's chain data.
-// Two examples are given.
-
-// [1.descrete occlusion data for
-// edges]======================================================================================
-//
-// LANPR occlusion related data storage :
-//
-// LANPR_RenderBuffer :: all_render_lines ====> All LANPR_RenderLine nodes. Each node for a
-// singe edge on the mesh.
-// Only features lines are in this list.
-// LANPR_RenderLine stores a list of occlusion info
-// in LANPR_RenderLineSegment.
-//
-// LANPR_RenderBuffer :: contours (and crease/material_lines/Intersections/edge_marks)
-// ====> ListItemPointers to LANPR_RenderLine nodes.
-// Use these lists to access individual line types
-// for convenience. For how to access this list,
-// refer to this file line 728-730 as an example.
-//
-// LANPR_RenderLine :: segments ====> List of LANPR_RenderLineSegment to represent
-// occlusion info.
-// See below for how occlusion is reoresented in
-// Renderline and RenderLineSegment.
-//
-// RenderLine Diagram:
-// +[RenderLine]
-// [segments]
-// [Segment] at=0 occlusion=0
-// [Segment] at=0.5 occlusion=1
-// [Segment] at=0.7 occlusion=0
-//
-// Then you get a line with such occlusion:
-// [l]|-------------------------|=========|-----------[r]
-//
-// the beginning to 50% of the line : Not occluded
-// 50% to 70% of the line : Occluded 1 time
-// 70% to the end of the line : Not occluded
-//
-// cut positions are linear interpolated in image space from line->l->fbcoord to
-// line->r->fbcoord (always l to r)
-// ~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~
-// to see an example of iterating occlusion data for all lines for drawing, see below or refer to
-// this file line 2930.
-//
-// [Iterating occlusion data]
-void lanpr_iterate_renderline_and_occlusion(LANPR_RenderBuffer *rb, double *v_OUT, double Occ_OUT)
+void SCENE_OT_lanpr_update_gp_strokes(struct wmOperatorType *ot)
{
- LinkData *lip;
- LANPR_R
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list