[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