Commit: 82e242cc7287ce56d10f88a76de5418a7b20e239
Author: Lukas Stockner
Date:   Wed May 3 18:33:02 2017 +0200
Branches: blender2.8
https://developer.blender.org/rB82e242cc7287ce56d10f88a76de5418a7b20e239

Merge branch 'master' into blender2.8

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



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

diff --cc source/blender/blenloader/intern/versioning_270.c
index 0b6be6ab08d,c187766b586..a097e0a9e48
--- a/source/blender/blenloader/intern/versioning_270.c
+++ b/source/blender/blenloader/intern/versioning_270.c
@@@ -1609,30 -1609,31 +1609,54 @@@ void blo_do_versions_270(FileData *fd, 
                                }
                        }
                }
+ 
+               FOREACH_NODETREE(main, ntree, id) {
+                       if (ntree->type == NTREE_COMPOSIT) {
+                               bNode *node;
+                               for (node = ntree->nodes.first; node; node = 
node->next) {
+                                       if (node->type == CMP_NODE_R_LAYERS) {
+                                               int pass_index = 0;
+                                               const char *sockname;
+                                               for (bNodeSocket *sock = 
node->outputs.first; sock && pass_index < 31; sock = sock->next, pass_index++) {
+                                                       if (sock->storage == 
NULL) {
+                                                               NodeImageLayer 
*sockdata = MEM_callocN(sizeof(NodeImageLayer), "node image layer");
+                                                               sock->storage = 
sockdata;
+                                                               
BLI_strncpy(sockdata->pass_name, node_cmp_rlayers_sock_to_pass(pass_index), 
sizeof(sockdata->pass_name));
+ 
+                                                               if (pass_index 
== 0) sockname = "Image";
+                                                               else if 
(pass_index == 1) sockname = "Alpha";
+                                                               else sockname = 
node_cmp_rlayers_sock_to_pass(pass_index);
+                                                               
BLI_strncpy(sock->name, sockname, sizeof(sock->name));
+                                                       }
+                                               }
+                                       }
+                               }
+                       }
+               } FOREACH_NODETREE_END
        }
 +
 +      {
 +              if (!DNA_struct_elem_find(fd->filesdna, "View3DDebug", "char", 
"background")) {
 +                      bScreen *screen;
 +
 +                      for (screen = main->screen.first; screen; screen = 
screen->id.next) {
 +                              ScrArea *sa;
 +                              for (sa = screen->areabase.first; sa; sa = 
sa->next) {
 +                                      SpaceLink *sl;
 +
 +                                      for (sl = sa->spacedata.first; sl; sl = 
sl->next) {
 +                                              switch (sl->spacetype) {
 +                                                      case SPACE_VIEW3D:
 +                                                      {
 +                                                              View3D *v3d = 
(View3D *)sl;
 +                                                              
v3d->debug.background = V3D_DEBUG_BACKGROUND_NONE;
 +                                                      }
 +                                              }
 +                                      }
 +                              }
 +                      }
 +              }
 +      }
  }
  
  void do_versions_after_linking_270(Main *main)
diff --cc source/blender/draw/engines/basic/basic_engine.c
index bdcdefe414a,00000000000..169c67f9702
mode 100644,000000..100644
--- a/source/blender/draw/engines/basic/basic_engine.c
+++ b/source/blender/draw/engines/basic/basic_engine.c
@@@ -1,257 -1,0 +1,257 @@@
 +/*
 + * Copyright 2016, Blender Foundation.
 + *
 + * This program is free software; you can redistribute it and/or
 + * modify it under the terms of the GNU General Public License
 + * as published by the Free Software Foundation; either version 2
 + * of the License, or (at your option) any later version.
 + *
 + * This program is distributed in the hope that it will be useful,
 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 + * GNU General Public License for more details.
 + *
 + * You should have received a copy of the GNU General Public License
 + * along with this program; if not, write to the Free Software Foundation,
 + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 + *
 + * Contributor(s): Blender Institute
 + *
 + */
 +
 +/** \file basic_engine.h
 + *  \ingroup draw_engine
 + *
 + * Simple engine for drawing color and/or depth.
 + * When we only need simple flat shaders.
 + */
 +
 +#include "DRW_render.h"
 +
 +#include "BKE_icons.h"
 +#include "BKE_idprop.h"
 +#include "BKE_main.h"
 +
 +#include "GPU_shader.h"
 +
 +#include "basic_engine.h"
 +/* Shaders */
 +
 +#define BASIC_ENGINE "BLENDER_BASIC"
 +
 +/* we may want this later? */
 +#define USE_DEPTH
 +
 +/* *********** LISTS *********** */
 +
 +/* GPUViewport.storage
 + * Is freed everytime the viewport engine changes */
 +typedef struct BASIC_Storage {
 +      int dummy;
 +} BASIC_Storage;
 +
 +typedef struct BASIC_StorageList {
 +      struct BASIC_Storage *storage;
 +      struct BASIC_PrivateData *g_data;
 +} BASIC_StorageList;
 +
 +typedef struct BASIC_FramebufferList {
 +      /* default */
 +      struct GPUFrameBuffer *default_fb;
 +      /* engine specific */
 +#ifdef USE_DEPTH
 +      struct GPUFrameBuffer *dupli_depth;
 +#endif
 +} BASIC_FramebufferList;
 +
 +typedef struct BASIC_TextureList {
 +      /* default */
 +      struct GPUTexture *color;
 +#ifdef USE_DEPTH
 +      struct GPUTexture *depth;
 +      /* engine specific */
 +      struct GPUTexture *depth_dup;
 +#endif
 +} BASIC_TextureList;
 +
 +typedef struct BASIC_PassList {
 +#ifdef USE_DEPTH
 +      struct DRWPass *depth_pass;
 +      struct DRWPass *depth_pass_cull;
 +#endif
 +      struct DRWPass *color_pass;
 +} BASIC_PassList;
 +
 +typedef struct BASIC_Data {
 +      void *engine_type;
 +      BASIC_FramebufferList *fbl;
 +      BASIC_TextureList *txl;
 +      BASIC_PassList *psl;
 +      BASIC_StorageList *stl;
 +} BASIC_Data;
 +
 +/* *********** STATIC *********** */
 +
 +static struct {
 +#ifdef USE_DEPTH
 +      /* Depth Pre Pass */
 +      struct GPUShader *depth_sh;
 +#endif
 +      /* Shading Pass */
 +      struct GPUShader *color_sh;
 +} e_data = {NULL}; /* Engine data */
 +
 +typedef struct BASIC_PrivateData {
 +#ifdef USE_DEPTH
 +      DRWShadingGroup *depth_shgrp;
 +      DRWShadingGroup *depth_shgrp_cull;
 +#endif
 +      DRWShadingGroup *color_shgrp;
 +} BASIC_PrivateData; /* Transient data */
 +
 +/* Functions */
 +
 +static void BASIC_engine_init(void *vedata)
 +{
 +      BASIC_StorageList *stl = ((BASIC_Data *)vedata)->stl;
 +      BASIC_TextureList *txl = ((BASIC_Data *)vedata)->txl;
 +      BASIC_FramebufferList *fbl = ((BASIC_Data *)vedata)->fbl;
 +
 +#ifdef USE_DEPTH
 +      /* Depth prepass */
 +      if (!e_data.depth_sh) {
 +              e_data.depth_sh = DRW_shader_create_3D_depth_only();
 +      }
 +#endif
 +
 +      /* Shading pass */
 +      if (!e_data.color_sh) {
 +              e_data.color_sh = 
GPU_shader_get_builtin_shader(GPU_SHADER_3D_UNIFORM_COLOR);
 +      }
 +
 +      if (!stl->storage) {
 +              stl->storage = MEM_callocN(sizeof(BASIC_Storage), 
"BASIC_Storage");
 +      }
 +
 +#ifdef USE_DEPTH
 +      if (DRW_state_is_fbo()) {
 +              const float *viewport_size = DRW_viewport_size_get();
 +              DRWFboTexture tex = {&txl->depth_dup, DRW_BUF_DEPTH_24, 0};
 +              DRW_framebuffer_init(&fbl->dupli_depth,
 +                                   (int)viewport_size[0], 
(int)viewport_size[1],
 +                                   &tex, 1);
 +      }
 +#endif
 +}
 +
 +static void BASIC_cache_init(void *vedata)
 +{
 +      BASIC_PassList *psl = ((BASIC_Data *)vedata)->psl;
 +      BASIC_StorageList *stl = ((BASIC_Data *)vedata)->stl;
 +
 +      if (!stl->g_data) {
 +              /* Alloc transient pointers */
 +              stl->g_data = MEM_mallocN(sizeof(*stl->g_data), __func__);
 +      }
 +
 +#ifdef USE_DEPTH
 +      /* Depth Pass */
 +      {
 +              psl->depth_pass = DRW_pass_create("Depth Pass", 
DRW_STATE_WRITE_DEPTH | DRW_STATE_DEPTH_LESS);
 +              stl->g_data->depth_shgrp = DRW_shgroup_create(e_data.depth_sh, 
psl->depth_pass);
 +
 +              psl->depth_pass_cull = DRW_pass_create(
 +                      "Depth Pass Cull",
 +                      DRW_STATE_WRITE_DEPTH | DRW_STATE_DEPTH_LESS | 
DRW_STATE_CULL_BACK);
 +              stl->g_data->depth_shgrp_cull = 
DRW_shgroup_create(e_data.depth_sh, psl->depth_pass_cull);
 +      }
 +#endif
 +
 +      /* Color Pass */
 +      {
 +              psl->color_pass = DRW_pass_create("Color Pass", 
DRW_STATE_WRITE_COLOR | DRW_STATE_DEPTH_EQUAL);
 +              stl->g_data->color_shgrp = DRW_shgroup_create(e_data.color_sh, 
psl->color_pass);
 +      }
 +}
 +
 +static void BASIC_cache_populate(void *vedata, Object *ob)
 +{
 +      BASIC_StorageList *stl = ((BASIC_Data *)vedata)->stl;
 +
 +      if (!DRW_is_object_renderable(ob))
 +              return;
 +
 +      struct Batch *geom = DRW_cache_object_surface_get(ob);
 +      if (geom) {
 +              bool do_cull = false;  /* TODO (we probably wan't to take this 
from the viewport?) */
 +#ifdef USE_DEPTH
 +              /* Depth Prepass */
 +              DRW_shgroup_call_add((do_cull) ? stl->g_data->depth_shgrp_cull 
: stl->g_data->depth_shgrp, geom, ob->obmat);
 +#endif
 +              /* Shading */
 +              DRW_shgroup_call_add(stl->g_data->color_shgrp, geom, ob->obmat);
 +      }
 +}
 +
 +static void BASIC_cache_finish(void *vedata)
 +{
 +      BASIC_StorageList *stl = ((BASIC_Data *)vedata)->stl;
 +
 +      UNUSED_VARS(stl);
 +}
 +
 +static void BASIC_draw_scene(void *vedata)
 +{
 +
 +      BASIC_PassList *psl = ((BASIC_Data *)vedata)->psl;
 +      BASIC_FramebufferList *fbl = ((BASIC_Data *)vedata)->fbl;
 +      DefaultFramebufferList *dfbl = DRW_viewport_framebuffer_list_get();
 +
 +#ifdef USE_DEPTH
 +      /* Pass 1 : Depth pre-pass */
 +      DRW_draw_pass(psl->depth_pass);
 +      DRW_draw_pass(psl->depth_pass_cull);
 +
 +      /* Pass 2 : Duplicate depth */
 +      /* Unless we go for deferred shading we need this to avoid manual depth 
test and artifacts */
 +      if (DRW_state_is_fbo()) {
 +              DRW_framebuffer_blit(dfbl->default_fb, fbl->dupli_depth, true);
 +      }
 +#endif
 +
 +      /* Pass 3 : Shading */
 +      DRW_draw_pass(psl->color_pass);
 +}
 +
 +static void BASIC_engine_free(void)
 +{
 +      /* all shaders are builtin */
 +}
 +
 +static const DrawEngineDataSize BASIC_data_size = 
DRW_VIEWPORT_DATA_SIZE(BASIC_Data);
 +
 +DrawEngineType draw_engine_basic_type = {
 +      NULL, NULL,
 +      N_("Basic"),
 +      &BASIC_data_size,
 +      &BASIC_engine_init,
 +      &BASIC_engine_free,
 +      &BASIC_cache_init,
 +      &BASIC_cache_populate,
 +      &BASIC_cache_finish,
 +      NULL,
 +      &BASIC_draw_scene
 +};
 +
 +/* Note: currently unused, we may want to register so we can see this when 
debugging the view. */
 +
 +RenderEngineType DRW_engine_viewport_basic_type = {
 +      NULL, NULL,
 +      BASIC_ENGINE, N_("Basic"), RE_INTERNAL,
-       NULL, NULL, NULL, NULL, NULL, NULL, NULL,
++      NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
 +      &draw_engine_basic_type,
 +      {NULL, NULL, NULL}
 +};
 +
 +
 +#undef BASIC_ENGINE
diff --cc source/blender/draw/engines/clay/clay_engine.c
index 6f3e0c4e8b9,00000000000..8ac8ed50cdc
mode 100644,000000..100644
--- a/source/blender/draw/engines/clay/clay_engine.c
+++ b/source/blender/draw/engines/clay/clay_engine.c
@@@ -1,669 -1,0 +1,669 @@@
 +/*
 + * Copyright 2016, Blender Foundation.
 + *
 + * This program is free software; you can redistribute it and/or
 + * modify it under the terms of the GNU General Public License
 + * as published by the Free Software Foundation; either version 2
 + * of the License, or (at your option) any later version.
 + *
 + * This program is distributed in the hope that it will be useful,
 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 + * GNU General Public License for more details.
 + *
 + * You should have received a copy of the GNU General Public License
 + * along 

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