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. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to