[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [12315] branches/qdune/blender: Orco coordinates work somewhat better now, there was a bug in the parse
Alfredo de Greef
eeshlo at yahoo.com
Sun Oct 21 04:14:23 CEST 2007
Revision: 12315
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=12315
Author: eeshlo
Date: 2007-10-21 04:14:21 +0200 (Sun, 21 Oct 2007)
Log Message:
-----------
Orco coordinates work somewhat better now, there was a bug in the parse
code for declared variables, which created incorrect variable names.
UV coords too didn't quite work correctly, they're still not quite
correct, but 'might' work sometimes.. if you're lucky... ;)
Modified Paths:
--------------
branches/qdune/blender/extern/qdune/blender/BlenderShader.cpp
branches/qdune/blender/extern/qdune/mpgrid/MicroPolygonGrid.cpp
branches/qdune/blender/extern/qdune/mpgrid/MicroPolygonGrid.h
branches/qdune/blender/extern/qdune/primitives/Polygons.cpp
branches/qdune/blender/extern/qdune/primitives/Primitive.cpp
branches/qdune/blender/extern/qdune/ribparse/decparam.cpp
branches/qdune/blender/extern/qdune/ribparse/ri.cpp
branches/qdune/blender/source/blender/render/intern/source/qdinterface.c
Modified: branches/qdune/blender/extern/qdune/blender/BlenderShader.cpp
===================================================================
--- branches/qdune/blender/extern/qdune/blender/BlenderShader.cpp 2007-10-20 20:24:09 UTC (rev 12314)
+++ branches/qdune/blender/extern/qdune/blender/BlenderShader.cpp 2007-10-21 02:14:21 UTC (rev 12315)
@@ -4,7 +4,10 @@
#include "MicroPolygonGrid.h"
#include "Mathutil.h"
#include "State.h"
+#include "Primitive.h"
+//#include <iostream>
+
/* blender includes for structs only, no function calls */
extern "C" {
#include "RE_shader_ext.h"
@@ -58,6 +61,8 @@
dv = grid->get_dv();
xdim = grid->get_xdim();
ydim = grid->get_ydim();
+ float uvl[4];
+ grid->getParent()->get_uvlim(uvl);
P = (RtPoint*)grid->findVariable("P");
N = (RtNormal*)grid->findVariable("N");
@@ -83,6 +88,7 @@
if(shi.passflag & SCE_PASS_UV)
texco |= (NEED_UV|TEXCO_UV);
+
/* get texture coordinate variables */
if(texco & TEXCO_ORCO) {
orco = (float(*)[3])grid->findVariable("orco");
@@ -259,7 +265,7 @@
shi.totuv++;
suv->name= "";
-
+
suv->uv[0]= -1.0f + 2.0f*uv[a][i][0];
suv->uv[1]= -1.0f + 2.0f*uv[a][i][1];
suv->uv[2]= 0.0f;
@@ -283,8 +289,8 @@
u= (i % (xdim+1))/(float)xdim;
v= (i / (xdim+1))/(float)ydim;
- suv->uv[0]= 2.0f*(u+.5f);
- suv->uv[1]= 2.0f*(v+.5f);
+ suv->uv[1]= 2.f - 2.f*((uvl[0] + u*(uvl[1] - uvl[0])) + 0.5f);
+ suv->uv[0]= 2.f*((uvl[2] + v*(uvl[3] - uvl[2])) + 0.5f);
suv->uv[2]= 0.0f;
if(mode & MA_FACETEXTURE) {
Modified: branches/qdune/blender/extern/qdune/mpgrid/MicroPolygonGrid.cpp
===================================================================
--- branches/qdune/blender/extern/qdune/mpgrid/MicroPolygonGrid.cpp 2007-10-20 20:24:09 UTC (rev 12314)
+++ branches/qdune/blender/extern/qdune/mpgrid/MicroPolygonGrid.cpp 2007-10-21 02:14:21 UTC (rev 12315)
@@ -590,6 +590,18 @@
}
}
+
+void MicroPolygonGrid::printVars()
+{
+ float** fg = vertexvars.first();
+ printf("All current variables on grid:\n");
+ while (fg) {
+ printf("%s\n", vertexvars.getName());
+ fg = vertexvars.next();
+ }
+ printf("\n");
+}
+
void MicroPolygonGrid::shade()
{
RtPoint* P_grid = (RtPoint*)findVariable("P");
Modified: branches/qdune/blender/extern/qdune/mpgrid/MicroPolygonGrid.h
===================================================================
--- branches/qdune/blender/extern/qdune/mpgrid/MicroPolygonGrid.h 2007-10-20 20:24:09 UTC (rev 12314)
+++ branches/qdune/blender/extern/qdune/mpgrid/MicroPolygonGrid.h 2007-10-21 02:14:21 UTC (rev 12315)
@@ -39,6 +39,8 @@
void initVars(unsigned int varbits);
+ void printVars();
+
bool isBackfacing();
bool trim();
Modified: branches/qdune/blender/extern/qdune/primitives/Polygons.cpp
===================================================================
--- branches/qdune/blender/extern/qdune/primitives/Polygons.cpp 2007-10-20 20:24:09 UTC (rev 12314)
+++ branches/qdune/blender/extern/qdune/primitives/Polygons.cpp 2007-10-21 02:14:21 UTC (rev 12315)
@@ -15,7 +15,7 @@
// helper function, splits convex n-gon into a set of bilinear patches
static void splitPolygon(const Primitive& p, const Framework &f, RtPoint* pts,
- int num_verts, int uni_idx, int* idx_ofs = NULL, int fvary_idx_ofs = 0)
+ int num_verts, int uni_idx, int* idx_ofs = NULL, int fvary_idx_ofs = 0)
{
const int lastpoint = num_verts-1;
int sta = 1, end = MIN2(3, lastpoint);
@@ -207,7 +207,7 @@
// Polygon
Polygon::Polygon(RtInt nverts, RtInt n, RtToken tokens[], RtPointer parms[])
- : pts(NULL), num_verts(nverts)
+ : pts(NULL), num_verts(nverts)
{
for (int i=0; i<n; ++i) {
if (!strcmp(tokens[i], RI_P)) {
@@ -250,8 +250,8 @@
// PointsPolygons
PointsPolygons::PointsPolygons(RtInt npolys, RtInt nverts[], RtInt verts[],
- RtInt n, RtToken tokens[], RtPointer parms[])
- : pts(NULL), num_faces(npolys)
+ RtInt n, RtToken tokens[], RtPointer parms[])
+ : pts(NULL), num_faces(npolys)
{
// sum of verts ( == max possible vertex index == sizeof verts[] array)
int sum_faceverts = 0;
Modified: branches/qdune/blender/extern/qdune/primitives/Primitive.cpp
===================================================================
--- branches/qdune/blender/extern/qdune/primitives/Primitive.cpp 2007-10-20 20:24:09 UTC (rev 12314)
+++ branches/qdune/blender/extern/qdune/primitives/Primitive.cpp 2007-10-21 02:14:21 UTC (rev 12315)
@@ -53,7 +53,7 @@
}
void Primitive::initPrimVars(RtInt n, RtToken tokens[], RtPointer parms[],
- int uniformMax, int varyingMax, int vertexMax, int faceVaryingMax)
+ int uniformMax, int varyingMax, int vertexMax, int faceVaryingMax)
{
if (n == 0) return; // no params
// current transform, not known yet (this function is only called from geom.ctor's)
Modified: branches/qdune/blender/extern/qdune/ribparse/decparam.cpp
===================================================================
--- branches/qdune/blender/extern/qdune/ribparse/decparam.cpp 2007-10-20 20:24:09 UTC (rev 12314)
+++ branches/qdune/blender/extern/qdune/ribparse/decparam.cpp 2007-10-21 02:14:21 UTC (rev 12315)
@@ -116,9 +116,11 @@
while (isalnum(*s) || (*s=='_')) s++;
const int len = (int)(s - s2);
// 256 chars max
- if (len > 256) return false; // no more than 256 chars
+ if (len > 255) return false; // no more than 255 chars
if (len < 1) return false; // empty string? (or no alpha chars anyway)
strncpy(inline_name, s2, len);
+ // bug was here: forgot string terminator
+ inline_name[len] = 0;
}
// warn if anything trailing the string other than whitespace
Modified: branches/qdune/blender/extern/qdune/ribparse/ri.cpp
===================================================================
--- branches/qdune/blender/extern/qdune/ribparse/ri.cpp 2007-10-20 20:24:09 UTC (rev 12314)
+++ branches/qdune/blender/extern/qdune/ribparse/ri.cpp 2007-10-21 02:14:21 UTC (rev 12315)
@@ -2045,7 +2045,15 @@
//------------------------------------------------------------------------------
// Blender Interface
-RtVoid RiBlenderFuncs(RtBlenderBucketAdd bucketaddfunc, RtBlenderBucketBegin bucketbeginfunc, RtBlenderBucketUpdate bucketupdatefunc, RtBlenderBucketEnd bucketendfunc, RtBlenderTestBreak testbreakfunc, RtBlenderShadeInit shadeinitfunc, RtBlenderShade shadefunc, RtBlenderShadeDisplacement displacefunc, RtBlenderShadeBackground backgroundfunc)
+RtVoid RiBlenderFuncs(RtBlenderBucketAdd bucketaddfunc,
+ RtBlenderBucketBegin bucketbeginfunc,
+ RtBlenderBucketUpdate bucketupdatefunc,
+ RtBlenderBucketEnd bucketendfunc,
+ RtBlenderTestBreak testbreakfunc,
+ RtBlenderShadeInit shadeinitfunc,
+ RtBlenderShade shadefunc,
+ RtBlenderShadeDisplacement displacefunc,
+ RtBlenderShadeBackground backgroundfunc)
{
if (!mbCheck()) return;
Options& options = State::Instance()->topOptions();
Modified: branches/qdune/blender/source/blender/render/intern/source/qdinterface.c
===================================================================
--- branches/qdune/blender/source/blender/render/intern/source/qdinterface.c 2007-10-20 20:24:09 UTC (rev 12314)
+++ branches/qdune/blender/source/blender/render/intern/source/qdinterface.c 2007-10-21 02:14:21 UTC (rev 12315)
@@ -347,6 +347,7 @@
n++;
}
+ // 'color' is used here instead of point/vector/normal to avoid a transform to camera space
if(ppoly->orco) {
tokens[n]= "vertex color orco";
params[n]= ppoly->orco;
More information about the Bf-blender-cvs
mailing list