[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [12442] branches/qdune/blender:

Brecht Van Lommel brechtvanlommel at pandora.be
Wed Oct 31 15:30:06 CET 2007


Revision: 12442
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=12442
Author:   blendix
Date:     2007-10-31 15:30:06 +0100 (Wed, 31 Oct 2007)

Log Message:
-----------

QDune branch
============

- Initial shadow support: needs more tweaking still.
- Added bigger pixel filter size input for qdune, but doesn't seem to
  have much effect yet? Need to find out why still.

Modified Paths:
--------------
    branches/qdune/blender/extern/qdune/framework/ReyesFramework.cpp
    branches/qdune/blender/extern/qdune/hider/ZbufferHider.cpp
    branches/qdune/blender/extern/qdune/hider/ZbufferHider.h
    branches/qdune/blender/source/blender/blenkernel/intern/scene.c
    branches/qdune/blender/source/blender/blenloader/intern/readfile.c
    branches/qdune/blender/source/blender/makesdna/DNA_scene_types.h
    branches/qdune/blender/source/blender/render/intern/include/renderinterface.h
    branches/qdune/blender/source/blender/render/intern/include/shadbuf.h
    branches/qdune/blender/source/blender/render/intern/source/blenderinterface.c
    branches/qdune/blender/source/blender/render/intern/source/convertblender.c
    branches/qdune/blender/source/blender/render/intern/source/qdinterface.c
    branches/qdune/blender/source/blender/render/intern/source/shadbuf.c
    branches/qdune/blender/source/blender/src/buttons_scene.c

Modified: branches/qdune/blender/extern/qdune/framework/ReyesFramework.cpp
===================================================================
--- branches/qdune/blender/extern/qdune/framework/ReyesFramework.cpp	2007-10-31 13:56:07 UTC (rev 12441)
+++ branches/qdune/blender/extern/qdune/framework/ReyesFramework.cpp	2007-10-31 14:30:06 UTC (rev 12442)
@@ -64,8 +64,6 @@
 	if (total_eyesplits)
 		std::cout << "\rExceeded maximum eyesplitcount " << total_eyesplits << " times" << std::endl;
 	
-	hider->blenderBucketsAdd();
-
 	while (hider->bucketBegin()) {
 		Primitive* p;
 		while ((p = hider->firstPrim()) != NULL) {

Modified: branches/qdune/blender/extern/qdune/hider/ZbufferHider.cpp
===================================================================
--- branches/qdune/blender/extern/qdune/hider/ZbufferHider.cpp	2007-10-31 13:56:07 UTC (rev 12441)
+++ branches/qdune/blender/extern/qdune/hider/ZbufferHider.cpp	2007-10-31 14:30:06 UTC (rev 12442)
@@ -424,22 +424,20 @@
 	}
 }
 
-void ZbufferHider::blenderBucketsAdd()
+// bucket initialization
+bool ZbufferHider::bucketBegin()
 {
-	// add buckets to blender
-	if(blenderEnabled) {
-		for(BucketIterator bk=buckets.begin(); bk!=buckets.end(); bk++) {
-			const int xofs = (bk->xmin + X_xt_smp)/xsamples,
-					  yofs = (bk->ymin + Y_xt_smp)/ysamples;
+	if (cur_bucket == buckets.begin()) { // first bucket, starting
+		// add buckets to blender
+		if(blenderEnabled) {
+			for(BucketIterator bk=buckets.begin(); bk!=buckets.end(); bk++) {
+				const int xofs = (bk->xmin + X_xt_smp)/xsamples,
+						  yofs = (bk->ymin + Y_xt_smp)/ysamples;
 
-			blenderBucketAdd(BLENDER_THREAD, xofs, yofs, bucketsize, bucketsize);
+				blenderBucketAdd(BLENDER_THREAD, xofs, yofs, bucketsize, bucketsize);
+			}
 		}
 	}
-}
-
-// bucket initialization
-bool ZbufferHider::bucketBegin()
-{
 	if (cur_bucket == buckets.end()) { // last bucket processed, done
 		// newline because of '\r' below
 		cout << "\n";
@@ -472,7 +470,7 @@
 	// reset bucket mp counter
 	curbucket_mp = curbucket_mp_cull = 0;
 
-	if (blenderEnabled && !only_z)
+	if (blenderEnabled)
 		blenderBucketBegin(BLENDER_THREAD, blenderBucketNumber++);
 
 	return true;
@@ -573,6 +571,11 @@
 	// z is maximum of samples in pixel
 	fsArray_t<float> zmax(bucket_sizeY);
 	if (only_z) {
+		fsArray_t<float> blenderbuf;
+
+		if(blenderEnabled)
+			blenderbuf.resize(bucketsize*bucketsize);
+
 		// for depth renders, only need to apply z depth filter
 		for (unsigned int k=0; k<bucketsize; ++k) {
 			float maxzval = 0;
@@ -584,8 +587,9 @@
 				const float* Z = &zbuf[p];
 #endif
 				maxzval = 0;
-				for (unsigned int sx=0; sx<X_ftmax; ++sx)
+				for (unsigned int sx=0; sx<X_ftmax; ++sx) {
 					maxzval = MAX2(maxzval, *Z++);
+				}
 				zmax[i] = maxzval;
 			}
 			for (unsigned int j=0; j<bucketsize; ++j) {
@@ -593,13 +597,21 @@
 				maxzval = 0.f;
 				for (unsigned int sy=0; sy<Y_ftmax; ++sy)
 					maxzval = MAX2(maxzval, *Z++);
-				for (unsigned int out_idx=0; out_idx<num_out; ++out_idx) {
-					FrameBuffer& fb = *State::Instance()->framebuffer[out_idx];
-					fb(k+xofs, j+yofs, NULL, maxzval);
+
+				if(blenderBucketUpdate) {
+					blenderbuf[k + j*bucketsize] = maxzval;
 				}
+				else {
+					for (unsigned int out_idx=0; out_idx<num_out; ++out_idx) {
+						FrameBuffer& fb = *State::Instance()->framebuffer[out_idx];
+						fb(k+xofs, j+yofs, NULL, maxzval);
+					}
+				}
 			}
 		}
 
+		if(blenderEnabled)
+			blenderBucketUpdate(BLENDER_THREAD, &blenderbuf[0]);
 	}
 	// else skip if no mp's were drawn (can't skip if z channel also needed)
 	else if ((not has_z and not empty_pixbuf) or blenderEnabled) {
@@ -607,9 +619,9 @@
 		fsArray_t<float> outdata(out_numfloats);
 
 		// array to pass to blender
-		fsArray_t<float> blenderCol;
+		fsArray_t<float> blenderbuf;
 		if(blenderEnabled)
-			blenderCol.resize(bucketsize*bucketsize*5);
+			blenderbuf.resize(bucketsize*bucketsize*5);
 
 		for (unsigned int k=0; k<bucketsize; ++k) {
 			// H
@@ -658,11 +670,11 @@
 						if (coldat[3] < 1.0f)
 							blenderShadeBackground(BLENDER_THREAD, k+xofs, j+yofs, coldat);
 						const int ofs = (k + j*bucketsize)*5;
-						blenderCol[ofs+0] = coldat[0];
-						blenderCol[ofs+1] = coldat[1];
-						blenderCol[ofs+2] = coldat[2];
-						blenderCol[ofs+3] = coldat[3];
-						blenderCol[ofs+4] = maxzval;
+						blenderbuf[ofs+0] = coldat[0];
+						blenderbuf[ofs+1] = coldat[1];
+						blenderbuf[ofs+2] = coldat[2];
+						blenderbuf[ofs+3] = coldat[3];
+						blenderbuf[ofs+4] = maxzval;
 					}
 					else
 						fb(k+xofs, j+yofs, coldat, maxzval);
@@ -673,10 +685,10 @@
 		} // k
 
 		if(blenderEnabled)
-			blenderBucketUpdate(BLENDER_THREAD, &blenderCol[0]);
+			blenderBucketUpdate(BLENDER_THREAD, &blenderbuf[0]);
 	}
 
-	if (!only_z && blenderEnabled) {
+	if (blenderEnabled) {
 		blenderBucketEnd(BLENDER_THREAD);
 	}
 	else {

Modified: branches/qdune/blender/extern/qdune/hider/ZbufferHider.h
===================================================================
--- branches/qdune/blender/extern/qdune/hider/ZbufferHider.h	2007-10-31 13:56:07 UTC (rev 12441)
+++ branches/qdune/blender/extern/qdune/hider/ZbufferHider.h	2007-10-31 14:30:06 UTC (rev 12442)
@@ -117,8 +117,6 @@
 	void calcSamples();
 
 	// blender
-	void blenderBucketsAdd();
-
 	RtBlenderBucketAdd blenderBucketAdd;
 	RtBlenderBucketBegin blenderBucketBegin;
 	RtBlenderBucketUpdate blenderBucketUpdate;

Modified: branches/qdune/blender/source/blender/blenkernel/intern/scene.c
===================================================================
--- branches/qdune/blender/source/blender/blenkernel/intern/scene.c	2007-10-31 13:56:07 UTC (rev 12441)
+++ branches/qdune/blender/source/blender/blenkernel/intern/scene.c	2007-10-31 14:30:06 UTC (rev 12442)
@@ -215,7 +215,7 @@
 
 	sce->r.QDshadingrate = 1.0f;
 	sce->r.QDpixelsamples = 1;
-	sce->r.QDpixeljitter = 1.0f;
+	sce->r.QDfiltersize = 1.0f;
 	sce->r.QDpartsize = 32;
 
 	sce->toolsettings = MEM_callocN(sizeof(struct ToolSettings),"Tool Settings Struct");

Modified: branches/qdune/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- branches/qdune/blender/source/blender/blenloader/intern/readfile.c	2007-10-31 13:56:07 UTC (rev 12441)
+++ branches/qdune/blender/source/blender/blenloader/intern/readfile.c	2007-10-31 14:30:06 UTC (rev 12442)
@@ -6747,7 +6747,7 @@
 		for(sce= main->scene.first; sce; sce= sce->id.next) {
 			if(sce->r.QDpartsize == 0) {
 				sce->r.QDpixelsamples = 1;
-				sce->r.QDpixeljitter = 1.0f;
+				sce->r.QDfiltersize = 1.0f;
 				sce->r.QDshadingrate = 1.0f;
 				sce->r.QDpartsize = 32;
 			}

Modified: branches/qdune/blender/source/blender/makesdna/DNA_scene_types.h
===================================================================
--- branches/qdune/blender/source/blender/makesdna/DNA_scene_types.h	2007-10-31 13:56:07 UTC (rev 12441)
+++ branches/qdune/blender/source/blender/makesdna/DNA_scene_types.h	2007-10-31 14:30:06 UTC (rev 12442)
@@ -276,7 +276,7 @@
 	float YF_gamma, YF_exposure, YF_raybias, YF_AApixelsize, YF_AAthreshold;
 
 	/* micropolygon */
-	float QDshadingrate, QDpixeljitter;
+	float QDshadingrate, QDfiltersize;
 	short QDpixelsamples, QDpartorder, QDpartsize;
 	short pad3;
 

Modified: branches/qdune/blender/source/blender/render/intern/include/renderinterface.h
===================================================================
--- branches/qdune/blender/source/blender/render/intern/include/renderinterface.h	2007-10-31 13:56:07 UTC (rev 12441)
+++ branches/qdune/blender/source/blender/render/intern/include/renderinterface.h	2007-10-31 14:30:06 UTC (rev 12442)
@@ -17,13 +17,13 @@
 struct ShadeInput;
 struct ShadeResult;
 struct ObjectRen;
+struct ListBase;
 
 typedef struct RenderOptions {
-	/* speedvector render for vector blur - this only works with blender
-	   internal currently */
+	/* speedvector render for vector blur, only used by blender internal backend */
 	int speedvector_render;
 
-	/* bake rendering - also only supported for blender internal now */
+	/* bake rendering, also only supported for blender internal now */
 	int bake_render;
 	int bake_render_type;
 } RenderOptions;
@@ -66,6 +66,7 @@
 	float *sticky;				/* sticky texture coordinates */
 	float *orco;				/* orco texture coordinates */
 	float *stress;				/* stress texture coordinates */
+	float *speed;				/* speed vector */
 } RenderVertex;
 
 typedef struct RenderFaceData {
@@ -122,6 +123,7 @@
 	int matnr;					/* material index */
 	float strandco;				/* strand texture coordinate */
 	float *orco;				/* orco texture coordinate */
+	float *speed;				/* speed vector */
 } RenderCurve;
 
 typedef struct RenderInterface {
@@ -144,6 +146,7 @@
 	void (*add_curve)(struct RenderInterface *iface, RenderCurve *cp);
 	void (*end_curve)(struct RenderInterface *iface);
 
+	int (*render_passes)(struct RenderInterface *iface);
 	void (*render)(struct RenderInterface *iface, struct RenderThread *thread);
 
 	void (*free)(struct RenderInterface *iface);
@@ -160,6 +163,8 @@
 
 	struct RenderPart *current_part;
 	struct RenderLayer *current_render_layer; /* temporary */
+	int *current_rectz;
+	float current_winmat[4][4];
 } RenderThread;
 
 void render_interface_part_add(RenderThread *thread, int x, int y, int w, int h);

Modified: branches/qdune/blender/source/blender/render/intern/include/shadbuf.h
===================================================================
--- branches/qdune/blender/source/blender/render/intern/include/shadbuf.h	2007-10-31 13:56:07 UTC (rev 12441)
+++ branches/qdune/blender/source/blender/render/intern/include/shadbuf.h	2007-10-31 14:30:06 UTC (rev 12442)
@@ -42,6 +42,7 @@
  * @param lar The vector of lamps
  */
 void makeshadowbuf(struct Render *re, LampRen *lar);
+void makeshadowbuf_qdune(struct Render *re, LampRen *lar, int *rectz);
 void freeshadowbuf(struct LampRen *lar);
 
 /**

Modified: branches/qdune/blender/source/blender/render/intern/source/blenderinterface.c
===================================================================
--- branches/qdune/blender/source/blender/render/intern/source/blenderinterface.c	2007-10-31 13:56:07 UTC (rev 12441)
+++ branches/qdune/blender/source/blender/render/intern/source/blenderinterface.c	2007-10-31 14:30:06 UTC (rev 12442)
@@ -48,7 +48,7 @@
 	float *uv1, *uv2, *uv3, *uv4;
 	float s1, s2, t1, t2, det;
 	float uv[4][2];
-	
+
 	if(tface) {
 		uv1= tface->uv[0];
 		uv2= tface->uv[1];
@@ -64,13 +64,13 @@

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list