[Bf-blender-cvs] [1c7cfa025c8] blender2.8: Merge branch 'master' into blender2.8

Campbell Barton noreply at git.blender.org
Thu Dec 7 13:53:17 CET 2017


Commit: 1c7cfa025c87e8f31790b48cbb189949f7949ad1
Author: Campbell Barton
Date:   Thu Dec 7 23:53:03 2017 +1100
Branches: blender2.8
https://developer.blender.org/rB1c7cfa025c87e8f31790b48cbb189949f7949ad1

Merge branch 'master' into blender2.8

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



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

diff --cc source/blender/blenkernel/CMakeLists.txt
index c99c3d6ffa9,3fc2c3f8eb0..279068c440e
--- a/source/blender/blenkernel/CMakeLists.txt
+++ b/source/blender/blenkernel/CMakeLists.txt
@@@ -87,8 -86,8 +87,9 @@@ set(SR
  	intern/camera.c
  	intern/cdderivedmesh.c
  	intern/cloth.c
 +	intern/collection.c
  	intern/collision.c
+ 	intern/colorband.c
  	intern/colortools.c
  	intern/constraint.c
  	intern/context.c
@@@ -223,8 -216,8 +224,9 @@@
  	BKE_ccg.h
  	BKE_cdderivedmesh.h
  	BKE_cloth.h
 +	BKE_collection.h
  	BKE_collision.h
+ 	BKE_colorband.h
  	BKE_colortools.h
  	BKE_constraint.h
  	BKE_context.h
diff --cc source/blender/blenkernel/intern/DerivedMesh.c
index 1367157c13c,7ccd00b3f62..01340b97807
--- a/source/blender/blenkernel/intern/DerivedMesh.c
+++ b/source/blender/blenkernel/intern/DerivedMesh.c
@@@ -52,9 -52,9 +52,10 @@@
  #include "BLI_task.h"
  
  #include "BKE_cdderivedmesh.h"
+ #include "BKE_colorband.h"
  #include "BKE_editmesh.h"
  #include "BKE_key.h"
 +#include "BKE_layer.h"
  #include "BKE_library.h"
  #include "BKE_material.h"
  #include "BKE_modifier.h"
diff --cc source/blender/blenkernel/intern/dynamicpaint.c
index 80a31697424,b44ee21432c..8d27fcd2835
--- a/source/blender/blenkernel/intern/dynamicpaint.c
+++ b/source/blender/blenkernel/intern/dynamicpaint.c
@@@ -72,10 -73,7 +73,9 @@@
  #include "BKE_particle.h"
  #include "BKE_pointcache.h"
  #include "BKE_scene.h"
- #include "BKE_texture.h"
  
 +#include "DEG_depsgraph.h"
 +
  /* for image output	*/
  #include "IMB_imbuf_types.h"
  #include "IMB_imbuf.h"
diff --cc source/blender/collada/DocumentImporter.cpp
index d3e23f740c8,eada4b2bf98..ec9a4169b26
--- a/source/blender/collada/DocumentImporter.cpp
+++ b/source/blender/collada/DocumentImporter.cpp
@@@ -57,13 -57,11 +57,12 @@@ extern "C" 
  #include "BLI_fileops.h"
  
  #include "BKE_camera.h"
 +#include "BKE_collection.h"
  #include "BKE_main.h"
 +#include "BKE_layer.h"
  #include "BKE_lamp.h"
  #include "BKE_library.h"
- #include "BKE_texture.h"
  #include "BKE_fcurve.h"
 -#include "BKE_depsgraph.h"
  #include "BKE_scene.h"
  #include "BKE_global.h"
  #include "BKE_material.h"
diff --cc source/blender/draw/intern/draw_cache_impl_lattice.c
index 20698fe6592,00000000000..eed408de3cd
mode 100644,000000..100644
--- a/source/blender/draw/intern/draw_cache_impl_lattice.c
+++ b/source/blender/draw/intern/draw_cache_impl_lattice.c
@@@ -1,587 -1,0 +1,587 @@@
 +/*
 + * ***** BEGIN GPL LICENSE BLOCK *****
 + *
 + * 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.
 + *
 + * The Original Code is Copyright (C) 2017 by Blender Foundation.
 + * All rights reserved.
 + *
 + * Contributor(s): Blender Foundation, Mike Erwin, Dalai Felinto
 + *
 + * ***** END GPL LICENSE BLOCK *****
 + */
 +
 +/** \file draw_cache_impl_lattice.c
 + *  \ingroup draw
 + *
 + * \brief Lattice API for render engines
 + */
 +
 +#include "MEM_guardedalloc.h"
 +
 +#include "BLI_utildefines.h"
 +#include "BLI_math_vector.h"
 +
 +#include "DNA_curve_types.h"
 +#include "DNA_lattice_types.h"
 +#include "DNA_meshdata_types.h"
 +#include "DNA_userdef_types.h"
 +
 +#include "BKE_lattice.h"
 +#include "BKE_deform.h"
- #include "BKE_texture.h"
++#include "BKE_colorband.h"
 +
 +#include "GPU_batch.h"
 +
 +#include "draw_cache_impl.h"  /* own include */
 +
 +#define SELECT   1
 +
 +/**
 + * TODO
 + * - 'DispList' is currently not used
 + *   (we could avoid using since it will be removed)
 + */
 +
 +static void lattice_batch_cache_clear(Lattice *lt);
 +
 +/* ---------------------------------------------------------------------- */
 +/* Lattice Interface, direct access to basic data. */
 +
 +static int vert_len_calc(int u, int v, int w)
 +{
 +	if (u <= 0 || v <= 0 || w <= 0) {
 +		return 0;
 +	}
 +	return u * v * w;
 +}
 +
 +static int edge_len_calc(int u, int v, int w)
 +{
 +	if (u <= 0 || v <= 0 || w <= 0) {
 +		return 0;
 +	}
 +	return (((((u - 1) * v) +
 +	          ((v - 1) * u)) * w) +
 +	        ((w - 1) * (u * v)));
 +}
 +
 +static int lattice_render_verts_len_get(Lattice *lt)
 +{
 +	if (lt->editlatt) {
 +		lt = lt->editlatt->latt;
 +	}
 +
 +	const int u = lt->pntsu;
 +	const int v = lt->pntsv;
 +	const int w = lt->pntsw;
 +
 +	if ((lt->flag & LT_OUTSIDE) == 0) {
 +		return vert_len_calc(u, v, w);
 +	}
 +	else {
 +		/* TODO remove internal coords */
 +		return vert_len_calc(u, v, w);
 +	}
 +}
 +
 +static int lattice_render_edges_len_get(Lattice *lt)
 +{
 +	if (lt->editlatt) {
 +		lt = lt->editlatt->latt;
 +	}
 +
 +	const int u = lt->pntsu;
 +	const int v = lt->pntsv;
 +	const int w = lt->pntsw;
 +
 +	if ((lt->flag & LT_OUTSIDE) == 0) {
 +		return edge_len_calc(u, v, w);
 +	}
 +	else {
 +		/* TODO remove internal coords */
 +		return edge_len_calc(u, v, w);
 +	}
 +}
 +
 +/* ---------------------------------------------------------------------- */
 +/* Lattice Interface, indirect, partially cached access to complex data. */
 +
 +typedef struct LatticeRenderData {
 +	int types;
 +
 +	int vert_len;
 +	int edge_len;
 +
 +	struct {
 +		int u_len, v_len, w_len;
 +	} dims;
 +	bool show_only_outside;
 +
 +	struct EditLatt *edit_latt;
 +	BPoint *bp;
 +
 +	int actbp;
 +
 +	struct MDeformVert *dvert;
 +} LatticeRenderData;
 +
 +enum {
 +	LR_DATATYPE_VERT       = 1 << 0,
 +	LR_DATATYPE_EDGE       = 1 << 1,
 +	LR_DATATYPE_OVERLAY    = 1 << 2,
 +};
 +
 +static LatticeRenderData *lattice_render_data_create(Lattice *lt, const int types)
 +{
 +	LatticeRenderData *rdata = MEM_callocN(sizeof(*rdata), __func__);
 +	rdata->types = types;
 +
 +	if (lt->editlatt) {
 +		EditLatt *editlatt = lt->editlatt;
 +		lt = editlatt->latt;
 +
 +		rdata->edit_latt = editlatt;
 +
 +		rdata->dvert = lt->dvert;
 +
 +		if (types & (LR_DATATYPE_VERT)) {
 +			rdata->vert_len = lattice_render_verts_len_get(lt);
 +		}
 +		if (types & (LR_DATATYPE_EDGE)) {
 +			rdata->edge_len = lattice_render_edges_len_get(lt);
 +		}
 +		if (types & LR_DATATYPE_OVERLAY) {
 +			rdata->actbp = lt->actbp;
 +		}
 +	}
 +	else {
 +		rdata->dvert = NULL;
 +
 +		if (types & (LR_DATATYPE_VERT)) {
 +			rdata->vert_len = lattice_render_verts_len_get(lt);
 +		}
 +		if (types & (LR_DATATYPE_EDGE)) {
 +			rdata->edge_len = lattice_render_edges_len_get(lt);
 +			/*no edge data */
 +		}
 +	}
 +
 +	rdata->bp = lt->def;
 +
 +	rdata->dims.u_len = lt->pntsu;
 +	rdata->dims.v_len = lt->pntsv;
 +	rdata->dims.w_len = lt->pntsw;
 +
 +	rdata->show_only_outside = (lt->flag & LT_OUTSIDE) != 0;
 +	rdata->actbp = lt->actbp;
 +
 +	return rdata;
 +}
 +
 +static void lattice_render_data_free(LatticeRenderData *rdata)
 +{
 +#if 0
 +	if (rdata->loose_verts) {
 +		MEM_freeN(rdata->loose_verts);
 +	}
 +#endif
 +	MEM_freeN(rdata);
 +}
 +
 +static int lattice_render_data_verts_len_get(const LatticeRenderData *rdata)
 +{
 +	BLI_assert(rdata->types & LR_DATATYPE_VERT);
 +	return rdata->vert_len;
 +}
 +
 +static int lattice_render_data_edges_len_get(const LatticeRenderData *rdata)
 +{
 +	BLI_assert(rdata->types & LR_DATATYPE_EDGE);
 +	return rdata->edge_len;
 +}
 +
 +static const BPoint *lattice_render_data_vert_bpoint(const LatticeRenderData *rdata, const int vert_idx)
 +{
 +	BLI_assert(rdata->types & LR_DATATYPE_VERT);
 +	return &rdata->bp[vert_idx];
 +}
 +
 +/* TODO, move into shader? */
 +static void rgb_from_weight(float r_rgb[3], const float weight)
 +{
 +	const float blend = ((weight / 2.0f) + 0.5f);
 +
 +	if (weight <= 0.25f) {    /* blue->cyan */
 +		r_rgb[0] = 0.0f;
 +		r_rgb[1] = blend * weight * 4.0f;
 +		r_rgb[2] = blend;
 +	}
 +	else if (weight <= 0.50f) {  /* cyan->green */
 +		r_rgb[0] = 0.0f;
 +		r_rgb[1] = blend;
 +		r_rgb[2] = blend * (1.0f - ((weight - 0.25f) * 4.0f));
 +	}
 +	else if (weight <= 0.75f) {  /* green->yellow */
 +		r_rgb[0] = blend * ((weight - 0.50f) * 4.0f);
 +		r_rgb[1] = blend;
 +		r_rgb[2] = 0.0f;
 +	}
 +	else if (weight <= 1.0f) {  /* yellow->red */
 +		r_rgb[0] = blend;
 +		r_rgb[1] = blend * (1.0f - ((weight - 0.75f) * 4.0f));
 +		r_rgb[2] = 0.0f;
 +	}
 +	else {
 +		/* exceptional value, unclamped or nan,
 +		 * avoid uninitialized memory use */
 +		r_rgb[0] = 1.0f;
 +		r_rgb[1] = 0.0f;
 +		r_rgb[2] = 1.0f;
 +	}
 +}
 +
 +static void lattice_render_data_weight_col_get(const LatticeRenderData *rdata, const int vert_idx,
 +                                           const int actdef, float r_col[4])
 +{
 +	if (actdef > -1) {
 +		float weight = defvert_find_weight(rdata->dvert + vert_idx, actdef);
 +
 +		if (U.flag & USER_CUSTOM_RANGE) {
- 			do_colorband(&U.coba_weight, weight, r_col);
++			BKE_colorband_evaluate(&U.coba_weight, weight, r_col);
 +		}
 +		else {
 +			rgb_from_weight(r_col, weight);
 +		}
 +
 +		r_col[3] = 1.0f;
 +	}
 +	else {
 +		zero_v4(r_col);
 +	}
 +}
 +
 +enum {
 +	VFLAG_VERTEX_SELECTED = 1 << 0,
 +	VFLAG_VERTEX_ACTIVE   = 1 << 1,
 +};
 +
 +/* ---------------------------------------------------------------------- */
 +/* Lattice Gwn_Batch Cache */
 +
 +typedef struct LatticeBatchCache {
 +	Gwn_VertBuf *pos;
 +	Gwn_IndexBuf *edges;
 +
 +	Gwn_Batch *all_verts;
 +	Gwn_Batch *all_edges;
 +
 +	Gwn_Batch *overlay_verts;
 +
 +	/* settings to determine if cache is invalid */
 +	bool is_dirty;
 +
 +	struct {
 +		int u_len, v_len, w_len;
 +	} dims;
 +	bool show_only_outside;
 +
 +	bool is_editmode;
 +} LatticeBatchCache;
 +
 +/* Gwn_Batch cache management. */
 +
 +static bool lattice_batch_cache_valid(Lattice *lt)
 +{
 +	LatticeBatchCache *cache = lt->batch_cache;
 +
 +	if (cache == NULL) {
 +		return false;
 +	}
 +
 +	if (cache->is_editmode != (lt->editlatt != NULL)) {
 +		return false;
 +	}
 +
 +	if (cache->is_dirty == false) {
 +		return t

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list