[Bf-blender-cvs] [e37ff113123] soc-2018-npr: changed a bit of argument uniform to match the API.(not working properly)

Nick Wu noreply at git.blender.org
Thu May 24 11:01:14 CEST 2018


Commit: e37ff1131232290ae24f87d4e986d387b1a6025a
Author: Nick Wu
Date:   Thu May 24 15:10:29 2018 +0800
Branches: soc-2018-npr
https://developer.blender.org/rBe37ff1131232290ae24f87d4e986d387b1a6025a

changed a bit of argument uniform to match the API.(not working properly)

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

M	source/blender/draw/engines/lanpr/NUL_TNS.h
M	source/blender/draw/engines/lanpr/NUL_TNS_EdgeRendering.c
M	source/blender/draw/engines/lanpr/shaders/lanpr_snake_edge.fragment
M	source/blender/makesrna/intern/rna_scene.c

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

diff --git a/source/blender/draw/engines/lanpr/NUL_TNS.h b/source/blender/draw/engines/lanpr/NUL_TNS.h
index f2cea88c7ee..cd1e28c388b 100644
--- a/source/blender/draw/engines/lanpr/NUL_TNS.h
+++ b/source/blender/draw/engines/lanpr/NUL_TNS.h
@@ -40,6 +40,17 @@ typedef struct LANPR_PrivateData {
 	DRWShadingGroup *edge_detect_shgrp;
 	DRWShadingGroup *edge_thinning_shgrp;
 	DRWShadingGroup *edge_thinning_shgrp_2;
+
+	float normal_clamp;
+    float normal_strength;
+    float depth_clamp;
+    float depth_strength;
+
+	float zfar;
+	float znear;
+
+	int stage;//thinning
+
 } LANPR_PrivateData;
 
 typedef struct LANPR_StorageList {
diff --git a/source/blender/draw/engines/lanpr/NUL_TNS_EdgeRendering.c b/source/blender/draw/engines/lanpr/NUL_TNS_EdgeRendering.c
index 7d0c4a20495..996fd34bff6 100644
--- a/source/blender/draw/engines/lanpr/NUL_TNS_EdgeRendering.c
+++ b/source/blender/draw/engines/lanpr/NUL_TNS_EdgeRendering.c
@@ -156,16 +156,26 @@ static void lanpr_cache_init(void *vedata){
 	DRW_shgroup_uniform_texture_ref(stl->g_data->edge_detect_shgrp, "TexSample0", &txl->depth);
 	DRW_shgroup_uniform_texture_ref(stl->g_data->edge_detect_shgrp, "TexSample1", &txl->color);
 	DRW_shgroup_uniform_texture_ref(stl->g_data->edge_detect_shgrp, "TexSample2", &txl->normal);
+
+	DRW_shgroup_uniform_float(stl->g_data->edge_detect_shgrp, "zNear", &stl->g_data->znear, 1);
+    DRW_shgroup_uniform_float(stl->g_data->edge_detect_shgrp, "zfFar", &stl->g_data->zfar, 1);
+
+	DRW_shgroup_uniform_float(stl->g_data->edge_detect_shgrp, "uValue0", &stl->g_data->normal_clamp, 1);// normal clamp
+    DRW_shgroup_uniform_float(stl->g_data->edge_detect_shgrp, "uValue1", &stl->g_data->normal_strength, 1);// normal strength
+    DRW_shgroup_uniform_float(stl->g_data->edge_detect_shgrp, "uValue2", &stl->g_data->depth_clamp, 1);// depth clamp
+	DRW_shgroup_uniform_float(stl->g_data->edge_detect_shgrp, "uValue3", &stl->g_data->depth_strength, 1);// depth strength
 	DRW_shgroup_call_add(stl->g_data->edge_detect_shgrp, quad, NULL);
 
 	psl->edge_thinning = DRW_pass_create("Edge Thinning Stage 1", DRW_STATE_WRITE_COLOR);
 	stl->g_data->edge_thinning_shgrp = DRW_shgroup_create(OneTime.edge_thinning_shader, psl->edge_thinning);
 	DRW_shgroup_uniform_texture_ref(stl->g_data->edge_thinning_shgrp, "TexSample0", &txl->edge_intermediate);
+	DRW_shgroup_uniform_int(stl->g_data->edge_thinning_shgrp, "Stage", &stl->g_data->stage, 1);
 	DRW_shgroup_call_add(stl->g_data->edge_thinning_shgrp, quad, NULL);
 
 	psl->edge_thinning_2 = DRW_pass_create("Edge Thinning Stage 2", DRW_STATE_WRITE_COLOR);
 	stl->g_data->edge_thinning_shgrp_2 = DRW_shgroup_create(OneTime.edge_thinning_shader, psl->edge_thinning_2);
 	DRW_shgroup_uniform_texture_ref(stl->g_data->edge_thinning_shgrp_2, "TexSample0", &txl->color);
+	DRW_shgroup_uniform_int(stl->g_data->edge_thinning_shgrp_2, "Stage", &stl->g_data->stage, 1);
 	DRW_shgroup_call_add(stl->g_data->edge_thinning_shgrp_2, quad, NULL);
 }
 
@@ -216,41 +226,31 @@ static void lanpr_draw_scene(void *vedata)
 	View3D *v3d = draw_ctx->v3d;
 	RegionView3D *rv3d = draw_ctx->rv3d;
 	Object *camera = (rv3d->persp == RV3D_CAMOB) ? v3d->camera : NULL;
-	float znear = camera? ((Camera*)camera->data)->clipsta:0.1;
-    float zfar = camera? ((Camera*)camera->data)->clipend:100;
+
+	stl->g_data->znear = camera? ((Camera*)camera->data)->clipsta:0.1;
+    stl->g_data->zfar = camera? ((Camera*)camera->data)->clipend:100;
+	stl->g_data->normal_clamp =    draw_ctx->scene->lanpr.normal_clamp;
+	stl->g_data->normal_strength = draw_ctx->scene->lanpr.normal_strength;
+	stl->g_data->depth_clamp =     draw_ctx->scene->lanpr.depth_clamp;
+	stl->g_data->depth_strength =  draw_ctx->scene->lanpr.depth_strength;
 
 	GPU_framebuffer_bind(fbl->edge_intermediate);
 	//GPU_framebuffer_clear(fbl->edge_intermediate, clear_bits, clear_col, clear_depth, clear_stencil);
-
-	DRW_shgroup_uniform_float(stl->g_data->edge_detect_shgrp, "zNear", &znear, 1);
-    DRW_shgroup_uniform_float(stl->g_data->edge_detect_shgrp, "zfar", &zfar, 1);
-
-	float normal_clamp =    draw_ctx->scene->lanpr.normal_clamp;
-	float normal_strength = draw_ctx->scene->lanpr.normal_strength;
-	float depth_clamp =     draw_ctx->scene->lanpr.depth_clamp;
-	float depth_strength =  draw_ctx->scene->lanpr.depth_strength;
-
-	DRW_shgroup_uniform_float(stl->g_data->edge_detect_shgrp, "uValue0", &normal_clamp, 1);// normal clamp
-    DRW_shgroup_uniform_float(stl->g_data->edge_detect_shgrp, "uValue1", &normal_strength, 1);// normal strength
-    DRW_shgroup_uniform_float(stl->g_data->edge_detect_shgrp, "uValue2", &depth_clamp, 1);// depth clamp
-	DRW_shgroup_uniform_float(stl->g_data->edge_detect_shgrp, "uValue3", &depth_strength, 1);// depth strength
-
+	
 	DRW_draw_pass(psl->edge_intermediate);
-
-    int stage = 0;
+	
+    stl->g_data->stage = 0;
     GPU_framebuffer_bind(fbl->edge_thinning);
 	GPU_framebuffer_clear(fbl->edge_thinning, clear_bits, clear_col, clear_depth, clear_stencil);
-	DRW_shgroup_uniform_int(stl->g_data->edge_thinning_shgrp, "Stage", &stage, 1);
     DRW_draw_pass(psl->edge_thinning);
 
-	stage = 1;
+	stl->g_data->stage = 1;
 	GPU_framebuffer_bind(fbl->edge_intermediate);
 	//GPU_framebuffer_clear(fbl->edge_intermediate, clear_bits, clear_col, clear_depth, clear_stencil);
-	DRW_shgroup_uniform_int(stl->g_data->edge_thinning_shgrp_2, "Stage", &stage, 1);
     DRW_draw_pass(psl->edge_thinning_2);
 
 	GPU_framebuffer_bind(dfbl->default_fb);
-	
+
 	DRW_transform_to_display(txl->edge_intermediate);
 }
 
diff --git a/source/blender/draw/engines/lanpr/shaders/lanpr_snake_edge.fragment b/source/blender/draw/engines/lanpr/shaders/lanpr_snake_edge.fragment
index 6272c80193e..b10b31018ed 100644
--- a/source/blender/draw/engines/lanpr/shaders/lanpr_snake_edge.fragment
+++ b/source/blender/draw/engines/lanpr/shaders/lanpr_snake_edge.fragment
@@ -72,8 +72,8 @@ vec4 DetectEdge(sampler2D tex, float clamp, float strength){
      
 	 float value = max(max(g1,g2),g3);
 
-	 value=value>1?value:0;
-	 return vec4(vec3(value),1);
+	 value=value>clamp?value:0;
+	 return vec4(vec3(value*strength),1);
 
 	 //if(value<clamp) value=0;
 
diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c
index 11c6b8412a2..be09127cde4 100644
--- a/source/blender/makesrna/intern/rna_scene.c
+++ b/source/blender/makesrna/intern/rna_scene.c
@@ -6177,30 +6177,35 @@ static void rna_def_scene_lanpr(BlenderRNA *brna)
 	RNA_def_property_enum_default(prop, LANPR_POST_PROCESSING_DISABLED);
 	RNA_def_property_ui_text(prop, "Enable Post Processing", "Draw image post processing line or not");
 	RNA_def_property_flag(prop, PROP_EDITABLE);
+	RNA_def_property_update(prop, NC_SCENE, NULL);
 
 	prop = RNA_def_property(srna, "depth_clamp", PROP_FLOAT, PROP_NONE);
 	RNA_def_property_float_default(prop, 0.1f);
 	RNA_def_property_ui_text(prop, "Depth Clamp", "Depth clamp value for edge extraction");
 	RNA_def_property_ui_range(prop, 0.01f, 1.0f, 0.1, 2);
 	RNA_def_property_flag(prop, PROP_EDITABLE);
+	RNA_def_property_update(prop, NC_SCENE, NULL);
 
 	prop = RNA_def_property(srna, "depth_strength", PROP_FLOAT, PROP_NONE);
 	RNA_def_property_float_default(prop, 0.1f);
 	RNA_def_property_ui_text(prop, "Depth Strength", "Depth strength value for edge extraction");
 	RNA_def_property_ui_range(prop, 0.01f, 10.0f, 0.1, 2);
 	RNA_def_property_flag(prop, PROP_EDITABLE);
+	RNA_def_property_update(prop, NC_SCENE, NULL);
 
 	prop = RNA_def_property(srna, "normal_clamp", PROP_FLOAT, PROP_NONE);
 	RNA_def_property_float_default(prop, 0.1f);
 	RNA_def_property_ui_text(prop, "Normal Clamp", "Normal clamp value for edge extraction");
 	RNA_def_property_ui_range(prop, 0.01f, 1.0f, 0.1, 2);
 	RNA_def_property_flag(prop, PROP_EDITABLE);
+	RNA_def_property_update(prop, NC_SCENE, NULL);
 
 	prop = RNA_def_property(srna, "normal_strength", PROP_FLOAT, PROP_NONE);
 	RNA_def_property_float_default(prop, 0.1f);
 	RNA_def_property_ui_text(prop, "Normal Strength", "Normal strength value for edge extraction");
 	RNA_def_property_ui_range(prop, 0.01f, 10.0f, 0.1, 2);
 	RNA_def_property_flag(prop, PROP_EDITABLE);
+	RNA_def_property_update(prop, NC_SCENE, NULL);
 }
 
 void RNA_def_scene(BlenderRNA *brna)



More information about the Bf-blender-cvs mailing list