# HG changeset patch # User John Tsiombikas # Date 1282851207 -3600 # Node ID 4dec8853bf752adb3032e45879011e6151b2443b # Parent 7d77ded5f8906fce77503371d5003d2fe9d929ca# Parent a218551293adca193951262667eea62ad61b6339 merged diff -r 7d77ded5f890 -r 4dec8853bf75 src/clray.cc --- a/src/clray.cc Thu Aug 26 20:24:07 2010 +0100 +++ b/src/clray.cc Thu Aug 26 20:33:27 2010 +0100 @@ -120,7 +120,7 @@ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB32F, xsz, ysz, 0, GL_RGBA, GL_UNSIGNED_BYTE, test_pattern); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB32F_ARB, xsz, ysz, 0, GL_RGBA, GL_UNSIGNED_BYTE, test_pattern); delete [] test_pattern; glutMainLoop(); diff -r 7d77ded5f890 -r 4dec8853bf75 src/scene.cc --- a/src/scene.cc Thu Aug 26 20:24:07 2010 +0100 +++ b/src/scene.cc Thu Aug 26 20:33:27 2010 +0100 @@ -325,6 +325,48 @@ glVertex3fv(node->aabb.max); glVertex3f(node->aabb.min[0], node->aabb.max[1], node->aabb.min[2]); glVertex3f(node->aabb.min[0], node->aabb.max[1], node->aabb.max[2]); + /*if(!node->left) return; + + AABBox *bleft = &node->left->aabb; + + int axis = level % 3; + switch(axis) { + case 0: + glVertex3f(bleft->max[0], bleft->min[1], bleft->min[2]); + glVertex3f(bleft->max[0], bleft->max[1], bleft->min[2]); + glVertex3f(bleft->max[0], bleft->max[1], bleft->min[2]); + glVertex3f(bleft->max[0], bleft->max[1], bleft->max[2]); + glVertex3f(bleft->max[0], bleft->max[1], bleft->max[2]); + glVertex3f(bleft->max[0], bleft->min[1], bleft->max[2]); + glVertex3f(bleft->max[0], bleft->min[1], bleft->max[2]); + glVertex3f(bleft->max[0], bleft->min[1], bleft->min[2]); + break; + + case 1: + glVertex3f(bleft->min[0], bleft->min[1], bleft->max[2]); + glVertex3f(bleft->min[0], bleft->max[1], bleft->max[2]); + glVertex3f(bleft->min[0], bleft->max[1], bleft->max[2]); + glVertex3f(bleft->max[0], bleft->max[1], bleft->max[2]); + glVertex3f(bleft->max[0], bleft->max[1], bleft->max[2]); + glVertex3f(bleft->max[0], bleft->min[1], bleft->max[2]); + glVertex3f(bleft->max[0], bleft->min[1], bleft->max[2]); + glVertex3f(bleft->min[0], bleft->min[1], bleft->max[2]); + break; + + case 2: + glVertex3f(bleft->min[0], bleft->max[1], bleft->min[2]); + glVertex3f(bleft->max[0], bleft->max[1], bleft->min[2]); + glVertex3f(bleft->max[0], bleft->max[1], bleft->min[2]); + glVertex3f(bleft->max[0], bleft->max[1], bleft->max[2]); + glVertex3f(bleft->max[0], bleft->max[1], bleft->max[2]); + glVertex3f(bleft->min[0], bleft->max[1], bleft->max[2]); + glVertex3f(bleft->min[0], bleft->max[1], bleft->max[2]); + glVertex3f(bleft->min[0], bleft->max[1], bleft->min[2]); + break; + + default: + break; + }*/ } bool Scene::build_kdtree() @@ -442,6 +484,7 @@ kdleft->cost = best_cost[0]; kdright->cost = best_cost[1]; + // TODO would it be much better if we actually split faces that straddle the splitting plane? for(size_t i=0; iface_idx.size(); i++) { int fidx = kd->face_idx[i]; const Face *face = faces + fidx; @@ -483,7 +526,7 @@ } float sarea = aabb.calc_surface_area(); - if(sarea < 1e-8) { + if(sarea < 1e-6) { return FLT_MAX; // heavily penalize 0-area voxels }