[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