[Bf-blender-cvs] [1fe9a56112f] soc-2018-npr: DPIX implemented and running.

Nick Wu noreply at git.blender.org
Mon Jun 4 17:44:14 CEST 2018


Commit: 1fe9a56112f0c19f8530e6b056f5509621699891
Author: Nick Wu
Date:   Mon Jun 4 23:18:00 2018 +0800
Branches: soc-2018-npr
https://developer.blender.org/rB1fe9a56112f0c19f8530e6b056f5509621699891

DPIX implemented and running.

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

M	release/scripts/startup/bl_ui/properties_scene.py
M	source/blender/draw/CMakeLists.txt
M	source/blender/draw/engines/lanpr/NUL_TNS.h
M	source/blender/draw/engines/lanpr/NUL_TNS_EdgeRendering.c
A	source/blender/draw/engines/lanpr/shaders/lanpr_atlas_preview.fragment
M	source/blender/draw/engines/lanpr/shaders/lanpr_atlas_preview.geometry
M	source/blender/draw/engines/lanpr/shaders/lanpr_atlas_project_clip.fragment
M	source/blender/draw/engines/lanpr/shaders/lanpr_atlas_project_passthrough.vertex
M	source/blender/makesdna/DNA_lanpr_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 bf25bfc9a59..b92a9a60b41 100644
--- a/release/scripts/startup/bl_ui/properties_scene.py
+++ b/release/scripts/startup/bl_ui/properties_scene.py
@@ -457,52 +457,62 @@ class SCENE_PT_lanpr(SceneButtonsPanel, PropertyPanel, Panel):
         layout = self.layout
         scene = context.scene
         lanpr = scene.lanpr
-        layout.label(text="Global:")
-        layout.prop(lanpr, "enable_vector_trace")
-
-        if lanpr.enable_vector_trace == "DISABLED":
-            layout.prop(lanpr, "display_thinning_result")
-
-        layout.prop(lanpr, "depth_clamp")
-        layout.prop(lanpr, "depth_strength")
-        layout.prop(lanpr, "normal_clamp")
-        layout.prop(lanpr, "normal_strength")
-
-        if lanpr.enable_vector_trace == "ENABLED":
 
+        if lanpr.master_mode == "DPIX":
+            layout.label(text="DPIX:")
             split = layout.split()
             col = split.column()
             col.prop(lanpr, "background_color")
             col = split.column()
             col.prop(lanpr, "line_color")
             
-            layout.label(text="Thickness:")
-            layout.prop(lanpr, "line_thickness")
+        else:
+            layout.label(text="Snake:")
+            layout.prop(lanpr, "enable_vector_trace")
+
+            if lanpr.enable_vector_trace == "DISABLED":
+                layout.prop(lanpr, "display_thinning_result")
 
-            layout.label(text="Effect Settings:")
+            layout.prop(lanpr, "depth_clamp")
+            layout.prop(lanpr, "depth_strength")
+            layout.prop(lanpr, "normal_clamp")
+            layout.prop(lanpr, "normal_strength")
 
-            layout.prop(lanpr, "use_same_taper")
+            if lanpr.enable_vector_trace == "ENABLED":
 
-            if lanpr.use_same_taper == "DISABLED":
                 split = layout.split()
                 col = split.column()
-                col.label(text="Left:")
-                col.prop(lanpr,"taper_left_distance")
-                col.prop(lanpr,"taper_left_strength")
+                col.prop(lanpr, "background_color")
                 col = split.column()
-                col.label(text="Right:")
-                col.prop(lanpr,"taper_right_distance")
-                col.prop(lanpr,"taper_right_strength")
-            else:
-                layout.prop(lanpr,"taper_left_distance")
-                layout.prop(lanpr,"taper_left_strength") 
-
-            layout.prop(lanpr, "enable_tip_extend")
-            if lanpr.enable_tip_extend == "ENABLED":
-                layout.prop(lanpr,"extend_length")
-        
-        else: #disabled vectorization
-            layout.label(text="Adjust values to avoid large pure white regions!")
+                col.prop(lanpr, "line_color")
+                
+                layout.label(text="Thickness:")
+                layout.prop(lanpr, "line_thickness")
+
+                layout.label(text="Effect Settings:")
+
+                layout.prop(lanpr, "use_same_taper")
+
+                if lanpr.use_same_taper == "DISABLED":
+                    split = layout.split()
+                    col = split.column()
+                    col.label(text="Left:")
+                    col.prop(lanpr,"taper_left_distance")
+                    col.prop(lanpr,"taper_left_strength")
+                    col = split.column()
+                    col.label(text="Right:")
+                    col.prop(lanpr,"taper_right_distance")
+                    col.prop(lanpr,"taper_right_strength")
+                else:
+                    layout.prop(lanpr,"taper_left_distance")
+                    layout.prop(lanpr,"taper_left_strength") 
+
+                layout.prop(lanpr, "enable_tip_extend")
+                if lanpr.enable_tip_extend == "ENABLED":
+                    layout.prop(lanpr,"extend_length")
+            
+            else: #disabled vectorization
+                layout.label(text="Adjust values to avoid large pure white regions!")
                 
 
 
diff --git a/source/blender/draw/CMakeLists.txt b/source/blender/draw/CMakeLists.txt
index c867336912f..d32cd105469 100644
--- a/source/blender/draw/CMakeLists.txt
+++ b/source/blender/draw/CMakeLists.txt
@@ -245,6 +245,7 @@ data_to_c_simple(engines/workbench/shaders/workbench_shadow_debug_frag.glsl SRC)
 data_to_c_simple(engines/workbench/shaders/workbench_world_light_lib.glsl SRC)
 
 data_to_c_simple(engines/lanpr/shaders/lanpr_atlas_preview.geometry SRC)
+data_to_c_simple(engines/lanpr/shaders/lanpr_atlas_preview.fragment SRC)
 data_to_c_simple(engines/lanpr/shaders/lanpr_atlas_project_clip.fragment SRC)
 data_to_c_simple(engines/lanpr/shaders/lanpr_atlas_project_passthrough.vertex SRC)
 data_to_c_simple(engines/lanpr/shaders/lanpr_image_peel.fragment SRC)
diff --git a/source/blender/draw/engines/lanpr/NUL_TNS.h b/source/blender/draw/engines/lanpr/NUL_TNS.h
index ff6a13f89cf..7d76bb4045e 100644
--- a/source/blender/draw/engines/lanpr/NUL_TNS.h
+++ b/source/blender/draw/engines/lanpr/NUL_TNS.h
@@ -50,6 +50,7 @@ typedef struct LANPR_PassList {
 
 	/* DPIX */
 	struct DRWPass *dpix_transform_pass;
+	struct DRWPass *dpix_preview_pass;
 
 } LANPR_PassList;
 
@@ -62,6 +63,7 @@ typedef struct LANPR_FramebufferList {
 
     /* DPIX */
 	struct GPUFrameBuffer *dpix_transform;
+	struct GPUFrameBuffer *dpix_preview;
 
 } LANPR_FramebufferList;
 
@@ -91,7 +93,10 @@ typedef struct LANPR_PrivateData {
     DRWShadingGroup *snake_shgrp;
 	
 	DRWShadingGroup *dpix_transform_shgrp;
-	
+	DRWShadingGroup *dpix_preview_shgrp;
+
+	//snake
+
 	float normal_clamp;
     float normal_strength;
     float depth_clamp;
@@ -115,6 +120,20 @@ typedef struct LANPR_PrivateData {
 	ListBase      erased_samples;
     ListBase      line_strips;
 
+	// dpix data
+
+	void*         atlas_pl;
+	void*         atlas_pr;
+	void*         atlas_nl;
+	void*         atlas_nr;	
+
+	int           begin_index;
+
+	int           dpix_sample_step;
+	int           dpix_is_perspective;
+	float         dpix_viewport[4];
+    int           dpix_buffer_width;
+
 	// drawing
 
 	unsigned        v_buf;
diff --git a/source/blender/draw/engines/lanpr/NUL_TNS_EdgeRendering.c b/source/blender/draw/engines/lanpr/NUL_TNS_EdgeRendering.c
index fec4c4ff5cd..5da835be26a 100644
--- a/source/blender/draw/engines/lanpr/NUL_TNS_EdgeRendering.c
+++ b/source/blender/draw/engines/lanpr/NUL_TNS_EdgeRendering.c
@@ -5,16 +5,20 @@
 #include "NUL_TNS.h"
 #include "DRW_render.h"
 #include "BKE_object.h"
+#include "DNA_mesh_types.h"
 #include "DNA_camera_types.h"
 #include "GPU_immediate.h"
 #include "GPU_immediate_util.h"
 #include "GPU_framebuffer.h"
+#include "DNA_lanpr_types.h"
+#include "GPU_draw.h"
 
 #include "GPU_batch.h"
 #include "GPU_framebuffer.h"
 #include "GPU_shader.h"
 #include "GPU_uniformbuffer.h"
 #include "GPU_viewport.h"
+#include "bmesh.h"
 
 
 #include <math.h>
@@ -27,6 +31,10 @@ 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_atlas_project_passthrough_vertex[];
+extern char datatoc_lanpr_atlas_project_clip_fragment[];
+extern char datatoc_lanpr_atlas_preview_geometry[];
+extern char datatoc_lanpr_atlas_preview_fragment[];
 
 typedef struct LANPROneTimeInit{
     
@@ -40,14 +48,25 @@ typedef struct LANPROneTimeInit{
 	/* DPIX */
 
 	GPUShader* dpix_transform_shader;
+	GPUShader* dpix_preview_shader;
 
 	void* ved;
 } LANPROneTimeInit;
 
+LANPROneTimeInit OneTime;
+
+
+#define tMatDist2v(p1,p2)\
+    sqrt(((p1)[0]-(p2)[0])*((p1)[0]-(p2)[0]) + ((p1)[1]-(p2)[1])*((p1)[1]-(p2)[1]))
+
+#define tnsLinearItp(L,R,T)\
+((L)*(1.0f - (T)) + (R)*(T))
+
+
 //==============================================================[ ATLAS / DPIX ]
 
 
-#ifdef LANPR_DPIX
+
 
 void lanpr_init_atlas_inputs(void *ved){
 	OneTime.ved = ved;
@@ -58,7 +77,7 @@ void lanpr_init_atlas_inputs(void *ved){
 	//LANPR_ViewLayerData *sldata = EEVEE_view_layer_data_ensure();
 	DefaultTextureList *dtxl = DRW_viewport_texture_list_get();
 
-	txl->dpix_in_pl = 
+	//txl->dpix_in_pl = 
 
 	const DRWContextState *draw_ctx = DRW_context_state_get();
 	View3D *v3d = draw_ctx->v3d;
@@ -67,14 +86,14 @@ void lanpr_init_atlas_inputs(void *ved){
 
 
 	/* Main Buffer */
-	DRW_texture_ensure_2D(&txl->dpix_in_pl, TNS_DPIX_TEXTURE_SIZE, TNS_DPIX_TEXTURE_SIZE, GPU_RGB32F, DRW_TEX_FILTER);
-	DRW_texture_ensure_2D(&txl->dpix_in_pr, TNS_DPIX_TEXTURE_SIZE, TNS_DPIX_TEXTURE_SIZE, GPU_RGB32F, DRW_TEX_FILTER);
-	DRW_texture_ensure_2D(&txl->dpix_in_nl, TNS_DPIX_TEXTURE_SIZE, TNS_DPIX_TEXTURE_SIZE, GPU_RGB32F, DRW_TEX_FILTER);
-	DRW_texture_ensure_2D(&txl->dpix_in_nr, TNS_DPIX_TEXTURE_SIZE, TNS_DPIX_TEXTURE_SIZE, GPU_RGB32F, DRW_TEX_FILTER);
+	DRW_texture_ensure_2D(&txl->dpix_in_pl, TNS_DPIX_TEXTURE_SIZE, TNS_DPIX_TEXTURE_SIZE, GPU_RGBA32F, 0);
+	DRW_texture_ensure_2D(&txl->dpix_in_pr, TNS_DPIX_TEXTURE_SIZE, TNS_DPIX_TEXTURE_SIZE, GPU_RGBA32F, 0);
+	DRW_texture_ensure_2D(&txl->dpix_in_nl, TNS_DPIX_TEXTURE_SIZE, TNS_DPIX_TEXTURE_SIZE, GPU_RGBA32F, 0);
+	DRW_texture_ensure_2D(&txl->dpix_in_nr, TNS_DPIX_TEXTURE_SIZE, TNS_DPIX_TEXTURE_SIZE, GPU_RGBA32F, 0);
 
-	DRW_texture_ensure_2D(&txl->dpix_out_pl, TNS_DPIX_TEXTURE_SIZE, TNS_DPIX_TEXTURE_SIZE, GPU_RGB32F, DRW_TEX_FILTER);
-	DRW_texture_ensure_2D(&txl->dpix_out_pr, TNS_DPIX_TEXTURE_SIZE, TNS_DPIX_TEXTURE_SIZE, GPU_RGB32F, DRW_TEX_FILTER);
-	DRW_texture_ensure_2D(&txl->dpix_out_length, TNS_DPIX_TEXTURE_SIZE, TNS_DPIX_TEXTURE_SIZE, GPU_RGB32F, DRW_TEX_FILTER);
+	DRW_texture_ensure_2D(&txl->dpix_out_pl, TNS_DPIX_TEXTURE_SIZE, TNS_DPIX_TEXTURE_SIZE, GPU_RGBA32F, 0);
+	DRW_texture_ensure_2D(&txl->dpix_out_pr, TNS_DPIX_TEXTURE_SIZE, TNS_DPIX_TEXTURE_SIZE, GPU_RGBA32F, 0);
+	DRW_texture_ensure_2D(&txl->dpix_out_length, TNS_DPIX_TEXTURE_SIZE, TNS_DPIX_TEXTURE_SIZE, GPU_RGBA32F, 0);
 
 	GPU_framebuffer_ensure_config(&fbl->dpix_transform, {
 		GPU_ATTACHMENT_LEAVE,
@@ -86,11 +105,31 @@ void lanpr_init_atlas_inputs(void *ved){
 		GPU_ATTACHMENT_LEAVE
 	});
 
-	if (!OneTime.dpix_transform_shader) {
+	GPU_framebuffer_ensure_co

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list