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

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

Reply via email to