[Bf-blender-cvs] [26c1ae8] master: OpenSubdiv: Proper detection of crease changes
Commit: 26c1ae81be1542ebcf45671016cb56e11bb9be81 Author: Sergey Sharybin Date: Wed Jul 29 18:05:29 2015 +0200 Branches: master https://developer.blender.org/rB26c1ae81be1542ebcf45671016cb56e11bb9be81 OpenSubdiv: Proper detection of crease changes === M intern/opensubdiv/opensubdiv_converter.cc === diff --git a/intern/opensubdiv/opensubdiv_converter.cc b/intern/opensubdiv/opensubdiv_converter.cc index 80c567b..76db28a 100644 --- a/intern/opensubdiv/opensubdiv_converter.cc +++ b/intern/opensubdiv/opensubdiv_converter.cc @@ -461,17 +461,19 @@ int openSubdiv_topologyRefnerCompareConverter( } } /* Compare sharpness. */ -#if 0 - /* TODO(sergey): For some reason shrapness is not being reported correctly -* from the base level, which cuases false-positive topology change detection. -*/ for (int edge = 0; edge num_edges; ++edge) { + ConstIndexArray edge_faces = base_level.GetEdgeFaces(edge); float sharpness = base_level.GetEdgeSharpness(edge); - float conv_sharpness = converter-get_edge_sharpness(converter, edge); + float conv_sharpness; + if (edge_faces.size() == 2) { + conv_sharpness = converter-get_edge_sharpness(converter, edge); + } + else { + conv_sharpness = OpenSubdiv::Sdc::Crease::SHARPNESS_INFINITE; + } if (sharpness != conv_sharpness) { return false; } } -#endif return true; } ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [7380166] master: OpenSubdiv: Workaround for vertices which are adjacent to several manifold islands
Commit: 7380166db2ca0a21511822c33b7751766a5165b1 Author: Sergey Sharybin Date: Wed Jul 29 18:41:05 2015 +0200 Branches: master https://developer.blender.org/rB7380166db2ca0a21511822c33b7751766a5165b1 OpenSubdiv: Workaround for vertices which are adjacent to several manifold islands === M intern/opensubdiv/opensubdiv_converter.cc === diff --git a/intern/opensubdiv/opensubdiv_converter.cc b/intern/opensubdiv/opensubdiv_converter.cc index 76db28a..b818c84 100644 --- a/intern/opensubdiv/opensubdiv_converter.cc +++ b/intern/opensubdiv/opensubdiv_converter.cc @@ -141,6 +141,7 @@ inline bool TopologyRefinerFactoryOpenSubdiv_Converter::assignComponentTopolog memset(face_used, 0, sizeof(bool) * num_faces); std::stackStackElem stack; int edge_count_ordered = 0, face_count_ordered = 0; + bool print = vert == 6; if (num_vert_edges == num_vert_faces) { /* Manifold vertex, start with any face and perform traversal. */ int face_start = vert_faces[0]; @@ -183,6 +184,7 @@ inline bool TopologyRefinerFactoryOpenSubdiv_Converter::assignComponentTopolog if (append_start_edge) { dst_vert_edges[edge_count_ordered++] = edge_start; } + face_used[face_start] = true; while (edge_count_ordered num_vert_edges) { IndexArray face_verts = getBaseFaceVertices(refiner, face_start); @@ -191,6 +193,24 @@ inline bool TopologyRefinerFactoryOpenSubdiv_Converter::assignComponentTopolog int face_edge_next = (face_edge_start 0) ? (face_edge_start - 1) : (face_verts.size() - 1); Index edge_next = face_edges[face_edge_next]; if (edge_next == edge_first) { + /* TODO(sergey): Find more generic solution so non-manifold +* edges combined with some manifold adjacent geometry is +* handled correct. +*/ + if (num_vert_edges == num_vert_faces + edge_count_ordered != num_vert_edges) + { + IndexArray edge_faces = getBaseEdgeFaces(refiner, edge_next); + for (int i = 0; i num_vert_faces; ++i) { + int face_start = edge_faces[i]; + if (!face_used[face_start]) { + int edge_start = edge_next; + int face_vert_start = findInArray(getBaseFaceVertices(refiner, face_start), vert); + stack.push(StackElem(face_start, edge_start, face_vert_start, false)); + break; + } + } + } break; } dst_vert_edges[edge_count_ordered++] = edge_next; @@ -209,7 +229,6 @@ inline bool TopologyRefinerFactoryOpenSubdiv_Converter::assignComponentTopolog int edge_start = edge_next; int face_vert_start = findInArray(getBaseFaceVertices(refiner, face_start), vert); stack.push(StackElem(face_start, edge_start, face_vert_start, false)); - face_used[face_start] = true; } } } @@ -219,6 +238,7 @@ inline bool TopologyRefinerFactoryOpenSubdiv_Converter::assignComponentTopolog face_start = edge_faces[(edge_faces[0] == face_start) ? 1 : 0]; face_vert_start = findInArray(getBaseFaceEdges(refiner, face_start), edge_next); dst_vert_faces[face_count_ordered++] = face_start; + face_used[face_start] = true;
[Bf-blender-cvs] [717a303] master: OpenSubdiv: Fixes for crease in non-manifold meshes
Commit: 717a303a18de232ab740ee969108044a4ff7ee6e Author: Sergey Sharybin Date: Wed Jul 29 17:38:06 2015 +0200 Branches: master https://developer.blender.org/rB717a303a18de232ab740ee969108044a4ff7ee6e OpenSubdiv: Fixes for crease in non-manifold meshes Basically non-manifold edges are expected to be sharp by OpenSubdiv. There\s still some work required, see the inlined comment. === M intern/opensubdiv/opensubdiv_converter.cc === diff --git a/intern/opensubdiv/opensubdiv_converter.cc b/intern/opensubdiv/opensubdiv_converter.cc index 34ff17c..a84939f 100644 --- a/intern/opensubdiv/opensubdiv_converter.cc +++ b/intern/opensubdiv/opensubdiv_converter.cc @@ -266,11 +266,39 @@ inline bool TopologyRefinerFactoryOpenSubdiv_Converter::assignComponentTags( TopologyRefiner refiner, const OpenSubdiv_Converter conv) { + typedef OpenSubdiv::Sdc::Crease Crease; + int num_edges = conv.get_num_edges(conv); for (int edge = 0; edge num_edges; ++edge) { - float sharpness = conv.get_edge_sharpness(conv, edge); + float sharpness; + ConstIndexArray edge_faces = getBaseEdgeFaces(refiner, edge); + if (edge_faces.size() == 2) { + sharpness = conv.get_edge_sharpness(conv, edge); + } + else { + /* Non-manifold edges must be sharp. */ + sharpness = Crease::SHARPNESS_INFINITE; + } + sharpness = Crease::SHARPNESS_INFINITE; setBaseEdgeSharpness(refiner, edge, sharpness); } + +#if 0 + /* Non-manifold vertices can't be always smooth. +* I.e. when there's loose edge adjacent to the vertex +* opensubdiv expects vertices to be sharp. But this needs +* some further investigation. +*/ + int num_vert = conv.get_num_verts(conv); + for (int vert = 0; vert num_vert; ++vert) { + IndexArray vert_faces = getBaseVertexFaces(refiner, vert), + vert_edges = getBaseVertexEdges(refiner, vert); + if (vert_faces.size() != vert_edges.size()) { + setBaseVertexSharpness(refiner, vert, Crease::SHARPNESS_INFINITE); + } + } +#endif + return true; } @@ -308,13 +336,15 @@ OpenSubdiv::Sdc::SchemeType get_capi_scheme_type(OpenSubdiv_SchemeType type) struct OpenSubdiv_TopologyRefinerDescr *openSubdiv_createTopologyRefinerDescr( OpenSubdiv_Converter *converter) { + typedef OpenSubdiv::Sdc::Options Options; + using OpenSubdiv::Far::TopologyRefinerFactory; OpenSubdiv::Sdc::SchemeType scheme_type = get_capi_scheme_type(converter-get_type(converter)); - OpenSubdiv::Sdc::Options options; - options.SetVtxBoundaryInterpolation(OpenSubdiv::Sdc::Options::VTX_BOUNDARY_EDGE_ONLY); - options.SetCreasingMethod(OpenSubdiv::Sdc::Options::CREASE_UNIFORM); - options.SetFVarLinearInterpolation(OpenSubdiv::Sdc::Options::FVAR_LINEAR_ALL); + Options options; + options.SetVtxBoundaryInterpolation(Options::VTX_BOUNDARY_EDGE_ONLY); + options.SetCreasingMethod(Options::CREASE_UNIFORM); + options.SetFVarLinearInterpolation(Options::FVAR_LINEAR_ALL); TopologyRefinerFactoryOpenSubdiv_Converter::Options topology_options(scheme_type, options); ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [48c2f7b] master: OpenSubdiv: Some debug-only code sneaked into previous commit
Commit: 48c2f7b28856b657c67c9b0648f655223bf23980 Author: Sergey Sharybin Date: Wed Jul 29 17:43:43 2015 +0200 Branches: master https://developer.blender.org/rB48c2f7b28856b657c67c9b0648f655223bf23980 OpenSubdiv: Some debug-only code sneaked into previous commit === M intern/opensubdiv/opensubdiv_converter.cc === diff --git a/intern/opensubdiv/opensubdiv_converter.cc b/intern/opensubdiv/opensubdiv_converter.cc index fe12c84..80c567b 100644 --- a/intern/opensubdiv/opensubdiv_converter.cc +++ b/intern/opensubdiv/opensubdiv_converter.cc @@ -284,7 +284,6 @@ inline bool TopologyRefinerFactoryOpenSubdiv_Converter::assignComponentTags( /* Non-manifold edges must be sharp. */ sharpness = Crease::SHARPNESS_INFINITE; } - sharpness = Crease::SHARPNESS_INFINITE; setBaseEdgeSharpness(refiner, edge, sharpness); } ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [ce5e62b] master: OpenSubdiv: Typo fixes in comments
Commit: ce5e62b78a90ea80cb799053382a9752baa53e45 Author: Sergey Sharybin Date: Wed Jul 29 17:12:55 2015 +0200 Branches: master https://developer.blender.org/rBce5e62b78a90ea80cb799053382a9752baa53e45 OpenSubdiv: Typo fixes in comments === M source/blender/blenkernel/intern/CCGSubSurf_opensubdiv.c === diff --git a/source/blender/blenkernel/intern/CCGSubSurf_opensubdiv.c b/source/blender/blenkernel/intern/CCGSubSurf_opensubdiv.c index 57cf397..c6c8f14 100644 --- a/source/blender/blenkernel/intern/CCGSubSurf_opensubdiv.c +++ b/source/blender/blenkernel/intern/CCGSubSurf_opensubdiv.c @@ -245,7 +245,7 @@ bool ccgSubSurf_prepareGLMesh(CCGSubSurf *ss, bool use_osd_glsl) if (ss-osd_mesh == NULL) { if (ss-osd_topology_refiner == NULL) { /* Happens with empty meshes. */ - /* TODO(sergey): Add assert thet mesh is indeed empty. */ + /* TODO(sergey): Add assert that mesh is indeed empty. */ return false; } @@ -415,7 +415,7 @@ static bool opensubdiv_createEvaluator(CCGSubSurf *ss) OpenSubdiv_Converter converter; OpenSubdiv_TopologyRefinerDescr *topology_refiner; if (ss-fMap-numEntries == 0) { - /* OpenSubdiv doesn't support meshes withut faces. */ + /* OpenSubdiv doesn't support meshes without faces. */ return false; } ccgSubSurf_converter_setup_from_ccg(ss, converter); @@ -425,7 +425,7 @@ static bool opensubdiv_createEvaluator(CCGSubSurf *ss) openSubdiv_createEvaluatorDescr(topology_refiner, ss-subdivLevels); if (ss-osd_evaluator == NULL) { - BLI_assert(!OpenSubdiv initializetion failed, should not happen.); + BLI_assert(!OpenSubdiv initialization failed, should not happen.); return false; } return true; ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [b8e2b8a] master: OpenSubdiv: Rework vert-edge and vert-face ordering
Commit: b8e2b8ae8a65824ebe8a69d20971b5ad8474a875 Author: Sergey Sharybin Date: Wed Jul 29 17:10:13 2015 +0200 Branches: master https://developer.blender.org/rBb8e2b8ae8a65824ebe8a69d20971b5ad8474a875 OpenSubdiv: Rework vert-edge and vert-face ordering Now the code survives multiple non-manifolds happening on the vert. Still not totally optimal but at least gives much better mesh support. === M intern/opensubdiv/opensubdiv_converter.cc === diff --git a/intern/opensubdiv/opensubdiv_converter.cc b/intern/opensubdiv/opensubdiv_converter.cc index 5ae9a6e..34ff17c 100644 --- a/intern/opensubdiv/opensubdiv_converter.cc +++ b/intern/opensubdiv/opensubdiv_converter.cc @@ -35,6 +35,8 @@ #include opensubdiv_converter_capi.h #include opensubdiv_intern.h +#include stack + namespace OpenSubdiv { namespace OPENSUBDIV_VERSION { namespace Far { @@ -49,6 +51,21 @@ inline int findInArray(T array, int value) } /* namespace */ +struct StackElem { + StackElem(int face_start, + int edge_start, + int face_vert_start, + bool append_start_edge = true) + : face_start(face_start), + edge_start(edge_start), + face_vert_start(face_vert_start), + append_start_edge(append_start_edge){} + int face_start; + int edge_start; + int face_vert_start; + bool append_start_edge; +}; + template inline bool TopologyRefinerFactoryOpenSubdiv_Converter::resizeComponentTopology( TopologyRefiner refiner, @@ -118,45 +135,124 @@ inline bool TopologyRefinerFactoryOpenSubdiv_Converter::assignComponentTopolog int *vert_edges = new int[num_vert_edges]; conv.get_vert_edges(conv, vert, vert_edges); /* Order vertex edges and faces in a CCW order. */ - Index face_start = INDEX_INVALID; - Index edge_start = INDEX_INVALID; - int face_vert_start = 0; + /* TODO(sergey): Look into possible optimizations here. */ + bool *face_used = new bool[num_faces]; + memset(face_used, 0, sizeof(bool) * num_faces); + std::stackStackElem stack; + int edge_count_ordered = 0, face_count_ordered = 0; if (num_vert_edges == num_vert_faces) { - face_start = vert_faces[0]; - face_vert_start = findInArray(getBaseFaceVertices(refiner, face_start), vert); - edge_start = getBaseFaceEdges(refiner, face_start)[face_vert_start]; - } else { + /* Manifold vertex, start with any face and perform traversal. */ + int face_start = vert_faces[0]; + int face_vert_start = findInArray(getBaseFaceVertices(refiner, face_start), vert); + int edge_start = getBaseFaceEdges(refiner, face_start)[face_vert_start]; + stack.push(StackElem(face_start, edge_start, face_vert_start)); + } + else { + /* ** Non-manifold vertex. Special handle here. ** */ + /* Add all loose edges adjacent to the vertex. */ for (int i = 0; i num_vert_edges; ++i) { IndexArray edge_faces = getBaseEdgeFaces(refiner, vert_edges[i]); - if (edge_faces.size() == 1) { - edge_start = vert_edges[i]; - face_start = edge_faces[0]; - face_vert_start = findInArray(getBaseFaceVertices(refiner, face_start), vert); + if (edge_faces.size() == 0) { + /* Can't really orient loose edges, just add then straight +* to the vert-edges array. +*/ + dst_vert_edges[edge_count_ordered++] = vert_edges[i]; + } + else if (edge_faces.size() == 1) { + int edge_start = vert_edges[i]; + int face_start = edge_faces[0]; + int face_vert_start = findInArray(getBaseFaceVertices(refiner, face_start), vert); if (edge_start == (getBaseFaceEdges(refiner, face_start)[face_vert_start])) { + stack.push(StackElem(face_start, edge_start, face_vert_start)); + face_used[face_start] = true; + } + }
[Bf-blender-cvs] [af6bbab] master: OpenSubdiv: Fix for weirdly ordered lines
Commit: af6bbab5b485c83c20c0819f7171d3224e38b1e3 Author: Sergey Sharybin Date: Wed Jul 29 13:54:07 2015 +0200 Branches: master https://developer.blender.org/rBaf6bbab5b485c83c20c0819f7171d3224e38b1e3 OpenSubdiv: Fix for weirdly ordered lines === M intern/opensubdiv/opensubdiv_converter.cc === diff --git a/intern/opensubdiv/opensubdiv_converter.cc b/intern/opensubdiv/opensubdiv_converter.cc index 6b245db..5ae9a6e 100644 --- a/intern/opensubdiv/opensubdiv_converter.cc +++ b/intern/opensubdiv/opensubdiv_converter.cc @@ -109,14 +109,14 @@ inline bool TopologyRefinerFactoryOpenSubdiv_Converter::assignComponentTopolog for (int vert = 0; vert num_verts; ++vert) { /* Vert-Faces */ IndexArray dst_vert_faces = getBaseVertexFaces(refiner, vert); - int num_vert_edges = conv.get_num_vert_edges(conv, vert); - int *vert_edges = new int[num_vert_edges]; - conv.get_vert_edges(conv, vert, vert_edges); - /* Vert-Edges */ - IndexArray dst_vert_edges = getBaseVertexEdges(refiner, vert); int num_vert_faces = conv.get_num_vert_faces(conv, vert); int *vert_faces = new int[num_vert_faces]; conv.get_vert_faces(conv, vert, vert_faces); + /* Vert-Edges */ + IndexArray dst_vert_edges = getBaseVertexEdges(refiner, vert); + int num_vert_edges = conv.get_num_vert_edges(conv, vert); + int *vert_edges = new int[num_vert_edges]; + conv.get_vert_edges(conv, vert, vert_edges); /* Order vertex edges and faces in a CCW order. */ Index face_start = INDEX_INVALID; Index edge_start = INDEX_INVALID; ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [51c1927] master: OpenSubdiv: Make topology orientation optional
Commit: 51c1927ccb546cffe30ebcd9e4ecf6aa07b96ce1 Author: Sergey Sharybin Date: Wed Jul 29 17:41:57 2015 +0200 Branches: master https://developer.blender.org/rB51c1927ccb546cffe30ebcd9e4ecf6aa07b96ce1 OpenSubdiv: Make topology orientation optional === M intern/opensubdiv/opensubdiv_converter.cc M intern/opensubdiv/opensubdiv_intern.h === diff --git a/intern/opensubdiv/opensubdiv_converter.cc b/intern/opensubdiv/opensubdiv_converter.cc index a84939f..fe12c84 100644 --- a/intern/opensubdiv/opensubdiv_converter.cc +++ b/intern/opensubdiv/opensubdiv_converter.cc @@ -134,6 +134,7 @@ inline bool TopologyRefinerFactoryOpenSubdiv_Converter::assignComponentTopolog int num_vert_edges = conv.get_num_vert_edges(conv, vert); int *vert_edges = new int[num_vert_edges]; conv.get_vert_edges(conv, vert, vert_edges); +#ifdef OPENSUBDIV_ORIENT_TOPOLOGY /* Order vertex edges and faces in a CCW order. */ /* TODO(sergey): Look into possible optimizations here. */ bool *face_used = new bool[num_faces]; @@ -253,6 +254,10 @@ inline bool TopologyRefinerFactoryOpenSubdiv_Converter::assignComponentTopolog } } #endif +#else /* OPENSUBDIV_ORIENT_TOPOLOGY */ + memcpy(dst_vert_edges[0], vert_edges, sizeof(int) * num_vert_edges); + memcpy(dst_vert_faces[0], vert_faces, sizeof(int) * num_vert_faces); +#endif /* OPENSUBDIV_ORIENT_TOPOLOGY */ delete [] vert_edges; delete [] vert_faces; diff --git a/intern/opensubdiv/opensubdiv_intern.h b/intern/opensubdiv/opensubdiv_intern.h index 034677f..3e3925e 100644 --- a/intern/opensubdiv/opensubdiv_intern.h +++ b/intern/opensubdiv/opensubdiv_intern.h @@ -33,4 +33,11 @@ # define OPENSUBDIV_VALIDATE_TOPOLOGY #endif +/* Currently OpenSubdiv expects topology to be oriented, + * but sometimes it's handy to disable orientation code + * to check whether it causes some weird issues by using + * pre-oriented model. + */ +#define OPENSUBDIV_ORIENT_TOPOLOGY + #endif /* __OPENSUBDIV_INTERN_H__ */ ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [4737b12] master: Cycles: Fix issue in closure merge function.
Commit: 4737b1246241fd575921f93ddf229da656c7fb5a Author: Lukas Stockner Date: Wed Jul 29 22:04:36 2015 +0200 Branches: master https://developer.blender.org/rB4737b1246241fd575921f93ddf229da656c7fb5a Cycles: Fix issue in closure merge function. * Did not check data2, this partially fixes T45583. * Initialize data2 in some closures to avoid potential problems. Differential Revision: https://developer.blender.org/D1436 === M intern/cycles/kernel/kernel_shader.h M intern/cycles/kernel/svm/svm_closure.h === diff --git a/intern/cycles/kernel/kernel_shader.h b/intern/cycles/kernel/kernel_shader.h index 94e1302..6b560f5 100644 --- a/intern/cycles/kernel/kernel_shader.h +++ b/intern/cycles/kernel/kernel_shader.h @@ -459,7 +459,7 @@ ccl_device void shader_merge_closures(ShaderData *sd) continue; #endif - if(!(sci-type == scj-type sci-data0 == scj-data0 sci-data1 == scj-data1)) + if(!(sci-type == scj-type sci-data0 == scj-data0 sci-data1 == scj-data1 sci-data2 == scj-data2)) continue; if(CLOSURE_IS_BSDF_OR_BSSRDF(sci-type)) { diff --git a/intern/cycles/kernel/svm/svm_closure.h b/intern/cycles/kernel/svm/svm_closure.h index 20a6cb8..20105fd 100644 --- a/intern/cycles/kernel/svm/svm_closure.h +++ b/intern/cycles/kernel/svm/svm_closure.h @@ -30,6 +30,7 @@ ccl_device void svm_node_glass_setup(ShaderData *sd, ShaderClosure *sc, int type else { sc-data0 = 0.0f; sc-data1 = 0.0f; + sc-data2 = 0.0f; ccl_fetch(sd, flag) |= bsdf_reflection_setup(sc); } } @@ -393,6 +394,7 @@ ccl_device void svm_node_closure_bsdf(KernelGlobals *kg, ShaderData *sd, float * sc-N = N; sc-data0 = 0.0f; sc-data1 = 0.0f; + sc-data2 = 0.0f; ccl_fetch(sd, flag) |= bsdf_transparent_setup(sc); } } @@ -545,6 +547,7 @@ ccl_device void svm_node_closure_volume(KernelGlobals *kg, ShaderData *sd, float if(sc) { sc-data0 = param2; /* g */ sc-data1 = 0.0f; + sc-data2 = 0.0f; ccl_fetch(sd, flag) |= volume_henyey_greenstein_setup(sc); } break; ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [d49703b] master: Fix SCons path issue on Windows.
Commit: d49703b298ebab297fe3c3ecb337cd0a6fa78611 Author: Thomas Dinges Date: Wed Jul 29 21:48:24 2015 +0200 Branches: master https://developer.blender.org/rBd49703b298ebab297fe3c3ecb337cd0a6fa78611 Fix SCons path issue on Windows. === M intern/audaspace/SConscript === diff --git a/intern/audaspace/SConscript b/intern/audaspace/SConscript index 2975545..8dfaa86 100644 --- a/intern/audaspace/SConscript +++ b/intern/audaspace/SConscript @@ -21,12 +21,14 @@ # # * END LGPL LICENSE BLOCK * +from os import path Import ('env') sources = env.Glob('intern/*.cpp') + env.Glob('FX/*.cpp') # AUD_PyInit is for external audaspace only -sources.remove('intern/AUD_PyInit.cpp') +sources.remove(path.join('intern', 'AUD_PyInit.cpp')) + incs = '. intern FX ' + env['BF_PTHREADS_INC'] + ' ' + env['BF_BOOST_INC'] defs = [] ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] SVN commit: /data/svn/repos/bf-blender [61538] trunk/lib/benchmarks/cycles /pabellon_barcelona/reference: Cycles benchmark: Add reference images for barcelona
Revision: 61538 https://developer.blender.org/rBL61538 Author: sergey Date: 2015-07-29 09:33:59 + (Wed, 29 Jul 2015) Log Message: --- Cycles benchmark: Add reference images for barcelona The files are rendered with 32K samples and intended to be used for checking convergence of the test renders. All the files are rendered with the same light path settings as sunset scene. Added Paths: --- trunk/lib/benchmarks/cycles/pabellon_barcelona/reference/ trunk/lib/benchmarks/cycles/pabellon_barcelona/reference/barcelona_midday_32768s.exr trunk/lib/benchmarks/cycles/pabellon_barcelona/reference/barcelona_night_32768s.exr trunk/lib/benchmarks/cycles/pabellon_barcelona/reference/barcelona_sunset_32768s.exr trunk/lib/benchmarks/cycles/pabellon_barcelona/reference/readme.txt Added: trunk/lib/benchmarks/cycles/pabellon_barcelona/reference/barcelona_midday_32768s.exr === (Binary files differ) Index: trunk/lib/benchmarks/cycles/pabellon_barcelona/reference/barcelona_midday_32768s.exr === --- trunk/lib/benchmarks/cycles/pabellon_barcelona/reference/barcelona_midday_32768s.exr 2015-07-21 16:09:23 UTC (rev 61537) +++ trunk/lib/benchmarks/cycles/pabellon_barcelona/reference/barcelona_midday_32768s.exr 2015-07-29 09:33:59 UTC (rev 61538) Property changes on: trunk/lib/benchmarks/cycles/pabellon_barcelona/reference/barcelona_midday_32768s.exr ___ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Added: trunk/lib/benchmarks/cycles/pabellon_barcelona/reference/barcelona_night_32768s.exr === (Binary files differ) Index: trunk/lib/benchmarks/cycles/pabellon_barcelona/reference/barcelona_night_32768s.exr === --- trunk/lib/benchmarks/cycles/pabellon_barcelona/reference/barcelona_night_32768s.exr 2015-07-21 16:09:23 UTC (rev 61537) +++ trunk/lib/benchmarks/cycles/pabellon_barcelona/reference/barcelona_night_32768s.exr 2015-07-29 09:33:59 UTC (rev 61538) Property changes on: trunk/lib/benchmarks/cycles/pabellon_barcelona/reference/barcelona_night_32768s.exr ___ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Added: trunk/lib/benchmarks/cycles/pabellon_barcelona/reference/barcelona_sunset_32768s.exr === (Binary files differ) Index: trunk/lib/benchmarks/cycles/pabellon_barcelona/reference/barcelona_sunset_32768s.exr === --- trunk/lib/benchmarks/cycles/pabellon_barcelona/reference/barcelona_sunset_32768s.exr 2015-07-21 16:09:23 UTC (rev 61537) +++ trunk/lib/benchmarks/cycles/pabellon_barcelona/reference/barcelona_sunset_32768s.exr 2015-07-29 09:33:59 UTC (rev 61538) Property changes on: trunk/lib/benchmarks/cycles/pabellon_barcelona/reference/barcelona_sunset_32768s.exr ___ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Added: trunk/lib/benchmarks/cycles/pabellon_barcelona/reference/readme.txt === --- trunk/lib/benchmarks/cycles/pabellon_barcelona/reference/readme.txt (rev 0) +++ trunk/lib/benchmarks/cycles/pabellon_barcelona/reference/readme.txt 2015-07-29 09:33:59 UTC (rev 61538) @@ -0,0 +1 @@ +All the images were rendered with the same light path settings as sunset scene. \ No newline at end of file ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [d4b5dd3] master: ImBuf: Fixes for openexr images
Commit: d4b5dd31a360313734f78a112daf4fd8f26fceb5 Author: Sergey Sharybin Date: Wed Jul 29 11:59:29 2015 +0200 Branches: master https://developer.blender.org/rBd4b5dd31a360313734f78a112daf4fd8f26fceb5 ImBuf: Fixes for openexr images - Fixed crash loading multilayer EXR - Fixed another memory leak loading multilayer EXR === M source/blender/imbuf/intern/openexr/openexr_api.cpp === diff --git a/source/blender/imbuf/intern/openexr/openexr_api.cpp b/source/blender/imbuf/intern/openexr/openexr_api.cpp index 33555f0..e3c0273 100644 --- a/source/blender/imbuf/intern/openexr/openexr_api.cpp +++ b/source/blender/imbuf/intern/openexr/openexr_api.cpp @@ -1560,7 +1560,6 @@ static ExrHandle *imb_exr_begin_read_mem(IStream file_stream, MultiPartInputFil std::vectorMultiViewChannelName channels; GetChannelsInMultiPartFile(*data-ifile, channels); - data-multiView = new StringVector(); imb_exr_get_views(*data-ifile, *data-multiView); for (size_t i = 0; i channels.size(); i++) { @@ -2048,13 +2047,19 @@ struct ImBuf *imb_load_openexr(const unsigned char *mem, size_t size, int flags, } } + /* file is no longer needed */ + delete membuf; + delete file; } } + else { + delete membuf; + delete file; + } + if (flags IB_alphamode_detect) ibuf-flags |= IB_alphamode_premul; } - delete file; - delete membuf; return(ibuf); } catch (const std::exception exc) ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [8e9534a] master: OpenSubdiv: Make empty meshes supported and not crashing
Commit: 8e9534a850e593e7cd7bbb35c4326bb69eb5b58c Author: Sergey Sharybin Date: Wed Jul 29 13:09:49 2015 +0200 Branches: master https://developer.blender.org/rB8e9534a850e593e7cd7bbb35c4326bb69eb5b58c OpenSubdiv: Make empty meshes supported and not crashing === M intern/opensubdiv/opensubdiv_capi.cc M source/blender/blenkernel/intern/CCGSubSurf_opensubdiv.c === diff --git a/intern/opensubdiv/opensubdiv_capi.cc b/intern/opensubdiv/opensubdiv_capi.cc index 717af4f..e3bc589 100644 --- a/intern/opensubdiv/opensubdiv_capi.cc +++ b/intern/opensubdiv/opensubdiv_capi.cc @@ -292,7 +292,7 @@ void openSubdiv_osdGLMeshBindVertexBuffer(OpenSubdiv_GLMesh *gl_mesh) const struct OpenSubdiv_TopologyRefinerDescr *openSubdiv_getGLMeshTopologyRefiner( OpenSubdiv_GLMesh *gl_mesh) { - return gl_mesh-topology_refiner;; + return gl_mesh-topology_refiner; } int openSubdiv_supportGPUDisplay(void) diff --git a/source/blender/blenkernel/intern/CCGSubSurf_opensubdiv.c b/source/blender/blenkernel/intern/CCGSubSurf_opensubdiv.c index d3898d9..57cf397 100644 --- a/source/blender/blenkernel/intern/CCGSubSurf_opensubdiv.c +++ b/source/blender/blenkernel/intern/CCGSubSurf_opensubdiv.c @@ -243,6 +243,12 @@ bool ccgSubSurf_prepareGLMesh(CCGSubSurf *ss, bool use_osd_glsl) } if (ss-osd_mesh == NULL) { + if (ss-osd_topology_refiner == NULL) { + /* Happens with empty meshes. */ + /* TODO(sergey): Add assert thet mesh is indeed empty. */ + return false; + } + ss-osd_mesh = openSubdiv_createOsdGLMeshFromTopologyRefiner( ss-osd_topology_refiner, compute_type, @@ -408,13 +414,21 @@ static bool opensubdiv_createEvaluator(CCGSubSurf *ss) { OpenSubdiv_Converter converter; OpenSubdiv_TopologyRefinerDescr *topology_refiner; + if (ss-fMap-numEntries == 0) { + /* OpenSubdiv doesn't support meshes withut faces. */ + return false; + } ccgSubSurf_converter_setup_from_ccg(ss, converter); topology_refiner = openSubdiv_createTopologyRefinerDescr(converter); ccgSubSurf_converter_free(converter); ss-osd_evaluator = openSubdiv_createEvaluatorDescr(topology_refiner, ss-subdivLevels); - return ss-osd_evaluator != NULL; + if (ss-osd_evaluator == NULL) { + BLI_assert(!OpenSubdiv initializetion failed, should not happen.); + return false; + } + return true; } static bool opensubdiv_ensureEvaluator(CCGSubSurf *ss) @@ -779,11 +793,13 @@ CCGError ccgSubSurf_initOpenSubdivSync(CCGSubSurf *ss) void ccgSubSurf_prepareTopologyRefiner(CCGSubSurf *ss, DerivedMesh *dm) { if (ss-osd_mesh == NULL || ss-osd_mesh_invalid) { - OpenSubdiv_Converter converter; - ccgSubSurf_converter_setup_from_derivedmesh(ss, dm, converter); - /* TODO(sergey): Remove possibly previously allocated refiner. */ - ss-osd_topology_refiner = openSubdiv_createTopologyRefinerDescr(converter); - ccgSubSurf_converter_free(converter); + if (dm-getNumPolys(dm) != 0) { + OpenSubdiv_Converter converter; + ccgSubSurf_converter_setup_from_derivedmesh(ss, dm, converter); + /* TODO(sergey): Remove possibly previously allocated refiner. */ + ss-osd_topology_refiner = openSubdiv_createTopologyRefinerDescr(converter); + ccgSubSurf_converter_free(converter); + } } /* Update number of grids, needed for things like final faces @@ -837,9 +853,6 @@ void ccgSubSurf__sync_opensubdiv(CCGSubSurf *ss) /* Evaluate opensubdiv mesh into the CCG grids. */ opensubdiv_evaluateGrids(ss); } - else { - BLI_assert(!OpenSubdiv initializetion failed, should not happen.); - } } else { BLI_assert(ss-meshIFC.numLayers == 3); @@ -853,16 +866,22 @@ void ccgSubSurf__sync_opensubdiv(CCGSubSurf *ss) static const OpenSubdiv_TopologyRefinerDescr *get_effective_refiner( const CCGSubSurf *ss) { - if (ss-osd_topology_refiner) { + if (ss-osd_topology_refiner != NULL) { return ss-osd_topology_refiner; } - return openSubdiv_getGLMeshTopologyRefiner(ss-osd_mesh); + if (ss-osd_mesh != NULL) { + return openSubdiv_getGLMeshTopologyRefiner(ss-osd_mesh); + } + return 0; } int ccgSubSurf__getNumOsdBaseVerts(const CCGSubSurf *ss) { const
[Bf-blender-cvs] [792d665] master: Remove not really helpful debug print
Commit: 792d66527b1d699e8faa3a2e7a22c4b4d5dd9baa Author: Sergey Sharybin Date: Wed Jul 29 12:01:41 2015 +0200 Branches: master https://developer.blender.org/rB792d66527b1d699e8faa3a2e7a22c4b4d5dd9baa Remove not really helpful debug print If it's still considered useful please move it inside G.debug or ifdef code. === M source/blender/render/intern/source/render_result.c === diff --git a/source/blender/render/intern/source/render_result.c b/source/blender/render/intern/source/render_result.c index 639ce20..a03bf3c 100644 --- a/source/blender/render/intern/source/render_result.c +++ b/source/blender/render/intern/source/render_result.c @@ -912,7 +912,6 @@ RenderResult *render_result_new_from_exr(void *exrhandle, const char *colorspace BLI_listbase_sort(rl-passes, order_render_passes); for (rpass = rl-passes.first; rpass; rpass = rpass-next) { - printf(%d: %s\n, c++, rpass-name); rpass-rectx = rectx; rpass-recty = recty; ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [ba32d9d] master: Expose bvhtree_sphereray_tri_intersection for general use
Commit: ba32d9d4cd2ad256722a4405d2b1909ec8d4d811 Author: Campbell Barton Date: Wed Jul 29 21:14:16 2015 +1000 Branches: master https://developer.blender.org/rBba32d9d4cd2ad256722a4405d2b1909ec8d4d811 Expose bvhtree_sphereray_tri_intersection for general use === M source/blender/blenkernel/BKE_bvhutils.h M source/blender/blenkernel/intern/bvhutils.c === diff --git a/source/blender/blenkernel/BKE_bvhutils.h b/source/blender/blenkernel/BKE_bvhutils.h index d8eaa35..18eda63 100644 --- a/source/blender/blenkernel/BKE_bvhutils.h +++ b/source/blender/blenkernel/BKE_bvhutils.h @@ -125,6 +125,9 @@ void free_bvhtree_from_mesh(struct BVHTreeFromMesh *data); float bvhtree_ray_tri_intersection( const BVHTreeRay *ray, const float m_dist, const float v0[3], const float v1[3], const float v2[3]); +float bvhtree_sphereray_tri_intersection( +const BVHTreeRay *ray, float radius, const float m_dist, +const float v0[3], const float v1[3], const float v2[3]); float nearest_point_in_tri_surface_squared( const float v0[3], const float v1[3], const float v2[3], const float p[3], int *v, int *e, float nearest[3]); diff --git a/source/blender/blenkernel/intern/bvhutils.c b/source/blender/blenkernel/intern/bvhutils.c index a7a9dc1..6131153 100644 --- a/source/blender/blenkernel/intern/bvhutils.c +++ b/source/blender/blenkernel/intern/bvhutils.c @@ -66,7 +66,7 @@ float bvhtree_ray_tri_intersection( return FLT_MAX; } -static float sphereray_tri_intersection( +float bvhtree_sphereray_tri_intersection( const BVHTreeRay *ray, float radius, const float m_dist, const float v0[3], const float v1[3], const float v2[3]) { @@ -194,7 +194,7 @@ static void mesh_faces_spherecast(void *userdata, int index, const BVHTreeRay *r if (data-sphere_radius == 0.0f) dist = bvhtree_ray_tri_intersection(ray, hit-dist, t0, t1, t2); else - dist = sphereray_tri_intersection(ray, data-sphere_radius, hit-dist, t0, t1, t2); + dist = bvhtree_sphereray_tri_intersection(ray, data-sphere_radius, hit-dist, t0, t1, t2); if (dist = 0 dist hit-dist) { hit-index = index; @@ -229,7 +229,7 @@ static void mesh_looptri_spherecast(void *userdata, int index, const BVHTreeRay if (data-sphere_radius == 0.0f) dist = bvhtree_ray_tri_intersection(ray, hit-dist, UNPACK3(vtri_co)); else - dist = sphereray_tri_intersection(ray, data-sphere_radius, hit-dist, UNPACK3(vtri_co)); + dist = bvhtree_sphereray_tri_intersection(ray, data-sphere_radius, hit-dist, UNPACK3(vtri_co)); if (dist = 0 dist hit-dist) { hit-index = index; @@ -257,7 +257,7 @@ static void editmesh_faces_spherecast(void *userdata, int index, const BVHTreeRa if (data-sphere_radius == 0.0f) dist = bvhtree_ray_tri_intersection(ray, hit-dist, t0, t1, t2); else - dist = sphereray_tri_intersection(ray, data-sphere_radius, hit-dist, t0, t1, t2); + dist = bvhtree_sphereray_tri_intersection(ray, data-sphere_radius, hit-dist, t0, t1, t2); if (dist = 0 dist hit-dist) { hit-index = index; ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [18af73e] master: Add mathutils.bvhtree API
Commit: 18af73e461f9a943ae606fcc1401297f4afad20f Author: Campbell Barton Date: Wed Jul 29 21:16:28 2015 +1000 Branches: master https://developer.blender.org/rB18af73e461f9a943ae606fcc1401297f4afad20f Add mathutils.bvhtree API Originally D966 by @lukastoenne, with own additions - trees can be initialized from Object's, BMesh, or passed in as vert+polygon arrays. - original indices of ngons/faces are used. (instead of tessellated indices). - ray_cast, find_nearest methods - find overlapping faces between 2 trees === M doc/python_api/sphinx_doc_gen.py M source/blender/python/mathutils/CMakeLists.txt M source/blender/python/mathutils/mathutils.c A source/blender/python/mathutils/mathutils_bvhtree.c A source/blender/python/mathutils/mathutils_bvhtree.h === diff --git a/doc/python_api/sphinx_doc_gen.py b/doc/python_api/sphinx_doc_gen.py index 05ea0d0..4e14706 100644 --- a/doc/python_api/sphinx_doc_gen.py +++ b/doc/python_api/sphinx_doc_gen.py @@ -263,6 +263,7 @@ else: gpu, mathutils, mathutils.geometry, +mathutils.bvhtree, mathutils.kdtree, mathutils.noise, freestyle, @@ -1644,7 +1645,7 @@ def write_rst_contents(basepath): standalone_modules = ( # mathutils -mathutils, mathutils.geometry, mathutils.kdtree, mathutils.noise, +mathutils, mathutils.geometry, mathutils.bvhtree, mathutils.kdtree, mathutils.noise, # misc freestyle, bgl, blf, gpu, aud, bpy_extras, # bmesh, submodules are in own page @@ -1796,6 +1797,7 @@ def write_rst_importable_modules(basepath): bpy.props: Property Definitions, mathutils: Math Types Utilities, mathutils.geometry : Geometry Utilities, +mathutils.bvhtree: BVHTree Utilities, mathutils.kdtree : KDTree Utilities, mathutils.noise : Noise Utilities, freestyle: Freestyle Module, diff --git a/source/blender/python/mathutils/CMakeLists.txt b/source/blender/python/mathutils/CMakeLists.txt index ef6b090..f70f893 100644 --- a/source/blender/python/mathutils/CMakeLists.txt +++ b/source/blender/python/mathutils/CMakeLists.txt @@ -22,6 +22,7 @@ set(INC . ../../blenlib ../../blenkernel + ../../bmesh ../../makesdna ../../../../intern/guardedalloc ) @@ -37,6 +38,7 @@ set(SRC mathutils_Matrix.c mathutils_Quaternion.c mathutils_Vector.c + mathutils_bvhtree.c mathutils_geometry.c mathutils_interpolate.c mathutils_kdtree.c @@ -48,6 +50,7 @@ set(SRC mathutils_Matrix.h mathutils_Quaternion.h mathutils_Vector.h + mathutils_bvhtree.h mathutils_geometry.h mathutils_interpolate.h mathutils_kdtree.h diff --git a/source/blender/python/mathutils/mathutils.c b/source/blender/python/mathutils/mathutils.c index ba7f351..ec249e8 100644 --- a/source/blender/python/mathutils/mathutils.c +++ b/source/blender/python/mathutils/mathutils.c @@ -600,6 +600,7 @@ static struct PyModuleDef M_Mathutils_module_def = { #include mathutils_geometry.h #include mathutils_interpolate.h #ifndef MATH_STANDALONE +# include mathutils_bvhtree.h # include mathutils_kdtree.h # include mathutils_noise.h #endif @@ -653,6 +654,11 @@ PyMODINIT_FUNC PyInit_mathutils(void) PyDict_SetItemString(sys_modules, PyModule_GetName(submodule), submodule); Py_INCREF(submodule); + /* BVHTree submodule */ + PyModule_AddObject(mod, bvhtree, (submodule = PyInit_mathutils_bvhtree())); + PyDict_SetItemString(sys_modules, PyModule_GetName(submodule), submodule); + Py_INCREF(submodule); + /* KDTree submodule */ PyModule_AddObject(mod, kdtree, (submodule = PyInit_mathutils_kdtree())); PyDict_SetItemString(sys_modules, PyModule_GetName(submodule), submodule); diff --git a/source/blender/python/mathutils/mathutils_bvhtree.c b/source/blender/python/mathutils/mathutils_bvhtree.c new file mode 100644 index 000..b3b9532 --- /dev/null +++ b/source/blender/python/mathutils/mathutils_bvhtree.c @@ -0,0 +1,1193 @@ +/* + * * 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
[Bf-blender-cvs] [18c0a15] master: Cleanup
Commit: 18c0a15e1ebaa94177b848a2dc6ccc96a38dc5ed Author: Campbell Barton Date: Wed Jul 29 20:18:22 2015 +1000 Branches: master https://developer.blender.org/rB18c0a15e1ebaa94177b848a2dc6ccc96a38dc5ed Cleanup === M source/blender/editors/space_view3d/drawmesh.c M source/blender/render/intern/source/render_result.c === diff --git a/source/blender/editors/space_view3d/drawmesh.c b/source/blender/editors/space_view3d/drawmesh.c index 6085f0c..d806dfa 100644 --- a/source/blender/editors/space_view3d/drawmesh.c +++ b/source/blender/editors/space_view3d/drawmesh.c @@ -662,7 +662,7 @@ static void update_tface_color_layer(DerivedMesh *dm, bool use_mcol) copy_mode = COPY_PREV; } else if (ma (ma-shade_flag MA_OBCOLOR)) { - int loop_index = mp-loopstart;; + int loop_index = mp-loopstart; for (j = 0; j mp-totloop; j++, loop_index++) { copy_v3_v3_char(finalCol[loop_index].r, (char *)Gtexdraw.obcol); } diff --git a/source/blender/render/intern/source/render_result.c b/source/blender/render/intern/source/render_result.c index a03bf3c..27fc412 100644 --- a/source/blender/render/intern/source/render_result.c +++ b/source/blender/render/intern/source/render_result.c @@ -905,7 +905,6 @@ RenderResult *render_result_new_from_exr(void *exrhandle, const char *colorspace IMB_exr_multilayer_convert(exrhandle, rr, ml_addview_cb, ml_addlayer_cb, ml_addpass_cb); for (rl = rr-layers.first; rl; rl = rl-next) { - int c=0; rl-rectx = rectx; rl-recty = recty; ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [8b84c5f] master: Port optimization from gooseberry branch:
Commit: 8b84c5f9de32e42e835a15aa1ef05504d0a4c198 Author: Antony Riakiotakis Date: Wed Jul 29 12:52:03 2015 +0200 Branches: master https://developer.blender.org/rB8b84c5f9de32e42e835a15aa1ef05504d0a4c198 Port optimization from gooseberry branch: Treat scrubbing as animation. This is checked during various updates to avoid some costly calculations. === M source/blender/blenloader/intern/readfile.c M source/blender/editors/animation/anim_ops.c M source/blender/editors/screen/screen_edit.c M source/blender/editors/screen/screen_ops.c M source/blender/editors/space_graph/graph_ops.c M source/blender/makesdna/DNA_screen_types.h === diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 90aafa9..541b401 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -5948,6 +5948,7 @@ static void lib_link_screen(FileData *fd, Main *main) sc-scene = main-scene.first; sc-animtimer = NULL; /* saved in rare cases */ + sc-scrubbing = false; for (sa = sc-areabase.first; sa; sa = sa-next) { SpaceLink *sl; diff --git a/source/blender/editors/animation/anim_ops.c b/source/blender/editors/animation/anim_ops.c index 2de4293..20d1dbe 100644 --- a/source/blender/editors/animation/anim_ops.c +++ b/source/blender/editors/animation/anim_ops.c @@ -148,18 +148,24 @@ static void change_frame_seq_preview_begin(bContext *C, const wmEvent *event) { ScrArea *sa = CTX_wm_area(C); if (sa sa-spacetype == SPACE_SEQ) { + wmWindow *win = CTX_wm_window(C); SpaceSeq *sseq = sa-spacedata.first; if (ED_space_sequencer_check_show_strip(sseq)) { ED_sequencer_special_preview_set(C, event-mval); } + if (win-screen) + win-screen-scrubbing = true; } } static void change_frame_seq_preview_end(bContext *C) { if (ED_sequencer_special_preview_get() != NULL) { + wmWindow *win = CTX_wm_window(C); Scene *scene = CTX_data_scene(C); ED_sequencer_special_preview_clear(); WM_event_add_notifier(C, NC_SCENE | ND_FRAME, scene); + if (win-screen) + win-screen-scrubbing = false; } } diff --git a/source/blender/editors/screen/screen_edit.c b/source/blender/editors/screen/screen_edit.c index 0c40c83..ae0d261 100644 --- a/source/blender/editors/screen/screen_edit.c +++ b/source/blender/editors/screen/screen_edit.c @@ -1314,7 +1314,8 @@ void ED_screen_exit(bContext *C, wmWindow *window, bScreen *screen) if (screen-animtimer) WM_event_remove_timer(wm, window, screen-animtimer); screen-animtimer = NULL; - + screen-scrubbing = false; + if (screen-mainwin) wm_subwindow_close(window, screen-mainwin); screen-mainwin = 0; diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c index 571dab6..b157c91 100644 --- a/source/blender/editors/screen/screen_ops.c +++ b/source/blender/editors/screen/screen_ops.c @@ -3626,7 +3626,7 @@ bScreen *ED_screen_animation_playing(const wmWindowManager *wm) wmWindow *win; for (win = wm-windows.first; win; win = win-next) { - if (win-screen-animtimer) { + if (win-screen-animtimer || win-screen-scrubbing) { return win-screen; } } diff --git a/source/blender/editors/space_graph/graph_ops.c b/source/blender/editors/space_graph/graph_ops.c index f4cce29..93773a1 100644 --- a/source/blender/editors/space_graph/graph_ops.c +++ b/source/blender/editors/space_graph/graph_ops.c @@ -139,6 +139,7 @@ static void graphview_cursor_setprops(bContext *C, wmOperator *op, const wmEvent /* Modal Operator init */ static int graphview_cursor_invoke(bContext *C, wmOperator *op, const wmEvent *event) { + wmWindow *win = CTX_wm_window(C); /* Change to frame that mouse is over before adding modal handler, * as user could click on a single frame (jump to frame) as well as * click-dragging over a range (modal scrubbing). @@ -148,6 +149,9 @@ static int graphview_cursor_invoke(bContext *C, wmOperator *op, const wmEvent *e /* apply these changes first */ graphview_cursor_apply(C, op); + if (win-screen) + win-screen-scrubbing = true; + /* add temp handler */ WM_event_add_modal_handler(C, op); return OPERATOR_RUNNING_MODAL; @@ -156,9 +160,12 @@ static int
[Bf-blender-cvs] [90655d0] master: Math Lib: add isect_tri_tri_epsilon_v3 function
Commit: 90655d06d410b831ff199cfc6f080004cf08ce8c Author: Campbell Barton Date: Wed Jul 29 17:48:38 2015 +1000 Branches: master https://developer.blender.org/rB90655d06d410b831ff199cfc6f080004cf08ce8c Math Lib: add isect_tri_tri_epsilon_v3 function === M source/blender/blenlib/BLI_math_geom.h M source/blender/blenlib/intern/math_geom.c === diff --git a/source/blender/blenlib/BLI_math_geom.h b/source/blender/blenlib/BLI_math_geom.h index 8820b88..5124da4 100644 --- a/source/blender/blenlib/BLI_math_geom.h +++ b/source/blender/blenlib/BLI_math_geom.h @@ -187,6 +187,11 @@ bool isect_ray_tri_threshold_v3(const float p1[3], const float d[3], const float v0[3], const float v1[3], const float v2[3], float *r_lambda, float r_uv[2], const float threshold); bool isect_ray_tri_epsilon_v3(const float p1[3], const float d[3], const float v0[3], const float v1[3], const float v2[3], float *r_lambda, float r_uv[2], const float epsilon); +bool isect_tri_tri_epsilon_v3( +const float t_a0[3], const float t_a1[3], const float t_a2[3], +const float t_b0[3], const float t_b1[3], const float t_b2[3], +float r_i1[3], float r_i2[3], +const float epsilon); /* point in polygon */ bool isect_point_poly_v2(const float pt[2], const float verts[][2], const unsigned int nr, const bool use_holes); diff --git a/source/blender/blenlib/intern/math_geom.c b/source/blender/blenlib/intern/math_geom.c index 3fb6de4..e05cd7c 100644 --- a/source/blender/blenlib/intern/math_geom.c +++ b/source/blender/blenlib/intern/math_geom.c @@ -1475,6 +1475,84 @@ bool isect_plane_plane_v3(float r_isect_co[3], float r_isect_no[3], return isect_line_plane_v3(r_isect_co, plane_a_co, plane_a_co_other, plane_b_co, plane_b_no); } +/** + * Intersect two triangles. + * + * \param r_i1, r_i2: Optional arguments to retrieve the overlapping edge between the 2 triangles. + * \return true when the triangles intersect. + * + * \note intersections between coplanar triangles are currently undetected. + */ +bool isect_tri_tri_epsilon_v3( +const float t_a0[3], const float t_a1[3], const float t_a2[3], +const float t_b0[3], const float t_b1[3], const float t_b2[3], +float r_i1[3], float r_i2[3], +const float epsilon) +{ + const float *tri_pair[2][3] = {{t_a0, t_a1, t_a2}, {t_b0, t_b1, t_b2}}; + float no_a[3], no_b[3]; + float isect_co[3], isect_no[3]; + + BLI_assert((r_i1 != NULL) == (r_i2 != NULL)); + + normal_tri_v3(no_a, UNPACK3(tri_pair[0])); + normal_tri_v3(no_b, UNPACK3(tri_pair[1])); + + if (isect_plane_plane_v3(isect_co, isect_no, t_a0, no_a, t_b0, no_b)) { + float isect_co_other[3]; + struct { + float min, max; + } range[2] = {{FLT_MAX, -FLT_MAX}, {FLT_MAX, -FLT_MAX}}; + int t; + + add_v3_v3v3(isect_co_other, isect_co, isect_no); + + /* For both triangles, find the overlap with the line defined by (isect_co, isect_co_other). +* When the ranges overlap we know the triangles do too. */ + for (t = 0; t 2; t++) { + int j, j_prev; + + for (j = 0, j_prev = 2; j 3; j_prev = j++) { + /* intersection point on the line intersecting both planes */ + float ix_span[3]; + /* intersection point on the triangles edge */ + float ix_tri[3]; + + if (isect_line_line_epsilon_v3( + isect_co, isect_co_other, + tri_pair[t][j], tri_pair[t][j_prev], + ix_span, ix_tri, + epsilon) == 2) + { + const float edge_fac = line_point_factor_v3(ix_tri, tri_pair[t][j], tri_pair[t][j_prev]); + if (edge_fac = -epsilon edge_fac = 1.0f + epsilon) { + const float span_fac = dist_signed_squared_to_plane3_v3(ix_tri, isect_no); + range[t].min = min_ff(range[t].min, span_fac); + range[t].max = max_ff(range[t].max, span_fac); + } + } + } + + if (range[t].min == FLT_MAX) { + return false; + } + } + + if (((range[0].min range[1].max) || +(range[0].max
[Bf-blender-cvs] [cbf936a] master: Gooseberry animation feature: Add toggle that disables modifiers on fcurves.
Commit: cbf936a332728212c380c4761853d2d41981 Author: Antony Riakiotakis Date: Wed Apr 15 15:58:25 2015 +0200 Branches: master https://developer.blender.org/rBcbf936a332728212c380c4761853d2d41981 Gooseberry animation feature: Add toggle that disables modifiers on fcurves. Feature is found as per channel option in graph editor. === M source/blender/blenkernel/intern/fmodifier.c M source/blender/editors/animation/anim_channels_defines.c M source/blender/editors/include/ED_anim_api.h M source/blender/editors/space_graph/graph_buttons.c M source/blender/makesdna/DNA_action_types.h M source/blender/makesdna/DNA_anim_types.h === diff --git a/source/blender/blenkernel/intern/fmodifier.c b/source/blender/blenkernel/intern/fmodifier.c index 396a260..6e78d08 100644 --- a/source/blender/blenkernel/intern/fmodifier.c +++ b/source/blender/blenkernel/intern/fmodifier.c @@ -1398,7 +1398,10 @@ float evaluate_time_fmodifiers(FModifierStackStorage *storage, ListBase *modifie /* sanity checks */ if (ELEM(NULL, modifiers, modifiers-last)) return evaltime; - + + if (fcu-flag FCURVE_MOD_OFF) + return evaltime; + /* Starting from the end of the stack, calculate the time effects of various stacked modifiers * on the time the F-Curve should be evaluated at. * @@ -1455,6 +1458,9 @@ void evaluate_value_fmodifiers(FModifierStackStorage *storage, ListBase *modifie /* sanity checks */ if (ELEM(NULL, modifiers, modifiers-first)) return; + + if (fcu-flag FCURVE_MOD_OFF) + return; /* evaluate modifiers */ for (fcm = modifiers-first; fcm; fcm = fcm-next) { diff --git a/source/blender/editors/animation/anim_channels_defines.c b/source/blender/editors/animation/anim_channels_defines.c index 61dc638..db222f9 100644 --- a/source/blender/editors/animation/anim_channels_defines.c +++ b/source/blender/editors/animation/anim_channels_defines.c @@ -867,7 +867,11 @@ static int acf_group_setting_flag(bAnimContext *ac, eAnimChannel_Settings settin case ACHANNEL_SETTING_MUTE: /* muted */ return AGRP_MUTED; - + + case ACHANNEL_SETTING_MOD_OFF: /* muted */ + *neg = 1; + return AGRP_MODIFIERS_OFF; + case ACHANNEL_SETTING_PROTECT: /* protected */ return AGRP_PROTECTED; @@ -985,6 +989,10 @@ static int acf_fcurve_setting_flag(bAnimContext *UNUSED(ac), eAnimChannel_Settin case ACHANNEL_SETTING_VISIBLE: /* visibility - graph editor */ return FCURVE_VISIBLE; + case ACHANNEL_SETTING_MOD_OFF: + *neg = 1; + return FCURVE_MOD_OFF; + default: /* unsupported */ return 0; } @@ -3979,6 +3987,7 @@ static void draw_setting_widget(bAnimContext *ac, bAnimListElem *ale, const bAni { short ptrsize, butType; bool negflag; + bool usetoggle = true; int flag, icon; void *ptr; const char *tooltip; @@ -4000,7 +4009,13 @@ static void draw_setting_widget(bAnimContext *ac, bAnimListElem *ale, const bAni else tooltip = TIP_(Channels are visible in Graph Editor for editing); break; - + + case ACHANNEL_SETTING_MOD_OFF: /* modifiers disabled */ + icon = ICON_MODIFIER; + usetoggle = false; + tooltip = TIP_(F-Curve modifiers are disabled); + break; + case ACHANNEL_SETTING_EXPAND: /* expanded triangle */ //icon = ((enabled) ? ICON_TRIA_DOWN : ICON_TRIA_RIGHT); icon = ICON_TRIA_RIGHT; @@ -4061,11 +4076,18 @@ static void draw_setting_widget(bAnimContext *ac, bAnimListElem *ale, const bAni } /* type of button */ - if (negflag) - butType = UI_BTYPE_ICON_TOGGLE_N; - else - butType = UI_BTYPE_ICON_TOGGLE; - + if (usetoggle) { + if (negflag) + butType = UI_BTYPE_ICON_TOGGLE_N; + else + butType = UI_BTYPE_ICON_TOGGLE; + } + else { + if (negflag) + butType = UI_BTYPE_TOGGLE_N; + else + butType = UI_BTYPE_TOGGLE; + } /* draw button for setting */ if (ptr flag) { switch (ptrsize) { @@
[Bf-blender-cvs] [a3b8661] master: Do not show fps while scrubbing.
Commit: a3b86611a8182a95c5ed2205b0b71bfcc8f0837b Author: Antony Riakiotakis Date: Fri Jun 5 16:47:01 2015 +0200 Branches: master https://developer.blender.org/rBa3b86611a8182a95c5ed2205b0b71bfcc8f0837b Do not show fps while scrubbing. === M source/blender/editors/include/ED_screen.h M source/blender/editors/screen/screen_ops.c M source/blender/editors/space_view3d/view3d_draw.c === diff --git a/source/blender/editors/include/ED_screen.h b/source/blender/editors/include/ED_screen.h index 588b046..c8f1239 100644 --- a/source/blender/editors/include/ED_screen.h +++ b/source/blender/editors/include/ED_screen.h @@ -124,6 +124,7 @@ voidED_update_for_newframe(struct Main *bmain, struct Scene *scene, int mute voidED_refresh_viewport_fps(struct bContext *C); intED_screen_animation_play(struct bContext *C, int sync, int mode); bScreen*ED_screen_animation_playing(const struct wmWindowManager *wm); +bScreen *ED_screen_animation_no_scrub(const struct wmWindowManager *wm); /* screen keymaps */ voidED_operatortypes_screen(void); diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c index b157c91..1d31cc0 100644 --- a/source/blender/editors/screen/screen_ops.c +++ b/source/blender/editors/screen/screen_ops.c @@ -3634,6 +3634,20 @@ bScreen *ED_screen_animation_playing(const wmWindowManager *wm) return NULL; } +bScreen *ED_screen_animation_no_scrub(const wmWindowManager *wm) +{ + wmWindow *win; + + for (win = wm-windows.first; win; win = win-next) { + if (win-screen-animtimer) { + return win-screen; + } + } + + return NULL; +} + + /* toggle operator */ int ED_screen_animation_play(bContext *C, int sync, int mode) { diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c index 0f4e05c..7f553fe 100644 --- a/source/blender/editors/space_view3d/view3d_draw.c +++ b/source/blender/editors/space_view3d/view3d_draw.c @@ -3877,7 +3877,7 @@ static void view3d_main_area_draw_info(const bContext *C, Scene *scene, if ((v3d-flag2 V3D_RENDER_OVERRIDE) == 0) { wmWindowManager *wm = CTX_wm_manager(C); - if ((U.uiflag USER_SHOW_FPS) ED_screen_animation_playing(wm)) { + if ((U.uiflag USER_SHOW_FPS) ED_screen_animation_no_scrub(wm)) { ED_scene_draw_fps(scene, rect); } else if (U.uiflag USER_SHOW_VIEWPORTNAME) { ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [ce1bc18] master: Clean channels tool for Hwoozeberry.
Commit: ce1bc1838b611b53fe06dc3ead81eb4b0460634b Author: Antony Riakiotakis Date: Wed May 20 15:30:33 2015 +0200 Branches: master https://developer.blender.org/rBce1bc1838b611b53fe06dc3ead81eb4b0460634b Clean channels tool for Hwoozeberry. Basically it's a clean keyframes tool, but also removes a channel if the only remaining keyframe has the default value only and is not used by drivers or generative modifiers. It's was used to help with performance of keyframe-heavy scenes in gooseberry. Note, as always the curve left after the clean tool is used is not the same as the original, so this tool is better used before doing custom editing of fcurves and after initial keyframe insertion, to get rid of any unwanted keyframes inserted while doing mass keyframe insertion (by selecting all bones and pressing I for instance) === M release/scripts/startup/bl_ui/space_dopesheet.py M release/scripts/startup/bl_ui/space_graph.py M source/blender/editors/animation/keyframes_general.c M source/blender/editors/include/ED_keyframes_edit.h M source/blender/editors/space_action/action_edit.c M source/blender/editors/space_graph/graph_edit.c === diff --git a/release/scripts/startup/bl_ui/space_dopesheet.py b/release/scripts/startup/bl_ui/space_dopesheet.py index 0b7502b..7fd9719 100644 --- a/release/scripts/startup/bl_ui/space_dopesheet.py +++ b/release/scripts/startup/bl_ui/space_dopesheet.py @@ -339,6 +339,7 @@ class DOPESHEET_MT_key(Menu): layout.separator() layout.operator(action.clean) +layout.operator(action.clean, text=Clean Channels).channels = True layout.operator(action.sample) layout.separator() @@ -421,6 +422,8 @@ class DOPESHEET_MT_delete(Menu): layout.separator() layout.operator(action.clean) +layout.operator(action.clean, text=Clean Channels).channels = True + if __name__ == __main__: # only for live edit. bpy.utils.register_module(__name__) diff --git a/release/scripts/startup/bl_ui/space_graph.py b/release/scripts/startup/bl_ui/space_graph.py index 2f5381e..104fd14 100644 --- a/release/scripts/startup/bl_ui/space_graph.py +++ b/release/scripts/startup/bl_ui/space_graph.py @@ -258,6 +258,7 @@ class GRAPH_MT_key(Menu): layout.separator() layout.operator(graph.clean) +layout.operator(graph.clean, text=Clean Channels).channels = True layout.operator(graph.smooth) layout.operator(graph.sample) layout.operator(graph.bake) @@ -293,6 +294,7 @@ class GRAPH_MT_delete(Menu): layout.separator() layout.operator(graph.clean) +layout.operator(graph.clean, text=Clean Channels).channels = True if __name__ == __main__: # only for live edit. diff --git a/source/blender/editors/animation/keyframes_general.c b/source/blender/editors/animation/keyframes_general.c index c198184..cb49c2f 100644 --- a/source/blender/editors/animation/keyframes_general.c +++ b/source/blender/editors/animation/keyframes_general.c @@ -179,17 +179,22 @@ void duplicate_fcurve_keys(FCurve *fcu) /* */ /* Various Tools */ -/* Basic F-Curve 'cleanup' function that removes 'double points' and unnecessary keyframes on linear-segments only */ -void clean_fcurve(FCurve *fcu, float thresh) +/* Basic F-Curve 'cleanup' function that removes 'double points' and unnecessary keyframes on linear-segments only + * optionally clears up curve if one keyframe with default value remains */ +void clean_fcurve(struct bAnimContext *ac, bAnimListElem *ale, float thresh, bool cleardefault) { + FCurve *fcu = (FCurve *)ale-key_data; BezTriple *old_bezts, *bezt, *beztn; BezTriple *lastb; int totCount, i; /* check if any points */ - if ((fcu == NULL) || (fcu-bezt == NULL) || (fcu-totvert = 1)) + if ((fcu == NULL) || (fcu-bezt == NULL) || (fcu-totvert == 0) || + (!cleardefault fcu-totvert == 1)) + { return; - + } + /* make a copy of the old BezTriples, and clear F-Curve */ old_bezts = fcu-bezt; totCount = fcu-totvert; @@ -284,6 +289,34 @@ void clean_fcurve(FCurve *fcu, float thresh) /* now free the memory used by the old BezTriples */ if (old_bezts) MEM_freeN(old_bezts); + + /* final step, if there is just one key in fcurve, check if it's +* the default value and if is, remove fcurve completely. */ + if (cleardefault fcu-totvert == 1) { + float default_value = 0.0f; + PointerRNA id_ptr, ptr; + PropertyRNA *prop; + RNA_id_pointer_create(ale-id, id_ptr); + + /* get property to read from, and get value as appropriate */ +
[Bf-blender-cvs] [7b82308] master: Cleanup: safe-free macro for collision modifier
Commit: 7b8230898e396230efc85750f8de47727be9f6cd Author: Campbell Barton Date: Thu Jul 30 15:43:07 2015 +1000 Branches: master https://developer.blender.org/rB7b8230898e396230efc85750f8de47727be9f6cd Cleanup: safe-free macro for collision modifier === M source/blender/modifiers/intern/MOD_collision.c === diff --git a/source/blender/modifiers/intern/MOD_collision.c b/source/blender/modifiers/intern/MOD_collision.c index 931f82c..8590177 100644 --- a/source/blender/modifiers/intern/MOD_collision.c +++ b/source/blender/modifiers/intern/MOD_collision.c @@ -67,30 +67,20 @@ static void freeData(ModifierData *md) CollisionModifierData *collmd = (CollisionModifierData *) md; if (collmd) { - if (collmd-bvhtree) + if (collmd-bvhtree) { BLI_bvhtree_free(collmd-bvhtree); - if (collmd-x) - MEM_freeN(collmd-x); - if (collmd-xnew) - MEM_freeN(collmd-xnew); - if (collmd-current_x) - MEM_freeN(collmd-current_x); - if (collmd-current_xnew) - MEM_freeN(collmd-current_xnew); - if (collmd-current_v) - MEM_freeN(collmd-current_v); - if (collmd-mfaces) - MEM_freeN(collmd-mfaces); - - collmd-x = NULL; - collmd-xnew = NULL; - collmd-current_x = NULL; - collmd-current_xnew = NULL; - collmd-current_v = NULL; + collmd-bvhtree = NULL; + } + + MEM_SAFE_FREE(collmd-x); + MEM_SAFE_FREE(collmd-xnew); + MEM_SAFE_FREE(collmd-current_x); + MEM_SAFE_FREE(collmd-current_xnew); + MEM_SAFE_FREE(collmd-current_v); + MEM_SAFE_FREE(collmd-mfaces); + collmd-time_x = collmd-time_xnew = -1000; collmd-numverts = 0; - collmd-bvhtree = NULL; - collmd-mfaces = NULL; } } ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [5fabcd0] master: Use looptri for smoke bvhtree
Commit: 5fabcd099b09d67269703ba1864e49df7f55563a Author: Campbell Barton Date: Thu Jul 30 14:50:51 2015 +1000 Branches: master https://developer.blender.org/rB5fabcd099b09d67269703ba1864e49df7f55563a Use looptri for smoke bvhtree Missed from D1424 === M source/blender/blenkernel/intern/smoke.c === diff --git a/source/blender/blenkernel/intern/smoke.c b/source/blender/blenkernel/intern/smoke.c index e802b29..2637969 100644 --- a/source/blender/blenkernel/intern/smoke.c +++ b/source/blender/blenkernel/intern/smoke.c @@ -1662,7 +1662,7 @@ static void emit_from_derivedmesh(Object *flow_ob, SmokeDomainSettings *sds, Smo res[i] = em-res[i] * hires_multiplier; } - if (bvhtree_from_mesh_faces(treeData, dm, 0.0f, 4, 6)) { + if (bvhtree_from_mesh_looptri(treeData, dm, 0.0f, 4, 6)) { #pragma omp parallel for schedule(static) for (z = min[2]; z max[2]; z++) { int x, y; @@ -2650,7 +2650,7 @@ static void smokeModifier_process(SmokeModifierData *smd, Scene *scene, Object * if (smd-flow-dm) smd-flow-dm-release(smd-flow-dm); smd-flow-dm = CDDM_copy(dm); - DM_ensure_tessface(smd-flow-dm); + DM_ensure_looptri(smd-flow-dm); if (scene-r.cfra smd-time) { @@ -2673,7 +2673,7 @@ static void smokeModifier_process(SmokeModifierData *smd, Scene *scene, Object * smd-coll-dm-release(smd-coll-dm); smd-coll-dm = CDDM_copy(dm); - DM_ensure_tessface(smd-coll-dm); + DM_ensure_looptri(smd-coll-dm); } smd-time = scene-r.cfra; ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [75e387d] master: error reordering args
Commit: 75e387d6c568f48e085553547b0cb2f2c9cada99 Author: Campbell Barton Date: Thu Jul 30 09:49:12 2015 +1000 Branches: master https://developer.blender.org/rB75e387d6c568f48e085553547b0cb2f2c9cada99 error reordering args === M source/blender/render/intern/source/render_texture.c === diff --git a/source/blender/render/intern/source/render_texture.c b/source/blender/render/intern/source/render_texture.c index fc95cf8..b282ec0 100644 --- a/source/blender/render/intern/source/render_texture.c +++ b/source/blender/render/intern/source/render_texture.c @@ -3527,8 +3527,9 @@ void render_realtime_texture(ShadeInput *shi, Image *ima) /* A modified part of shadeinput.c - shade_input_set_uv() * Used for sampling UV mapped texture color */ static void textured_face_generate_uv( -float r_uv[2], const float normal[3], const float hit[3], -const float v1[3], const float v2[3], const float v3[3]) +const float normal[3], const float hit[3], +const float v1[3], const float v2[3], const float v3[3], +float r_uv[2]) { float detsh, t00, t10, t01, t11; @@ -3733,7 +3734,7 @@ void RE_sample_material_color( const float *uv1, *uv2, *uv3; const CustomData *data = orcoDm-loopData; const MLoopUV *mloopuv = data-layers[layer_index + i].data; - const float uv[2]; + float uv[2]; float l; /* point layer name from actual layer data */ ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [9f92a40] experimental-build: Merge remote-tracking branch 'origin/master' into experimental-build
Commit: 9f92a40f224cfa3241b7c13d03793e6d05482a22 Author: Dalai Felinto Date: Wed Jul 29 11:29:37 2015 -0300 Branches: experimental-build https://developer.blender.org/rB9f92a40f224cfa3241b7c13d03793e6d05482a22 Merge remote-tracking branch 'origin/master' into experimental-build === === ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [a1a4d50] experimental-build: Spherical Stereo - now building for OSX too
Commit: a1a4d50cf5d1981f5fceb806749e4fa260d8aefc Author: Dalai Felinto Date: Wed Jul 29 11:30:08 2015 -0300 Branches: experimental-build https://developer.blender.org/rBa1a4d50cf5d1981f5fceb806749e4fa260d8aefc Spherical Stereo - now building for OSX too === M intern/cycles/app/cycles_xml.cpp M intern/cycles/blender/addon/properties.py M intern/cycles/blender/blender_camera.cpp M intern/cycles/blender/blender_session.cpp M intern/cycles/blender/blender_sync.h M intern/cycles/kernel/kernel_camera.h M intern/cycles/kernel/kernel_projection.h M intern/cycles/kernel/kernel_types.h M intern/cycles/render/camera.cpp M intern/cycles/render/camera.h M release/scripts/startup/bl_ui/properties_data_camera.py M source/blender/makesrna/intern/rna_render.c M source/blender/render/extern/include/RE_engine.h M source/blender/render/intern/source/external_engine.c M source/blenderplayer/bad_level_call_stubs/stubs.c === diff --git a/intern/cycles/app/cycles_xml.cpp b/intern/cycles/app/cycles_xml.cpp index edea8cd..25da1be 100644 --- a/intern/cycles/app/cycles_xml.cpp +++ b/intern/cycles/app/cycles_xml.cpp @@ -359,6 +359,10 @@ static void xml_read_camera(const XMLReadState state, pugi::xml_node node) xml_read_float(cam-fisheye_fov, node, fisheye_fov); xml_read_float(cam-fisheye_lens, node, fisheye_lens); + xml_read_float(cam-use_spherical_stereo, node, use_spherical_stereo); + xml_read_float(cam-interocular_distance, node, interocular_distance); + xml_read_float(cam-convergence_distance, node, convergence_distance); + xml_read_float(cam-sensorwidth, node, sensorwidth); xml_read_float(cam-sensorheight, node, sensorheight); diff --git a/intern/cycles/blender/addon/properties.py b/intern/cycles/blender/addon/properties.py index 3417435..4d38e50 100644 --- a/intern/cycles/blender/addon/properties.py +++ b/intern/cycles/blender/addon/properties.py @@ -630,6 +630,12 @@ class CyclesCameraSettings(bpy.types.PropertyGroup): subtype='ANGLE', default=math.pi, ) +cls.use_spherical_stereo = BoolProperty( +name=Spherical Stereo, +description=Render every pixel rotating the camera around the +middle of the interocular distance, +default=True, +) @classmethod def unregister(cls): diff --git a/intern/cycles/blender/blender_camera.cpp b/intern/cycles/blender/blender_camera.cpp index 0a79bfb..6fb2856 100644 --- a/intern/cycles/blender/blender_camera.cpp +++ b/intern/cycles/blender/blender_camera.cpp @@ -57,6 +57,9 @@ struct BlenderCamera { float latitude_max; float longitude_min; float longitude_max; + bool use_spherical_stereo; + float interocular_distance; + float convergence_distance; enum { AUTO, HORIZONTAL, VERTICAL } sensor_fit; float sensor_width; @@ -95,7 +98,24 @@ static void blender_camera_init(BlenderCamera *bcam, BL::RenderSettings b_render bcam-full_height = render_resolution_y(b_render); } -static float blender_camera_focal_distance(BL::RenderEngine b_engine, BL::Object b_ob, BL::Camera b_camera) +static float camera_shift_x(BL::RenderEngine b_engine, BL::Object b_ob, BL::Camera b_camera, bool use_spherical_stereo) +{ + if(use_spherical_stereo) + return b_camera.shift_x(); + else + return b_engine.camera_shift_x(b_ob); +} + +static void camera_model_matrix(BL::RenderEngine b_engine, BL::Object b_ob, bool use_spherical_stereo, +BL::Arrayfloat, 16 r_matrix) +{ + if(use_spherical_stereo) + memcpy(r_matrix, b_ob.matrix_world(), sizeof(float)*16); + else + b_engine.camera_model_matrix(b_ob, r_matrix); +} + +static float blender_camera_focal_distance(BL::RenderEngine b_engine, BL::Object b_ob, BL::Camera b_camera, bool use_spherical_stereo) { BL::Object b_dof_object = b_camera.dof_object(); @@ -104,15 +124,28 @@ static float blender_camera_focal_distance(BL::RenderEngine b_engine, BL::Object /* for dof object, return distance along camera Z direction */ BL::Arrayfloat, 16 b_ob_matrix; - b_engine.camera_model_matrix(b_ob, b_ob_matrix); - Transform obmat = get_transform(b_ob_matrix); + camera_model_matrix(b_engine, b_ob, use_spherical_stereo, b_ob_matrix); + Transform obmat = transform_clear_scale(get_transform(b_ob_matrix)); Transform dofmat = get_transform(b_dof_object.matrix_world()); Transform mat = transform_inverse(obmat) * dofmat; return fabsf(transform_get_column(mat, 3).z); } -static void
[Bf-blender-cvs] [7481c61] experimental-build: Revert Spherical Stereo - now building for OSX too
Commit: 7481c61b67ae216e917ec80d6e6c1bd26e4bce7e Author: Dalai Felinto Date: Wed Jul 29 11:30:36 2015 -0300 Branches: experimental-build https://developer.blender.org/rB7481c61b67ae216e917ec80d6e6c1bd26e4bce7e Revert Spherical Stereo - now building for OSX too This reverts commit a1a4d50cf5d1981f5fceb806749e4fa260d8aefc. === M intern/cycles/app/cycles_xml.cpp M intern/cycles/blender/addon/properties.py M intern/cycles/blender/blender_camera.cpp M intern/cycles/blender/blender_session.cpp M intern/cycles/blender/blender_sync.h M intern/cycles/kernel/kernel_camera.h M intern/cycles/kernel/kernel_projection.h M intern/cycles/kernel/kernel_types.h M intern/cycles/render/camera.cpp M intern/cycles/render/camera.h M release/scripts/startup/bl_ui/properties_data_camera.py M source/blender/makesrna/intern/rna_render.c M source/blender/render/extern/include/RE_engine.h M source/blender/render/intern/source/external_engine.c M source/blenderplayer/bad_level_call_stubs/stubs.c === diff --git a/intern/cycles/app/cycles_xml.cpp b/intern/cycles/app/cycles_xml.cpp index 25da1be..edea8cd 100644 --- a/intern/cycles/app/cycles_xml.cpp +++ b/intern/cycles/app/cycles_xml.cpp @@ -359,10 +359,6 @@ static void xml_read_camera(const XMLReadState state, pugi::xml_node node) xml_read_float(cam-fisheye_fov, node, fisheye_fov); xml_read_float(cam-fisheye_lens, node, fisheye_lens); - xml_read_float(cam-use_spherical_stereo, node, use_spherical_stereo); - xml_read_float(cam-interocular_distance, node, interocular_distance); - xml_read_float(cam-convergence_distance, node, convergence_distance); - xml_read_float(cam-sensorwidth, node, sensorwidth); xml_read_float(cam-sensorheight, node, sensorheight); diff --git a/intern/cycles/blender/addon/properties.py b/intern/cycles/blender/addon/properties.py index 4d38e50..3417435 100644 --- a/intern/cycles/blender/addon/properties.py +++ b/intern/cycles/blender/addon/properties.py @@ -630,12 +630,6 @@ class CyclesCameraSettings(bpy.types.PropertyGroup): subtype='ANGLE', default=math.pi, ) -cls.use_spherical_stereo = BoolProperty( -name=Spherical Stereo, -description=Render every pixel rotating the camera around the -middle of the interocular distance, -default=True, -) @classmethod def unregister(cls): diff --git a/intern/cycles/blender/blender_camera.cpp b/intern/cycles/blender/blender_camera.cpp index 6fb2856..0a79bfb 100644 --- a/intern/cycles/blender/blender_camera.cpp +++ b/intern/cycles/blender/blender_camera.cpp @@ -57,9 +57,6 @@ struct BlenderCamera { float latitude_max; float longitude_min; float longitude_max; - bool use_spherical_stereo; - float interocular_distance; - float convergence_distance; enum { AUTO, HORIZONTAL, VERTICAL } sensor_fit; float sensor_width; @@ -98,24 +95,7 @@ static void blender_camera_init(BlenderCamera *bcam, BL::RenderSettings b_render bcam-full_height = render_resolution_y(b_render); } -static float camera_shift_x(BL::RenderEngine b_engine, BL::Object b_ob, BL::Camera b_camera, bool use_spherical_stereo) -{ - if(use_spherical_stereo) - return b_camera.shift_x(); - else - return b_engine.camera_shift_x(b_ob); -} - -static void camera_model_matrix(BL::RenderEngine b_engine, BL::Object b_ob, bool use_spherical_stereo, -BL::Arrayfloat, 16 r_matrix) -{ - if(use_spherical_stereo) - memcpy(r_matrix, b_ob.matrix_world(), sizeof(float)*16); - else - b_engine.camera_model_matrix(b_ob, r_matrix); -} - -static float blender_camera_focal_distance(BL::RenderEngine b_engine, BL::Object b_ob, BL::Camera b_camera, bool use_spherical_stereo) +static float blender_camera_focal_distance(BL::RenderEngine b_engine, BL::Object b_ob, BL::Camera b_camera) { BL::Object b_dof_object = b_camera.dof_object(); @@ -124,28 +104,15 @@ static float blender_camera_focal_distance(BL::RenderEngine b_engine, BL::Object /* for dof object, return distance along camera Z direction */ BL::Arrayfloat, 16 b_ob_matrix; - camera_model_matrix(b_engine, b_ob, use_spherical_stereo, b_ob_matrix); - Transform obmat = transform_clear_scale(get_transform(b_ob_matrix)); + b_engine.camera_model_matrix(b_ob, b_ob_matrix); + Transform obmat = get_transform(b_ob_matrix); Transform dofmat = get_transform(b_dof_object.matrix_world()); Transform mat = transform_inverse(obmat) * dofmat; return
[Bf-blender-cvs] [5b31669] temp_display_optimization: Merge branch 'master' into temp_display_optimization
Commit: 5b316690edcc23298df2aebf3f5a6eb2a87250f6 Author: Antony Riakiotakis Date: Wed Jul 29 16:37:43 2015 +0200 Branches: temp_display_optimization https://developer.blender.org/rB5b316690edcc23298df2aebf3f5a6eb2a87250f6 Merge branch 'master' into temp_display_optimization === === ___ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs
[Bf-blender-cvs] [3067917] master: Audaspace: fixes for building with Quicktime on Mac.
Commit: 30679179dd6af2fad61df0430951a37853aeb5b6 Author: Jörg Müller Date: Wed Jul 29 16:12:46 2015 +0200 Branches: master https://developer.blender.org/rB30679179dd6af2fad61df0430951a37853aeb5b6 Audaspace: fixes for building with Quicktime on Mac. === M CMakeLists.txt M source/blender/makesrna/SConscript M source/blender/quicktime/CMakeLists.txt M source/blender/quicktime/SConscript M source/blender/quicktime/apple/qtkit_export.m === diff --git a/CMakeLists.txt b/CMakeLists.txt index 591942c..c2c0e8e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -714,24 +714,29 @@ endif() if(WITH_AUDASPACE) if(WITH_SYSTEM_AUDASPACE) - add_definitions(-DAUD_DEVICE_H=AUD_Device.h) - add_definitions(-DAUD_SPECIAL_H=AUD_Special.h) - add_definitions(-DAUD_SOUND_H=AUD_Sound.h) - add_definitions(-DAUD_HANDLE_H=AUD_Handle.h) - add_definitions(-DAUD_SEQUENCE_H=AUD_Sequence.h) - add_definitions(-DAUD_TYPES_H=AUD_Types.h) - add_definitions(-DAUD_PYTHON_H=python/PyAPI.h) - set(AUDASPACE_DEFINITIONS -DWITH_AUDASPACE -DWITH_SYSTEM_AUDASPACE) + set(AUDASPACE_DEFINITIONS + -DWITH_AUDASPACE + -DWITH_SYSTEM_AUDASPACE + -DAUD_DEVICE_H=AUD_Device.h + -DAUD_SPECIAL_H=AUD_Special.h + -DAUD_SOUND_H=AUD_Sound.h + -DAUD_HANDLE_H=AUD_Handle.h + -DAUD_SEQUENCE_H=AUD_Sequence.h + -DAUD_TYPES_H=AUD_Types.h + -DAUD_PYTHON_H=python/PyAPI.h + ) else() - add_definitions(-DAUD_DEVICE_H=AUD_C-API.h) - add_definitions(-DAUD_SPECIAL_H=AUD_C-API.h) - add_definitions(-DAUD_SOUND_H=AUD_C-API.h) - add_definitions(-DAUD_HANDLE_H=AUD_C-API.h) - add_definitions(-DAUD_SEQUENCE_H=AUD_C-API.h) - add_definitions(-DAUD_TYPES_H=AUD_Space.h) set(AUDASPACE_C_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/intern/audaspace/intern) set(AUDASPACE_PY_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/intern/audaspace/intern) - set(AUDASPACE_DEFINITIONS -DWITH_AUDASPACE) + set(AUDASPACE_DEFINITIONS + -DWITH_AUDASPACE + -DAUD_DEVICE_H=AUD_C-API.h + -DAUD_SPECIAL_H=AUD_C-API.h + -DAUD_SOUND_H=AUD_C-API.h + -DAUD_HANDLE_H=AUD_C-API.h + -DAUD_SEQUENCE_H=AUD_C-API.h + -DAUD_TYPES_H=AUD_Space.h + ) endif() endif() diff --git a/source/blender/makesrna/SConscript b/source/blender/makesrna/SConscript index 4b05a0d..089fbe1 100644 --- a/source/blender/makesrna/SConscript +++ b/source/blender/makesrna/SConscript @@ -99,6 +99,10 @@ if env['WITH_BF_FFMPEG']: if env['WITH_BF_QUICKTIME']: defs.append('WITH_QUICKTIME') incs += ' ../quicktime' +# Quicktime needs audaspace defines +if env['WITH_BF_AUDASPACE']: +defs += env['BF_AUDASPACE_DEF'] +incs += ' ' + env['BF_AUDASPACE_C_INC'] if env['WITH_BF_GAMEENGINE']: defs.append('WITH_GAMEENGINE') diff --git a/source/blender/quicktime/CMakeLists.txt b/source/blender/quicktime/CMakeLists.txt index b0a8c92..f853c35 100644 --- a/source/blender/quicktime/CMakeLists.txt +++ b/source/blender/quicktime/CMakeLists.txt @@ -52,10 +52,11 @@ set(SRC add_definitions(-DWITH_QUICKTIME) if(WITH_AUDASPACE) - list(APPEND INC - ../../../intern/audaspace/intern + add_definitions(${AUDASPACE_DEFINITIONS}) + + list(APPEND INC_SYS + ${AUDASPACE_C_INCLUDE_DIRS} ) - add_definitions(-DWITH_AUDASPACE) endif() blender_add_lib(bf_quicktime ${SRC} ${INC} ${INC_SYS}) diff --git a/source/blender/quicktime/SConscript b/source/blender/quicktime/SConscript index 9b367a4..746662e 100644 --- a/source/blender/quicktime/SConscript +++ b/source/blender/quicktime/SConscript @@ -44,8 +44,7 @@ incs = ['.', '../imbuf', '../imbuf/intern', '../render/extern/include', - '../editors/include', - '#/intern/audaspace/intern'] + '../editors/include'] incs.append(env['BF_QUICKTIME_INC']) @@ -54,6 +53,10 @@ priorities = [200,235] defs=['WITH_QUICKTIME'] +if env['WITH_BF_AUDASPACE']: +defs += env['BF_AUDASPACE_DEF'] +incs.append(env['BF_AUDASPACE_C_INC']) + if env['C_COMPILER_ID'] == 'gcc' and env['CCVERSION'] = '4.6': # always use default-Apple-gcc for objC language, gnu-compilers do not support it fully yet env.BlenderLib ('bf_quicktime', sources=source_files, includes=incs, defines=defs, libtype=types,
[Bf-blender-cvs] [becf20e] master: Fix T45605 crash with editmode selection on solidify modifier.
Commit: becf20e29f606cff01d2e6595572b86e734a01d4 Author: Antony Riakiotakis Date: Wed Jul 29 16:18:33 2015 +0200 Branches: master https://developer.blender.org/rBbecf20e29f606cff01d2e6595572b86e734a01d4 Fix T45605 crash with editmode selection on solidify modifier. Looks like derivedmesh draw code always assumed a mesh is available. Make sure that if we use a bmesh, a flag is used to control that. === M source/blender/blenkernel/BKE_DerivedMesh.h M source/blender/blenkernel/intern/cdderivedmesh.c M source/blender/editors/space_view3d/drawobject.c === diff --git a/source/blender/blenkernel/BKE_DerivedMesh.h b/source/blender/blenkernel/BKE_DerivedMesh.h index 32baa45..6b33198 100644 --- a/source/blender/blenkernel/BKE_DerivedMesh.h +++ b/source/blender/blenkernel/BKE_DerivedMesh.h @@ -151,6 +151,7 @@ typedef enum DMDrawFlag { DM_DRAW_USE_TEXPAINT_UV = (1 3), DM_DRAW_SKIP_HIDDEN = (1 4), DM_DRAW_SKIP_SELECT = (1 5), + DM_DRAW_SELECT_USE_EDITMODE = (1 6) } DMDrawFlag; typedef enum DMForeachFlag { diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.c index 6a76603..b5ff4f6 100644 --- a/source/blender/blenkernel/intern/cdderivedmesh.c +++ b/source/blender/blenkernel/intern/cdderivedmesh.c @@ -654,9 +654,15 @@ static void cdDM_drawMappedFaces( /* if we do selection, fill the selection buffer color */ if (G.f G_BACKBUFSEL) { if (!(flag DM_DRAW_SKIP_SELECT)) { - Mesh *me = userData; + Mesh *me = NULL; + BMesh *bm = NULL; unsigned int *fi_map; + if (flag DM_DRAW_SELECT_USE_EDITMODE) + bm = userData; + else + me = userData; + findex_buffer = GPU_buffer_alloc(dm-drawObject-tot_loop_verts * sizeof(int), false); fi_map = GPU_buffer_lock(findex_buffer, GPU_BINDING_ARRAY); @@ -664,10 +670,22 @@ static void cdDM_drawMappedFaces( for (i = 0; i totpoly; i++, mpoly++) { int selcol = 0x; const int orig = (index_mp_to_orig) ? index_mp_to_orig[i] : i; + bool is_hidden; - if ((orig != ORIGINDEX_NONE) (!useHide || !(me-mpoly[orig].flag ME_HIDE))) { - WM_framebuffer_index_get(orig + 1, selcol); + if (useHide) { + if (flag DM_DRAW_SELECT_USE_EDITMODE) { + BMFace *efa = BM_face_at_index(bm, orig); + is_hidden = BM_elem_flag_test(efa, BM_ELEM_HIDDEN) != 0; + } + else { + is_hidden = (me-mpoly[orig].flag ME_HIDE) != 0; + } + + if ((orig != ORIGINDEX_NONE) !is_hidden) + WM_framebuffer_index_get(orig + 1, selcol); } + else if (orig != ORIGINDEX_NONE) + WM_framebuffer_index_get(orig + 1, selcol); for (j = 0; j mpoly-totloop; j++) fi_map[start_element++] = selcol; diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c index fee6805..f03b008 100644 --- a/source/blender/editors/space_view3d/drawobject.c +++ b/source/blender/editors/space_view3d/drawobject.c @@ -8445,7 +8445,7 @@ static void bbs_mesh_solid_EM(BMEditMesh *em, Scene *scene, View3D *v3d, cpack(0); if (use_faceselect) { - dm-drawMappedFaces(dm, bbs_mesh_solid__setSolidDrawOptions, NULL, NULL, em-bm, DM_DRAW_SKIP_HIDDEN); + dm-drawMappedFaces(dm, bbs_mesh_solid__setSolidDrawOptions, NULL, NULL, em-bm, DM_DRAW_SKIP_HIDDEN | DM_DRAW_SELECT_USE_EDITMODE); if (check_ob_drawface_dot(scene, v3d, ob-dt)) { glPointSize(UI_GetThemeValuef(TH_FACEDOT_SIZE)); @@ -8457,7 +8457,7 @@ static void bbs_mesh_solid_EM(BMEditMesh *em, Scene *scene, View3D *v3d, } else { - dm-drawMappedFaces(dm, bbs_mesh_mask__setSolidDrawOptions,