[Bf-blender-cvs] [5ac143dbe8e] soc-2019-npr: Modifier: EdgeSplit modifier now follows LANPR "disable_edge_splits" as well.

YimingWu noreply at git.blender.org
Mon Jul 1 09:36:19 CEST 2019


Commit: 5ac143dbe8ea75df0f6367846e49ea73b9bdcedf
Author: YimingWu
Date:   Mon Jul 1 15:35:14 2019 +0800
Branches: soc-2019-npr
https://developer.blender.org/rB5ac143dbe8ea75df0f6367846e49ea73b9bdcedf

Modifier: EdgeSplit modifier now follows LANPR "disable_edge_splits" as well.

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

M	release/scripts/startup/bl_ui/properties_render.py
M	source/blender/draw/engines/lanpr/lanpr_access.c
M	source/blender/draw/engines/lanpr/lanpr_access.h
M	source/blender/makesdna/DNA_scene_types.h
M	source/blender/makesrna/intern/rna_scene.c
M	source/blender/modifiers/intern/MOD_edgesplit.c

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

diff --git a/release/scripts/startup/bl_ui/properties_render.py b/release/scripts/startup/bl_ui/properties_render.py
index 254472b06c3..0f167b0263c 100644
--- a/release/scripts/startup/bl_ui/properties_render.py
+++ b/release/scripts/startup/bl_ui/properties_render.py
@@ -737,9 +737,10 @@ class RENDER_PT_lanpr(RenderButtonsPanel, Panel):
 
         if mode == "SOFTWARE":
             row=layout.row(align=True)
-            row.prop(lanpr,'auto_update',toggle=True,text='Auto')
+            row.prop(lanpr,'auto_update',toggle=True,text='Auto Update')
             if not lanpr.auto_update:
                 row.operator("scene.lanpr_calculate", icon='RENDER_STILL', text='Update')
+            layout.prop(lanpr, "disable_edge_splits")
 
         if mode == "DPIX" or mode == "SOFTWARE":
             
diff --git a/source/blender/draw/engines/lanpr/lanpr_access.c b/source/blender/draw/engines/lanpr/lanpr_access.c
index 59e60fec076..2bad8dcf99f 100644
--- a/source/blender/draw/engines/lanpr/lanpr_access.c
+++ b/source/blender/draw/engines/lanpr/lanpr_access.c
@@ -138,6 +138,10 @@ bool lanpr_dpix_shader_error()
   return lanpr_share.dpix_shader_error;
 }
 
+bool lanpr_disable_edge_splits(Scene* s){
+  return s->lanpr.disable_edge_splits;
+}
+
 void lanpr_copy_data(Scene *from, Scene *to)
 {
   SceneLANPR *lanpr = &from->lanpr;
diff --git a/source/blender/draw/engines/lanpr/lanpr_access.h b/source/blender/draw/engines/lanpr/lanpr_access.h
index 556f07107e6..b892a13ffee 100644
--- a/source/blender/draw/engines/lanpr/lanpr_access.h
+++ b/source/blender/draw/engines/lanpr/lanpr_access.h
@@ -30,8 +30,12 @@ int lanpr_compute_feature_lines_internal(Depsgraph *depsgraph);
 
 void lanpr_destroy_render_data(struct LANPR_RenderBuffer *rb);
 
-void lanpr_copy_data(Scene *from, Scene *to);
+bool lanpr_dpix_shader_error();
 
-void lanpr_free_everything(Scene *s);
+bool lanpr_disable_edge_splits(struct Scene* s);
+
+void lanpr_copy_data(struct Scene *from, struct Scene *to);
+
+void lanpr_free_everything(struct Scene *s);
 
 #endif
diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h
index b4494b3df64..b0cda544894 100644
--- a/source/blender/makesdna/DNA_scene_types.h
+++ b/source/blender/makesdna/DNA_scene_types.h
@@ -1680,6 +1680,10 @@ typedef struct SceneLANPR {
 
   int reloaded;
 
+  /* edge split modifier will cause problems in LANPR. */
+  int disable_edge_splits;
+  char _pad[4];
+
   /* offline render */
   ListBase line_layers;
   struct LANPR_LineLayer *active_layer;
diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c
index 87cb6c13dd2..ecca0a51fd6 100644
--- a/source/blender/makesrna/intern/rna_scene.c
+++ b/source/blender/makesrna/intern/rna_scene.c
@@ -7369,12 +7369,18 @@ static void rna_def_scene_lanpr(BlenderRNA *brna)
                            "Enable Chain Connection",
                            "Connect short chains in the image space into one longer chain");
 
+  /* should be read-only */
   prop = RNA_def_property(srna, "shader_error", PROP_BOOLEAN, PROP_NONE);
   RNA_def_property_boolean_default(prop, 0);
   RNA_def_property_boolean_funcs(prop, "rna_lanpr_shader_error_get", "");
   RNA_def_property_ui_text(
       prop, "DPIX Shader Error", "Can't compile DPIX transform shader on your GPU.");
 
+  prop = RNA_def_property(srna, "disable_edge_splits", PROP_BOOLEAN, PROP_NONE);
+  RNA_def_property_boolean_default(prop, 0);
+  RNA_def_property_ui_text(
+      prop, "Disable Edge Splits", "Disable edge split modifiers to prevent errors in LANPR.");
+
   prop = RNA_def_property(srna, "chaining_geometry_threshold", PROP_FLOAT, PROP_NONE);
   RNA_def_property_float_default(prop, 0.1f);
   RNA_def_property_ui_text(prop,
diff --git a/source/blender/modifiers/intern/MOD_edgesplit.c b/source/blender/modifiers/intern/MOD_edgesplit.c
index 6565e0c7a96..d7509727972 100644
--- a/source/blender/modifiers/intern/MOD_edgesplit.c
+++ b/source/blender/modifiers/intern/MOD_edgesplit.c
@@ -41,6 +41,8 @@
 
 #include "MOD_modifiertypes.h"
 
+#include "lanpr_access.h"
+
 static Mesh *doEdgeSplit(Mesh *mesh, EdgeSplitModifierData *emd)
 {
   Mesh *result;
@@ -132,10 +134,15 @@ static bool isDisabled(const struct Scene *scene, struct ModifierData *md, bool
   ModifierData* imd;
   EdgeSplitModifierData *emd = (EdgeSplitModifierData *)md;
 
-  for(imd = md->prev; imd; imd=imd->prev){
-    if(imd->type == eModifierType_FeatureLine){
-      lanpr_found = 1;
-      break;
+  if(lanpr_disable_edge_splits(scene)){
+    lanpr_found = 1;
+  }
+  if(!lanpr_found){
+    for(imd = md->prev; imd; imd=imd->prev){
+      if(imd->type == eModifierType_FeatureLine){
+        lanpr_found = 1;
+        break;
+      }
     }
   }
   if(!lanpr_found){



More information about the Bf-blender-cvs mailing list