[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