[Bf-blender-cvs] [4a2cde3f0e8] master: Cycles: Enable SSS and volumes for CUDA and Nvidia OpenCL split kernel

2017-03-09 Thread Mai Lavelle
Commit: 4a2cde3f0e88e84c94617a9a3175c67f8801eecf
Author: Mai Lavelle
Date:   Fri Mar 10 02:09:41 2017 -0500
Branches: master
https://developer.blender.org/rB4a2cde3f0e88e84c94617a9a3175c67f8801eecf

Cycles: Enable SSS and volumes for CUDA and Nvidia OpenCL split kernel

===

M   intern/cycles/kernel/kernel_types.h
M   intern/cycles/kernel/kernels/cuda/kernel_split.cu

===

diff --git a/intern/cycles/kernel/kernel_types.h 
b/intern/cycles/kernel/kernel_types.h
index cac710c5ff3..f2ba3586c22 100644
--- a/intern/cycles/kernel/kernel_types.h
+++ b/intern/cycles/kernel/kernel_types.h
@@ -90,13 +90,13 @@ CCL_NAMESPACE_BEGIN
 #ifdef __KERNEL_CUDA__
 #  define __KERNEL_SHADING__
 #  define __KERNEL_ADV_SHADING__
+#  define __VOLUME__
+#  define __VOLUME_SCATTER__
+#  define __SUBSURFACE__
+#  define __SHADOW_RECORD_ALL__
 #  ifndef __SPLIT_KERNEL__
 #define __BRANCHED_PATH__
-#define __VOLUME__
-#define __VOLUME_SCATTER__
-#define __SUBSURFACE__
 #define __CMJ__
-#define __SHADOW_RECORD_ALL__
 #  endif
 #endif  /* __KERNEL_CUDA__ */
 
@@ -107,6 +107,10 @@ CCL_NAMESPACE_BEGIN
 #  ifdef __KERNEL_OPENCL_NVIDIA__
 #define __KERNEL_SHADING__
 #define __KERNEL_ADV_SHADING__
+#define __SUBSURFACE__
+#define __VOLUME__
+#define __VOLUME_SCATTER__
+#define __SHADOW_RECORD_ALL__
 #ifdef __KERNEL_EXPERIMENTAL__
 #  define __CMJ__
 #endif
diff --git a/intern/cycles/kernel/kernels/cuda/kernel_split.cu 
b/intern/cycles/kernel/kernels/cuda/kernel_split.cu
index 759475b175f..6c508c2cd79 100644
--- a/intern/cycles/kernel/kernels/cuda/kernel_split.cu
+++ b/intern/cycles/kernel/kernels/cuda/kernel_split.cu
@@ -28,13 +28,18 @@
 #include "../../split/kernel_path_init.h"
 #include "../../split/kernel_scene_intersect.h"
 #include "../../split/kernel_lamp_emission.h"
+#include "../../split/kernel_do_volume.h"
 #include "../../split/kernel_queue_enqueue.h"
-#include "../../split/kernel_background_buffer_update.h"
+#include "../../split/kernel_indirect_background.h"
 #include "../../split/kernel_shader_eval.h"
 #include "../../split/kernel_holdout_emission_blurring_pathtermination_ao.h"
+#include "../../split/kernel_subsurface_scatter.h"
 #include "../../split/kernel_direct_lighting.h"
-#include "../../split/kernel_shadow_blocked.h"
+#include "../../split/kernel_shadow_blocked_ao.h"
+#include "../../split/kernel_shadow_blocked_dl.h"
 #include "../../split/kernel_next_iteration_setup.h"
+#include "../../split/kernel_indirect_subsurface.h"
+#include "../../split/kernel_buffer_update.h"
 
 #include "../../kernel_film.h"
 
@@ -91,13 +96,18 @@ kernel_cuda_path_trace_data_init(
 DEFINE_SPLIT_KERNEL_FUNCTION(path_init)
 DEFINE_SPLIT_KERNEL_FUNCTION(scene_intersect)
 DEFINE_SPLIT_KERNEL_FUNCTION(lamp_emission)
+DEFINE_SPLIT_KERNEL_FUNCTION(do_volume)
 DEFINE_SPLIT_KERNEL_FUNCTION(queue_enqueue)
-DEFINE_SPLIT_KERNEL_FUNCTION(background_buffer_update)
+DEFINE_SPLIT_KERNEL_FUNCTION(indirect_background)
 DEFINE_SPLIT_KERNEL_FUNCTION(shader_eval)
 DEFINE_SPLIT_KERNEL_FUNCTION(holdout_emission_blurring_pathtermination_ao)
+DEFINE_SPLIT_KERNEL_FUNCTION(subsurface_scatter)
 DEFINE_SPLIT_KERNEL_FUNCTION(direct_lighting)
-DEFINE_SPLIT_KERNEL_FUNCTION(shadow_blocked)
+DEFINE_SPLIT_KERNEL_FUNCTION(shadow_blocked_ao)
+DEFINE_SPLIT_KERNEL_FUNCTION(shadow_blocked_dl)
 DEFINE_SPLIT_KERNEL_FUNCTION(next_iteration_setup)
+DEFINE_SPLIT_KERNEL_FUNCTION(indirect_subsurface)
+DEFINE_SPLIT_KERNEL_FUNCTION(buffer_update)
 
 extern "C" __global__ void
 CUDA_LAUNCH_BOUNDS(CUDA_THREADS_BLOCK_WIDTH, CUDA_KERNEL_MAX_REGISTERS)

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [17689f8bb6d] master: Fix T50904: Imprecise timeline frame selection using mouse

2017-03-09 Thread Joshua Leung
Commit: 17689f8bb6df2421211173b1b7963b6d53ad4e41
Author: Joshua Leung
Date:   Fri Mar 10 13:38:02 2017 +1300
Branches: master
https://developer.blender.org/rB17689f8bb6df2421211173b1b7963b6d53ad4e41

Fix T50904: Imprecise timeline frame selection using mouse

The changes introduced in rB3e628eefa9f55fac7b0faaec4fd4392c2de6b20e
made the non-subframe frame change behaviour less intuitive, by always
truncating downwards, instead of rounding to the nearest frame instead.
This made the UI a lot less forgiving of pointing precision errors
(for example, as a result of hand shake, or using a tablet on a highres scren)

This commit restores the old behaviour in this case only (subframe inspection
isn't affected by these changes)

===

M   source/blender/editors/animation/anim_ops.c

===

diff --git a/source/blender/editors/animation/anim_ops.c 
b/source/blender/editors/animation/anim_ops.c
index bb73cbf03b4..0eb6508f7b2 100644
--- a/source/blender/editors/animation/anim_ops.c
+++ b/source/blender/editors/animation/anim_ops.c
@@ -103,11 +103,12 @@ static void change_frame_apply(bContext *C, wmOperator 
*op)
}
 
/* set the new frame number */
-   CFRA = (int)frame;
if (scene->r.flag & SCER_SHOW_SUBFRAME) {
+   CFRA = (int)frame;
SUBFRA = frame - (int)frame;
}
else {
+   CFRA = iroundf(frame);
SUBFRA = 0.0f;
}
FRAMENUMBER_MIN_CLAMP(CFRA);
@@ -134,15 +135,12 @@ static float frame_from_event(bContext *C, const wmEvent 
*event)
 {
ARegion *region = CTX_wm_region(C);
Scene *scene = CTX_data_scene(C);
-   float viewx;
float frame;
 
/* convert from region coordinates to View2D 'tot' space */
-   viewx = UI_view2d_region_to_view_x(>v2d, event->mval[0]);
-   
-   /* round result to nearest int (frames are ints!) */
-   frame = viewx;
+   frame = UI_view2d_region_to_view_x(>v2d, event->mval[0]);

+   /* respect preview range restrictions (if only allowed to move around 
within that range) */
if (scene->r.flag & SCER_LOCK_FRAME_SELECTION) {
CLAMP(frame, PSFRA, PEFRA);
}

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [6a8cb924049] blender2.8: OpenGL: Convert drawobject.c (cont)

2017-03-09 Thread Clément Foucault
Commit: 6a8cb924049be6b16fad78754b480c93617f5384
Author: Clément Foucault
Date:   Fri Mar 10 01:53:57 2017 +0100
Branches: blender2.8
https://developer.blender.org/rB6a8cb924049be6b16fad78754b480c93617f5384

OpenGL: Convert drawobject.c (cont)

- drawDispListwire_ex()
- removed primitive check in Batch_init()

===

M   source/blender/editors/space_view3d/drawobject.c
M   source/blender/gpu/gawain/batch.c

===

diff --git a/source/blender/editors/space_view3d/drawobject.c 
b/source/blender/editors/space_view3d/drawobject.c
index 2eefd97489b..d131c139814 100644
--- a/source/blender/editors/space_view3d/drawobject.c
+++ b/source/blender/editors/space_view3d/drawobject.c
@@ -5120,16 +5120,33 @@ static bool draw_mesh_object_new(Scene *scene, 
SceneLayer *sl, ARegion *ar, View
 
 /* ** DRAW DISPLIST ** */
 
+static void drawDispListVerts(int dt, const void *data, unsigned int vert_ct, 
const unsigned char wire_col[3])
+{
+   VertexFormat format = {0};
+   unsigned int pos_id = add_attrib(, "pos", GL_FLOAT, 3, 
KEEP_FLOAT);
+
+   VertexBuffer *vbo = VertexBuffer_create_with_format();
+   VertexBuffer_allocate_data(vbo, vert_ct);
+
+   fillAttrib(vbo, pos_id, data);
+
+   Batch *batch = Batch_create(dt, vbo, NULL);
+   Batch_set_builtin_program(batch, GPU_SHADER_3D_UNIFORM_COLOR);
+   if (wire_col) {
+   Batch_Uniform4f(batch, "color", wire_col[0]/255.0f, 
wire_col[1]/255.0f, wire_col[2]/255.0f, 1.0f);
+   }
+   Batch_draw(batch);
+   Batch_discard_all(batch);
+}
 
 /**
  * \param dl_type_mask Only draw types matching this mask.
  * \return true when nothing was drawn
  */
-static bool drawDispListwire_ex(ListBase *dlbase, unsigned int dl_type_mask)
+static bool drawDispListwire_ex(ListBase *dlbase, unsigned int dl_type_mask, 
const unsigned char wire_col[3])
 {
if (dlbase == NULL) return true;

-   glEnableClientState(GL_VERTEX_ARRAY);
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
 
for (DispList *dl = dlbase->first; dl; dl = dl->next) {
@@ -5140,64 +5157,55 @@ static bool drawDispListwire_ex(ListBase *dlbase, 
unsigned int dl_type_mask)
if ((dl_type_mask & (1 << dl->type)) == 0) {
continue;
}
-   
+
const float *data = dl->verts;
int parts;
 
switch (dl->type) {
case DL_SEGM:
-
-   glVertexPointer(3, GL_FLOAT, 0, data);
-
for (parts = 0; parts < dl->parts; parts++)
-   glDrawArrays(GL_LINE_STRIP, parts * 
dl->nr, dl->nr);
-   
+   drawDispListVerts(GL_LINE_STRIP, data + 
(parts * dl->nr * 3), dl->nr, wire_col);
break;
-   case DL_POLY:
-
-   glVertexPointer(3, GL_FLOAT, 0, data);
 
+   case DL_POLY:
for (parts = 0; parts < dl->parts; parts++)
-   glDrawArrays(GL_LINE_LOOP, parts * 
dl->nr, dl->nr);
-
+   drawDispListVerts(GL_LINE_LOOP, data + 
(parts * dl->nr * 3), dl->nr, wire_col);
break;
-   case DL_SURF:
-
-   glVertexPointer(3, GL_FLOAT, 0, data);
 
+   case DL_SURF:
for (parts = 0; parts < dl->parts; parts++) {
if (dl->flag & DL_CYCL_U)
-   glDrawArrays(GL_LINE_LOOP, 
parts * dl->nr, dl->nr);
+   drawDispListVerts(GL_LINE_LOOP, 
data + (parts * dl->nr * 3), dl->nr, wire_col);
else
-   glDrawArrays(GL_LINE_STRIP, 
parts * dl->nr, dl->nr);
+   
drawDispListVerts(GL_LINE_STRIP, data + (parts * dl->nr * 3), dl->nr, wire_col);
}
 
+   float *data_aligned = MEM_mallocN(sizeof(float) 
* 3 * dl->parts, "aligned data");
for (int nr = 0; nr < dl->nr; nr++) {
int ofs = 3 * dl->nr;
+   int idx = 0;
 
data = (dl->verts) + 3 * nr;
parts = dl->parts;
 
-   if (dl->flag & DL_CYCL_V) 
glBegin(GL_LINE_LOOP);
-   else glBegin(GL_LINE_STRIP);
-

[Bf-blender-cvs] [e37538b4722] blender2.8: OpenGL: Convert drawobject.c (cont)

2017-03-09 Thread Clément Foucault
Commit: e37538b4722aec5fde93aab8ec1fdd2b3ac638cf
Author: Clément Foucault
Date:   Fri Mar 10 00:28:00 2017 +0100
Branches: blender2.8
https://developer.blender.org/rBe37538b4722aec5fde93aab8ec1fdd2b3ac638cf

OpenGL: Convert drawobject.c (cont)

removed draw_box

===

M   source/blender/editors/space_view3d/drawobject.c

===

diff --git a/source/blender/editors/space_view3d/drawobject.c 
b/source/blender/editors/space_view3d/drawobject.c
index 1ca11cbb9a8..2eefd97489b 100644
--- a/source/blender/editors/space_view3d/drawobject.c
+++ b/source/blender/editors/space_view3d/drawobject.c
@@ -7944,23 +7944,6 @@ static void draw_forcefield(Object *ob, RegionView3D 
*rv3d,
immUnbindProgram();
 }
 
-static void draw_box(const float vec[8][3], bool solid)
-{
-   glEnableClientState(GL_VERTEX_ARRAY);
-   glVertexPointer(3, GL_FLOAT, 0, vec);
-   
-   if (solid) {
-   const GLubyte indices[24] = 
{0,1,2,3,7,6,5,4,4,5,1,0,3,2,6,7,3,7,4,0,1,5,6,2};
-   glDrawRangeElements(GL_QUADS, 0, 7, 24, GL_UNSIGNED_BYTE, 
indices);
-   }
-   else {
-   const GLubyte indices[24] = 
{0,1,1,2,2,3,3,0,0,4,4,5,5,6,6,7,7,4,1,5,2,6,3,7};
-   glDrawRangeElements(GL_LINES, 0, 7, 24, GL_UNSIGNED_BYTE, 
indices);
-   }
-
-   glDisableClientState(GL_VERTEX_ARRAY);
-}
-
 static void imm_draw_box(const float vec[8][3], bool solid, unsigned pos)
 {
static const GLubyte quad_indices[24] = 
{0,1,2,3,7,6,5,4,4,5,1,0,3,2,6,7,3,7,4,0,1,5,6,2};
@@ -8428,6 +8411,7 @@ void draw_rigidbody_shape(Object *ob, const unsigned char 
ob_wire_col[4])
 {
BoundBox *bb = NULL;
float size[3], vec[8][3];
+   unsigned int pos;
 
if (ob->type == OB_MESH) {
bb = BKE_mesh_boundbox_get(ob);
@@ -8440,6 +8424,10 @@ void draw_rigidbody_shape(Object *ob, const unsigned 
char ob_wire_col[4])
case RB_SHAPE_BOX:
BKE_boundbox_calc_size_aabb(bb, size);

+   pos = add_attrib(immVertexFormat(), "pos", GL_FLOAT, 3, 
KEEP_FLOAT);
+   immBindBuiltinProgram(GPU_SHADER_3D_UNIFORM_COLOR);
+   if (ob_wire_col) immUniformColor3ubv(ob_wire_col);
+
vec[0][0] = vec[1][0] = vec[2][0] = vec[3][0] = 
-size[0];
vec[4][0] = vec[5][0] = vec[6][0] = vec[7][0] = 
+size[0];
vec[0][1] = vec[1][1] = vec[4][1] = vec[5][1] = 
-size[1];
@@ -8447,7 +8435,8 @@ void draw_rigidbody_shape(Object *ob, const unsigned char 
ob_wire_col[4])
vec[0][2] = vec[3][2] = vec[4][2] = vec[7][2] = 
-size[2];
vec[1][2] = vec[2][2] = vec[5][2] = vec[6][2] = 
+size[2];

-   draw_box(vec, false);
+   imm_draw_box(vec, false, pos);
+   immUnbindProgram();
break;
case RB_SHAPE_SPHERE:
imm_draw_bb(bb, OB_BOUND_SPHERE, true, ob_wire_col);
@@ -8900,13 +8889,16 @@ afterdraw:
if (!render_override) {
BoundBox bb;
float p0[3], p1[3];
+   unsigned int pos = add_attrib(immVertexFormat(), "pos", 
GL_FLOAT, 3, KEEP_FLOAT);
+   immBindBuiltinProgram(GPU_SHADER_3D_UNIFORM_COLOR);
+   if (ob_wire_col) immUniformColor3ubv(ob_wire_col);
 
/* draw max domain bounds */
if ((sds->flags & MOD_SMOKE_ADAPTIVE_DOMAIN)) {
VECSUBFAC(p0, sds->p0, sds->cell_size, 
sds->adapt_res);
VECADDFAC(p1, sds->p1, sds->cell_size, 
sds->adapt_res);
BKE_boundbox_init_from_minmax(, p0, p1);
-   draw_box(bb.vec, false);
+   imm_draw_box(bb.vec, false, pos);
}
 
/* draw a single voxel to hint the user about the 
resolution of the fluid */
@@ -8920,7 +8912,9 @@ afterdraw:
}
 
BKE_boundbox_init_from_minmax(, p0, p1);
-   draw_box(bb.vec, false);
+   imm_draw_box(bb.vec, false, pos);
+
+   immUnbindProgram();
}
 
/* don't show smoke before simulation starts, this could be 
made an option in the future */

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [6ce1d71914e] blender2.8: OpenGL: Convert drawobject.c (cont)

2017-03-09 Thread Clément Foucault
Commit: 6ce1d71914e919ea3bcb9d9529193d8f247e0a9d
Author: Clément Foucault
Date:   Thu Mar 9 19:12:13 2017 +0100
Branches: blender2.8
https://developer.blender.org/rB6ce1d71914e919ea3bcb9d9529193d8f247e0a9d

OpenGL: Convert drawobject.c (cont)

Remove drawcircball
Convert texturespace, editfont, metaball (except for displist usage)

===

M   source/blender/editors/include/ED_view3d.h
M   source/blender/editors/space_view3d/drawobject.c

===

diff --git a/source/blender/editors/include/ED_view3d.h 
b/source/blender/editors/include/ED_view3d.h
index b1b78a9876f..319d5afe0f3 100644
--- a/source/blender/editors/include/ED_view3d.h
+++ b/source/blender/editors/include/ED_view3d.h
@@ -281,7 +281,6 @@ float ED_view3d_radius_to_dist(
 const char persp, const bool use_aspect,
 const float radius);
 
-void drawcircball(int mode, const float cent[3], float rad, const float 
tmat[4][4]);
 void imm_drawcircball(const float cent[3], float rad, const float tmat[4][4], 
unsigned pos);
 
 /* backbuffer select and draw support */
diff --git a/source/blender/editors/space_view3d/drawobject.c 
b/source/blender/editors/space_view3d/drawobject.c
index 6852e171f56..973055a7d97 100644
--- a/source/blender/editors/space_view3d/drawobject.c
+++ b/source/blender/editors/space_view3d/drawobject.c
@@ -780,19 +780,6 @@ static void circball_array_fill(float 
verts[CIRCLE_RESOL][3], const float cent[3
}
 }
 
-/* DEPRECATED use imm_drawcircball instead */
-void drawcircball(int mode, const float cent[3], float rad, const float 
tmat[4][4])
-{
-   float verts[CIRCLE_RESOL][3];
-
-   circball_array_fill(verts, cent, rad, tmat);
-
-   glEnableClientState(GL_VERTEX_ARRAY);
-   glVertexPointer(3, GL_FLOAT, 0, verts);
-   glDrawArrays(mode, 0, CIRCLE_RESOL);
-   glDisableClientState(GL_VERTEX_ARRAY);
-}
-
 void imm_drawcircball(const float cent[3], float rad, const float tmat[4][4], 
unsigned pos)
 {
float verts[CIRCLE_RESOL][3];
@@ -5599,7 +5586,8 @@ static void draw_particle_arrays(int draw_as, int 
totpoint, int ob_dt, int selec
}
 }
 static void draw_particle(ParticleKey *state, int draw_as, short draw, float 
pixsize,
-  float imat[4][4], const float draw_line[2], 
ParticleBillboardData *bb, ParticleDrawData *pdd)
+  float imat[4][4], const float draw_line[2], 
ParticleBillboardData *bb, ParticleDrawData *pdd,
+  unsigned int pos)
 {
float vec[3], vec2[3];
float *vd = NULL;
@@ -5709,7 +5697,7 @@ static void draw_particle(ParticleKey *state, int 
draw_as, short draw, float pix
}
case PART_DRAW_CIRC:
{
-   drawcircball(GL_LINE_LOOP, state->co, pixsize, imat);
+   imm_drawcircball(state->co, pixsize, imat, pos);
break;
}
case PART_DRAW_BB:
@@ -5750,7 +5738,8 @@ static void draw_particle(ParticleKey *state, int 
draw_as, short draw, float pix
 static void draw_particle_data(ParticleSystem *psys, RegionView3D *rv3d,
ParticleKey *state, int draw_as,
float imat[4][4], ParticleBillboardData *bb, 
ParticleDrawData *pdd,
-   const float ct, const float pa_size, const 
float r_tilt, const float pixsize_scale)
+   const float ct, const float pa_size, const 
float r_tilt, const float pixsize_scale,
+   unsigned int pos)
 {
ParticleSettings *part = psys->part;
float pixsize;
@@ -5781,7 +5770,7 @@ static void draw_particle_data(ParticleSystem *psys, 
RegionView3D *rv3d,
 
pixsize = ED_view3d_pixel_size(rv3d, state->co) * pixsize_scale;
 
-   draw_particle(state, draw_as, part->draw, pixsize, imat, 
part->draw_line, bb, pdd);
+   draw_particle(state, draw_as, part->draw, pixsize, imat, 
part->draw_line, bb, pdd, pos);
 }
 /* unified drawing of all new particle systems draw types except dupli ob & 
group
  * mostly tries to use vertex arrays for speed
@@ -5818,6 +5807,7 @@ static void draw_new_particle_system(Scene *scene, View3D 
*v3d, RegionView3D *rv
GLint polygonmode[2];
char numstr[32];
unsigned char tcol[4] = {0, 0, 0, 255};
+   unsigned int pos;
 
 /* 1. */
if (part == NULL || !psys_check_enabled(ob, psys, G.is_rendering))
@@ -6062,6 +6052,11 @@ static void draw_new_particle_system(Scene *scene, 
View3D *v3d, RegionView3D *rv
totpoint = pdd->totpoint; /* draw data is up to date */
}
else {
+   if ((draw_as == PART_DRAW_CIRC) || (part->draw & 
PART_DRAW_SIZE)) {
+   pos = add_attrib(immVertexFormat(), "pos", 

[Bf-blender-cvs] [85fa1403f46] blender2.8: OpenGL: Convert drawobject.c (cont)

2017-03-09 Thread Clément Foucault
Commit: 85fa1403f4668d0001f8b722e5f3dde61dfca73c
Author: Clément Foucault
Date:   Thu Mar 9 22:10:18 2017 +0100
Branches: blender2.8
https://developer.blender.org/rB85fa1403f4668d0001f8b722e5f3dde61dfca73c

OpenGL: Convert drawobject.c (cont)

-Softbody matrix
-EditCurve/NURBS

===

M   source/blender/editors/space_view3d/drawobject.c

===

diff --git a/source/blender/editors/space_view3d/drawobject.c 
b/source/blender/editors/space_view3d/drawobject.c
index 973055a7d97..1ca11cbb9a8 100644
--- a/source/blender/editors/space_view3d/drawobject.c
+++ b/source/blender/editors/space_view3d/drawobject.c
@@ -6689,130 +6689,137 @@ static void ob_draw_RE_motion(float com[3], float 
rotscale[3][3], float itw, flo
float tw = itw * drw_size;
float th = ith * drw_size;
 
-   glBegin(GL_LINES);
+   VertexFormat *format = immVertexFormat();
+   unsigned int pos = add_attrib(format, "pos", GL_FLOAT, 3, KEEP_FLOAT);
+   unsigned int col = add_attrib(format, "color", GL_UNSIGNED_BYTE, 4, 
NORMALIZE_INT_TO_FLOAT);
+   immBindBuiltinProgram(GPU_SHADER_3D_FLAT_COLOR);
 
-   glColor4ub(0x7F, 0x00, 0x00, 155);
+   immBegin(GL_LINES, 30);
+
+   immAttrib4ub(col, 0x7F, 0x00, 0x00, 155);
root[1] = root[2] = 0.0f;
root[0] = -drw_size;
mul_m3_v3(tr, root);
add_v3_v3(root, com);
-   glVertex3fv(root);
+   immVertex3fv(pos, root);
tip[1] = tip[2] = 0.0f;
tip[0] = drw_size;
mul_m3_v3(tr, tip);
add_v3_v3(tip, com);
-   glVertex3fv(tip);
+   immVertex3fv(pos, tip);
 
root[1] = 0.0f; root[2] = tw;
root[0] = th;
mul_m3_v3(tr, root);
add_v3_v3(root, com);
-   glVertex3fv(root);
-   glVertex3fv(tip);
+   immVertex3fv(pos, root);
+   immVertex3fv(pos, tip);
 
root[1] = 0.0f; root[2] = -tw;
root[0] = th;
mul_m3_v3(tr, root);
add_v3_v3(root, com);
-   glVertex3fv(root);
-   glVertex3fv(tip);
+   immVertex3fv(pos, root);
+   immVertex3fv(pos, tip);
 
root[1] = tw; root[2] = 0.0f;
root[0] = th;
mul_m3_v3(tr, root);
add_v3_v3(root, com);
-   glVertex3fv(root);
-   glVertex3fv(tip);
+   immVertex3fv(pos, root);
+   immVertex3fv(pos, tip);
 
root[1] = -tw; root[2] = 0.0f;
root[0] = th;
mul_m3_v3(tr, root);
add_v3_v3(root, com);
-   glVertex3fv(root);
-   glVertex3fv(tip);
+   immVertex3fv(pos, root);
+   immVertex3fv(pos, tip);
 
-   glColor4ub(0x00, 0x7F, 0x00, 155);
+   immAttrib4ub(col, 0x00, 0x7F, 0x00, 155);
 
root[0] = root[2] = 0.0f;
root[1] = -drw_size;
mul_m3_v3(tr, root);
add_v3_v3(root, com);
-   glVertex3fv(root);
+   immVertex3fv(pos, root);
tip[0] = tip[2] = 0.0f;
tip[1] = drw_size;
mul_m3_v3(tr, tip);
add_v3_v3(tip, com);
-   glVertex3fv(tip);
+   immVertex3fv(pos, tip);
 
root[0] = 0.0f; root[2] = tw;
root[1] = th;
mul_m3_v3(tr, root);
add_v3_v3(root, com);
-   glVertex3fv(root);
-   glVertex3fv(tip);
+   immVertex3fv(pos, root);
+   immVertex3fv(pos, tip);
 
root[0] = 0.0f; root[2] = -tw;
root[1] = th;
mul_m3_v3(tr, root);
add_v3_v3(root, com);
-   glVertex3fv(root);
-   glVertex3fv(tip);
+   immVertex3fv(pos, root);
+   immVertex3fv(pos, tip);
 
root[0] = tw; root[2] = 0.0f;
root[1] = th;
mul_m3_v3(tr, root);
add_v3_v3(root, com);
-   glVertex3fv(root);
-   glVertex3fv(tip);
+   immVertex3fv(pos, root);
+   immVertex3fv(pos, tip);
 
root[0] = -tw; root[2] = 0.0f;
root[1] = th;
mul_m3_v3(tr, root);
add_v3_v3(root, com);
-   glVertex3fv(root);
-   glVertex3fv(tip);
+   immVertex3fv(pos, root);
+   immVertex3fv(pos, tip);
 
-   glColor4ub(0x00, 0x00, 0x7F, 155);
+   immAttrib4ub(col, 0x00, 0x00, 0x7F, 155);
root[0] = root[1] = 0.0f;
root[2] = -drw_size;
mul_m3_v3(tr, root);
add_v3_v3(root, com);
-   glVertex3fv(root);
+   immVertex3fv(pos, root);
tip[0] = tip[1] = 0.0f;
tip[2] = drw_size;
mul_m3_v3(tr, tip);
add_v3_v3(tip, com);
-   glVertex3fv(tip);
+   immVertex3fv(pos, tip);
 
root[0] = 0.0f; root[1] = tw;
root[2] = th;
mul_m3_v3(tr, root);
add_v3_v3(root, com);
-   glVertex3fv(root);
-   glVertex3fv(tip);
+   immVertex3fv(pos, root);
+   immVertex3fv(pos, tip);
 
root[0] = 0.0f; root[1] = -tw;
root[2] = th;
mul_m3_v3(tr, root);
add_v3_v3(root, com);
-   glVertex3fv(root);
-   glVertex3fv(tip);
+   immVertex3fv(pos, root);
+   

[Bf-blender-cvs] [55a56a31a03] blender2.8: Merge branch 'master' into blender2.8

2017-03-09 Thread Campbell Barton
Commit: 55a56a31a03ffba115c326c1061762434a72a690
Author: Campbell Barton
Date:   Fri Mar 10 06:16:15 2017 +1100
Branches: blender2.8
https://developer.blender.org/rB55a56a31a03ffba115c326c1061762434a72a690

Merge branch 'master' into blender2.8

Manually merged viewport xray changes

===



===

diff --cc source/blender/editors/space_view3d/drawobject.c
index bd90f5c79a4,898f155cc92..6852e171f56
--- a/source/blender/editors/space_view3d/drawobject.c
+++ b/source/blender/editors/space_view3d/drawobject.c
@@@ -9131,6 -8174,50 +9131,48 @@@ afterdraw
ED_view3d_clear_mats_rv3d(rv3d);
  }
  
+ 
+ /**
+  * Drawing for selection picking,
+  * caller must have called 'GPU_select_load_id(base->selcode)' first.
+  */
 -void draw_object_select(Scene *scene, ARegion *ar, View3D *v3d, Base *base, 
const short dflag)
++void draw_object_select(Scene *scene, SceneLayer *sl, ARegion *ar, View3D 
*v3d, Base *base, const short dflag)
+ {
+   BLI_assert(dflag & DRAW_PICKING && dflag & DRAW_CONSTCOLOR);
 -  draw_object(scene, ar, v3d, base, dflag);
++  draw_object(scene, sl, ar, v3d, base, dflag);
+ 
+   /* we draw duplicators for selection too */
+   if ((base->object->transflag & OB_DUPLI)) {
+   ListBase *lb;
+   DupliObject *dob;
+   Base tbase;
+ 
 -  tbase.flag = OB_FROMDUPLI;
++  tbase.flag_legacy = OB_FROMDUPLI;
+   lb = object_duplilist(G.main->eval_ctx, scene, base->object);
+ 
+   for (dob = lb->first; dob; dob = dob->next) {
+   float omat[4][4];
 -  char dt;
 -  short dtx;
+ 
+   tbase.object = dob->ob;
+   copy_m4_m4(omat, dob->ob->obmat);
+   copy_m4_m4(dob->ob->obmat, dob->mat);
+ 
+   /* extra service: draw the duplicator in drawtype of 
parent */
+   /* MIN2 for the drawtype to allow bounding box objects 
in groups for lods */
 -  dt = tbase.object->dt;   tbase.object->dt = 
MIN2(tbase.object->dt, base->object->dt);
 -  dtx = tbase.object->dtx; tbase.object->dtx = 
base->object->dtx;
++  char dt = tbase.object->dt;tbase.object->dt = 
MIN2(tbase.object->dt, base->object->dt);
++  short dtx = tbase.object->dtx; tbase.object->dtx = 
base->object->dtx;
+ 
 -  draw_object(scene, ar, v3d, , dflag);
++  draw_object(scene, sl, ar, v3d, , dflag);
+ 
+   tbase.object->dt = dt;
+   tbase.object->dtx = dtx;
+ 
+   copy_m4_m4(dob->ob->obmat, omat);
+   }
+   free_object_duplilist(lb);
+   }
+ }
+ 
  /* * BACKBUF SEL (BBS) * */
  
  static void bbs_obmode_mesh_verts__mapFunc(void *userData, int index, const 
float co[3],
diff --cc source/blender/editors/space_view3d/view3d_draw_legacy.c
index 51963778ef8,3fb2761d40e..42ecacd4bfc
--- a/source/blender/editors/space_view3d/view3d_draw_legacy.c
+++ b/source/blender/editors/space_view3d/view3d_draw_legacy.c
@@@ -101,7 -100,7 +101,8 @@@
  #include "GPU_material.h"
  #include "GPU_compositing.h"
  #include "GPU_extensions.h"
 +#include "GPU_immediate.h"
+ #include "GPU_select.h"
  
  #include "view3d_intern.h"  /* own include */
  
@@@ -908,6 -2024,35 +909,35 @@@ static void view3d_draw_xraytransp(Scen
glDepthMask(GL_TRUE);
  }
  
+ /* clears zbuffer and draws it over,
+  * note that in the select version we don't care about transparent flag as 
with regular drawing */
 -static void view3d_draw_xray_select(Scene *scene, ARegion *ar, View3D *v3d, 
bool *clear)
++static void view3d_draw_xray_select(Scene *scene, SceneLayer *sl, ARegion 
*ar, View3D *v3d, bool *clear)
+ {
+   /* Not ideal, but we need to read from the previous depths before 
clearing
+* otherwise we could have a function to load the depths after drawing.
+*
+* Clearing the depth buffer isn't all that common between drawing 
objects so accept this for now.
+*/
+   if (U.gpu_select_pick_deph) {
+   GPU_select_load_id(-1);
+   }
+ 
+   View3DAfter *v3da;
+   if (*clear && v3d->zbuf) {
+   glClear(GL_DEPTH_BUFFER_BIT);
+   *clear = false;
+   }
+ 
+   v3d->xray = true;
+   while ((v3da = BLI_pophead(>afterdraw_xray))) {
+   if (GPU_select_load_id(v3da->base->selcol)) {
 -  draw_object_select(scene, ar, v3d, v3da->base, 
v3da->dflag);
++  draw_object_select(scene, sl, ar, v3d, v3da->base, 
v3da->dflag);
+   }
+   MEM_freeN(v3da);
+   }
+   v3d->xray = false;
+ }
+ 
  /* *** */
  
  /*
@@@ 

[Bf-blender-cvs] [711ac904816] blender2.8: Merge branch 'master' into blender2.8

2017-03-09 Thread Campbell Barton
Commit: 711ac904816cb4d5e19ed9302b6c99b5aa4eaddd
Author: Campbell Barton
Date:   Fri Mar 10 06:11:50 2017 +1100
Branches: blender2.8
https://developer.blender.org/rB711ac904816cb4d5e19ed9302b6c99b5aa4eaddd

Merge branch 'master' into blender2.8

===



===



___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [9db17849292] temp-workspace-multi-window: Add/use template for browsing layout-types of a workspace/window combination

2017-03-09 Thread Julian Eisel
Commit: 9db17849292d48e01fb80c59c74c0a80f5614adf
Author: Julian Eisel
Date:   Thu Mar 9 19:09:15 2017 +0100
Branches: temp-workspace-multi-window
https://developer.blender.org/rB9db17849292d48e01fb80c59c74c0a80f5614adf

Add/use template for browsing layout-types of a workspace/window combination

Tried adding a more generic template for this first, but this is really
such a special case that it would need to have quite a bunch of
exceptions.
Basically we're showing the active layer-instance of the workspace in
the text button and within the menu, the layout-type list of the
workspace and their previews from the screen wrapped by the
layout-instance :S

Also made renaming work properly.

===

M   release/scripts/startup/bl_ui/space_info.py
M   source/blender/blenkernel/BKE_workspace.h
M   source/blender/blenkernel/intern/workspace.c
M   source/blender/editors/include/UI_interface.h
M   source/blender/editors/interface/interface_templates.c
M   source/blender/makesdna/dna_workspace_types.h
M   source/blender/makesrna/intern/rna_ui_api.c

===

diff --git a/release/scripts/startup/bl_ui/space_info.py 
b/release/scripts/startup/bl_ui/space_info.py
index 1d330b1e019..7c4f85a0d94 100644
--- a/release/scripts/startup/bl_ui/space_info.py
+++ b/release/scripts/startup/bl_ui/space_info.py
@@ -45,7 +45,10 @@ class INFO_HT_header(Header):
 layout.separator()
 else:
 layout.template_ID(window, "workspace", 
new="workspace.workspace_new", unlink="workspace.workspace_delete")
-layout.template_ID_preview(window, "screen", window, "screens", 
new="screen.new", unlink="screen.delete", rows=2, cols=6)
+row = layout.row(align=True)
+row.template_layouts(window, "workspace")
+row.operator("screen.new", text="", icon='ZOOMIN')
+row.operator("screen.delete", text="", icon='X')
 
 if hasattr(workspace, 'object_mode'):
 act_mode_item = 
bpy.types.Object.bl_rna.properties['mode'].enum_items[workspace.object_mode]
diff --git a/source/blender/blenkernel/BKE_workspace.h 
b/source/blender/blenkernel/BKE_workspace.h
index 7dd3e7ac2f6..9ddd4423dcd 100644
--- a/source/blender/blenkernel/BKE_workspace.h
+++ b/source/blender/blenkernel/BKE_workspace.h
@@ -60,6 +60,7 @@ void BKE_workspace_remove(WorkSpace *workspace, struct Main 
*bmain);
 
 WorkSpaceLayout *BKE_workspace_layout_add_from_type(
 WorkSpaceHook *hook, WorkSpaceLayoutType *type, struct bScreen 
*screen) ATTR_NONNULL() ATTR_WARN_UNUSED_RESULT;
+void BKE_workspace_layout_rename(WorkSpace *workspace, WorkSpaceLayoutType 
*layout_type, const char *name) ATTR_NONNULL();
 void BKE_workspace_layout_remove(WorkSpace *workspace, WorkSpaceLayout 
*layout, struct Main *bmain) ATTR_NONNULL();
 WorkSpaceLayoutType *BKE_workspace_layout_type_add(WorkSpace *workspace, const 
char *name,
struct ScreenLayoutData 
layout_blueprint) ATTR_NONNULL();
diff --git a/source/blender/blenkernel/intern/workspace.c 
b/source/blender/blenkernel/intern/workspace.c
index 98b5a3c037a..5083ca3db0f 100644
--- a/source/blender/blenkernel/intern/workspace.c
+++ b/source/blender/blenkernel/intern/workspace.c
@@ -28,6 +28,8 @@
 
 #include "BLI_utildefines.h"
 #include "BLI_listbase.h"
+#include "BLI_string.h"
+#include "BLI_string_utils.h"
 
 #include "BKE_global.h"
 #include "BKE_library.h"
@@ -114,9 +116,9 @@ WorkSpaceLayoutType *BKE_workspace_layout_type_add(
 {
WorkSpaceLayoutType *layout_type = MEM_mallocN(sizeof(*layout_type), 
__func__);
 
-   layout_type->name = name; /* XXX should probably copy name */
layout_type->layout_blueprint = layout_blueprint;
-   BLI_addhead(>layout_types, layout_type);
+   BKE_workspace_layout_rename(workspace, layout_type, name);
+   BLI_addtail(>layout_types, layout_type);
 
return layout_type;
 }
@@ -140,6 +142,13 @@ void BKE_workspace_layout_type_remove(WorkSpace 
*workspace, WorkSpaceLayoutType
BLI_freelinkN(>layout_types, layout_type);
 }
 
+void BKE_workspace_layout_rename(WorkSpace *workspace, WorkSpaceLayoutType 
*layout_type, const char *name)
+{
+   BLI_strncpy(layout_type->name, name, sizeof(layout_type->name));
+   BLI_uniquename(>layout_types, layout_type, "Layout", '.', 
offsetof(WorkSpaceLayoutType, name),
+  sizeof(layout_type->name));
+}
+
 /**
  * Removes all variations of the layout-type of \a layout.
  */
diff --git a/source/blender/editors/include/UI_interface.h 
b/source/blender/editors/include/UI_interface.h
index 0df5e6ddb29..e51ea3deef6 100644
--- a/source/blender/editors/include/UI_interface.h
+++ b/source/blender/editors/include/UI_interface.h
@@ -917,6 +917,7 @@ void uiTemplateIDPreview(uiLayout *layout, struct bContext 
*C, struct PointerRNA
   

[Bf-blender-cvs] [aca29bcc65d] blender2.8: Immediate Mode: Fix text color for Info and Console editors

2017-03-09 Thread Dalai Felinto
Commit: aca29bcc65d193ba38c50f375c6b390910220b9d
Author: Dalai Felinto
Date:   Thu Mar 9 19:20:31 2017 +0100
Branches: blender2.8
https://developer.blender.org/rBaca29bcc65d193ba38c50f375c6b390910220b9d

Immediate Mode: Fix text color for Info and Console editors

Bug introduced in rB4b365064cfbd

===

M   source/blender/editors/space_info/textview.c

===

diff --git a/source/blender/editors/space_info/textview.c 
b/source/blender/editors/space_info/textview.c
index 8ee488ac591..bc9d7365e4e 100644
--- a/source/blender/editors/space_info/textview.c
+++ b/source/blender/editors/space_info/textview.c
@@ -251,6 +251,7 @@ static int console_draw_string(ConsoleDrawContext *cdc, 
const char *str, int str
immUnbindProgram();
}
 
+   BLF_color3ubv(cdc->font_id, fg);
BLF_position(cdc->font_id, cdc->xy[0], cdc->lofs + cdc->xy[1], 
0);
BLF_draw_mono(cdc->font_id, str, str_len, cdc->cwidth);

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [4c746bb3b02] blender2.8: Immediate Mode: Updated commented out code from textview.c

2017-03-09 Thread Dalai Felinto
Commit: 4c746bb3b02552a4571cb7bb2369185f86a66935
Author: Dalai Felinto
Date:   Thu Mar 9 19:21:08 2017 +0100
Branches: blender2.8
https://developer.blender.org/rB4c746bb3b02552a4571cb7bb2369185f86a66935

Immediate Mode: Updated commented out code from textview.c

===

M   source/blender/editors/space_info/textview.c

===

diff --git a/source/blender/editors/space_info/textview.c 
b/source/blender/editors/space_info/textview.c
index bc9d7365e4e..1872a8a0545 100644
--- a/source/blender/editors/space_info/textview.c
+++ b/source/blender/editors/space_info/textview.c
@@ -207,7 +207,7 @@ static int console_draw_string(ConsoleDrawContext *cdc, 
const char *str, int str
 
if (cdc->sel[0] != cdc->sel[1]) {
console_step_sel(cdc, -initial_offset);
-   // glColor4ub(255, 0, 0, 96); // debug
+   /* BLF_color3ub(cdc->font_id, 255, 0, 0); // debug */
console_draw_sel(s, cdc->sel, cdc->xy, len, 
cdc->cwidth, cdc->lheight, bg_sel);
}
 
@@ -222,7 +222,7 @@ static int console_draw_string(ConsoleDrawContext *cdc, 
const char *str, int str

if (cdc->sel[0] != cdc->sel[1]) {
console_step_sel(cdc, len);
-   // glColor4ub(0, 255, 0, 96); // debug
+   /* BLF_color3ub(cdc->font_id, 0, 255, 0); // 
debug */
console_draw_sel(s, cdc->sel, cdc->xy, len, 
cdc->cwidth, cdc->lheight, bg_sel);
}
 
@@ -261,7 +261,7 @@ static int console_draw_string(ConsoleDrawContext *cdc, 
const char *str, int str
isel[0] = str_len - cdc->sel[1];
isel[1] = str_len - cdc->sel[0];
 
-   // glColor4ub(255, 255, 0, 96); // debug
+   /* BLF_color3ub(cdc->font_id, 255, 255, 0); // debug */
console_draw_sel(str, isel, cdc->xy, str_len, 
cdc->cwidth, cdc->lheight, bg_sel);
console_step_sel(cdc, -(str_len + 1));
}

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [62cc226101f] master: 3D View: x-ray support for depth picking

2017-03-09 Thread Campbell Barton
Commit: 62cc226101fab61b5ae2f18f8cbe8f1e5ac6ce82
Author: Campbell Barton
Date:   Fri Mar 10 03:15:58 2017 +1100
Branches: master
https://developer.blender.org/rB62cc226101fab61b5ae2f18f8cbe8f1e5ac6ce82

3D View: x-ray support for depth picking

Selection loop would draw the selection ignoring xray.
Now draw in a separate pass after clearing the depth buffer,
as with regular drawing.

Also disable depth sorting,
caller can sort the hit-list by depth if needed.

===

M   source/blender/editors/space_view3d/drawobject.c
M   source/blender/editors/space_view3d/view3d_draw.c
M   source/blender/editors/space_view3d/view3d_intern.h
M   source/blender/editors/space_view3d/view3d_view.c
M   source/blender/gpu/intern/gpu_select_pick.c

===

diff --git a/source/blender/editors/space_view3d/drawobject.c 
b/source/blender/editors/space_view3d/drawobject.c
index 90d33dc5995..898f155cc92 100644
--- a/source/blender/editors/space_view3d/drawobject.c
+++ b/source/blender/editors/space_view3d/drawobject.c
@@ -8174,6 +8174,50 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, 
Base *base, const short
ED_view3d_clear_mats_rv3d(rv3d);
 }
 
+
+/**
+ * Drawing for selection picking,
+ * caller must have called 'GPU_select_load_id(base->selcode)' first.
+ */
+void draw_object_select(Scene *scene, ARegion *ar, View3D *v3d, Base *base, 
const short dflag)
+{
+   BLI_assert(dflag & DRAW_PICKING && dflag & DRAW_CONSTCOLOR);
+   draw_object(scene, ar, v3d, base, dflag);
+
+   /* we draw duplicators for selection too */
+   if ((base->object->transflag & OB_DUPLI)) {
+   ListBase *lb;
+   DupliObject *dob;
+   Base tbase;
+
+   tbase.flag = OB_FROMDUPLI;
+   lb = object_duplilist(G.main->eval_ctx, scene, base->object);
+
+   for (dob = lb->first; dob; dob = dob->next) {
+   float omat[4][4];
+   char dt;
+   short dtx;
+
+   tbase.object = dob->ob;
+   copy_m4_m4(omat, dob->ob->obmat);
+   copy_m4_m4(dob->ob->obmat, dob->mat);
+
+   /* extra service: draw the duplicator in drawtype of 
parent */
+   /* MIN2 for the drawtype to allow bounding box objects 
in groups for lods */
+   dt = tbase.object->dt;   tbase.object->dt = 
MIN2(tbase.object->dt, base->object->dt);
+   dtx = tbase.object->dtx; tbase.object->dtx = 
base->object->dtx;
+
+   draw_object(scene, ar, v3d, , dflag);
+
+   tbase.object->dt = dt;
+   tbase.object->dtx = dtx;
+
+   copy_m4_m4(dob->ob->obmat, omat);
+   }
+   free_object_duplilist(lb);
+   }
+}
+
 /* * BACKBUF SEL (BBS) * */
 
 static void bbs_obmode_mesh_verts__mapFunc(void *userData, int index, const 
float co[3],
diff --git a/source/blender/editors/space_view3d/view3d_draw.c 
b/source/blender/editors/space_view3d/view3d_draw.c
index 0c5cf1bd936..3fb2761d40e 100644
--- a/source/blender/editors/space_view3d/view3d_draw.c
+++ b/source/blender/editors/space_view3d/view3d_draw.c
@@ -100,6 +100,7 @@
 #include "GPU_material.h"
 #include "GPU_compositing.h"
 #include "GPU_extensions.h"
+#include "GPU_select.h"
 
 #include "view3d_intern.h"  /* own include */
 
@@ -2023,6 +2024,35 @@ static void view3d_draw_xraytransp(Scene *scene, ARegion 
*ar, View3D *v3d, const
glDepthMask(GL_TRUE);
 }
 
+/* clears zbuffer and draws it over,
+ * note that in the select version we don't care about transparent flag as 
with regular drawing */
+static void view3d_draw_xray_select(Scene *scene, ARegion *ar, View3D *v3d, 
bool *clear)
+{
+   /* Not ideal, but we need to read from the previous depths before 
clearing
+* otherwise we could have a function to load the depths after drawing.
+*
+* Clearing the depth buffer isn't all that common between drawing 
objects so accept this for now.
+*/
+   if (U.gpu_select_pick_deph) {
+   GPU_select_load_id(-1);
+   }
+
+   View3DAfter *v3da;
+   if (*clear && v3d->zbuf) {
+   glClear(GL_DEPTH_BUFFER_BIT);
+   *clear = false;
+   }
+
+   v3d->xray = true;
+   while ((v3da = BLI_pophead(>afterdraw_xray))) {
+   if (GPU_select_load_id(v3da->base->selcol)) {
+   draw_object_select(scene, ar, v3d, v3da->base, 
v3da->dflag);
+   }
+   MEM_freeN(v3da);
+   }
+   v3d->xray = false;
+}
+
 /* *** */
 
 /*
@@ -2487,6 +2517,58 @@ void ED_view3d_draw_depth(Scene *scene, ARegion *ar, 
View3D *v3d, bool alphaover
U.obcenter_dia = 

[Bf-blender-cvs] [01b2071c14d] blender2.8: Immediate Mode: Fix crash on text editor when going over suggestion list

2017-03-09 Thread Dalai Felinto
Commit: 01b2071c14d1be96b965e39138e008ae6cfb1d40
Author: Dalai Felinto
Date:   Thu Mar 9 18:12:21 2017 +0100
Branches: blender2.8
https://developer.blender.org/rB01b2071c14d1be96b965e39138e008ae6cfb1d40

Immediate Mode: Fix crash on text editor when going over suggestion list

===

M   source/blender/editors/space_text/text_draw.c

===

diff --git a/source/blender/editors/space_text/text_draw.c 
b/source/blender/editors/space_text/text_draw.c
index 3607bf90543..b6d71b8ccf9 100644
--- a/source/blender/editors/space_text/text_draw.c
+++ b/source/blender/editors/space_text/text_draw.c
@@ -1090,10 +1090,11 @@ static void draw_suggestion_list(const SpaceText *st, 
const TextDrawContext *tdc
w = st->cwidth * text_get_char_pos(st, str, len);

if (item == sel) {
+   unsigned int posi = add_attrib(immVertexFormat(), 
"pos", COMP_I32, 2, CONVERT_INT_TO_FLOAT);
immBindBuiltinProgram(GPU_SHADER_2D_UNIFORM_COLOR);
 
immUniformThemeColor(TH_SHADE2);
-   immRecti(pos, x + margin_x, y - 3, x + margin_x + w, y 
+ lheight - 3);
+   immRecti(posi, x + margin_x, y - 3, x + margin_x + w, y 
+ lheight - 3);
 
immUnbindProgram();
}

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [fc53c6f9538] blender2.8: Immediate Mode: text_draw.c 1/2

2017-03-09 Thread Dalai Felinto
Commit: fc53c6f95383835f33222b4b445a8c244432c7a1
Author: Dalai Felinto
Date:   Thu Mar 9 13:11:47 2017 +0100
Branches: blender2.8
https://developer.blender.org/rBfc53c6f95383835f33222b4b445a8c244432c7a1

Immediate Mode: text_draw.c 1/2

Note 1: renamed draw_cursor to draw_text_decoration, since it was drawing
cursor, margin, selection and line highlight

Note 2: commented out code update coming next

Part of T49043

===

M   source/blender/editors/space_text/text_draw.c

===

diff --git a/source/blender/editors/space_text/text_draw.c 
b/source/blender/editors/space_text/text_draw.c
index 1ae72f2e3e7..d3756ec7cce 100644
--- a/source/blender/editors/space_text/text_draw.c
+++ b/source/blender/editors/space_text/text_draw.c
@@ -49,6 +49,8 @@
 #include "BIF_gl.h"
 #include "BIF_glutil.h"
 
+#include "GPU_immediate.h"
+
 #include "UI_interface.h"
 #include "UI_resources.h"
 #include "UI_view2d.h"
@@ -123,38 +125,38 @@ static void txt_format_text(SpaceText *st)
 #endif
 
 /* Sets the current drawing color based on the format character specified */
-static void format_draw_color(char formatchar)
+static void format_draw_color(const TextDrawContext *tdc, char formatchar)
 {
switch (formatchar) {
case FMT_TYPE_WHITESPACE:
break;
case FMT_TYPE_SYMBOL:
-   UI_ThemeColor(TH_SYNTAX_S);
+   UI_FontThemeColor(tdc->font_id, TH_SYNTAX_S);
break;
case FMT_TYPE_COMMENT:
-   UI_ThemeColor(TH_SYNTAX_C);
+   UI_FontThemeColor(tdc->font_id, TH_SYNTAX_C);
break;
case FMT_TYPE_NUMERAL:
-   UI_ThemeColor(TH_SYNTAX_N);
+   UI_FontThemeColor(tdc->font_id, TH_SYNTAX_N);
break;
case FMT_TYPE_STRING:
-   UI_ThemeColor(TH_SYNTAX_L);
+   UI_FontThemeColor(tdc->font_id, TH_SYNTAX_L);
break;
case FMT_TYPE_DIRECTIVE:
-   UI_ThemeColor(TH_SYNTAX_D);
+   UI_FontThemeColor(tdc->font_id, TH_SYNTAX_D);
break;
case FMT_TYPE_SPECIAL:
-   UI_ThemeColor(TH_SYNTAX_V);
+   UI_FontThemeColor(tdc->font_id, TH_SYNTAX_V);
break;
case FMT_TYPE_RESERVED:
-   UI_ThemeColor(TH_SYNTAX_R);
+   UI_FontThemeColor(tdc->font_id, TH_SYNTAX_R);
break;
case FMT_TYPE_KEYWORD:
-   UI_ThemeColor(TH_SYNTAX_B);
+   UI_FontThemeColor(tdc->font_id, TH_SYNTAX_B);
break;
case FMT_TYPE_DEFAULT:
default:
-   UI_ThemeColor(TH_TEXT);
+   UI_FontThemeColor(tdc->font_id, TH_TEXT);
break;
}
 }
@@ -429,7 +431,7 @@ static int text_draw_wrapped(
/* Draw the visible portion of text on the overshot 
line */
for (a = fstart, ma = mstart; ma < mend; a++, ma += 
BLI_str_utf8_size_safe(str + ma)) {
if (use_syntax) {
-   if (fmt_prev != format[a]) 
format_draw_color(fmt_prev = format[a]);
+   if (fmt_prev != format[a]) 
format_draw_color(tdc, fmt_prev = format[a]);
}
x += text_font_draw_character_utf8(tdc, x, y, 
str + ma);
fpos++;
@@ -452,7 +454,7 @@ static int text_draw_wrapped(
/* Draw the remaining text */
for (a = fstart, ma = mstart; str[ma] && y > clip_min_y; a++, ma += 
BLI_str_utf8_size_safe(str + ma)) {
if (use_syntax) {
-   if (fmt_prev != format[a]) format_draw_color(fmt_prev = 
format[a]);
+   if (fmt_prev != format[a]) format_draw_color(tdc, 
fmt_prev = format[a]);
}
 
x += text_font_draw_character_utf8(tdc, x, y, str + ma);
@@ -505,7 +507,7 @@ static void text_draw(
char fmt_prev = 0xff;
 
for (a = 0; a < amount; a++) {
-   if (format[a] != fmt_prev) format_draw_color(fmt_prev = 
format[a]);
+   if (format[a] != fmt_prev) format_draw_color(tdc, 
fmt_prev = format[a]);
x += text_font_draw_character_utf8(tdc, x, y, in + 
str_shift);
str_shift += BLI_str_utf8_size_safe(in + str_shift);
}
@@ -908,9 +910,13 @@ static void draw_textscroll(const SpaceText *st, rcti 
*scroll, rcti *back)

[Bf-blender-cvs] [51737a2c8c7] blender2.8: Immediate Mode: text_draw.c 2/2

2017-03-09 Thread Dalai Felinto
Commit: 51737a2c8c7f6cdb305591c2a71fd93a8ac05b89
Author: Dalai Felinto
Date:   Thu Mar 9 18:01:35 2017 +0100
Branches: blender2.8
https://developer.blender.org/rB51737a2c8c7f6cdb305591c2a71fd93a8ac05b89

Immediate Mode: text_draw.c 2/2

Tackle the remaining parts of the code, mainly the commented out
function `draw_documentation`.

===

M   source/blender/editors/space_text/text_draw.c

===

diff --git a/source/blender/editors/space_text/text_draw.c 
b/source/blender/editors/space_text/text_draw.c
index d3756ec7cce..3607bf90543 100644
--- a/source/blender/editors/space_text/text_draw.c
+++ b/source/blender/editors/space_text/text_draw.c
@@ -968,26 +968,32 @@ static void draw_documentation(const SpaceText *st, 
ARegion *ar)
boxh = (DOC_HEIGHT + 1) * (st->lheight_dpi + TXT_LINE_SPACING);
 
/* Draw panel */
-   UI_ThemeColor(TH_BACK);
-   glRecti(x, y, x + boxw, y - boxh);
-   UI_ThemeColor(TH_SHADE1);
-   glBegin(GL_LINE_LOOP);
-   glVertex2i(x, y);
-   glVertex2i(x + boxw, y);
-   glVertex2i(x + boxw, y - boxh);
-   glVertex2i(x, y - boxh);
-   glEnd();
-   glBegin(GL_LINE_LOOP);
-   glVertex2i(x + boxw - 10, y - 7);
-   glVertex2i(x + boxw - 4, y - 7);
-   glVertex2i(x + boxw - 7, y - 2);
-   glEnd();
-   glBegin(GL_LINE_LOOP);
-   glVertex2i(x + boxw - 10, y - boxh + 7);
-   glVertex2i(x + boxw - 4, y - boxh + 7);
-   glVertex2i(x + boxw - 7, y - boxh + 2);
-   glEnd();
-   UI_ThemeColor(TH_TEXT);
+   unsigned int pos = add_attrib(immVertexFormat(), "pos", COMP_I32, 2, 
CONVERT_INT_TO_FLOAT);
+   immBindBuiltinProgram(GPU_SHADER_2D_UNIFORM_COLOR);
+
+   immUniformThemeColor(TH_BACK);
+   immRecti(pos, x, y, x + boxw, y - boxh);
+   immUniformThemeColor(TH_SHADE1);
+   immBegin(GL_LINE_LOOP, 4);
+   immVertex2i(pos, x, y);
+   immVertex2i(pos, x + boxw, y);
+   immVertex2i(pos, x + boxw, y - boxh);
+   immVertex2i(pos, x, y - boxh);
+   immEnd();
+   immBegin(GL_LINE_LOOP, 3);
+   immVertex2i(pos, x + boxw - 10, y - 7);
+   immVertex2i(pos, x + boxw - 4, y - 7);
+   immVertex2i(pos, x + boxw - 7, y - 2);
+   immEnd();
+   immBegin(GL_LINE_LOOP, 3);
+   immVertex2i(pos, x + boxw - 10, y - boxh + 7);
+   immVertex2i(pos, x + boxw - 4, y - boxh + 7);
+   immVertex2i(pos, x + boxw - 7, y - boxh + 2);
+   immEnd();
+
+   immUnbindProgram();
+
+   UI_FontThemeColor(tdc.font_id, TH_TEXT);
 
i = 0; br = DOC_WIDTH; lines = 0; // XXX -doc_scroll;
for (p = docs; *p; p++) {

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [8a6d055f373] blender2.8: Merge remote-tracking branch 'origin/master' into blender2.8

2017-03-09 Thread Dalai Felinto
Commit: 8a6d055f3734c8a0bfeb9b6256d25bfb414634e6
Author: Dalai Felinto
Date:   Thu Mar 9 17:10:06 2017 +0100
Branches: blender2.8
https://developer.blender.org/rB8a6d055f3734c8a0bfeb9b6256d25bfb414634e6

Merge remote-tracking branch 'origin/master' into blender2.8

===



===

diff --cc source/blender/editors/space_view3d/view3d_view.c
index 3a28b875f00,e8deaabec7a..bd2071165db
--- a/source/blender/editors/space_view3d/view3d_view.c
+++ b/source/blender/editors/space_view3d/view3d_view.c
@@@ -1166,10 -1187,9 +1181,10 @@@ void view3d_opengl_select_cache_end(voi
   */
  int view3d_opengl_select(
  ViewContext *vc, unsigned int *buffer, unsigned int bufsize, const 
rcti *input,
- int select_mode)
+ eV3DSelectMode select_mode)
  {
Scene *scene = vc->scene;
 +  SceneLayer *sl = vc->sl;
View3D *v3d = vc->v3d;
ARegion *ar = vc->ar;
rcti rect;

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [9de9f25b245] master: Cycles: add single program debug option for split kernel

2017-03-09 Thread Hristo Gueorguiev
Commit: 9de9f25b2455808335b5373003695610599daab7
Author: Hristo Gueorguiev
Date:   Wed Mar 8 17:56:06 2017 +0100
Branches: master
https://developer.blender.org/rB9de9f25b2455808335b5373003695610599daab7

Cycles: add single program debug option for split kernel

Single program generally compiles kernels faster (2-3 times), loads faster,
takes less drive space (2-3 times), and reduces the number of cached kernels.

===

M   intern/cycles/blender/addon/properties.py
M   intern/cycles/blender/addon/ui.py
M   intern/cycles/blender/blender_python.cpp
M   intern/cycles/device/opencl/opencl.h
M   intern/cycles/device/opencl/opencl_split.cpp
M   intern/cycles/device/opencl/opencl_util.cpp
M   intern/cycles/kernel/CMakeLists.txt
M   intern/cycles/util/util_debug.cpp
M   intern/cycles/util/util_debug.h

===

diff --git a/intern/cycles/blender/addon/properties.py 
b/intern/cycles/blender/addon/properties.py
index ca109734314..6c5bcf09305 100644
--- a/intern/cycles/blender/addon/properties.py
+++ b/intern/cycles/blender/addon/properties.py
@@ -695,6 +695,8 @@ class CyclesRenderSettings(bpy.types.PropertyGroup):
 update=devices_update_callback
 )
 
+cls.debug_opencl_kernel_single_program = BoolProperty(name="Single 
Program", default=False, update=devices_update_callback);
+
 cls.debug_use_opencl_debug = BoolProperty(name="Debug OpenCL", 
default=False)
 
 @classmethod
diff --git a/intern/cycles/blender/addon/ui.py 
b/intern/cycles/blender/addon/ui.py
index 7c1e3e270fb..3a689913230 100644
--- a/intern/cycles/blender/addon/ui.py
+++ b/intern/cycles/blender/addon/ui.py
@@ -1529,6 +1529,7 @@ class CyclesRender_PT_debug(CyclesButtonsPanel, Panel):
 col.label('OpenCL Flags:')
 col.prop(cscene, "debug_opencl_kernel_type", text="Kernel")
 col.prop(cscene, "debug_opencl_device_type", text="Device")
+col.prop(cscene, "debug_opencl_kernel_single_program", text="Single 
Program")
 col.prop(cscene, "debug_use_opencl_debug", text="Debug")
 
 
diff --git a/intern/cycles/blender/blender_python.cpp 
b/intern/cycles/blender/blender_python.cpp
index 75118c43747..fc0df3410c6 100644
--- a/intern/cycles/blender/blender_python.cpp
+++ b/intern/cycles/blender/blender_python.cpp
@@ -106,6 +106,7 @@ bool debug_flags_sync_from_scene(BL::Scene b_scene)
}
/* Synchronize other OpenCL flags. */
flags.opencl.debug = get_boolean(cscene, "debug_use_opencl_debug");
+   flags.opencl.single_program = get_boolean(cscene, 
"debug_opencl_kernel_single_program");
return flags.opencl.device_type != opencl_device_type ||
   flags.opencl.kernel_type != opencl_kernel_type;
 }
diff --git a/intern/cycles/device/opencl/opencl.h 
b/intern/cycles/device/opencl/opencl.h
index 6470cb8ff7e..be7e9fa5e30 100644
--- a/intern/cycles/device/opencl/opencl.h
+++ b/intern/cycles/device/opencl/opencl.h
@@ -90,6 +90,7 @@ public:
  cl_device_id device_id);
static void get_usable_devices(vector 
*usable_devices,
   bool force_all = false);
+   static bool use_single_program();
 };
 
 /* Thread safe cache for contexts and programs.
diff --git a/intern/cycles/device/opencl/opencl_split.cpp 
b/intern/cycles/device/opencl/opencl_split.cpp
index b651b4a848e..89ab19ca93b 100644
--- a/intern/cycles/device/opencl/opencl_split.cpp
+++ b/intern/cycles/device/opencl/opencl_split.cpp
@@ -77,16 +77,18 @@ public:
virtual bool load_kernels(const DeviceRequestedFeatures& 
requested_features,
  vector 
)
{
+   bool single_program = OpenCLInfo::use_single_program();
program_data_init = OpenCLDeviceBase::OpenCLProgram(this,
- "split_data_init",
- "kernel_data_init.cl",
+ single_program ? "split" : 
"split_data_init",
+ single_program ? 
"kernel_split.cl" : "kernel_data_init.cl",
  get_build_options(this, 
requested_features));
+
program_data_init.add_kernel(ustring("path_trace_data_init"));
programs.push_back(_data_init);
 
program_state_buffer_size = 
OpenCLDeviceBase::OpenCLProgram(this,
- "split_state_buffer_size",
- "kernel_state_buffer_size.cl",
+ single_program ? "split" : 
"split_state_buffer_size",
+ single_program ? 
"kernel_split.cl" : 

[Bf-blender-cvs] [06c051363b5] master: Cycles: split kernel_shadow_blocked to AO & DL parts

2017-03-09 Thread Hristo Gueorguiev
Commit: 06c051363b509f7c3c40a803b87739fe0e2a8576
Author: Hristo Gueorguiev
Date:   Wed Mar 8 17:39:40 2017 +0100
Branches: master
https://developer.blender.org/rB06c051363b509f7c3c40a803b87739fe0e2a8576

Cycles: split kernel_shadow_blocked to AO & DL parts

Reduces memory allocation for split kernel.

This allows for faster rendering due to bigger global size,
specially when GPU memory is limited.

Perfromance results:

 R9 290 total render time
BeforeAfter   Change
BMW  4:37  4:34   -1.1 %
Classroom   14:43 14:30   -1.5 %
Fishy Cat   11:20 11:04   -2.4 %
Koro12:11 12:04   -1.0 %
Pabellon Barcelona  22:01 20:44   -5.8 %
Pabellon Barcelona(*)   15:32 15:09   -2.5 %

(*) without glossy connected to volume

===

M   intern/cycles/device/device_split_kernel.cpp
M   intern/cycles/device/device_split_kernel.h
M   intern/cycles/kernel/CMakeLists.txt
M   intern/cycles/kernel/kernels/cpu/kernel_cpu.h
M   intern/cycles/kernel/kernels/cpu/kernel_cpu_impl.h
A   intern/cycles/kernel/kernels/opencl/kernel_shadow_blocked_ao.cl
R085intern/cycles/kernel/kernels/opencl/kernel_shadow_blocked.cl
intern/cycles/kernel/kernels/opencl/kernel_shadow_blocked_dl.cl
M   intern/cycles/kernel/kernels/opencl/kernel_split.cl
R065intern/cycles/kernel/split/kernel_shadow_blocked.h  
intern/cycles/kernel/split/kernel_shadow_blocked_ao.h
A   intern/cycles/kernel/split/kernel_shadow_blocked_dl.h
M   intern/cycles/kernel/split/kernel_split_data_types.h

===

diff --git a/intern/cycles/device/device_split_kernel.cpp 
b/intern/cycles/device/device_split_kernel.cpp
index 6ab0b3c5777..10a642ed4d0 100644
--- a/intern/cycles/device/device_split_kernel.cpp
+++ b/intern/cycles/device/device_split_kernel.cpp
@@ -42,7 +42,8 @@ DeviceSplitKernel::DeviceSplitKernel(Device *device) : 
device(device)
kernel_holdout_emission_blurring_pathtermination_ao = NULL;
kernel_subsurface_scatter = NULL;
kernel_direct_lighting = NULL;
-   kernel_shadow_blocked = NULL;
+   kernel_shadow_blocked_ao = NULL;
+   kernel_shadow_blocked_dl = NULL;
kernel_next_iteration_setup = NULL;
kernel_indirect_subsurface = NULL;
kernel_buffer_update = NULL;
@@ -66,7 +67,8 @@ DeviceSplitKernel::~DeviceSplitKernel()
delete kernel_holdout_emission_blurring_pathtermination_ao;
delete kernel_subsurface_scatter;
delete kernel_direct_lighting;
-   delete kernel_shadow_blocked;
+   delete kernel_shadow_blocked_ao;
+   delete kernel_shadow_blocked_dl;
delete kernel_next_iteration_setup;
delete kernel_indirect_subsurface;
delete kernel_buffer_update;
@@ -90,7 +92,8 @@ bool DeviceSplitKernel::load_kernels(const 
DeviceRequestedFeatures& requested_fe
LOAD_KERNEL(holdout_emission_blurring_pathtermination_ao);
LOAD_KERNEL(subsurface_scatter);
LOAD_KERNEL(direct_lighting);
-   LOAD_KERNEL(shadow_blocked);
+   LOAD_KERNEL(shadow_blocked_ao);
+   LOAD_KERNEL(shadow_blocked_dl);
LOAD_KERNEL(next_iteration_setup);
LOAD_KERNEL(indirect_subsurface);
LOAD_KERNEL(buffer_update);
@@ -222,12 +225,6 @@ bool DeviceSplitKernel::path_trace(DeviceTask *task,
bool activeRaysAvailable = true;
 
while(activeRaysAvailable) {
-   /* Twice the global work size of other kernels for
-* ckPathTraceKernel_shadow_blocked_direct_lighting. */
-   size_t global_size_shadow_blocked[2];
-   global_size_shadow_blocked[0] = global_size[0] * 2;
-   global_size_shadow_blocked[1] = global_size[1];
-
/* Do path-iteration in host [Enqueue Path-iteration 
kernels. */
for(int PathIter = 0; PathIter < 16; PathIter++) {
ENQUEUE_SPLIT_KERNEL(scene_intersect, 
global_size, local_size);
@@ -239,7 +236,8 @@ bool DeviceSplitKernel::path_trace(DeviceTask *task,

ENQUEUE_SPLIT_KERNEL(holdout_emission_blurring_pathtermination_ao, global_size, 
local_size);
ENQUEUE_SPLIT_KERNEL(subsurface_scatter, 
global_size, local_size);
ENQUEUE_SPLIT_KERNEL(direct_lighting, 
global_size, local_size);
-   ENQUEUE_SPLIT_KERNEL(shadow_blocked, 
global_size_shadow_blocked, local_size);
+   ENQUEUE_SPLIT_KERNEL(shadow_blocked_ao, 
global_size, local_size);
+   ENQUEUE_SPLIT_KERNEL(shadow_blocked_dl, 
global_size, local_size);

[Bf-blender-cvs] [57e26627c48] master: Cycles: SSS and Volume rendering in split kernel

2017-03-09 Thread Hristo Gueorguiev
Commit: 57e26627c485baab63e108821b2712d5e234ae7c
Author: Hristo Gueorguiev
Date:   Wed Mar 8 15:42:26 2017 +0100
Branches: master
https://developer.blender.org/rB57e26627c485baab63e108821b2712d5e234ae7c

Cycles: SSS and Volume rendering in split kernel

Decoupled ray marching is not supported yet.

Transparent shadows are always enabled for volume rendering.

Changes in kernel/bvh and kernel/geom are from Sergey.
This simiplifies code significantly, and prepares it for
record-all transparent shadow function in split kernel.

===

M   intern/cycles/device/device.h
M   intern/cycles/device/device_split_kernel.cpp
M   intern/cycles/device/device_split_kernel.h
M   intern/cycles/kernel/CMakeLists.txt
M   intern/cycles/kernel/bvh/bvh_shadow_all.h
M   intern/cycles/kernel/bvh/bvh_subsurface.h
M   intern/cycles/kernel/bvh/bvh_traversal.h
M   intern/cycles/kernel/bvh/bvh_volume.h
M   intern/cycles/kernel/bvh/bvh_volume_all.h
M   intern/cycles/kernel/bvh/qbvh_shadow_all.h
M   intern/cycles/kernel/bvh/qbvh_subsurface.h
M   intern/cycles/kernel/bvh/qbvh_traversal.h
M   intern/cycles/kernel/bvh/qbvh_volume.h
M   intern/cycles/kernel/bvh/qbvh_volume_all.h
M   intern/cycles/kernel/geom/geom_object.h
M   intern/cycles/kernel/kernel_path.h
A   intern/cycles/kernel/kernel_path_subsurface.h
M   intern/cycles/kernel/kernel_path_surface.h
M   intern/cycles/kernel/kernel_path_volume.h
M   intern/cycles/kernel/kernel_shader.h
M   intern/cycles/kernel/kernel_shadow.h
M   intern/cycles/kernel/kernel_subsurface.h
M   intern/cycles/kernel/kernel_types.h
M   intern/cycles/kernel/kernel_volume.h
M   intern/cycles/kernel/kernels/cpu/kernel_cpu.h
M   intern/cycles/kernel/kernels/cpu/kernel_cpu_impl.h
R083intern/cycles/kernel/kernels/opencl/kernel_background_buffer_update.cl  
intern/cycles/kernel/kernels/opencl/kernel_buffer_update.cl
A   intern/cycles/kernel/kernels/opencl/kernel_do_volume.cl
A   intern/cycles/kernel/kernels/opencl/kernel_indirect_background.cl
A   intern/cycles/kernel/kernels/opencl/kernel_indirect_subsurface.cl
A   intern/cycles/kernel/kernels/opencl/kernel_split.cl
A   intern/cycles/kernel/kernels/opencl/kernel_subsurface_scatter.cl
R092intern/cycles/kernel/split/kernel_background_buffer_update.h
intern/cycles/kernel/split/kernel_buffer_update.h
A   intern/cycles/kernel/split/kernel_do_volume.h
A   intern/cycles/kernel/split/kernel_indirect_background.h
A   intern/cycles/kernel/split/kernel_indirect_subsurface.h
M   intern/cycles/kernel/split/kernel_lamp_emission.h
M   intern/cycles/kernel/split/kernel_path_init.h
M   intern/cycles/kernel/split/kernel_queue_enqueue.h
M   intern/cycles/kernel/split/kernel_scene_intersect.h
M   intern/cycles/kernel/split/kernel_shader_eval.h
M   intern/cycles/kernel/split/kernel_shadow_blocked.h
M   intern/cycles/kernel/split/kernel_split_common.h
M   intern/cycles/kernel/split/kernel_split_data.h
M   intern/cycles/kernel/split/kernel_split_data_types.h
A   intern/cycles/kernel/split/kernel_subsurface_scatter.h

===

diff --git a/intern/cycles/device/device.h b/intern/cycles/device/device.h
index c740cada98b..18e8e274172 100644
--- a/intern/cycles/device/device.h
+++ b/intern/cycles/device/device.h
@@ -194,7 +194,7 @@ public:
if(!use_patch_evaluation) {
build_options += " -D__NO_PATCH_EVAL__";
}
-   if(!use_transparent) {
+   if(!use_transparent && !use_volume) {
build_options += " -D__NO_TRANSPARENT__";
}
return build_options;
diff --git a/intern/cycles/device/device_split_kernel.cpp 
b/intern/cycles/device/device_split_kernel.cpp
index b9705077fbf..6ab0b3c5777 100644
--- a/intern/cycles/device/device_split_kernel.cpp
+++ b/intern/cycles/device/device_split_kernel.cpp
@@ -35,13 +35,17 @@ DeviceSplitKernel::DeviceSplitKernel(Device *device) : 
device(device)
kernel_path_init = NULL;
kernel_scene_intersect = NULL;
kernel_lamp_emission = NULL;
+   kernel_do_volume = NULL;
kernel_queue_enqueue = NULL;
-   kernel_background_buffer_update = NULL;
+   kernel_indirect_background = NULL;
kernel_shader_eval = NULL;
kernel_holdout_emission_blurring_pathtermination_ao = NULL;
+   kernel_subsurface_scatter = NULL;
kernel_direct_lighting = NULL;
kernel_shadow_blocked = NULL;
kernel_next_iteration_setup = NULL;
+   kernel_indirect_subsurface = NULL;
+   kernel_buffer_update = NULL;
 }
 
 DeviceSplitKernel::~DeviceSplitKernel()
@@ -55,13 +59,17 @@ DeviceSplitKernel::~DeviceSplitKernel()
delete kernel_path_init;
delete kernel_scene_intersect;
   

[Bf-blender-cvs] [6c942db30de] master: Remove (ifdef) draw_documentation from text_draw.c

2017-03-09 Thread Dalai Felinto
Commit: 6c942db30dee14eb37229879656fa049a9ac6df6
Author: Dalai Felinto
Date:   Thu Mar 9 17:02:32 2017 +0100
Branches: master
https://developer.blender.org/rB6c942db30dee14eb37229879656fa049a9ac6df6

Remove (ifdef) draw_documentation from text_draw.c

This was no longer supported.

===

M   source/blender/editors/space_text/text_draw.c

===

diff --git a/source/blender/editors/space_text/text_draw.c 
b/source/blender/editors/space_text/text_draw.c
index 81605a80f69..70b5feac280 100644
--- a/source/blender/editors/space_text/text_draw.c
+++ b/source/blender/editors/space_text/text_draw.c
@@ -926,6 +926,7 @@ static void draw_textscroll(const SpaceText *st, rcti 
*scroll, rcti *back)
 
 /*** draw documentation ***/
 
+#if 0
 static void draw_documentation(const SpaceText *st, ARegion *ar)
 {
TextDrawContext tdc = {0};
@@ -1014,6 +1015,7 @@ static void draw_documentation(const SpaceText *st, 
ARegion *ar)
draw_documentation(st, ar);
}
 }
+#endif
 
 /*** draw suggestion list ***/
 
@@ -1487,7 +1489,7 @@ void draw_text_main(SpaceText *st, ARegion *ar)
/* draw other stuff */
draw_brackets(st, , ar);
draw_textscroll(st, , );
-   draw_documentation(st, ar);
+   /* draw_documentation(st, ar); - No longer supported */
draw_suggestion_list(st, , ar);

text_font_end();

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [e6065ce5f2c] temp-workspace-multi-window: Make fullscreen toggling work again

2017-03-09 Thread Julian Eisel
Commit: e6065ce5f2cb95c72b823fbe7d583a7e8b96f8d0
Author: Julian Eisel
Date:   Thu Mar 9 14:51:48 2017 +0100
Branches: temp-workspace-multi-window
https://developer.blender.org/rBe6065ce5f2cb95c72b823fbe7d583a7e8b96f8d0

Make fullscreen toggling work again

This still creates a new screen which would be nice to avoid, but quite
some logic depends on the creation of this screen, so leaving it there
for now.

===

M   source/blender/editors/workspace/screen_edit.c

===

diff --git a/source/blender/editors/workspace/screen_edit.c 
b/source/blender/editors/workspace/screen_edit.c
index 4cecaad74ce..de2c7c8b3a5 100644
--- a/source/blender/editors/workspace/screen_edit.c
+++ b/source/blender/editors/workspace/screen_edit.c
@@ -1468,7 +1468,7 @@ ScrArea *ED_screen_state_toggle(bContext *C, wmWindow 
*win, ScrArea *sa, const s
 
ED_screen_change(C, sc);
 
-   BKE_workspace_layout_remove(workspace, layout_old, 
CTX_data_main(C));
+   ED_workspace_layout_delete(C, win, workspace, layout_old);
 
/* After we've restored back to SCREENNORMAL, we have to wait 
with
 * screen handling as it uses the area coords which aren't 
updated yet.
@@ -1478,7 +1478,6 @@ ScrArea *ED_screen_state_toggle(bContext *C, wmWindow 
*win, ScrArea *sa, const s
}
else {
/* change from SCREENNORMAL to new state */
-   WorkSpaceLayout *layout_new;
ScreenLayoutData layout_data;
ScrArea *newa;
char newname[MAX_ID_NAME - 2];
@@ -1490,9 +1489,9 @@ ScrArea *ED_screen_state_toggle(bContext *C, wmWindow 
*win, ScrArea *sa, const s
BLI_snprintf(newname, sizeof(newname), "%s-%s", 
oldscreen->id.name + 2, "nonnormal");
 
ED_workspace_layout_add(workspace, >windows, newname, 
layout_data);
-   layout_new = 
BKE_workspace_hook_active_layout_get(win->workspace_hook);
+   sc = WM_window_get_active_screen(win);
+   ED_workspace_layout_make_single_area(sc, win->sizex, 
win->sizey);
 
-   sc = BKE_workspace_layout_screen_get(layout_new);
sc->state = state;
sc->redraws_flag = oldscreen->redraws_flag;
sc->temp = oldscreen->temp;

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [13ec25cd330] temp-workspace-multi-window: Fix drawing glitch in inactive windows after addin layout

2017-03-09 Thread Julian Eisel
Commit: 13ec25cd33096a423f472a8d95a1e03f4d20c6d9
Author: Julian Eisel
Date:   Thu Mar 9 13:39:42 2017 +0100
Branches: temp-workspace-multi-window
https://developer.blender.org/rB13ec25cd33096a423f472a8d95a1e03f4d20c6d9

Fix drawing glitch in inactive windows after addin layout

Was drawing area edges but not areas itself, had to manually trigger
redraws.
Also some cleanup, it doesn't make much sense to return some layout of
the bunch of ones that have been created.

===

M   source/blender/editors/include/ED_screen.h
M   source/blender/editors/workspace/screen_ops.c
M   source/blender/editors/workspace/workspace_layout_edit.c
M   source/blender/windowmanager/intern/wm_files.c

===

diff --git a/source/blender/editors/include/ED_screen.h 
b/source/blender/editors/include/ED_screen.h
index 903a51a31ff..8233318b2c4 100644
--- a/source/blender/editors/include/ED_screen.h
+++ b/source/blender/editors/include/ED_screen.h
@@ -45,6 +45,7 @@ struct wmEvent;
 struct wmKeyConfig;
 struct WorkSpace;
 struct WorkSpaceHook;
+struct WorkSpaceLayout;
 struct bContext;
 struct Scene;
 struct bScreen;
@@ -132,9 +133,8 @@ bool ED_workspace_change(struct bContext *C, struct 
wmWindowManager *wm, struct
 struct WorkSpace *ED_workspace_duplicate(struct WorkSpace *workspace_old, 
struct Main *bmain, struct wmWindow *win);
 void ED_workspace_layout_add(struct WorkSpace *workspace, ListBase *windows, 
const char *name,
  ScreenLayoutData layout_blueprint) ATTR_NONNULL();
-struct WorkSpaceLayout *ED_workspace_layout_duplicate(struct WorkSpace 
*workspace,
-  const struct 
WorkSpaceLayout *layout_old,
-  struct wmWindowManager 
*wm) ATTR_NONNULL();
+void ED_workspace_layout_duplicate(
+struct WorkSpace *workspace, const struct WorkSpaceLayout *layout_old, 
struct wmWindowManager *wm) ATTR_NONNULL();
 bool ED_workspace_delete(struct Main *bmain, struct bContext *C,
  struct wmWindowManager *wm, struct wmWindow *win,
  struct WorkSpace *ws);
diff --git a/source/blender/editors/workspace/screen_ops.c 
b/source/blender/editors/workspace/screen_ops.c
index 2af8e5258ce..20c90962b67 100644
--- a/source/blender/editors/workspace/screen_ops.c
+++ b/source/blender/editors/workspace/screen_ops.c
@@ -3882,11 +3882,10 @@ static int screen_new_exec(bContext *C, wmOperator 
*UNUSED(op))
wmWindowManager *wm = CTX_wm_manager(C);
wmWindow *win = CTX_wm_window(C);
WorkSpace *workspace = WM_window_get_active_workspace(win);
-   WorkSpaceLayout *layout_old = 
BKE_workspace_hook_active_layout_get(win->workspace_hook);
-   WorkSpaceLayout *layout_new;
+   WorkSpaceLayout *layout_old = WM_window_get_active_layout(win);
 
-   layout_new = ED_workspace_layout_duplicate(workspace, layout_old, wm);
-   WM_event_add_notifier(C, NC_WORKSPACE | ND_SCREENBROWSE, layout_new);
+   ED_workspace_layout_duplicate(workspace, layout_old, wm);
+   WM_event_add_notifier(C, NC_WORKSPACE | ND_SCREENBROWSE, 
WM_window_get_active_layout(win));
 
return OPERATOR_FINISHED;
 }
diff --git a/source/blender/editors/workspace/workspace_layout_edit.c 
b/source/blender/editors/workspace/workspace_layout_edit.c
index 8db26515917..25678a7e0ed 100644
--- a/source/blender/editors/workspace/workspace_layout_edit.c
+++ b/source/blender/editors/workspace/workspace_layout_edit.c
@@ -38,6 +38,7 @@
 #include "ED_screen.h"
 
 #include "WM_api.h"
+#include "WM_types.h"
 
 #include "screen_intern.h"
 
@@ -61,28 +62,25 @@ void ED_workspace_layout_add(WorkSpace *workspace, ListBase 
*windows, const char
}
 }
 
-WorkSpaceLayout *ED_workspace_layout_duplicate(WorkSpace *workspace, const 
WorkSpaceLayout *layout_old,
-   wmWindowManager *wm)
+void ED_workspace_layout_duplicate(
+WorkSpace *workspace, const WorkSpaceLayout *layout_old, 
wmWindowManager *wm)
 {
bScreen *screen_old = BKE_workspace_layout_screen_get(layout_old);
-   ScreenLayoutData layout_data = BKE_screen_layout_data_get(screen_old);
-   bScreen *screen_new;
-   WorkSpaceLayout *layout_new;
+   ScreenLayoutData layout_data = 
BKE_workspace_layout_type_blueprint_get(BKE_workspace_layout_type_get(layout_old));
 
if (BKE_screen_is_fullscreen_area(screen_old)) {
-   return NULL; /* XXX handle this case! */
+   return; /* XXX handle this case! */
}
 
ED_workspace_layout_add(workspace, >windows, screen_old->id.name + 
2, layout_data);
for (wmWindow *win = wm->windows.first; win; win = win->next) {
if (BKE_workspace_active_get(win->workspace_hook) == workspace) 
{
-   layout_new = 

[Bf-blender-cvs] [459d429fec1] soc-2016-multiview: Merge branch 'master' into soc-2016-multiview

2017-03-09 Thread Tianwei Shen
Commit: 459d429fec1c007b6a80e792a43cd99c5db2656e
Author: Tianwei Shen
Date:   Tue Feb 14 16:41:09 2017 +0800
Branches: soc-2016-multiview
https://developer.blender.org/rB459d429fec1c007b6a80e792a43cd99c5db2656e

Merge branch 'master' into soc-2016-multiview

===



===



___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [bb332043f0f] soc-2016-multiview: Merge branch 'master' into soc-2016-multiview

2017-03-09 Thread Tianwei Shen
Commit: bb332043f0fb85bb9bcf3556b1f84f9dc1ebdb98
Author: Tianwei Shen
Date:   Thu Mar 9 20:27:36 2017 +0800
Branches: soc-2016-multiview
https://developer.blender.org/rBbb332043f0fb85bb9bcf3556b1f84f9dc1ebdb98

Merge branch 'master' into soc-2016-multiview

===



===

diff --cc source/blender/blenloader/intern/versioning_270.c
index 610c74148eb,d3f33cf725f..8eb61251ddd
--- a/source/blender/blenloader/intern/versioning_270.c
+++ b/source/blender/blenloader/intern/versioning_270.c
@@@ -1577,32 -1575,40 +1577,67 @@@ void blo_do_versions_270(FileData *fd, 
}
}
  
+   /* Fix for T50736, Glare comp node using same var for two 
different things. */
+   if (!DNA_struct_elem_find(fd->filesdna, "NodeGlare", "char", 
"star_45")) {
+   FOREACH_NODETREE(main, ntree, id) {
+   if (ntree->type == NTREE_COMPOSIT) {
+   ntreeSetTypes(NULL, ntree);
+   for (bNode *node = ntree->nodes.first; 
node; node = node->next) {
+   if (node->type == 
CMP_NODE_GLARE) {
+   NodeGlare *ndg = 
node->storage;
+   switch (ndg->type) {
+   case 2:  /* 
G! magic numbers :( */
+   
ndg->streaks = ndg->angle;
+   break;
+   case 0:
+   
ndg->star_45 = ndg->angle != 0;
+   break;
+   default:
+   break;
+   }
+   }
+   }
+   }
+   } FOREACH_NODETREE_END
+   }
+ 
+   if (!DNA_struct_elem_find(fd->filesdna, 
"SurfaceDeformModifierData", "float", "mat[4][4]")) {
+   for (Object *ob = main->object.first; ob; ob = 
ob->id.next) {
+   for (ModifierData *md = ob->modifiers.first; 
md; md = md->next) {
+   if (md->type == 
eModifierType_SurfaceDeform) {
+   SurfaceDeformModifierData *smd 
= (SurfaceDeformModifierData *)md;
+   unit_m4(smd->mat);
+   }
+   }
+   }
+   }
++
 +  /* initialize regiondata for each SpaceClip, due to the newly 
brought RegionSpaceClip */
 +  if (!DNA_struct_elem_find(fd->filesdna, "SpaceClip", 
"MovieClip", "*secondary_clip")) {
 +  for (bScreen *screen = main->screen.first; screen != 
NULL; screen = screen->id.next) {
 +  for (ScrArea *sa = screen->areabase.first; sa 
!= NULL; sa = sa->next) {
 +  for (SpaceLink *sl = 
sa->spacedata.first; sl != NULL; sl = sl->next) {
 +  if (sl->spacetype == 
SPACE_CLIP) {
 +  ListBase *regionbase = 
(sl == sa->spacedata.first) ? >regionbase : >regionbase;
 +  for (ARegion *ar = 
regionbase->first; ar != NULL; ar = ar->next) {
 +  if 
(ar->regiontype == RGN_TYPE_WINDOW) {
 +  
SpaceClip *sc = (SpaceClip *)sl;
 +  
RegionSpaceClip *rsc = MEM_callocN(sizeof(RegionSpaceClip), "region data for 
clip");
 +
 +  
rsc->xof = sc->xof;
 +  
rsc->yof = sc->yof;
 +  
rsc->xlockof = sc->xlockof;
 +  
rsc->ylockof = sc->ylockof;
 +  
rsc->zoom = sc->zoom;
 +  
rsc->flag = RSC_MAIN_CLIP;
 +

[Bf-blender-cvs] [759355374d5] temp-workspace-multi-window: Don't create workspace or screen-layout when opening temp windows (e.g user prefs)

2017-03-09 Thread Julian Eisel
Commit: 759355374d555cbed28704fb7aae6066f47437a5
Author: Julian Eisel
Date:   Thu Mar 9 12:56:56 2017 +0100
Branches: temp-workspace-multi-window
https://developer.blender.org/rB759355374d555cbed28704fb7aae6066f47437a5

Don't create workspace or screen-layout when opening temp windows (e.g user 
prefs)

Not sure how safe change in area.c is, had to do that to avoid weird
scroll offset when opening user pref window.

===

M   source/blender/editors/include/ED_screen.h
M   source/blender/editors/workspace/area.c
M   source/blender/editors/workspace/screen_ops.c
M   source/blender/editors/workspace/workspace_layout_edit.c
M   source/blender/windowmanager/intern/wm_window.c

===

diff --git a/source/blender/editors/include/ED_screen.h 
b/source/blender/editors/include/ED_screen.h
index c074bdcfda2..903a51a31ff 100644
--- a/source/blender/editors/include/ED_screen.h
+++ b/source/blender/editors/include/ED_screen.h
@@ -142,6 +142,7 @@ void ED_workspace_scene_data_sync(struct WorkSpaceHook 
*hook, Scene *scene);
 bool ED_workspace_layout_delete(
 struct bContext *C, struct wmWindow *win, struct WorkSpace *workspace, 
struct WorkSpaceLayout *layout_old) ATTR_NONNULL();
 bool ED_workspace_layout_cycle(struct bContext *C, struct WorkSpace 
*workspace, const short direction) ATTR_NONNULL();
+void ED_workspace_layout_make_single_area(struct bScreen *screen, const int 
size_x, const int size_y);
 
 /* anim */
 voidED_update_for_newframe(struct Main *bmain, struct Scene *scene, int 
mute);
diff --git a/source/blender/editors/workspace/area.c 
b/source/blender/editors/workspace/area.c
index a8a18264be5..6de09386707 100644
--- a/source/blender/editors/workspace/area.c
+++ b/source/blender/editors/workspace/area.c
@@ -1518,6 +1518,7 @@ void ED_area_initialize(wmWindowManager *wm, wmWindow 
*win, ScrArea *sa)

/* region windows, default and own handlers */
for (ar = sa->regionbase.first; ar; ar = ar->next) {
+   ar->v2d.flag &= ~V2D_IS_INITIALISED;
region_subwindow(win, ar, false);

if (ar->swinid) {
diff --git a/source/blender/editors/workspace/screen_ops.c 
b/source/blender/editors/workspace/screen_ops.c
index 303d776d0ab..2af8e5258ce 100644
--- a/source/blender/editors/workspace/screen_ops.c
+++ b/source/blender/editors/workspace/screen_ops.c
@@ -983,7 +983,6 @@ static int area_dupli_invoke(bContext *C, wmOperator *op, 
const wmEvent *event)
wmWindow *newwin, *win = CTX_wm_window(C);
Scene *scene = CTX_data_scene(C);
WorkSpace *workspace = WM_window_get_active_workspace(win);
-   ScreenLayoutData layout_data = {};
bScreen *newsc;
ScrArea *sa = CTX_wm_area(C);
rcti rect;
@@ -1019,12 +1018,7 @@ static int area_dupli_invoke(bContext *C, wmOperator 
*op, const wmEvent *event)
newsc = BKE_workspace_hook_active_screen_get(newwin->workspace_hook);
 
/* remove all data from screen, and add a new empty area */
-   BKE_screen_free(newsc);
-   ED_screen_empty_data_create(BLI_rcti_size_x(), 
BLI_rcti_size_y(), _data);
-   newsc->areabase = layout_data.areabase;
-   newsc->vertbase = layout_data.vertbase;
-   newsc->edgebase = layout_data.edgebase;
-   BLI_assert(BLI_listbase_count(>areabase) == 1);
+   ED_workspace_layout_make_single_area(newsc, BLI_rcti_size_x(), 
BLI_rcti_size_y());
 
/* copy area to new screen */
BKE_screen_area_data_copy((ScrArea *)newsc->areabase.first, sa, false);
diff --git a/source/blender/editors/workspace/workspace_layout_edit.c 
b/source/blender/editors/workspace/workspace_layout_edit.c
index 77c7ff875bc..8db26515917 100644
--- a/source/blender/editors/workspace/workspace_layout_edit.c
+++ b/source/blender/editors/workspace/workspace_layout_edit.c
@@ -234,3 +234,19 @@ bool ED_workspace_layout_cycle(bContext *C, WorkSpace 
*workspace, const short di
 
return changed;
 }
+
+/**
+ * Delete data from \a screen and create an empty area into it.
+ * \note Doesn't exit \a screen (usually not needed).
+ */
+void ED_workspace_layout_make_single_area(bScreen *screen, const int size_x, 
const int size_y)
+{
+   ScreenLayoutData layout_data = {};
+
+   BKE_screen_free(screen);
+   ED_screen_empty_data_create(size_y, size_x, _data);
+   screen->areabase = layout_data.areabase;
+   screen->vertbase = layout_data.vertbase;
+   screen->edgebase = layout_data.edgebase;
+   BLI_assert(BLI_listbase_count(>areabase) == 1);
+}
diff --git a/source/blender/windowmanager/intern/wm_window.c 
b/source/blender/windowmanager/intern/wm_window.c
index 0c2d6ee424d..5b7d65d831d 100644
--- a/source/blender/windowmanager/intern/wm_window.c
+++ b/source/blender/windowmanager/intern/wm_window.c
@@ -650,8 +650,6 @@ wmWindow *WM_window_open_temp(bContext 

[Bf-blender-cvs] [801b46d2a92] temp-workspace-multi-window: Merge branch 'blender2.8' into temp-workspace-multi-window

2017-03-09 Thread Julian Eisel
Commit: 801b46d2a9264ba5034ff46e666b834975ed00fa
Author: Julian Eisel
Date:   Thu Mar 9 12:13:51 2017 +0100
Branches: temp-workspace-multi-window
https://developer.blender.org/rB801b46d2a9264ba5034ff46e666b834975ed00fa

Merge branch 'blender2.8' into temp-workspace-multi-window

===



===



___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [d88e033f30e] workspaces: Merge branch 'blender2.8' into workspaces

2017-03-09 Thread Julian Eisel
Commit: d88e033f30e775759d89f650001796838c25776e
Author: Julian Eisel
Date:   Thu Mar 9 12:13:33 2017 +0100
Branches: workspaces
https://developer.blender.org/rBd88e033f30e775759d89f650001796838c25776e

Merge branch 'blender2.8' into workspaces

===



===



___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [db2a59368e1] temp-workspace-multi-window: Fix mistake in 2301dd18a36d5

2017-03-09 Thread Julian Eisel
Commit: db2a59368e197508692df650ab2ba06f97283d83
Author: Julian Eisel
Date:   Thu Mar 9 12:10:47 2017 +0100
Branches: temp-workspace-multi-window
https://developer.blender.org/rBdb2a59368e197508692df650ab2ba06f97283d83

Fix mistake in 2301dd18a36d5

Apparently I didn't test correctly before pushing :|

===

M   source/blender/editors/workspace/screen_ops.c

===

diff --git a/source/blender/editors/workspace/screen_ops.c 
b/source/blender/editors/workspace/screen_ops.c
index 9048ba9584d..303d776d0ab 100644
--- a/source/blender/editors/workspace/screen_ops.c
+++ b/source/blender/editors/workspace/screen_ops.c
@@ -983,7 +983,7 @@ static int area_dupli_invoke(bContext *C, wmOperator *op, 
const wmEvent *event)
wmWindow *newwin, *win = CTX_wm_window(C);
Scene *scene = CTX_data_scene(C);
WorkSpace *workspace = WM_window_get_active_workspace(win);
-   ScreenLayoutData layout_data;
+   ScreenLayoutData layout_data = {};
bScreen *newsc;
ScrArea *sa = CTX_wm_area(C);
rcti rect;

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [528cb8877f3] blender2.8: Building 2.8 again after warning cleanup (696ed6d3ca)

2017-03-09 Thread Dalai Felinto
Commit: 528cb8877f3c8923752a016854682722708c47a0
Author: Dalai Felinto
Date:   Thu Mar 9 12:08:44 2017 +0100
Branches: blender2.8
https://developer.blender.org/rB528cb8877f3c8923752a016854682722708c47a0

Building 2.8 again after warning cleanup (696ed6d3ca)

===

M   source/blender/gpu/intern/gpu_draw.c

===

diff --git a/source/blender/gpu/intern/gpu_draw.c 
b/source/blender/gpu/intern/gpu_draw.c
index d7b1d5b16ef..3d75acb12f5 100644
--- a/source/blender/gpu/intern/gpu_draw.c
+++ b/source/blender/gpu/intern/gpu_draw.c
@@ -1687,7 +1687,7 @@ void GPU_end_dupli_object(void)
 }
 
 void GPU_begin_object_materials(
-View3D *v3d, RegionView3D *rv3d, Scene *scene, SceneLayer *UNUSED(sl), 
Object *ob,
+View3D *v3d, RegionView3D *rv3d, Scene *scene, SceneLayer *sl, Object 
*ob,
 bool glsl, bool *do_alpha_after)
 {
Material *ma;
@@ -1728,6 +1728,8 @@ void GPU_begin_object_materials(
if (rv3d->rflag & RV3D_IS_GAME_ENGINE) {
ob = BKE_object_lod_matob_get(ob, sl);
}
+#else
+   UNUSED_VARS(sl);
 #endif
 
/* initialize state */

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [88e8e7a0749] master: 3D View: wrap GPU_select cache calls

2017-03-09 Thread Campbell Barton
Commit: 88e8e7a0749e8c8d077ec70c91e6ca9674d239f5
Author: Campbell Barton
Date:   Thu Mar 9 20:47:37 2017 +1100
Branches: master
https://developer.blender.org/rB88e8e7a0749e8c8d077ec70c91e6ca9674d239f5

3D View: wrap GPU_select cache calls

Avoids including GPU_select and makes it more clear that the cache is
needed for view3d_opengl_select calls.

Also use typed enum for select mode.

===

M   source/blender/editors/armature/armature_select.c
M   source/blender/editors/include/ED_view3d.h
M   source/blender/editors/space_view3d/view3d_select.c
M   source/blender/editors/space_view3d/view3d_view.c

===

diff --git a/source/blender/editors/armature/armature_select.c 
b/source/blender/editors/armature/armature_select.c
index d19862cb4b0..ed44214591c 100644
--- a/source/blender/editors/armature/armature_select.c
+++ b/source/blender/editors/armature/armature_select.c
@@ -53,8 +53,6 @@
 #include "ED_screen.h"
 #include "ED_view3d.h"
 
-#include "GPU_select.h"
-
 #include "armature_intern.h"
 
 /* utility macros for storing a temp int in the bone (selection flag) */
@@ -343,7 +341,7 @@ static EditBone *get_nearest_editbonepoint(
int hits = 0;
 
/* we _must_ end cache before return, use 'goto cache_end' */
-   GPU_select_cache_begin();
+   view3d_opengl_select_cache_begin();
 
BLI_rcti_init_pt_radius(, mval, 12);
hits12 = view3d_opengl_select(vc, buffer, MAXPICKBUF, , 
select_mode);
@@ -368,7 +366,7 @@ static EditBone *get_nearest_editbonepoint(
}
 
 cache_end:
-   GPU_select_cache_end();
+   view3d_opengl_select_cache_end();
 
/* See if there are any selected bones in this group */
if (hits > 0) {
diff --git a/source/blender/editors/include/ED_view3d.h 
b/source/blender/editors/include/ED_view3d.h
index af6f37d937c..9ce71258573 100644
--- a/source/blender/editors/include/ED_view3d.h
+++ b/source/blender/editors/include/ED_view3d.h
@@ -303,18 +303,21 @@ bool ED_view3d_autodist_depth_seg(struct ARegion *ar, 
const int mval_sta[2], con
 #define MAXPICKELEMS2500
 #define MAXPICKBUF  (4 * MAXPICKELEMS)
 
-enum {
+typedef enum {
/* all elements in the region, ignore depth */
VIEW3D_SELECT_ALL = 0,
/* pick also depth sorts (only for small regions!) */
VIEW3D_SELECT_PICK_ALL = 1,
/* sorts and only returns visible objects (only for small regions!) */
VIEW3D_SELECT_PICK_NEAREST = 2,
-};
+} eV3DSelectMode;
+
+void view3d_opengl_select_cache_begin(void);
+void view3d_opengl_select_cache_end(void);
 
 int view3d_opengl_select(
 struct ViewContext *vc, unsigned int *buffer, unsigned int bufsize, 
const struct rcti *input,
-int select_mode);
+eV3DSelectMode select_mode);
 
 /* view3d_select.c */
 float ED_view3d_select_dist_px(void);
diff --git a/source/blender/editors/space_view3d/view3d_select.c 
b/source/blender/editors/space_view3d/view3d_select.c
index 0c0a7df8f84..7d927766bbd 100644
--- a/source/blender/editors/space_view3d/view3d_select.c
+++ b/source/blender/editors/space_view3d/view3d_select.c
@@ -96,8 +96,6 @@
 
 #include "GPU_draw.h"
 
-#include "GPU_select.h"
-
 #include "view3d_intern.h"  /* own include */
 
 // #include "PIL_time_utildefines.h"
@@ -1243,7 +1241,7 @@ static int mixed_bones_object_selectbuffer(
int hits = 0;
 
/* we _must_ end cache before return, use 'goto finally' */
-   GPU_select_cache_begin();
+   view3d_opengl_select_cache_begin();
 
BLI_rcti_init_pt_radius(, mval, 14);
hits15 = view3d_opengl_select(vc, buffer, MAXPICKBUF, , 
select_mode);
@@ -1287,7 +1285,7 @@ static int mixed_bones_object_selectbuffer(
}
 
 finally:
-   GPU_select_cache_end();
+   view3d_opengl_select_cache_end();
 
return hits;
 }
diff --git a/source/blender/editors/space_view3d/view3d_view.c 
b/source/blender/editors/space_view3d/view3d_view.c
index 9d1a3633786..e8deaabec7a 100644
--- a/source/blender/editors/space_view3d/view3d_view.c
+++ b/source/blender/editors/space_view3d/view3d_view.c
@@ -1164,6 +1164,21 @@ static void view3d_select_loop(ViewContext *vc, Scene 
*scene, View3D *v3d, ARegi
 }
 
 /**
+ * Optionally cache data for multiple calls to #view3d_opengl_select
+ *
+ * just avoid GPU_select headers outside this file
+ */
+void view3d_opengl_select_cache_begin(void)
+{
+   GPU_select_cache_begin();
+}
+
+void view3d_opengl_select_cache_end(void)
+{
+   GPU_select_cache_end();
+}
+
+/**
  * \warning be sure to account for a negative return value
  * This is an error, "Too many objects in select buffer"
  * and no action should be taken (can crash blender) if this happens
@@ -1172,7 +1187,7 @@ static void view3d_select_loop(ViewContext *vc, Scene 
*scene, View3D *v3d, ARegi
  */
 int view3d_opengl_select(
 ViewContext *vc, unsigned int *buffer,