[Bf-blender-cvs] [4970b003edf] soc-2018-npr: Offline render running and display is ok. Don't render more than 1 time.

Nick Wu noreply at git.blender.org
Tue Jun 26 12:33:02 CEST 2018


Commit: 4970b003edf0772ad13701e8b3de96d0abf152d3
Author: Nick Wu
Date:   Tue Jun 26 18:31:10 2018 +0800
Branches: soc-2018-npr
https://developer.blender.org/rB4970b003edf0772ad13701e8b3de96d0abf152d3

Offline render running and display is ok. Don't render more than 1 time.

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

M	release/scripts/startup/bl_ui/properties_scene.py
M	source/blender/draw/CMakeLists.txt
M	source/blender/draw/engines/lanpr/lanpr_all.h
M	source/blender/draw/engines/lanpr/lanpr_engine.c
M	source/blender/draw/engines/lanpr/lanpr_ops.c
A	source/blender/draw/engines/lanpr/shaders/lanpr_software_line_width.geometry
M	source/blender/makesdna/DNA_lanpr_types.h

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

diff --git a/release/scripts/startup/bl_ui/properties_scene.py b/release/scripts/startup/bl_ui/properties_scene.py
index e2c7662f94c..e7db3bfd577 100644
--- a/release/scripts/startup/bl_ui/properties_scene.py
+++ b/release/scripts/startup/bl_ui/properties_scene.py
@@ -505,7 +505,7 @@ class SCENE_PT_lanpr(SceneButtonsPanel, PropertyPanel, Panel):
 
         layout.prop(lanpr, "master_mode", expand=True) 
 
-        if lanpr.master_mode == "DPIX":
+        if lanpr.master_mode == "DPIX" or lanpr.master_mode == "SOFTWARE":
             layout.label(text="DPIX:")
             layout.prop(lanpr, "reloaded")
             layout.label(text="Effect Settings:")
@@ -520,7 +520,17 @@ class SCENE_PT_lanpr(SceneButtonsPanel, PropertyPanel, Panel):
             row = layout.row()
             rows = 4
             layout.template_list("LANPR_linesets", "", lanpr, "layers", lanpr.layers, "active_layer_index", rows=rows)
-            layout.operator("scene.lanpr_add_line_layer")
+            if active_layer:
+                split = layout.split()
+                col = split.column()
+                col.operator("scene.lanpr_add_line_layer")
+                col = split.column()
+                col.operator("scene.lanpr_rebuild_all_commands")
+            else:
+                layout.operator("scene.lanpr_add_line_layer")
+
+            if lanpr.master_mode == "SOFTWARE":
+                layout.operator("scene.lanpr_calculate")
             
             if active_layer:
 
@@ -534,50 +544,61 @@ class SCENE_PT_lanpr(SceneButtonsPanel, PropertyPanel, Panel):
                     col = layout.column()
                     col.label(text="Enable:")
                     row = col.row(align=True)
+                    row.prop(active_layer, "enable_contour", text="Contour", toggle=True)
                     row.prop(active_layer, "enable_crease", text="Crease", toggle=True)
                     row.prop(active_layer, "enable_edge_mark", text="Mark", toggle=True)
                     row.prop(active_layer, "enable_material_seperate", text="Material", toggle=True)
                     row.prop(active_layer, "enable_intersection", text="Intersection", toggle=True)
 
                     row = col.row(align=True)
-                    if lanpr.enable_crease:
+                    if active_layer.enable_contour:
+                        row.prop(active_layer, "color", text="")
+                    else:
+                        row.label(text="OFF")
+
+                    if active_layer.enable_crease:
                         row.prop(active_layer, "crease_color", text="")
                     else:
                         row.label(text="OFF")
                     
-                    if lanpr.enable_edge_mark:
+                    if active_layer.enable_edge_mark:
                         row.prop(active_layer, "edge_mark_color", text="")
                     else:
                         row.label(text="OFF")
 
-                    if lanpr.enable_material_seperate:
+                    if active_layer.enable_material_seperate:
                         row.prop(active_layer, "material_color", text="")
                     else:
                         row.label(text="OFF")
 
-                    if lanpr.enable_intersection:
+                    if active_layer.enable_intersection:
                         row.prop(active_layer, "intersection_color", text="")
                     else:
                         row.label(text="OFF")
 
                     row = col.row(align=True)
-                    if lanpr.enable_crease:
-                        row.prop(active_layer, "line_thickness_crease", text="")
+                    if active_layer.enable_contour:
+                        row.prop(active_layer, "thickness", text="")
+                    else:
+                        row.label(text="OFF")
+
+                    if active_layer.enable_crease:
+                        row.prop(active_layer, "thickness_crease", text="")
                     else:
                         row.label(text="OFF")
                     
-                    if lanpr.enable_edge_mark:
-                        row.prop(active_layer, "line_thickness_edge_mark", text="")
+                    if active_layer.enable_edge_mark:
+                        row.prop(active_layer, "thickness_edge_mark", text="")
                     else:
                         row.label(text="OFF")
 
-                    if lanpr.enable_material_seperate:
-                        row.prop(active_layer, "line_thickness_material", text="")
+                    if active_layer.enable_material_seperate:
+                        row.prop(active_layer, "thickness_material", text="")
                     else:
                         row.label(text="OFF")
 
-                    if lanpr.enable_intersection:
-                        row.prop(active_layer, "intersection_material", text="")
+                    if active_layer.enable_intersection:
+                        row.prop(active_layer, "thickness_intersection", text="")
                     else:
                         row.label(text="OFF")
 
diff --git a/source/blender/draw/CMakeLists.txt b/source/blender/draw/CMakeLists.txt
index b47346e5617..4232c1d9fe6 100644
--- a/source/blender/draw/CMakeLists.txt
+++ b/source/blender/draw/CMakeLists.txt
@@ -239,6 +239,7 @@ data_to_c_simple(engines/lanpr/shaders/lanpr_line_connection.geometry SRC)
 data_to_c_simple(engines/lanpr/shaders/lanpr_line_connection.fragment SRC)
 data_to_c_simple(engines/lanpr/shaders/lanpr_snake_edge.fragment SRC)
 data_to_c_simple(engines/lanpr/shaders/lanpr_snake_multichannel.fragment SRC)
+data_to_c_simple(engines/lanpr/shaders/lanpr_software_line_width.geometry SRC)
 
 data_to_c_simple(modes/shaders/common_globals_lib.glsl SRC)
 data_to_c_simple(modes/shaders/common_hair_lib.glsl SRC)
diff --git a/source/blender/draw/engines/lanpr/lanpr_all.h b/source/blender/draw/engines/lanpr/lanpr_all.h
index 6c6c921b7dc..74daaa98ffd 100644
--- a/source/blender/draw/engines/lanpr/lanpr_all.h
+++ b/source/blender/draw/engines/lanpr/lanpr_all.h
@@ -52,17 +52,18 @@
 typedef struct LANPROneTimeInit {
 
 	/* Snake */
-
 	GPUShader *multichannel_shader;
 	GPUShader *edge_detect_shader;
 	GPUShader *edge_thinning_shader;
 	GPUShader *snake_connection_shader;
 
 	/* DPIX */
-
 	GPUShader *dpix_transform_shader;
 	GPUShader *dpix_preview_shader;
 
+	/* Software */
+	GPUShader *software_shader;
+
 	void *ved;
 
 
@@ -105,6 +106,9 @@ typedef struct LANPR_PassList {
 	struct DRWPass *dpix_transform_pass;
 	struct DRWPass *dpix_preview_pass;
 
+	/* SOFTWARE */
+	struct DRWPass *software_pass;
+
 } LANPR_PassList;
 
 typedef struct LANPR_FramebufferList {
@@ -148,6 +152,9 @@ typedef struct LANPR_PrivateData {
 	DRWShadingGroup *dpix_transform_shgrp;
 	DRWShadingGroup *dpix_preview_shgrp;
 
+	// moved into line layer.
+	//DRWShadingGroup *software_shgrp;
+
 	//snake
 
 	float normal_clamp;
diff --git a/source/blender/draw/engines/lanpr/lanpr_engine.c b/source/blender/draw/engines/lanpr/lanpr_engine.c
index e686135700d..252c183ec0e 100644
--- a/source/blender/draw/engines/lanpr/lanpr_engine.c
+++ b/source/blender/draw/engines/lanpr/lanpr_engine.c
@@ -34,6 +34,9 @@ extern char datatoc_lanpr_image_peel_fragment[];
 extern char datatoc_lanpr_line_connection_vertex[];
 extern char datatoc_lanpr_line_connection_fragment[];
 extern char datatoc_lanpr_line_connection_geometry[];
+extern char datatoc_lanpr_software_line_width_geometry[];
+extern char datatoc_lanpr_atlas_project_passthrough_vertex[];
+extern char datatoc_lanpr_atlas_preview_fragment[];
 
 
 
@@ -87,6 +90,8 @@ static void lanpr_engine_init(void *ved){
 		OneTime.InitComplete = 1;
 	}
 
+	/* SNAKE */
+
 	DRW_texture_ensure_fullscreen_2D_multisample(&txl->depth, GPU_DEPTH_COMPONENT32F, 8, 0);
 	DRW_texture_ensure_fullscreen_2D_multisample(&txl->color, GPU_RGBA32F, 8, 0);
 	DRW_texture_ensure_fullscreen_2D_multisample(&txl->normal, GPU_RGBA32F, 8, 0);
@@ -153,8 +158,19 @@ static void lanpr_engine_init(void *ved){
 				NULL, NULL);
 	}
 
+	/* DPIX */
 	lanpr_init_atlas_inputs(ved);
 
+	/* SOFTWARE */
+	if (!OneTime.software_shader) {
+		OneTime.software_shader =
+			GPU_shader_create(
+				datatoc_lanpr_atlas_project_passthrough_vertex,
+				datatoc_lanpr_atlas_preview_fragment,
+				datatoc_lanpr_software_line_width_geometry,
+				NULL, NULL);
+	}
+
 }
 static void lanpr_engine_free(void){
 	void *ved = OneTime.ved;
@@ -251,7 +267,7 @@ static void lanpr_cache_init(void *vedata){
 		DRW_shgroup_call_add(stl->g_data->edge_thinning_shgrp, quad, NULL);
 
 	}
-	else {
+	elif (lanpr->master_mode == LANPR_MASTER_MODE_SNAKE) {
 		psl->dpix_transform_pass = DRW_pass_create("DPIX Transform Stage", DRW_STATE_WRITE_COLOR);
 		stl->g_data->dpix_transform_shgrp = DRW_shgroup_create(OneTime.dpix_transform_shader, psl->dpix_transform_pass);
 		DRW_shgroup_uniform_texture_ref(stl->g_data->dpix_transform_shgrp, "vert0_tex", &txl->dpix_in_pl);
@@ -306,6 +322,15 @@ static void lanpr_cache_init(void *vedata){
 			pd->dpix_batch_list.first = pd->dpix_batch_list.last = 0;
 			BLI_mempool_clear(pd->mp_batch_list);
 		}
+	}elif(lanpr->master_mode == LANPR_MASTER_MODE_SOFTWARE) {
+		psl->software_pass = DRW_pass_create("Software Render Preview", DRW_STATE_WRITE_COLOR);
+		LANPR_LineLayer* ll;
+		for (ll = lanpr->line_layers.first; ll; ll = ll->next) {
+			ll->shgrp = DRW_shgroup_create(OneTime.software_shader, psl->software_pass);
+			DRW_shgroup_uniform_vec4(ll->shgrp, "color", ll->color, 1);
+			DRW_shgroup_uniform_float(ll->shgrp, "line_thickness", &ll->thickness, 1);
+			if(ll->batch) DRW_shgroup_call_add(ll->shgrp, ll->batch, NULL);
+		}
 	}
 
 
@@ -370,13 +395,13 @@ static void lanpr_cache_finish(void *vedata){
 	}
 }
 
-static void lanpr_draw_scene(void *vedata){
+static void lanpr_draw_scene(void *vedata) {
 	LANPR_PassList *psl = ((LANPR_Data *)vedata)->psl;
 	LANPR_TextureList *txl = ((LANPR_Data *)vedata)->txl;
 	LANPR_StorageList *stl = ((LANPR_Data *)vedata)->stl;
 	LANPR_FramebufferList *fbl = ((LANPR_Data *)vedata)->fbl;
 
-	float clear_col[4] = {0.0f, 0.0f, 0.0f, 0.0f};
+	float clear_col[4] = { 0.0f, 0.0f, 0.0f, 0.0f };
 	float clear_depth = 1.0f;
 	uint clear_stenci

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list