Commit: 9f8fbefc1548061fe275591768488aab13a0f590
Author: Nick Wu
Date:   Tue Jun 5 11:36:22 2018 +0800
Branches: soc-2018-npr
https://developer.blender.org/rB9f8fbefc1548061fe275591768488aab13a0f590

Added DPIX/Snake switch function. SceneLANPR out of sync with RNA, wierd

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

M       release/scripts/startup/bl_ui/properties_scene.py
M       source/blender/draw/engines/lanpr/NUL_TNS.h
M       source/blender/draw/engines/lanpr/NUL_TNS_EdgeRendering.c
M       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/makesdna/DNA_scene_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 07b1b82fd44..de618a4a024 100644
--- a/release/scripts/startup/bl_ui/properties_scene.py
+++ b/release/scripts/startup/bl_ui/properties_scene.py
@@ -490,8 +490,11 @@ class SCENE_PT_lanpr(SceneButtonsPanel, PropertyPanel, 
Panel):
         scene = context.scene
         lanpr = scene.lanpr
 
+        layout.prop(lanpr, "master_mode")
+
         if lanpr.master_mode == "DPIX":
             layout.label(text="DPIX:")
+            layout.prop(lanpr, "reloaded")
             split = layout.split()
             col = split.column()
             col.prop(lanpr, "background_color")
diff --git a/source/blender/draw/engines/lanpr/NUL_TNS.h 
b/source/blender/draw/engines/lanpr/NUL_TNS.h
index 7d76bb4045e..f5d6ba9b5eb 100644
--- a/source/blender/draw/engines/lanpr/NUL_TNS.h
+++ b/source/blender/draw/engines/lanpr/NUL_TNS.h
@@ -133,6 +133,7 @@ typedef struct LANPR_PrivateData {
        int           dpix_is_perspective;
        float         dpix_viewport[4];
     int           dpix_buffer_width;
+       float         dpix_depth_offset;
 
        // drawing
 
diff --git a/source/blender/draw/engines/lanpr/NUL_TNS_EdgeRendering.c 
b/source/blender/draw/engines/lanpr/NUL_TNS_EdgeRendering.c
index 5da835be26a..957b6165b18 100644
--- a/source/blender/draw/engines/lanpr/NUL_TNS_EdgeRendering.c
+++ b/source/blender/draw/engines/lanpr/NUL_TNS_EdgeRendering.c
@@ -83,17 +83,21 @@ void lanpr_init_atlas_inputs(void *ved){
        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 */
-       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,
@@ -160,10 +164,10 @@ int lanpr_feed_atlas_data_obj(void* vedata,
        Object* ob, int BeginIndex) {
        LANPR_StorageList *stl = ((LANPR_Data *)vedata)->stl;
 
-       if (!DRW_object_is_renderable(ob)) return;
+       if (!DRW_object_is_renderable(ob)) return BeginIndex;
        const DRWContextState *draw_ctx = DRW_context_state_get();
-       if (ob == draw_ctx->object_edit) return;
-       if(ob->type != OB_MESH) return;
+       if (ob == draw_ctx->object_edit) return BeginIndex;
+       if(ob->type != OB_MESH) return BeginIndex;
 
        Mesh* me = ob->data;
        BMesh* bm;
@@ -268,12 +272,12 @@ int lanpr_feed_atlas_data_obj(void* vedata,
 }
 
 void lanpr_dpix_index_to_coord(int index, float* x,float* y){
-    (*x) = tnsLinearItp(-1,1,(float)(index % 
TNS_DPIX_TEXTURE_SIZE)/(float)TNS_DPIX_TEXTURE_SIZE);
-       (*y) = tnsLinearItp(-1,1,(float)(index / 
TNS_DPIX_TEXTURE_SIZE)/(float)TNS_DPIX_TEXTURE_SIZE);
+    (*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);
-    (*y) = (float)(index / TNS_DPIX_TEXTURE_SIZE);
+       (*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) {
@@ -281,7 +285,7 @@ void lanpr_feed_atlas_trigger_preview_obj(void* vedata, 
Object* ob, int BeginInd
        LANPR_PrivateData* pd = stl->g_data;
        Mesh* me = ob->data;
        if (ob->type != OB_MESH) return;
-       int vert_count = me->totedge;
+       int edge_count = me->totedge;
        int i;
        float co[2];
 
@@ -299,10 +303,10 @@ void lanpr_feed_atlas_trigger_preview_obj(void* vedata, 
Object* ob, int BeginInd
 
        Gwn_VertBuf *vbo = GWN_vertbuf_create_with_format(&format);
        Gwn_VertBuf *vbo2 = GWN_vertbuf_create_with_format(&format2);
-       GWN_vertbuf_data_alloc(vbo, vert_count);
-       GWN_vertbuf_data_alloc(vbo2, vert_count);
+       GWN_vertbuf_data_alloc(vbo, edge_count);
+       GWN_vertbuf_data_alloc(vbo2, edge_count);
 
-       for(i=0;i<vert_count;i++){
+       for(i=0;i<edge_count;i++){
         lanpr_dpix_index_to_coord(i+BeginIndex,&co[0],&co[1]);
                GWN_vertbuf_attr_set(vbo, attr_id.pos, i, co);
                lanpr_dpix_index_to_coord_absolute(i+BeginIndex,&co[0],&co[1]);
@@ -529,6 +533,33 @@ static void lanpr_engine_init(void *ved){
        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->InitComplete) {
+               lanpr->depth_clamp = 0.01;
+               lanpr->depth_strength = 800;
+               lanpr->normal_clamp = 2;
+               lanpr->normal_strength = 10;
+               lanpr->line_thickness = 2;
+               lanpr->taper_left_distance = 20;
+               lanpr->taper_left_strength = 0.9;
+               lanpr->taper_right_distance = 20;
+               lanpr->taper_right_strength = 0.9;
+
+               lanpr->line_color[0] = 0.22;
+               lanpr->line_color[1] = 0.29;
+               lanpr->line_color[2] = 0.53;
+               lanpr->line_color[3] = 1;
+
+               lanpr->background_color[0] = 0.59;
+               lanpr->background_color[1] = 0.90;
+               lanpr->background_color[2] = 0.51;
+               lanpr->background_color[3] = 1;
+
+               lanpr->reloaded = 1;
+
+               lanpr->InitComplete=1;
+       }
 
 
        /* Main Buffer */
@@ -697,13 +728,14 @@ static void lanpr_cache_init(void *vedata){
        View3D *v3d = draw_ctx->v3d;
        SceneLANPR *lanpr = &draw_ctx->scene->lanpr;
 
-       psl->dpix_preview_pass = DRW_pass_create("DPIX Preview", 
DRW_STATE_WRITE_COLOR);
+       psl->dpix_preview_pass = DRW_pass_create("DPIX Preview", 
DRW_STATE_WRITE_COLOR|DRW_STATE_WRITE_DEPTH|DRW_STATE_DEPTH_LESS_EQUAL);
        stl->g_data->dpix_preview_shgrp = 
DRW_shgroup_create(OneTime.dpix_preview_shader, psl->dpix_preview_pass);
        DRW_shgroup_uniform_texture_ref(stl->g_data->dpix_preview_shgrp, 
"vert0_tex", &txl->dpix_out_pl);
        DRW_shgroup_uniform_texture_ref(stl->g_data->dpix_preview_shgrp, 
"vert1_tex", &txl->dpix_out_pr);
        DRW_shgroup_uniform_vec4(stl->g_data->dpix_preview_shgrp, "viewport", 
stl->g_data->dpix_viewport, 4);
-       DRW_shgroup_uniform_vec4(stl->g_data->dpix_preview_shgrp, "color", 
&lanpr->line_color, 4);
-
+       DRW_shgroup_uniform_vec4(stl->g_data->dpix_preview_shgrp, "color", 
lanpr->line_color, 4);
+    DRW_shgroup_uniform_float(stl->g_data->dpix_preview_shgrp, "depth_offset", 
&stl->g_data->dpix_depth_offset, 1);
+       
        pd->begin_index = 0;
        int tsize = sizeof(float) * 4 * 
TNS_DPIX_TEXTURE_SIZE*TNS_DPIX_TEXTURE_SIZE;
        if (!pd->atlas_pl) {
@@ -712,22 +744,26 @@ static void lanpr_cache_init(void *vedata){
                pd->atlas_nl = MEM_callocN(tsize, "atlas_normal_l");
                pd->atlas_nr = MEM_callocN(tsize, "atlas_normal_l");
        }
-       memset(pd->atlas_pl, 0, tsize);
-       memset(pd->atlas_pr, 0, tsize);
-       memset(pd->atlas_nl, 0, tsize);
-       memset(pd->atlas_nr, 0, tsize);
+       if(lanpr->reloaded){
+           memset(pd->atlas_pl, 0, tsize);
+           memset(pd->atlas_pr, 0, tsize);
+           memset(pd->atlas_nl, 0, tsize);
+           memset(pd->atlas_nr, 0, tsize);
+       }
 }
 
 static void lanpr_cache_populate(void *vedata, Object *ob){
     
        LANPR_StorageList *stl = ((LANPR_Data *)vedata)->stl;
        LANPR_PrivateData* pd = stl->g_data;
+       const DRWContextState *draw_ctx = DRW_context_state_get();
+       View3D *v3d = draw_ctx->v3d;
+       SceneLANPR *lanpr = &draw_ctx->scene->lanpr;
        
        if (!DRW_object_is_renderable(ob)) {
                return;
        }
 
-       const DRWContextState *draw_ctx = DRW_context_state_get();
        if (ob == draw_ctx->object_edit) {
                return;
        }
@@ -737,28 +773,34 @@ static void lanpr_cache_populate(void *vedata, Object 
*ob){
         DRW_shgroup_call_object_add(stl->g_data->multipass_shgrp, geom, ob);
        }
 
-       int idx = pd->begin_index;
-
-       pd->begin_index = 
lanpr_feed_atlas_data_obj(vedata,pd->atlas_pl,pd->atlas_pr,pd->atlas_nl,pd->atlas_nr,ob,idx);
-
-       lanpr_feed_atlas_trigger_preview_obj(vedata,ob,idx);
+       if(lanpr->reloaded){
+               int idx = pd->begin_index;
+               pd->begin_index = 
lanpr_feed_atlas_data_obj(vedata,pd->atlas_pl,pd->atlas_pr,pd->atlas_nl,pd->atlas_nr,ob,idx);
+               lanpr_feed_atlas_trigger_preview_obj(vedata,ob,idx);
+       }
 }
 
 static void lanpr_cache_finish(void *vedata){
     LANPR_StorageList *stl = ((LANPR_Data *)vedata)->stl;
        LANPR_PrivateData* pd = stl->g_data;
        LANPR_TextureList *txl = ((LANPR_Data *)vedata)->txl;
+       const DRWContextState *draw_ctx = DRW_context_state_get();
+       View3D *v3d = draw_ctx->v3d;
+       SceneLANPR *lanpr = &draw_ctx->scene->lanpr;
 
-       GPU_texture_update(txl->dpix_in_pl,pd->atlas_pl);
-    GPU_texture_update(txl->dpix_in_pr,pd->atlas_pr);
-       GPU_texture_update(txl->dpix_in_nl,pd->atlas_nl);
-    GPU_texture_update(txl->dpix_in_nr,pd->atlas_nr);
-
-       MEM_freeN(pd->atlas_pl);
-       MEM_freeN(pd->atlas_pr);
-       MEM_freeN(pd->atlas_nl);
-       MEM_freeN(pd->atlas_nr);
-       pd->atlas_pl = 0;
+       if(lanpr->reloaded){
+               GPU_texture_update(txl->dpix_in_pl,pd->atlas_pl);
+               GPU_texture_update(txl->d

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