[Bf-blender-cvs] [54670f27221] soc-2018-npr: Seperated different algorithms into 3 files. Init code minor changes.

Nick Wu noreply at git.blender.org
Thu Jun 7 05:43:33 CEST 2018


Commit: 54670f27221259c3c92694574e68e76fa8615f49
Author: Nick Wu
Date:   Thu Jun 7 11:42:58 2018 +0800
Branches: soc-2018-npr
https://developer.blender.org/rB54670f27221259c3c92694574e68e76fa8615f49

Seperated different algorithms into 3 files. Init code minor changes.

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

M	source/blender/draw/CMakeLists.txt
D	source/blender/draw/engines/lanpr/NUL_TNS_EdgeRendering.c
R081	source/blender/draw/engines/lanpr/NUL_TNS.h	source/blender/draw/engines/lanpr/lanpr_all.h
A	source/blender/draw/engines/lanpr/lanpr_dpix.c
A	source/blender/draw/engines/lanpr/lanpr_engine.c
A	source/blender/draw/engines/lanpr/lanpr_snake.c

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

diff --git a/source/blender/draw/CMakeLists.txt b/source/blender/draw/CMakeLists.txt
index 861c9edba3b..f2ec7e3a8cb 100644
--- a/source/blender/draw/CMakeLists.txt
+++ b/source/blender/draw/CMakeLists.txt
@@ -121,8 +121,11 @@ set(SRC
 	#engines/lanpr/NUL_TNS_Kernel.c
 	#engines/lanpr/NUL_Util.c
 	#engines/lanpr/NUL_TNS_SoftwareRender.c
-    engines/lanpr/NUL_TNS_EdgeRendering.c
+    #engines/lanpr/NUL_TNS_EdgeRendering.c
     #engines/lanpr/NUL_TNS_Mesh.c
+	engines/lanpr/lanpr_dpix.c
+	engines/lanpr/lanpr_engine.c
+	engines/lanpr/lanpr_snake.c
 
 	DRW_engine.h
 	intern/DRW_render.h
@@ -145,8 +148,9 @@ set(SRC
 	engines/eevee/eevee_private.h
 	engines/external/external_engine.h
 
-	engines/lanpr/NUL_TNS.h
+	#engines/lanpr/NUL_TNS.h
 	engines/lanpr/NUL_Util.h
+	engines/lanpr/lanpr_all.h
 )
 
 if(WITH_CLAY_ENGINE)
diff --git a/source/blender/draw/engines/lanpr/NUL_TNS_EdgeRendering.c b/source/blender/draw/engines/lanpr/NUL_TNS_EdgeRendering.c
deleted file mode 100644
index 9dab69ab582..00000000000
--- a/source/blender/draw/engines/lanpr/NUL_TNS_EdgeRendering.c
+++ /dev/null
@@ -1,1316 +0,0 @@
-#include "DRW_engine.h"
-#include "DRW_render.h"
-#include "BLI_listbase.h"
-#include "BLI_linklist.h"
-#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>
-
-extern char datatoc_common_fullscreen_vert_glsl[];
-extern char datatoc_gpu_shader_3D_normal_smooth_color_vert_glsl[];
-extern char datatoc_lanpr_snake_multichannel_fragment[];
-extern char datatoc_lanpr_snake_edge_fragment[];
-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{
-    
-	/* 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;
-
-	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 ]
-
-
-
-
-void lanpr_init_atlas_inputs(void *ved){
-	OneTime.ved = ved;
-	LANPR_Data *vedata = (LANPR_Data *)ved;
-	LANPR_TextureList *txl = vedata->txl;
-	LANPR_FramebufferList *fbl = vedata->fbl;
-	LANPR_StorageList *stl = ((LANPR_Data *)vedata)->stl;
-	//LANPR_ViewLayerData *sldata = EEVEE_view_layer_data_ensure();
-	DefaultTextureList *dtxl = DRW_viewport_texture_list_get();
-
-	//txl->dpix_in_pl = 
-
-	const DRWContextState *draw_ctx = DRW_context_state_get();
-	View3D *v3d = draw_ctx->v3d;
-	RegionView3D *rv3d = draw_ctx->rv3d;
-	Object *camera = (rv3d->persp == RV3D_CAMOB) ? v3d->camera : NULL;
-	SceneLANPR* lanpr=&draw_ctx->scene->lanpr;
-
-	if(lanpr->reloaded){
-		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_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);
-	}
-
-
-	/* Main Buffer */
-
-	GPU_framebuffer_ensure_config(&fbl->dpix_transform, {
-		GPU_ATTACHMENT_LEAVE,
-		GPU_ATTACHMENT_TEXTURE(txl->dpix_out_pl),
-		GPU_ATTACHMENT_TEXTURE(txl->dpix_out_pr),
-		GPU_ATTACHMENT_TEXTURE(txl->dpix_out_length),
-		GPU_ATTACHMENT_LEAVE,
-		GPU_ATTACHMENT_LEAVE,
-		GPU_ATTACHMENT_LEAVE
-	});
-
-	GPU_framebuffer_ensure_config(&fbl->dpix_preview, {
-		GPU_ATTACHMENT_TEXTURE(txl->depth),
-		GPU_ATTACHMENT_TEXTURE(txl->color),
-		GPU_ATTACHMENT_LEAVE,
-		GPU_ATTACHMENT_LEAVE,
-		GPU_ATTACHMENT_LEAVE,
-		GPU_ATTACHMENT_LEAVE,
-		GPU_ATTACHMENT_LEAVE
-	});
-
-    if (!OneTime.dpix_transform_shader) {
-	OneTime.dpix_transform_shader = 
-		GPU_shader_create(
-			datatoc_lanpr_atlas_project_passthrough_vertex,
-			datatoc_lanpr_atlas_project_clip_fragment,
-			NULL,NULL,NULL);
-    }
-	if (!OneTime.dpix_preview_shader) {
-	OneTime.dpix_preview_shader = 
-		GPU_shader_create(
-		    datatoc_lanpr_atlas_project_passthrough_vertex,
-			datatoc_lanpr_atlas_preview_fragment,
-			datatoc_lanpr_atlas_preview_geometry,
-			//NULL,
-			NULL,NULL);
-    }
-}
-void lanpr_destroy_atlas(void *ved){
-	OneTime.ved = ved;
-	LANPR_Data *vedata = (LANPR_Data *)ved;
-	LANPR_TextureList *txl = vedata->txl;
-	LANPR_FramebufferList *fbl = vedata->fbl;
-	LANPR_StorageList *stl = ((LANPR_Data *)vedata)->stl;
-	LANPR_PassList *psl = ((LANPR_Data *)vedata)->psl;
-
-	DRW_pass_free(psl->dpix_transform_pass);
-	DRW_pass_free(psl->dpix_preview_pass);
-
-	GPU_framebuffer_free(fbl->dpix_transform);
-	GPU_framebuffer_free(fbl->dpix_preview);
-
-	DRW_texture_free(txl->dpix_in_pl);
-	DRW_texture_free(txl->dpix_in_pr);
-	DRW_texture_free(txl->dpix_in_nl);
-	DRW_texture_free(txl->dpix_in_nr);
-	DRW_texture_free(txl->dpix_out_pl);
-	DRW_texture_free(txl->dpix_out_pr);
-}
-
-int lanpr_feed_atlas_data_obj(void* vedata,
-	float* AtlasPointsL, float* AtlasPointsR,
-	float* AtlasFaceNormalL, float* AtlasFaceNormalR,
-	Object* ob, int BeginIndex) {
-	LANPR_StorageList *stl = ((LANPR_Data *)vedata)->stl;
-
-	if (!DRW_object_is_renderable(ob)) return BeginIndex;
-	const DRWContextState *draw_ctx = DRW_context_state_get();
-	if (ob == draw_ctx->object_edit) return BeginIndex;
-	if(ob->type != OB_MESH) return BeginIndex;
-
-	Mesh* me = ob->data;
-	BMesh* bm;
-	struct BMFace *f1,*f2;
-	struct BMVert *v1,*v2;
-	struct BMEdge *e;
-	struct BMLoop *l1,*l2;
-    int vert_count = me->totvert, edge_count = me->totedge, face_count = me->totface;
-	int i,idx;
-
-	const BMAllocTemplate allocsize = BMALLOC_TEMPLATE_FROM_ME(me);
-	bm = BM_mesh_create(&allocsize,
-			            &((struct BMeshCreateParams){.use_toolflags = true,}));
-	BM_mesh_bm_from_me(bm, me, &((struct BMeshFromMeshParams){.calc_face_normal = true,}));
-	BM_mesh_elem_table_ensure(bm,BM_VERT|BM_EDGE|BM_FACE);
-	
-	for(i=0; i<edge_count; i++){
-		f1=0;
-		f2=0;
-		e = BM_edge_at_index(bm,i);
-		v1 = e->v1;
-		v2 = e->v2;
-		l1 = e->l;
-		l2 = e->l?e->l->radial_next:0;
-		if(l1) f1 = l1->f;
-		if(l2) f2 = l2->f;
-
-		idx = (BeginIndex+i)*4;
-
-		AtlasPointsL[idx + 0] = v1->co[0];
-		AtlasPointsL[idx + 1] = v1->co[1];
-		AtlasPointsL[idx + 2] = v1->co[2];
-		AtlasPointsL[idx + 3] = 1;
-
-		AtlasPointsR[idx + 0] = v2->co[0];
-		AtlasPointsR[idx + 1] = v2->co[1];
-		AtlasPointsR[idx + 2] = v2->co[2];
-		AtlasPointsR[idx + 3] = 1;
-
-		if(f1){
-			AtlasFaceNormalL[idx + 0] = f1->no[0];
-			AtlasFaceNormalL[idx + 1] = f1->no[1];
-			AtlasFaceNormalL[idx + 2] = f1->no[2];
-			AtlasFaceNormalL[idx + 3] = 1;
-		}else{
-			AtlasFaceNormalL[idx + 0] = 0;
-			AtlasFaceNormalL[idx + 1] = 0;
-			AtlasFaceNormalL[idx + 2] = 0;
-			AtlasFaceNormalL[idx + 3] = 0;
-		}
-
-		if(f2 && f2!=f1){ // this is for edge condition
-			AtlasFaceNormalR[idx + 0] = f2->no[0];
-			AtlasFaceNormalR[idx + 1] = f2->no[1];
-			AtlasFaceNormalR[idx + 2] = f2->no[2];
-			AtlasFaceNormalR[idx + 3] = 1;
-		}else{
-			AtlasFaceNormalR[idx + 0] = 0;
-			AtlasFaceNormalR[idx + 1] = 0;
-			AtlasFaceNormalR[idx + 2] = 0;
-			AtlasFaceNormalR[idx + 3] = 0;
-		}
-
-	}
-	
-	return BeginIndex + edge_count;
-
-
-	
-	//return DRW_cache_mesh_surface_get(ob);
-	//
-	//int NextBegin = Begin;
-	//int ThisCount=0;
-
-	//for (io = o->ChildObjects.pFirst; io; io = io->Item.pNext) {
-	//	NextBegin = tns_FeedAtlasDataRecursive(
-	//		AtlasPointsL, AtlasPointsR, AtlasFaceNormalL, AtlasFaceNormalR, io, NextBegin);
-	//}
-
-	//if (o->Type != TNS_OBJECT_MESH) return Begin;
-
-
-	//for (e = mo->E.pFirst; e; e = e->Item.pNext) {
-	//	int offset = ThisCount + NextBegin;
-	//	AtlasPointsL[offset + 0] = e->VL->P[0];
-	//	AtlasPointsL[offset + 1] = e->VL->P[1];
-	//	AtlasPointsL[offset + 2] = e->VL->P[2];
-	//	AtlasPointsR[offset + 0] = e->VR->P[0];
-	//	AtlasPointsR[offset + 1] = e->VR->P[1];
-	//	AtlasPointsR[offset + 2] = e->VR->P[2];
-	//	AtlasFaceNormalL[offset + 0] = e->FL ? e->FL->FaceNormal[0] : 0;
-	//	AtlasFaceNormalL[offset + 1] = e->FL ? e->FL->FaceNormal[1] : 0;
-	//	AtlasFaceNormalL[offset + 2] = e->FL ? e->FL->FaceNormal[2] : 0;
-	//	AtlasFaceNormalR[offset + 0] = e->FR ? e->FR->FaceNormal[0] : 0;
-	//	AtlasFaceNormalR[offset + 1] = e->FR ? e->FR->FaceNormal[1] : 0;
-	//	AtlasFaceNormalR[offset + 2] = e->FR ? e->FR->FaceNormal[2] : 0;
-	//	ThisCount += 3;
-	//}
-
-	//return ThisCount + NextBegin;
-
-}
-
-void lanpr_dpix_index_to_coord(int index, float* x,float* y){
-    (*x) = tnsLinearItp(-1,1,(float)(index % TNS_DPIX_TEXTURE_SIZE+0.5)/(float)TNS_DPIX_TEXTURE_SIZE);
-	(*y) = tnsLinearItp(-1,1,(float)(index / TNS_DPIX_TEXTURE_SIZE+0.5)/(float)TNS_DPIX_TEXTURE_SIZE);
-}
-void lanpr_dpix_index_to_coord_absolute(int index, float* x,float* y){
-	(*x) = (float)(index % TNS_DPIX_TEXTURE_SIZE)+0.5;
-    (*y) = (float)(index / TNS_DPIX_TEXTURE_SIZE)+0.5;
-}
-
-void lanpr_feed_atlas_trigger_preview_obj(void* vedata, Object* ob, int BeginIndex) {
-	LANPR_StorageList *stl = ((

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list