Commit: ca4144a11afa547fad9897c460fb115ff4fbef1c
Author: Nick Wu
Date:   Thu Jul 5 15:25:07 2018 +0800
Branches: soc-2018-npr
https://developer.blender.org/rBca4144a11afa547fad9897c460fb115ff4fbef1c

Provide a switch to turn on/off intersection line calculation to save time when 
intersection is not needed.

===================================================================

M       release/scripts/startup/bl_ui/properties_scene.py
M       source/blender/draw/engines/lanpr/lanpr_all.h
M       source/blender/draw/engines/lanpr/lanpr_ops.c
M       source/blender/makesdna/DNA_scene_types.h
M       source/blender/makesrna/intern/rna_scene.c

===================================================================

diff --git a/release/scripts/startup/bl_ui/properties_scene.py 
b/release/scripts/startup/bl_ui/properties_scene.py
index 88ca9e117f4..f34c0897457 100644
--- a/release/scripts/startup/bl_ui/properties_scene.py
+++ b/release/scripts/startup/bl_ui/properties_scene.py
@@ -533,6 +533,9 @@ class SCENE_PT_lanpr(SceneButtonsPanel, Panel):
 
             rows = 4
             if lanpr.master_mode == "SOFTWARE":
+                layout.label(text="Enable On Demand:")
+                layout.prop(lanpr,"calculate_intersections", toggle = True, 
text = "Enable Intersection Lines")
+                layout.label(text="RUN:")
                 layout.operator("scene.lanpr_calculate", icon='RENDER_STILL')
                 layout.label(text="Layer Composition:")
                 layout.template_list("LANPR_linesets", "", lanpr, "layers", 
lanpr.layers, "active_layer_index", rows=rows)
@@ -604,13 +607,18 @@ class SCENE_PT_lanpr_line_types(SceneButtonsPanel, Panel):
         row.prop(active_layer, "material_color", text="")
         row.prop(active_layer, "thickness_material", text="")
         row = col.row(align = True)
-        row.enabled = active_layer.enable_intersection
-        row.prop(active_layer, "intersection_color", text="")
-        row.prop(active_layer, "thickness_intersection", text="")
+        if lanpr.calculate_intersections:
+            row.enabled = active_layer.enable_intersection
+            row.prop(active_layer, "intersection_color", text="")
+            row.prop(active_layer, "thickness_intersection", text="")
+        else:
+            row.label(text= "Intersection Calculation Disabled")
 
         if lanpr.master_mode == "DPIX" and active_layer.enable_intersection:
-            row = col.row()
-            row.operator("scene.lanpr_calculate", text= "Recalculate 
Intersections")
+            row = col.row(align = True)
+            row.prop(lanpr,"calculate_intersections", toggle = True, text = 
"Enable")
+            if lanpr.calculate_intersections:
+                row.operator("scene.lanpr_calculate", text= "Recalculate")
 
         if lanpr.master_mode == "SOFTWARE":
             row = layout.row(align=True)
diff --git a/source/blender/draw/engines/lanpr/lanpr_all.h 
b/source/blender/draw/engines/lanpr/lanpr_all.h
index 8e8f22088b2..dcb9197a168 100644
--- a/source/blender/draw/engines/lanpr/lanpr_all.h
+++ b/source/blender/draw/engines/lanpr/lanpr_all.h
@@ -379,6 +379,9 @@ typedef struct LANPR_RenderBuffer {
        struct Scene *Scene;
        struct Object *Camera;
 
+       int    calculate_intersections;
+       int    size;
+
        //tnsRenderTriangles are in mesh object.
 }LANPR_RenderBuffer;
 
diff --git a/source/blender/draw/engines/lanpr/lanpr_ops.c 
b/source/blender/draw/engines/lanpr/lanpr_ops.c
index a9b58fa5136..567deb8f964 100644
--- a/source/blender/draw/engines/lanpr/lanpr_ops.c
+++ b/source/blender/draw/engines/lanpr/lanpr_ops.c
@@ -304,7 +304,7 @@ void 
lanpr_AssociateTriangleWithBoundingArea(LANPR_RenderBuffer *rb, LANPR_Bound
                if (RootBoundingArea->TriangleCount > 200 && Recursive) {
                        lanpr_SplitBoundingArea(rb, RootBoundingArea);
                }
-               if (Recursive) lanpr_TriangleCalculateIntersectionsInTile(rb, 
rt, RootBoundingArea);
+               if (Recursive && rb->calculate_intersections) 
lanpr_TriangleCalculateIntersectionsInTile(rb, rt, RootBoundingArea);
        }
        else {
                LANPR_BoundingArea *ba = RootBoundingArea->Child;
@@ -2917,6 +2917,7 @@ static int lanpr_compute_feature_lines_exec(struct 
bContext *C, struct wmOperato
        rb->Scene = scene;
        rb->W = scene->r.xsch;
        rb->H = scene->r.ysch;
+       rb->calculate_intersections = lanpr->calculate_intersections;
 
        rb->TriangleSize = lanpr_GetRenderTriangleSize(rb);
 
diff --git a/source/blender/makesdna/DNA_scene_types.h 
b/source/blender/makesdna/DNA_scene_types.h
index d7744a20d29..971cc930245 100644
--- a/source/blender/makesdna/DNA_scene_types.h
+++ b/source/blender/makesdna/DNA_scene_types.h
@@ -1489,6 +1489,9 @@ typedef struct SceneLANPR{
        ListBase                   line_layers;  /* now here!!! */
        struct LANPR_LineLayer    *active_layer;
 
+       int                        calculate_intersections;
+       int                        _size;
+
 } SceneLANPR;
 
 /* *************************************************************** */
diff --git a/source/blender/makesrna/intern/rna_scene.c 
b/source/blender/makesrna/intern/rna_scene.c
index 82b2507a293..7b2396a180b 100644
--- a/source/blender/makesrna/intern/rna_scene.c
+++ b/source/blender/makesrna/intern/rna_scene.c
@@ -6401,6 +6401,10 @@ static void rna_def_scene_lanpr(BlenderRNA *brna)
        RNA_def_property_flag(prop, PROP_EDITABLE);
        RNA_def_property_update(prop, NC_SCENE, NULL);
 
+       prop = RNA_def_property(srna, "calculate_intersections", PROP_BOOLEAN, 
PROP_NONE);
+       RNA_def_property_boolean_default(prop, 1);
+       RNA_def_property_ui_text(prop, "Calculate Intersections", "Calculate 
Intersections or not");
+
 
        /* these shall go into LANPR_LineLayer */

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to