[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