[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [28202] trunk/blender: Merge various small changes from render branch:
Brecht Van Lommel
brecht at blender.org
Thu Apr 15 12:28:33 CEST 2010
Revision: 28202
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=28202
Author: blendix
Date: 2010-04-15 12:28:32 +0200 (Thu, 15 Apr 2010)
Log Message:
-----------
Merge various small changes from render branch:
* Division by zero fix for TNT SVD code.
* Sound fix, in case ffmpeg decode fails, don't use the samples.
* Fix for incorrect bounds of transformed objects in new raytracing code.
* Gave memory arena's a name used for allocations for easier memory
usage debugging.
* Dupligroup no_draw option was using layers but not restrict view/render
setting. (not a bugfix exactly but would do display list context switching
while drawing for no reason).
* Fix objects instanced on hair particles not giving consistent results
when the object is transformed.
* New math functions: madd_v4_v4fl, len_squared_v3v3, interp_v4_v4v4v4,
mul_v4_m4v4, SH and form factor functions, box_minmax_bounds_m4.
* mul_m4_m4m4 and mul_m3_m3m3 now accept the same pointers for multiple
arguments.
* endjob callback for WM jobs system.
* Geometry node uv/color layer now has search list/autocomplete.
* Various small buildsystem tweaks, not strictly needed yet in trunk.
Modified Paths:
--------------
trunk/blender/intern/audaspace/ffmpeg/AUD_FFMPEGReader.cpp
trunk/blender/intern/iksolver/intern/TNT/svd.h
trunk/blender/source/blender/blenkernel/BKE_group.h
trunk/blender/source/blender/blenkernel/intern/BME_tools.c
trunk/blender/source/blender/blenkernel/intern/DerivedMesh.c
trunk/blender/source/blender/blenkernel/intern/anim.c
trunk/blender/source/blender/blenkernel/intern/depsgraph.c
trunk/blender/source/blender/blenkernel/intern/image.c
trunk/blender/source/blender/blenkernel/intern/particle.c
trunk/blender/source/blender/blenkernel/intern/subsurf_ccg.c
trunk/blender/source/blender/blenlib/BLI_kdopbvh.h
trunk/blender/source/blender/blenlib/BLI_math.h
trunk/blender/source/blender/blenlib/BLI_math_geom.h
trunk/blender/source/blender/blenlib/BLI_math_matrix.h
trunk/blender/source/blender/blenlib/BLI_math_vector.h
trunk/blender/source/blender/blenlib/BLI_memarena.h
trunk/blender/source/blender/blenlib/BLI_rand.h
trunk/blender/source/blender/blenlib/BLI_threads.h
trunk/blender/source/blender/blenlib/intern/BLI_heap.c
trunk/blender/source/blender/blenlib/intern/BLI_memarena.c
trunk/blender/source/blender/blenlib/intern/math_geom.c
trunk/blender/source/blender/blenlib/intern/math_matrix.c
trunk/blender/source/blender/blenlib/intern/math_vector.c
trunk/blender/source/blender/blenlib/intern/math_vector_inline.c
trunk/blender/source/blender/blenlib/intern/threads.c
trunk/blender/source/blender/editors/armature/meshlaplacian.c
trunk/blender/source/blender/editors/interface/interface_icons.c
trunk/blender/source/blender/editors/mesh/editmesh_tools.c
trunk/blender/source/blender/editors/object/object_bake.c
trunk/blender/source/blender/editors/physics/physics_fluid.c
trunk/blender/source/blender/editors/render/render_internal.c
trunk/blender/source/blender/editors/render/render_preview.c
trunk/blender/source/blender/editors/screen/screendump.c
trunk/blender/source/blender/editors/sculpt_paint/paint_image.c
trunk/blender/source/blender/editors/space_buttons/space_buttons.c
trunk/blender/source/blender/editors/space_file/filelist.c
trunk/blender/source/blender/editors/space_node/drawnode.c
trunk/blender/source/blender/editors/space_node/node_edit.c
trunk/blender/source/blender/editors/space_outliner/outliner.c
trunk/blender/source/blender/editors/space_view3d/SConscript
trunk/blender/source/blender/editors/uvedit/uvedit_draw.c
trunk/blender/source/blender/editors/uvedit/uvedit_parametrizer.c
trunk/blender/source/blender/gpu/CMakeLists.txt
trunk/blender/source/blender/imbuf/intern/allocimbuf.c
trunk/blender/source/blender/makesrna/RNA_types.h
trunk/blender/source/blender/makesrna/intern/makesrna.c
trunk/blender/source/blender/makesrna/intern/rna_object.c
trunk/blender/source/blender/makesrna/intern/rna_object_force.c
trunk/blender/source/blender/makesrna/intern/rna_scene.c
trunk/blender/source/blender/modifiers/SConscript
trunk/blender/source/blender/modifiers/intern/MOD_edgesplit.c
trunk/blender/source/blender/render/intern/raytrace/Makefile
trunk/blender/source/blender/render/intern/raytrace/rayobject.cpp
trunk/blender/source/blender/render/intern/raytrace/rayobject_qbvh.cpp
trunk/blender/source/blender/render/intern/raytrace/rayobject_svbvh.cpp
trunk/blender/source/blender/render/intern/raytrace/rayobject_vbvh.cpp
trunk/blender/source/blender/render/intern/source/Makefile
trunk/blender/source/blender/render/intern/source/convertblender.c
trunk/blender/source/blender/render/intern/source/occlusion.c
trunk/blender/source/blender/render/intern/source/shadbuf.c
trunk/blender/source/blender/render/intern/source/sss.c
trunk/blender/source/blender/render/intern/source/strand.c
trunk/blender/source/blender/windowmanager/WM_api.h
trunk/blender/source/blender/windowmanager/intern/wm_jobs.c
trunk/blender/source/creator/CMakeLists.txt
trunk/blender/source/creator/SConscript
Added Paths:
-----------
trunk/blender/source/blender/blenlib/intern/math_geom_inline.c
Modified: trunk/blender/intern/audaspace/ffmpeg/AUD_FFMPEGReader.cpp
===================================================================
--- trunk/blender/intern/audaspace/ffmpeg/AUD_FFMPEGReader.cpp 2010-04-15 04:56:44 UTC (rev 28201)
+++ trunk/blender/intern/audaspace/ffmpeg/AUD_FFMPEGReader.cpp 2010-04-15 10:28:32 UTC (rev 28202)
@@ -67,12 +67,12 @@
audio_pkg_data,
audio_pkg_size);
- buf_pos += data_size;
-
// read error, next packet!
if(read_length < 0)
break;
+ buf_pos += data_size;
+
// move packet parameters
audio_pkg_data += read_length;
audio_pkg_size -= read_length;
Modified: trunk/blender/intern/iksolver/intern/TNT/svd.h
===================================================================
--- trunk/blender/intern/iksolver/intern/TNT/svd.h 2010-04-15 04:56:44 UTC (rev 28201)
+++ trunk/blender/intern/iksolver/intern/TNT/svd.h 2010-04-15 10:28:32 UTC (rev 28202)
@@ -349,8 +349,9 @@
for (j = k; j < p-1; j++) {
typename MaTRiX::value_type t = hypot(f,g);
- typename MaTRiX::value_type cs = f/t;
- typename MaTRiX::value_type sn = g/t;
+ /* division by zero checks added to avoid NaN (brecht) */
+ typename MaTRiX::value_type cs = (t == 0.0f)? 0.0f: f/t;
+ typename MaTRiX::value_type sn = (t == 0.0f)? 0.0f: g/t;
if (j != k) {
e[j-1] = t;
}
@@ -366,8 +367,9 @@
}
t = hypot(f,g);
- cs = f/t;
- sn = g/t;
+ /* division by zero checks added to avoid NaN (brecht) */
+ cs = (t == 0.0f)? 0.0f: f/t;
+ sn = (t == 0.0f)? 0.0f: g/t;
s[j] = t;
f = cs*e[j] + sn*s[j+1];
s[j+1] = -sn*e[j] + cs*s[j+1];
Modified: trunk/blender/source/blender/blenkernel/BKE_group.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_group.h 2010-04-15 04:56:44 UTC (rev 28201)
+++ trunk/blender/source/blender/blenkernel/BKE_group.h 2010-04-15 10:28:32 UTC (rev 28202)
@@ -31,6 +31,7 @@
#ifndef BKE_GROUP_H
#define BKE_GROUP_H
+struct Base;
struct Group;
struct GroupObject;
struct Object;
Modified: trunk/blender/source/blender/blenkernel/intern/BME_tools.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/BME_tools.c 2010-04-15 04:56:44 UTC (rev 28201)
+++ trunk/blender/source/blender/blenkernel/intern/BME_tools.c 2010-04-15 10:28:32 UTC (rev 28202)
@@ -50,7 +50,7 @@
td = MEM_callocN(sizeof(BME_TransData_Head), "BMesh transdata header");
td->gh = BLI_ghash_new(BLI_ghashutil_ptrhash,BLI_ghashutil_ptrcmp);
- td->ma = BLI_memarena_new(bufsize);
+ td->ma = BLI_memarena_new(bufsize, "BME_TransData arena");
BLI_memarena_use_calloc(td->ma);
return td;
Modified: trunk/blender/source/blender/blenkernel/intern/DerivedMesh.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/DerivedMesh.c 2010-04-15 04:56:44 UTC (rev 28201)
+++ trunk/blender/source/blender/blenkernel/intern/DerivedMesh.c 2010-04-15 10:28:32 UTC (rev 28202)
@@ -2489,7 +2489,7 @@
tangent= DM_get_face_data_layer(dm, CD_TANGENT);
/* allocate some space */
- arena= BLI_memarena_new(BLI_MEMARENA_STD_BUFSIZE);
+ arena= BLI_memarena_new(BLI_MEMARENA_STD_BUFSIZE, "tangent layer arena");
BLI_memarena_use_calloc(arena);
vtangents= MEM_callocN(sizeof(VertexTangent*)*totvert, "VertexTangent");
Modified: trunk/blender/source/blender/blenkernel/intern/anim.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/anim.c 2010-04-15 04:56:44 UTC (rev 28201)
+++ trunk/blender/source/blender/blenkernel/intern/anim.c 2010-04-15 10:28:32 UTC (rev 28202)
@@ -646,8 +646,18 @@
}
dob= new_dupli_object(lb, go->ob, mat, ob->lay, 0, OB_DUPLIGROUP, animated);
- dob->no_draw= (dob->origlay & group->layer)==0;
-
+
+ /* check the group instance and object layers match, also that the object visible flags are ok. */
+ if( (dob->origlay & group->layer)==0 ||
+ (G.rendering==0 && dob->ob->restrictflag & OB_RESTRICT_VIEW) ||
+ (G.rendering && dob->ob->restrictflag & OB_RESTRICT_RENDER)
+ ) {
+ dob->no_draw= 1;
+ }
+ else {
+ dob->no_draw= 0;
+ }
+
if(go->ob->transflag & OB_DUPLI) {
copy_m4_m4(dob->ob->obmat, dob->mat);
object_duplilist_recursive((ID *)group, scene, go->ob, lb, ob->obmat, level+1, animated);
@@ -1003,7 +1013,7 @@
copy_m4_m4(tmat, obmat);
mul_m4_m4m3(obmat, tmat, mat);
- dob= new_dupli_object(lb, ob, obmat, lay, a, OB_DUPLIFACES, animated);
+ dob= new_dupli_object(lb, ob, obmat, par->lay, a, OB_DUPLIFACES, animated);
if(G.rendering) {
w= (mv4)? 0.25f: 1.0f/3.0f;
Modified: trunk/blender/source/blender/blenkernel/intern/depsgraph.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/depsgraph.c 2010-04-15 04:56:44 UTC (rev 28201)
+++ trunk/blender/source/blender/blenkernel/intern/depsgraph.c 2010-04-15 10:28:32 UTC (rev 28202)
@@ -2237,6 +2237,8 @@
for(go= group->gobject.first; go; go= go->next) {
if(ELEM5(go->ob->type, OB_MESH, OB_CURVE, OB_SURF, OB_FONT, OB_MBALL))
go->ob->recalc |= OB_RECALC_DATA;
+ if(go->ob->proxy_from)
+ go->ob->recalc |= OB_RECALC_OB;
}
group->id.flag &= ~LIB_DOIT;
Modified: trunk/blender/source/blender/blenkernel/intern/image.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/image.c 2010-04-15 04:56:44 UTC (rev 28201)
+++ trunk/blender/source/blender/blenkernel/intern/image.c 2010-04-15 10:28:32 UTC (rev 28202)
@@ -1,4 +1,4 @@
-/* image.c
+/* image.c
*
* $Id$
*
Modified: trunk/blender/source/blender/blenkernel/intern/particle.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/particle.c 2010-04-15 04:56:44 UTC (rev 28201)
+++ trunk/blender/source/blender/blenkernel/intern/particle.c 2010-04-15 10:28:32 UTC (rev 28202)
@@ -4215,18 +4215,11 @@
ParticleSystem *psys = sim->psys;
ParticleSystemModifierData *psmd = sim->psmd;
float loc[3], nor[3], vec[3], side[3], len, obrotmat[4][4], qmat[4][4];
- float xvec[3] = {-1.0, 0.0, 0.0}, q[4];
+ float xvec[3] = {-1.0, 0.0, 0.0}, q[4], nmat[3][3];
sub_v3_v3v3(vec, (cache+cache->steps-1)->co, cache->co);
len= normalize_v3(vec);
- if(pa)
- psys_particle_on_emitter(psmd,sim->psys->part->from,pa->num,pa->num_dmcache,pa->fuv,pa->foffset,loc,nor,0,0,0,0);
- else
- psys_particle_on_emitter(psmd,
- (psys->part->childtype == PART_CHILD_FACES)? PART_FROM_FACE: PART_FROM_PARTICLE,
- cpa->num,DMCACHE_ISCHILD,cpa->fuv,cpa->foffset,loc,nor,0,0,0,0);
-
if(psys->part->rotmode) {
if(!pa)
pa= psys->particles+cpa->pa[0];
@@ -4239,6 +4232,17 @@
mul_m4_m4m4(mat, obrotmat, qmat);
}
else {
+ if(pa)
+ psys_particle_on_emitter(psmd,sim->psys->part->from,pa->num,pa->num_dmcache,pa->fuv,pa->foffset,loc,nor,0,0,0,0);
+ else
+ psys_particle_on_emitter(psmd,
+ (psys->part->childtype == PART_CHILD_FACES)? PART_FROM_FACE: PART_FROM_PARTICLE,
+ cpa->num,DMCACHE_ISCHILD,cpa->fuv,cpa->foffset,loc,nor,0,0,0,0);
+
+ copy_m3_m4(nmat, ob->imat);
+ transpose_m3(nmat);
+ mul_m3_v3(nmat, nor);
+
/* make sure that we get a proper side vector */
if(fabs(dot_v3v3(nor,vec))>0.999999) {
if(fabs(dot_v3v3(nor,xvec))>0.999999) {
Modified: trunk/blender/source/blender/blenkernel/intern/subsurf_ccg.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/subsurf_ccg.c 2010-04-15 04:56:44 UTC (rev 28201)
+++ trunk/blender/source/blender/blenkernel/intern/subsurf_ccg.c 2010-04-15 10:28:32 UTC (rev 28202)
@@ -117,7 +117,7 @@
if (useArena) {
CCGAllocatorIFC allocatorIFC;
- CCGAllocatorHDL allocator = BLI_memarena_new((1<<16));
+ CCGAllocatorHDL allocator = BLI_memarena_new((1<<16), "subsurf arena");
allocatorIFC.alloc = arena_alloc;
allocatorIFC.realloc = arena_realloc;
Modified: trunk/blender/source/blender/blenlib/BLI_kdopbvh.h
===================================================================
--- trunk/blender/source/blender/blenlib/BLI_kdopbvh.h 2010-04-15 04:56:44 UTC (rev 28201)
+++ trunk/blender/source/blender/blenlib/BLI_kdopbvh.h 2010-04-15 10:28:32 UTC (rev 28202)
@@ -32,6 +32,10 @@
#ifndef BLI_KDOPBVH_H
#define BLI_KDOPBVH_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+
#include <float.h>
struct BVHTree;
@@ -100,6 +104,9 @@
/* range query */
int BLI_bvhtree_range_query(BVHTree *tree, const float *co, float radius, BVHTree_RangeQuery callback, void *userdata);
+#ifdef __cplusplus
+}
+#endif
#endif // BLI_KDOPBVH_H
Modified: trunk/blender/source/blender/blenlib/BLI_math.h
===================================================================
--- trunk/blender/source/blender/blenlib/BLI_math.h 2010-04-15 04:56:44 UTC (rev 28201)
+++ trunk/blender/source/blender/blenlib/BLI_math.h 2010-04-15 10:28:32 UTC (rev 28202)
@@ -55,10 +55,10 @@
#include "BLI_math_base.h"
#include "BLI_math_color.h"
-#include "BLI_math_geom.h"
#include "BLI_math_matrix.h"
#include "BLI_math_rotation.h"
#include "BLI_math_vector.h"
+#include "BLI_math_geom.h"
#endif /* BLI_MATH */
Modified: trunk/blender/source/blender/blenlib/BLI_math_geom.h
===================================================================
--- trunk/blender/source/blender/blenlib/BLI_math_geom.h 2010-04-15 04:56:44 UTC (rev 28201)
+++ trunk/blender/source/blender/blenlib/BLI_math_geom.h 2010-04-15 10:28:32 UTC (rev 28202)
@@ -32,6 +32,12 @@
extern "C" {
#endif
+#include "BLI_math_inline.h"
+
+#ifdef BLI_MATH_INLINE
+#include "intern/math_geom_inline.c"
+#endif
+
/********************************** Polygons *********************************/
void cent_tri_v3(float r[3], float a[3], float b[3], float c[3]);
@@ -146,6 +152,8 @@
int box_clip_bounds_m4(float boundbox[2][3],
float bounds[4], float winmat[4][4]);
+void box_minmax_bounds_m4(float min[3], float max[3],
+ float boundbox[2][3], float mat[4][4]);
/********************************** Mapping **********************************/
@@ -165,12 +173,34 @@
void tangent_from_uv(float *uv1, float *uv2, float *uv3,
float *co1, float *co2, float *co3, float *n, float *tang);
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list