Commit: 0944c31451554c99c34632f14c097a5cd6763bf8
Author: Nick Wu
Date:   Fri Jun 15 22:03:19 2018 +0800
Branches: soc-2018-npr
https://developer.blender.org/rB0944c31451554c99c34632f14c097a5cd6763bf8

render_to_image implemented, but not working correctly.

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

M       source/blender/draw/engines/lanpr/lanpr_dpix.c
M       source/blender/draw/engines/lanpr/lanpr_engine.c
M       source/blender/draw/engines/lanpr/lanpr_snake.c
M       
source/blender/draw/engines/lanpr/shaders/lanpr_atlas_project_clip.fragment

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

diff --git a/source/blender/draw/engines/lanpr/lanpr_dpix.c 
b/source/blender/draw/engines/lanpr/lanpr_dpix.c
index 8f8ddaa3434..4324efe7705 100644
--- a/source/blender/draw/engines/lanpr/lanpr_dpix.c
+++ b/source/blender/draw/engines/lanpr/lanpr_dpix.c
@@ -13,6 +13,7 @@
 #include "DNA_lanpr_types.h"
 #include "DNA_meshdata_types.h"
 #include "BKE_customdata.h"
+#include "DEG_depsgraph_query.h"
 #include "GPU_draw.h"
 
 #include "GPU_batch.h"
@@ -36,11 +37,8 @@ void lanpr_init_atlas_inputs(void *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;
@@ -58,9 +56,6 @@ void lanpr_init_atlas_inputs(void *ved){
                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),
@@ -94,7 +89,6 @@ void lanpr_init_atlas_inputs(void *ved){
                    datatoc_lanpr_atlas_project_passthrough_vertex,
                        datatoc_lanpr_atlas_preview_fragment,
                        datatoc_lanpr_atlas_preview_geometry,
-                       //NULL,
                        NULL,NULL);
     }
 }
@@ -139,7 +133,6 @@ int lanpr_feed_atlas_data_obj(void* vedata,
        struct BMVert *v1,*v2;
        struct BMEdge *e;
        struct BMLoop *l1,*l2;
-       //struct MEdge* ome;
        FreestyleEdge *fe;
        int CanFindFreestyle=0;
     int vert_count = me->totvert, edge_count = me->totedge, face_count = 
me->totface;
@@ -221,6 +214,7 @@ 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;
@@ -273,41 +267,47 @@ int lanpr_feed_atlas_trigger_preview_obj(void* vedata, 
Object* ob, int BeginInde
 
 
 void lanpr_dpix_draw_scene(LANPR_TextureList* txl, LANPR_FramebufferList * 
fbl, LANPR_PassList *psl, LANPR_PrivateData *pd, SceneLANPR *lanpr){
-       float clear_col[4] = {0.0f, 0.0f, 0.0f, 0.0f};
-           float clear_depth = 1.0f;
-           uint clear_stencil = 0xFF;
-
-        DefaultTextureList *dtxl = DRW_viewport_texture_list_get();
-           DefaultFramebufferList *dfbl = DRW_viewport_framebuffer_list_get();
-
-        int texw = GPU_texture_width(txl->edge_intermediate) ,texh = 
GPU_texture_height(txl->edge_intermediate);;
-           int tsize = texw*texh;
-
-               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;
-        
-        pd->dpix_viewport[2] = texw;
-               pd->dpix_viewport[3] = texh;
-               pd->dpix_is_perspective = 1;
-               pd->dpix_sample_step = 1;
-               pd->dpix_buffer_width = TNS_DPIX_TEXTURE_SIZE;
-               pd->dpix_depth_offset=0.0001;
-               pd->dpix_znear = 
camera?((Camera*)camera->data)->clipsta:v3d->near;
-               pd->dpix_zfar = 
camera?((Camera*)camera->data)->clipend:v3d->far;
-
-        glPointSize(1);
-               glLineWidth(2);
-               GPU_framebuffer_bind(fbl->dpix_transform);
-               DRW_draw_pass(psl->dpix_transform_pass);
-
-               GPU_framebuffer_bind(fbl->dpix_preview);
-               GPUFrameBufferBits clear_bits = GPU_COLOR_BIT;
-               GPU_framebuffer_clear(fbl->dpix_preview, clear_bits, 
lanpr->background_color, clear_depth, clear_stencil);
-               DRW_draw_pass(psl->dpix_preview_pass);
-
-               GPU_framebuffer_bind(dfbl->default_fb);
-               GPU_framebuffer_clear(dfbl->default_fb, clear_bits, 
lanpr->background_color, clear_depth, clear_stencil);
-               DRW_multisamples_resolve(txl->depth,txl->color);  
+       float clear_col[4] = {0.0f, 0.0f, 0.0f, 0.0f};
+       float clear_depth = 1.0f;
+       uint clear_stencil = 0xFF;
+
+       DefaultTextureList *dtxl = DRW_viewport_texture_list_get();
+       DefaultFramebufferList *dfbl = DRW_viewport_framebuffer_list_get();
+
+       int texw = GPU_texture_width(txl->edge_intermediate) ,texh = 
GPU_texture_height(txl->edge_intermediate);;
+       int tsize = texw*texh;
+
+       const DRWContextState *draw_ctx = DRW_context_state_get();
+       Scene *scene = DEG_get_evaluated_scene(draw_ctx->depsgraph);
+       View3D *v3d = draw_ctx->v3d;
+       Object *camera;
+       if(v3d){
+               RegionView3D *rv3d = draw_ctx->rv3d;
+               camera = (rv3d->persp == RV3D_CAMOB) ? v3d->camera : NULL;
+       }else{
+               camera = scene->camera;
+       }
+               
+       pd->dpix_viewport[2] = texw;
+       pd->dpix_viewport[3] = texh;
+       pd->dpix_is_perspective = 1;
+       pd->dpix_sample_step = 1;
+       pd->dpix_buffer_width = TNS_DPIX_TEXTURE_SIZE;
+       pd->dpix_depth_offset=0.0001;
+       pd->dpix_znear = camera?((Camera*)camera->data)->clipsta:v3d->near;
+       pd->dpix_zfar = camera?((Camera*)camera->data)->clipend:v3d->far;
+
+       glPointSize(1);
+       glLineWidth(2);
+       GPU_framebuffer_bind(fbl->dpix_transform);
+       DRW_draw_pass(psl->dpix_transform_pass);
+
+       GPU_framebuffer_bind(fbl->dpix_preview);
+       GPUFrameBufferBits clear_bits = GPU_COLOR_BIT;
+       GPU_framebuffer_clear(fbl->dpix_preview, clear_bits, 
lanpr->background_color, clear_depth, clear_stencil);
+       DRW_draw_pass(psl->dpix_preview_pass);
+
+       GPU_framebuffer_bind(dfbl->default_fb);
+       GPU_framebuffer_clear(dfbl->default_fb, clear_bits, 
lanpr->background_color, clear_depth, clear_stencil);
+       DRW_multisamples_resolve(txl->depth,txl->color);  
 }
diff --git a/source/blender/draw/engines/lanpr/lanpr_engine.c 
b/source/blender/draw/engines/lanpr/lanpr_engine.c
index 5e0202468f1..cd64a1d81cc 100644
--- a/source/blender/draw/engines/lanpr/lanpr_engine.c
+++ b/source/blender/draw/engines/lanpr/lanpr_engine.c
@@ -12,6 +12,9 @@
 #include "GPU_framebuffer.h"
 #include "DNA_lanpr_types.h"
 #include "GPU_draw.h"
+#include "DEG_depsgraph_query.h"
+#include "RE_pipeline.h"
+#include "BLI_rect.h"
 
 #include "GPU_batch.h"
 #include "GPU_framebuffer.h"
@@ -43,18 +46,19 @@ static void lanpr_engine_init(void *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();
 
-       //if(!stl->g_data) stl->g_data = MEM_callocN(sizeof(*stl->g_data), 
__func__);
-
        const DRWContextState *draw_ctx = DRW_context_state_get();
+       Scene *scene = DEG_get_evaluated_scene(draw_ctx->depsgraph);
+       SceneLANPR *lanpr = &scene->lanpr;
        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;
-
-       //lanpr->reloaded = 1;
+       Object *camera;
+       if (v3d) {
+               RegionView3D *rv3d = draw_ctx->rv3d;
+               camera = (rv3d->persp == RV3D_CAMOB) ? v3d->camera : NULL;
+       }else {
+               camera = scene->camera;
+       }
 
        if (!OneTime.InitComplete) {
                lanpr->depth_clamp = 0.01;
@@ -77,15 +81,11 @@ static void lanpr_engine_init(void *ved){
                lanpr->background_color[2] = 0.51;
                lanpr->background_color[3] = 1;
 
-               //lanpr->depth_influence = 0.3;
-
                lanpr->reloaded = 1;
 
                OneTime.InitComplete=1;
        }
 
-
-       /* Main Buffer */
        DRW_texture_ensure_fullscreen_2D_multisample(&txl->depth, 
GPU_DEPTH_COMPONENT32F, 8, 0);
        DRW_texture_ensure_fullscreen_2D_multisample(&txl->color, GPU_RGBA32F, 
8, 0);
        DRW_texture_ensure_fullscreen_2D_multisample(&txl->normal, GPU_RGBA32F, 
8, 0);
@@ -113,7 +113,6 @@ static void lanpr_engine_init(void *ved){
 
        GPU_framebuffer_ensure_config(&fbl->edge_thinning, {
                GPU_ATTACHMENT_LEAVE,
-               //GPU_ATTACHMENT_TEXTURE(txl->depth),
                GPU_ATTACHMENT_TEXTURE(txl->color),
                GPU_ATTACHMENT_LEAVE,
                GPU_ATTACHMENT_LEAVE,
@@ -162,7 +161,6 @@ static void lanpr_engine_free(void){
        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();
     LANPR_PassList *psl = ((LANPR_Data *)vedata)->psl;
 
        DRW_pass_free(psl->color_pass);
@@ -211,8 +209,17 @@ static void lanpr_cache_init(void *vedata){
        LANPR_PrivateData* pd = stl->g_data;
 
        const DRWContextState *draw_ctx = DRW_context_state_get();
+       Scene *scene = DEG_get_evaluated_scene(draw_ctx->depsgraph);
+       SceneLANPR *lanpr = &scene->lanpr;
        View3D *v3d = draw_ctx->v3d;
-       SceneLANPR *lanpr = &draw_ctx->scene->lanpr;
+       Object *camera;
+       if (v3d) {
+               RegionView3D *rv3d = draw_ctx->rv3d;
+               camera = (rv3d->persp == RV3D_CAMOB) ? v3d->camera : NULL;
+       }
+       else {
+               camera = scene->camera;
+       }
 
        psl->color_pass = DRW_pass_create("Color Pass", DRW_STATE_WRITE_COLOR | 
DRW_STATE_DEPTH_LESS_EQUAL | DRW_STATE_WRITE_DEPTH);
        stl->g_data->multipass_shgrp = 
DRW_shgroup_create(OneTime.multichannel_shader, psl->color_pass);
@@ -361,8 +368,7 @@ static void lanpr_cache_finish(void *vedata){
        }
 }
 
-static void lanpr_draw_scene(void *vedata)
-{
+static void lanpr_draw_scene(void *vedata){
        LANPR_PassList *psl = ((LANPR_Data *)vedata)->psl;
        LANPR_TextureList *txl = ((LANPR_Data *)vedata)->txl;
        LANPR_StorageList *stl = ((LANPR_Data *)vedata)->stl;
@@ -382,10 +388,16 @@ static void lanpr_draw_scene(void *vedata)
     DRW_draw_pass(psl->color_pass);
 
        const DRWContextState *draw_ctx = DRW_context_state_get();
-       SceneLANPR *lanpr = &draw_ctx->scene->lanpr;
+       Scene *scene = DEG_get_evaluated_scene(draw_ctx->depsgraph);
+       SceneLANPR *lanpr = &scene->lanpr;
        View3D *v3d = draw_ctx->v3d;
-       RegionView3D *rv3d = draw_ctx->rv3d;
-       Object *camera = (rv3d->persp == RV3D_CAMOB) ? v3d->camera : NULL;
+       Object *camera;
+       if(v3d){
+               RegionView3D *rv3d = draw_ctx->rv3d;
+           camera = (rv3d->persp == RV3D_CAMOB) ? v3d->camera : NULL;
+       }else{
+               camera = scene->camera;
+       }
 
        if(lanpr->master_mode == LANPR_MASTER_MODE_DPIX){
                lanpr_dpix_draw_scene(txl,fbl,psl,stl->g_data,lanpr);
@@ -394,22 +406,112 @@ static void lanpr_draw_sc

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