Text archives Help
- From: sparker@sci.utah.edu
- To: manta@sci.utah.edu
- Subject: [MANTA] r1045 - in trunk: . Engine/Control Engine/ImageTraversers Engine/PixelSamplers Engine/Renderers Interface Model/Instances Model/Materials Model/MiscObjects
- Date: Fri, 5 May 2006 13:47:00 -0600 (MDT)
Author: sparker
Date: Fri May 5 13:46:55 2006
New Revision: 1045
Modified:
trunk/CMakeLists.txt
trunk/Engine/Control/RTRT.cc
trunk/Engine/ImageTraversers/DissolveImageTraverser.cc
trunk/Engine/ImageTraversers/DissolveTiledImageTraverser.cc
trunk/Engine/ImageTraversers/TiledImageTraverser.cc
trunk/Engine/ImageTraversers/TiledImageTraverser.h
trunk/Engine/PixelSamplers/FastSampler.cc
trunk/Engine/PixelSamplers/JitterSampler.cc
trunk/Engine/PixelSamplers/SingleSampler.cc
trunk/Engine/PixelSamplers/SingleSampler.h
trunk/Engine/Renderers/NullRenderer.cc
trunk/Engine/Renderers/RayGen.cc
trunk/Engine/Renderers/RayGen.h
trunk/Interface/Context.h
trunk/Interface/Fragment.h
trunk/Interface/RayPacket.h
trunk/Model/Instances/Instance.cc
trunk/Model/Instances/InstanceRST.cc
trunk/Model/Instances/InstanceRT.cc
trunk/Model/Instances/InstanceST.cc
trunk/Model/Instances/InstanceT.cc
trunk/Model/Materials/AmbientOcclusion.cc
trunk/Model/Materials/Dielectric.cc
trunk/Model/Materials/Lambertian.cc
trunk/Model/Materials/MetalMaterial.cc
trunk/Model/Materials/Phong.cc
trunk/Model/Materials/Transparent.cc
trunk/Model/MiscObjects/CuttingPlane.cc
trunk/Model/MiscObjects/Difference.cc
trunk/Model/MiscObjects/Intersection.cc
Log:
Lay groundwork for optimizations based on the shape of the raypacket
Misc. performance improvements and cleanups
Modified: trunk/CMakeLists.txt
==============================================================================
--- trunk/CMakeLists.txt (original)
+++ trunk/CMakeLists.txt Fri May 5 13:46:55 2006
@@ -162,8 +162,8 @@
######################################################################
# Check for Mac OS
IF (APPLE)
- FIRST_TIME_SET(CMAKE_CXX_FLAGS_RELEASE "-DSCI_ASSERTION_LEVEL=0 -O3 -g
-fgcse-sm -funroll-loops -fstrict-aliasing -fsched-interblock
-falign-loops=16 -falign-jumps=16 -falign-functions=16
-falign-jumps-max-skip=15 -falign-loops-max-skip=15 -ffast-math
-freorder-blocks -mpowerpc-gpopt -force_cpusubtype_ALL -mtune=G5 -mcpu=G5
-mpowerpc64 -faltivec -mabi=altivec -mpowerpc-gfxopt -malign-natural" STRING
"Optimized Flags")
- #FIRST_TIME_SET(CMAKE_CXX_FLAGS_RELEASE "-DSCI_ASSERTION_LEVEL=0 -O3 -g
-fgcse-sm -funroll-loops -fstrict-aliasing -fsched-interblock -ffast-math
-freorder-blocks -march=prescott -mtune=prescott -msse -msse2 -msse3
-mfpmath=sse -malign-double" STRING "Optimized Flags")
+ #FIRST_TIME_SET(CMAKE_CXX_FLAGS_RELEASE "-DSCI_ASSERTION_LEVEL=0 -O3 -g
-fgcse-sm -funroll-loops -fstrict-aliasing -fsched-interblock
-falign-loops=16 -falign-jumps=16 -falign-functions=16
-falign-jumps-max-skip=15 -falign-loops-max-skip=15 -ffast-math
-freorder-blocks -mpowerpc-gpopt -force_cpusubtype_ALL -mtune=G5 -mcpu=G5
-mpowerpc64 -faltivec -mabi=altivec -mpowerpc-gfxopt -malign-natural" STRING
"Optimized Flags")
+ FIRST_TIME_SET(CMAKE_CXX_FLAGS_RELEASE "-DSCI_ASSERTION_LEVEL=0 -O3 -g
-fgcse-sm -funroll-loops -fstrict-aliasing -fsched-interblock -ffast-math
-freorder-blocks -march=prescott -mtune=prescott -msse -msse2 -msse3
-mfpmath=sse -malign-double" STRING "Optimized Flags")
ENDIF (APPLE)
##################################################################
Modified: trunk/Engine/Control/RTRT.cc
==============================================================================
--- trunk/Engine/Control/RTRT.cc (original)
+++ trunk/Engine/Control/RTRT.cc Fri May 5 13:46:55 2006
@@ -429,7 +429,7 @@
long displayFrame =
(renderFrameState.frameNumber-1)%channel->pipelineDepth;
Image* image = channel->images[displayFrame];
if(image && image->isValid()){
- DisplayContext myContext(proc, workersAnimAndImage);
+ DisplayContext myContext(proc, workersAnimAndImage, displayFrame,
channel->pipelineDepth);
channel->display->displayImage(myContext, image);
}
}
Modified: trunk/Engine/ImageTraversers/DissolveImageTraverser.cc
==============================================================================
--- trunk/Engine/ImageTraversers/DissolveImageTraverser.cc (original)
+++ trunk/Engine/ImageTraversers/DissolveImageTraverser.cc Fri May 5
13:46:55 2006
@@ -150,8 +150,7 @@
unsigned int next_pixel =
per_thread_data[context.proc].next_pixel[context.channelIndex];
ChannelContext& cdata = channel_data[context.channelIndex];
- Fragment frag;
- frag.setAllFlags(Fragment::ConstantEye);
+ Fragment frag(Fragment::UnknownShape, Fragment::ConstantEye);
unsigned int pixel = 0;
// We need to render the (0,0) pixel every once in a while, so see
// if we are the last processor and if we've gone through so many
Modified: trunk/Engine/ImageTraversers/DissolveTiledImageTraverser.cc
==============================================================================
--- trunk/Engine/ImageTraversers/DissolveTiledImageTraverser.cc (original)
+++ trunk/Engine/ImageTraversers/DissolveTiledImageTraverser.cc Fri May 5
13:46:55 2006
@@ -157,8 +157,7 @@
unsigned int next_tile = cdata.next_tile;
- Fragment frag;
- frag.setAllFlags(Fragment::ConstantEye);
+ Fragment frag(Fragment::UnknownShape, Fragment::ConstantEye);
// Loop over all the assignments. tc stands for tile count.
for(unsigned int tc = 0; tc < cdata.tiles_per_pass; ++tc) {
Modified: trunk/Engine/ImageTraversers/TiledImageTraverser.cc
==============================================================================
--- trunk/Engine/ImageTraversers/TiledImageTraverser.cc (original)
+++ trunk/Engine/ImageTraversers/TiledImageTraverser.cc Fri May 5 13:46:55
2006
@@ -61,10 +61,6 @@
throw IllegalArgument("TiledImageTraverser", i, args);
}
}
-#if MANTA_SSE
- vec_cascade = _mm_set_epi32(3, 2, 1, 0);
- vec_4 = _mm_set1_epi32(4);
-#endif
}
TiledImageTraverser::~TiledImageTraverser()
@@ -130,8 +126,12 @@
if(yend > yres)
yend = yres;
+#ifdef MANTA_SSE
+ __m128i vec_4 = _mm_set1_epi32(4);
+ __m128i vec_cascade = _mm_set_epi32(3, 2, 1, 0);
+#endif
// Create a Fragment that is consecutive in X pixels
- Fragment frag(Fragment::ConsecutiveX|Fragment::ConstantEye);
+ Fragment frag(Fragment::LineShape,
Fragment::ConsecutiveX|Fragment::ConstantEye);
int fsize = SCIRun::Min(Fragment::MaxSize, xend-xstart);
for(int eye = 0; eye < numEyes; eye++){
#ifdef MANTA_SSE
Modified: trunk/Engine/ImageTraversers/TiledImageTraverser.h
==============================================================================
--- trunk/Engine/ImageTraversers/TiledImageTraverser.h (original)
+++ trunk/Engine/ImageTraversers/TiledImageTraverser.h Fri May 5 13:46:55
2006
@@ -53,11 +53,6 @@
TiledImageTraverser(const TiledImageTraverser&);
TiledImageTraverser& operator=(const TiledImageTraverser&);
-#ifdef MANTA_SSE
- __m128i vec_cascade;
- __m128i vec_4;
-#endif
-
int xtilesize;
int ytilesize;
Modified: trunk/Engine/PixelSamplers/FastSampler.cc
==============================================================================
--- trunk/Engine/PixelSamplers/FastSampler.cc (original)
+++ trunk/Engine/PixelSamplers/FastSampler.cc Fri May 5 13:46:55 2006
@@ -64,7 +64,7 @@
// Create a ray packet
int depth = 0;
RayPacketData raydata;
- RayPacket rays(raydata, 0, size, depth, flags);
+ RayPacket rays(raydata, RayPacket::UnknownShape, 0, size, depth, flags);
// Check to see if the fragment is consecutive in x.
if(fragment.getFlag(Fragment::ConsecutiveX|Fragment::ConstantEye) ==
Fragment::ConsecutiveX|Fragment::ConstantEye){
Modified: trunk/Engine/PixelSamplers/JitterSampler.cc
==============================================================================
--- trunk/Engine/PixelSamplers/JitterSampler.cc (original)
+++ trunk/Engine/PixelSamplers/JitterSampler.cc Fri May 5 13:46:55 2006
@@ -145,7 +145,7 @@
int depth = 0;
RayPacketData raydata;
- RayPacket rays(raydata, 0, RayPacket::MaxSize, depth, flags);
+ RayPacket rays(raydata, RayPacket::UnknownShape, 0, RayPacket::MaxSize,
depth, flags);
Real inx = (Real)1/nx;
Real iny = (Real)1/ny;
Modified: trunk/Engine/PixelSamplers/SingleSampler.cc
==============================================================================
--- trunk/Engine/PixelSamplers/SingleSampler.cc (original)
+++ trunk/Engine/PixelSamplers/SingleSampler.cc Fri May 5 13:46:55 2006
@@ -38,14 +38,6 @@
ci.yscale = ci.xscale;
ci.xoffset = (-xres/(Real)2+(Real)0.5)*ci.xscale; // Offset to pixel center
ci.yoffset = (-yres/(Real)2+(Real)0.5)*ci.yscale;
-#if MANTA_SSE
- ci.vec_xscale = _mm_set1_ps(ci.xscale);
- ci.vec_xscale4 = _mm_set1_ps(ci.xscale*4);
- ci.vec_xscale_cascade = _mm_set_ps(ci.xscale*3, ci.xscale*2, ci.xscale, 0);
- ci.vec_yscale = _mm_set1_ps(ci.yscale);
- ci.vec_xoffset = _mm_set1_ps(ci.xoffset);
- ci.vec_yoffset = _mm_set1_ps(ci.yoffset);
-#endif
context.renderer->setupDisplayChannel(context);
}
@@ -73,7 +65,7 @@
// Create a ray packet
int depth = 0;
RayPacketData raydata;
- RayPacket rays(raydata, 0, size, depth, flags);
+ RayPacket rays(raydata, RayPacket::UnknownShape, 0, size, depth, flags);
// Check to see if the fragment is consecutive in x.
if(fragment.getFlag(Fragment::ConsecutiveX|Fragment::ConstantEye) ==
Fragment::ConsecutiveX|Fragment::ConstantEye){
@@ -86,16 +78,18 @@
int eye = fragment.getWhichEye(b);
#if MANTA_SSE
- __m128 vec_px = _mm_add_ps(_mm_set1_ps(px), ci.vec_xscale_cascade);
+ __m128 vec_xscale_cascade = _mm_set_ps(ci.xscale*3, ci.xscale*2,
ci.xscale, 0);
+ __m128 vec_px = _mm_add_ps(_mm_set1_ps(px), vec_xscale_cascade);
__m128 vec_py = _mm_set1_ps(py);
__m128i vec_eye = _mm_set1_epi32(eye);
RayPacketData* data = rays.data;
int e = size&(~3);
+ __m128 vec_xscale4 = _mm_set1_ps(ci.xscale*4);
for(int i=0;i<e;i+=4){
_mm_store_si128((__m128i*)&data->whichEye[f+i], vec_eye);
_mm_store_ps(&data->image[0][f+i], vec_px);
_mm_store_ps(&data->image[1][f+i], vec_py);
- vec_px = _mm_add_ps(vec_px, ci.vec_xscale4);
+ vec_px = _mm_add_ps(vec_px, vec_xscale4);
}
#else
int e = 0;
@@ -111,12 +105,16 @@
#if MANTA_SSE
RayPacketData* data = rays.data;
int e = size&(~3);
+ __m128 vec_xoffset = _mm_set1_ps(ci.xoffset);
+ __m128 vec_yoffset = _mm_set1_ps(ci.yoffset);
+ __m128 vec_xscale = _mm_set1_ps(ci.xscale);
+ __m128 vec_yscale = _mm_set1_ps(ci.yscale);
for(int i=0;i<e;i+=4) {
_mm_store_si128((__m128i*)&data->whichEye[f+i],
_mm_load_si128((__m128i*)&fragment.whichEye[f+i]));
__m128 fx =
_mm_cvtepi32_ps(_mm_load_si128((__m128i*)&fragment.pixel[0][f+i]));
- _mm_store_ps(&data->image[0][f+i], _mm_add_ps(_mm_mul_ps(fx,
ci.vec_xscale), ci.vec_xoffset));
+ _mm_store_ps(&data->image[0][f+i], _mm_add_ps(_mm_mul_ps(fx,
vec_xscale), vec_xoffset));
__m128 fy =
_mm_cvtepi32_ps(_mm_load_si128((__m128i*)&fragment.pixel[1][f+i]));
- _mm_store_ps(&data->image[1][f+i], _mm_add_ps(_mm_mul_ps(fy,
ci.vec_yscale), ci.vec_yoffset));
+ _mm_store_ps(&data->image[1][f+i], _mm_add_ps(_mm_mul_ps(fy,
vec_yscale), vec_yoffset));
}
#else
int e = 0;
Modified: trunk/Engine/PixelSamplers/SingleSampler.h
==============================================================================
--- trunk/Engine/PixelSamplers/SingleSampler.h (original)
+++ trunk/Engine/PixelSamplers/SingleSampler.h Fri May 5 13:46:55 2006
@@ -4,8 +4,6 @@
#include <MantaTypes.h>
#include <Interface/PixelSampler.h>
-#include <Core/Util/Align.h>
-#include <MantaSSE.h>
#include <sgi_stl_warnings_off.h>
#include <string>
#include <vector>
@@ -28,15 +26,7 @@
SingleSampler(const SingleSampler&);
SingleSampler& operator=(const SingleSampler&);
- struct MANTA_ALIGN(16) ChannelInfo {
-#ifdef MANTA_SSE
- __m128 vec_xscale;
- __m128 vec_xscale4;
- __m128 vec_xscale_cascade;
- __m128 vec_xoffset;
- __m128 vec_yscale;
- __m128 vec_yoffset;
-#endif
+ struct ChannelInfo {
Real xscale;
Real xoffset;
Real yscale;
Modified: trunk/Engine/Renderers/NullRenderer.cc
==============================================================================
--- trunk/Engine/Renderers/NullRenderer.cc (original)
+++ trunk/Engine/Renderers/NullRenderer.cc Fri May 5 13:46:55 2006
@@ -6,6 +6,7 @@
#include <Interface/Context.h>
#include <Interface/RayPacket.h>
#include <Core/Util/Assert.h>
+#include <MantaSSE.h>
using namespace Manta;
@@ -48,4 +49,38 @@
for(int i=rays.begin();i<rays.end();i++){
rays.setColor(i, color);
}
+#ifdef MANTA_SSE
+ int b = (rays.rayBegin + 3) & (~3);
+ int e = rays.rayEnd & (~3);
+ RayPacketData* data = rays.data;
+ if(b == e){
+ for(int i=rays.begin();i<rays.end();i++){
+ rays.setColor(i, color);
+ }
+ } else {
+ int i = rays.rayBegin;
+ for(;i<b;i++){
+ data->color[0][i] = color[0];
+ data->color[1][i] = color[1];
+ data->color[2][i] = color[2];
+ }
+ __m128 vec_red = _mm_set1_ps(color[0]);
+ __m128 vec_green = _mm_set1_ps(color[1]);
+ __m128 vec_blue = _mm_set1_ps(color[2]);
+ for(;i<e;i+=4){
+ _mm_store_ps(&data->color[0][i], vec_red);
+ _mm_store_ps(&data->color[1][i], vec_green);
+ _mm_store_ps(&data->color[2][i], vec_blue);
+ }
+ for(;i<rays.rayEnd;i++){
+ data->color[0][i] = color[0];
+ data->color[1][i] = color[1];
+ data->color[2][i] = color[2];
+ }
+ }
+#else
+ for(int i=rays.begin();i<rays.end();i++){
+ rays.setColor(i, color);
+ }
+#endif
}
Modified: trunk/Engine/Renderers/RayGen.cc
==============================================================================
--- trunk/Engine/Renderers/RayGen.cc (original)
+++ trunk/Engine/Renderers/RayGen.cc Fri May 5 13:46:55 2006
@@ -10,7 +10,7 @@
#include <Interface/Material.h>
#include <Interface/Object.h>
#include <Interface/Scene.h>
-
+#include <MantaSSE.h>
using namespace Manta;
@@ -21,6 +21,7 @@
RayGen::RayGen(const vector<string>&)
{
+ color = Color(RGBColor(0.2, 0.9, 0.5));
}
RayGen::~RayGen()
Modified: trunk/Engine/Renderers/RayGen.h
==============================================================================
--- trunk/Engine/Renderers/RayGen.h (original)
+++ trunk/Engine/Renderers/RayGen.h Fri May 5 13:46:55 2006
@@ -26,6 +26,8 @@
private:
RayGen(const RayGen&);
RayGen& operator=(const RayGen&);
+
+ Color color;
};
}
Modified: trunk/Interface/Context.h
==============================================================================
--- trunk/Interface/Context.h (original)
+++ trunk/Interface/Context.h Fri May 5 13:46:55 2006
@@ -134,12 +134,14 @@
};
class DisplayContext {
public:
- DisplayContext(int proc, int numProcs)
- : proc(proc), numProcs(numProcs)
+ DisplayContext(int proc, int numProcs, int frameIndex, int pipelineDepth)
+ : proc(proc), numProcs(numProcs), frameIndex(frameIndex),
pipelineDepth(pipelineDepth)
{
}
int proc;
int numProcs;
+ int frameIndex;
+ int pipelineDepth;
private:
DisplayContext(const DisplayContext&);
DisplayContext& operator=(const DisplayContext&);
Modified: trunk/Interface/Fragment.h
==============================================================================
--- trunk/Interface/Fragment.h (original)
+++ trunk/Interface/Fragment.h Fri May 5 13:46:55 2006
@@ -37,14 +37,19 @@
static const int ConsecutiveX = 0x01; // Implies a constant Y:
static const int ConstantEye = 0x02;
+ static const int UniformSpacing = 0x04;
+
+ enum FragmentShape {
+ LineShape, SquareShape, UnknownShape
+ };
///////////////////////////////////////////////////////////////////////////
// Empty Constructor
- Fragment()
- : flags(0), pixelBegin(0), pixelEnd(0)
+ Fragment(FragmentShape shape)
+ : shape(shape), flags(0), pixelBegin(0), pixelEnd(0)
{}
- Fragment(int flags)
- : flags(flags), pixelBegin(0), pixelEnd(0)
+ Fragment(FragmentShape shape, int flags)
+ : shape(shape), flags(flags), pixelBegin(0), pixelEnd(0)
{}
// Creates a "Scan-line" fragment.
@@ -78,7 +83,8 @@
pixel[1][i] = y;
whichEye[i] = eye;
}
- flags = ConsecutiveX|ConstantEye;
+ shape = LineShape;
+ flags = ConsecutiveX|ConstantEye|UniformSpacing;
pixelBegin = 0;
pixelEnd = nx;
}
@@ -215,6 +221,7 @@
MANTA_ALIGN(16) int whichEye[MaxSize];
// Properties of this packet
+ FragmentShape shape;
int flags;
// Range of Elements that are currently being used.
Modified: trunk/Interface/RayPacket.h
==============================================================================
--- trunk/Interface/RayPacket.h (original)
+++ trunk/Interface/RayPacket.h Fri May 5 13:46:55 2006
@@ -97,13 +97,17 @@
DebugPacket = 0x8000
};
+ enum PacketShape {
+ LinePacket, SquarePacket, UnknownShape
+ };
+
// Create a "toplevel" raypacket. You need to call resetHits or
// resetHit for every data element in the ray packet before you
// start intersecting. This will initialize minT and hitMatl.
- RayPacket(RayPacketData& data, int rayBegin, int rayEnd, int depth,
- int flags)
- : data(&data), rayBegin(rayBegin), rayEnd(rayEnd), depth(depth),
- flags(flags)
+ RayPacket(RayPacketData& data, PacketShape shape, int rayBegin, int
rayEnd,
+ int depth, int flags)
+ : data(&data), shape(shape), rayBegin(rayBegin), rayEnd(rayEnd),
+ depth(depth), flags(flags)
{
}
@@ -112,6 +116,11 @@
: data(parent.data), rayBegin(rayBegin), rayEnd(rayEnd),
depth(parent.depth), flags(parent.flags)
{
+ shape = parent.shape;
+ if(shape == SquarePacket){
+ // A subset of a square is not necessarily a square
+ shape = UnknownShape;
+ }
}
~RayPacket()
@@ -570,6 +579,7 @@
int rayBegin;
int rayEnd;
int depth;
+ PacketShape shape;
int flags;
};
Modified: trunk/Model/Instances/Instance.cc
==============================================================================
--- trunk/Model/Instances/Instance.cc (original)
+++ trunk/Model/Instances/Instance.cc Fri May 5 13:46:55 2006
@@ -76,8 +76,8 @@
void Instance::intersect(const RenderContext& context, RayPacket& rays) const
{
RayPacketData raydata;
- RayPacket instance_rays(raydata, rays.begin(), rays.end(), rays.getDepth(),
- rays.getAllFlags());
+ RayPacket instance_rays(raydata, RayPacket::UnknownShape, rays.begin(),
rays.end(),
+ rays.getDepth(), rays.getAllFlags());
Real scales[RayPacket::MaxSize];
Real inv_scales[RayPacket::MaxSize];
Modified: trunk/Model/Instances/InstanceRST.cc
==============================================================================
--- trunk/Model/Instances/InstanceRST.cc (original)
+++ trunk/Model/Instances/InstanceRST.cc Fri May 5 13:46:55 2006
@@ -90,8 +90,8 @@
void InstanceRST::intersect(const RenderContext& context, RayPacket& rays)
const
{
RayPacketData raydata;
- RayPacket instance_rays(raydata, rays.begin(), rays.end(), rays.getDepth(),
- rays.getAllFlags());
+ RayPacket instance_rays(raydata, RayPacket::UnknownShape, rays.begin(),
rays.end(),
+ rays.getDepth(), rays.getAllFlags());
if(rays.getFlag(RayPacket::ConstantOrigin)){
Vector o = transform_inv.multiply_point(rays.getOrigin(rays.begin()));
Modified: trunk/Model/Instances/InstanceRT.cc
==============================================================================
--- trunk/Model/Instances/InstanceRT.cc (original)
+++ trunk/Model/Instances/InstanceRT.cc Fri May 5 13:46:55 2006
@@ -91,8 +91,8 @@
void InstanceRT::intersect(const RenderContext& context, RayPacket& rays)
const
{
RayPacketData raydata;
- RayPacket instance_rays(raydata, rays.begin(), rays.end(), rays.getDepth(),
- rays.getAllFlags());
+ RayPacket instance_rays(raydata, RayPacket::UnknownShape, rays.begin(),
rays.end(),
+ rays.getDepth(), rays.getAllFlags());
if(rays.getFlag(RayPacket::ConstantOrigin)){
Vector o = transform_inv.multiply_point(rays.getOrigin(rays.begin()));
Modified: trunk/Model/Instances/InstanceST.cc
==============================================================================
--- trunk/Model/Instances/InstanceST.cc (original)
+++ trunk/Model/Instances/InstanceST.cc Fri May 5 13:46:55 2006
@@ -67,7 +67,8 @@
void InstanceST::intersect(const RenderContext& context, RayPacket& rays)
const
{
RayPacketData raydata;
- RayPacket instance_rays(raydata, rays.begin(), rays.end(),
rays.getDepth(), rays.getAllFlags());
+ RayPacket instance_rays(raydata, RayPacket::UnknownShape, rays.begin(),
rays.end(),
+ rays.getDepth(), rays.getAllFlags());
Real scales[RayPacket::MaxSize];
Real inv_scales[RayPacket::MaxSize];
Modified: trunk/Model/Instances/InstanceT.cc
==============================================================================
--- trunk/Model/Instances/InstanceT.cc (original)
+++ trunk/Model/Instances/InstanceT.cc Fri May 5 13:46:55 2006
@@ -61,8 +61,8 @@
void InstanceT::intersect(const RenderContext& context, RayPacket& rays)
const
{
RayPacketData raydata;
- RayPacket instance_rays(raydata, rays.begin(), rays.end(), rays.getDepth(),
- rays.getAllFlags());
+ RayPacket instance_rays(raydata, RayPacket::UnknownShape, rays.begin(),
rays.end(),
+ rays.getDepth(), rays.getAllFlags());
if(rays.getFlag(RayPacket::ConstantOrigin)){
Vector o(rays.getOrigin(rays.begin())-translation);
Modified: trunk/Model/Materials/AmbientOcclusion.cc
==============================================================================
--- trunk/Model/Materials/AmbientOcclusion.cc (original)
+++ trunk/Model/Materials/AmbientOcclusion.cc Fri May 5 13:46:55 2006
@@ -89,8 +89,8 @@
// Should the normalized flag be set? The normals coming in
// should already be normalized.
int flag = RayPacket::NormalizedDirections | RayPacket::ConstantOrigin;
- RayPacket occlusion_rays(occlusion_data, start, end, rays.getDepth(),
- flag);
+ RayPacket occlusion_rays(occlusion_data, RayPacket::UnknownShape,
+ start, end, rays.getDepth(), flag);
for ( int r = start; r < end; r++ ) {
Vector trans_dir = (directions[r][0]*U +
@@ -122,7 +122,7 @@
bool done;
do {
int map[RayPacket::MaxSize];
- RayPacket shadowRays(data, 0, 0, rays.getDepth(), 0);
+ RayPacket shadowRays(data, RayPacket::UnknownShape, 0, 0,
rays.getDepth(), 0);
done = context.shadowAlgorithm->computeShadows(context, activeLights,
rays, map, shadowRays,
firstTime, stateBuffer);
Modified: trunk/Model/Materials/Dielectric.cc
==============================================================================
--- trunk/Model/Materials/Dielectric.cc (original)
+++ trunk/Model/Materials/Dielectric.cc Fri May 5 13:46:55 2006
@@ -77,8 +77,10 @@
RayPacketData reflected_data;
RayPacketData refracted_data;
- RayPacket reflected_rays(reflected_data, 0, 0, rays.getDepth()+1,
RayPacket::NormalizedDirections);
- RayPacket refracted_rays(refracted_data, 0, 0, rays.getDepth()+1,
RayPacket::NormalizedDirections);
+ RayPacket reflected_rays(reflected_data, RayPacket::UnknownShape,
+ 0, 0, rays.getDepth()+1,
RayPacket::NormalizedDirections);
+ RayPacket refracted_rays(refracted_data, RayPacket::UnknownShape,
+ 0, 0, rays.getDepth()+1,
RayPacket::NormalizedDirections);
Color results[RayPacket::MaxSize];
Color refl_attenuation[RayPacket::MaxSize];
Modified: trunk/Model/Materials/Lambertian.cc
==============================================================================
--- trunk/Model/Materials/Lambertian.cc (original)
+++ trunk/Model/Materials/Lambertian.cc Fri May 5 13:46:55 2006
@@ -51,7 +51,7 @@
do {
int map[RayPacket::MaxSize];
RayPacketData shadowData;
- RayPacket shadowRays(shadowData, 0, 0, rays.getDepth(), 0);
+ RayPacket shadowRays(shadowData, RayPacket::UnknownShape, 0, 0,
rays.getDepth(), 0);
// Call the shadowalgorithm(sa) to generate shadow rays. We may not be
// able to compute all of them, so we pass along a buffer for the sa
Modified: trunk/Model/Materials/MetalMaterial.cc
==============================================================================
--- trunk/Model/Materials/MetalMaterial.cc (original)
+++ trunk/Model/Materials/MetalMaterial.cc Fri May 5 13:46:55 2006
@@ -40,8 +40,8 @@
rays.computeHitPositions();
RayPacketData rdata;
- RayPacket refl_rays(rdata, rays.begin(), rays.end(), rays.getDepth()+1,
- RayPacket::NormalizedDirections);
+ RayPacket refl_rays(rdata, RayPacket::UnknownShape, rays.begin(),
rays.end(),
+ rays.getDepth()+1, RayPacket::NormalizedDirections);
for(int i=rays.begin();i<rays.end();i++) {
Vector rayD = rays.getDirection(i);
Vector normal = rays.getNormal(i);
Modified: trunk/Model/Materials/Phong.cc
==============================================================================
--- trunk/Model/Materials/Phong.cc (original)
+++ trunk/Model/Materials/Phong.cc Fri May 5 13:46:55 2006
@@ -111,7 +111,7 @@
do {
int map[RayPacket::MaxSize];
RayPacketData shadowData;
- RayPacket shadowRays(shadowData, 0, 0, rays.getDepth(), 0);
+ RayPacket shadowRays(shadowData, RayPacket::UnknownShape, 0, 0,
rays.getDepth(), 0);
// Call the shadowalgorithm(sa) to generate shadow rays. We may not be
// able to compute all of them, so we pass along a buffer for the sa
@@ -164,8 +164,8 @@
rays.computeHitPositions();
RayPacketData rdata;
- RayPacket refl_rays(rdata, rays.begin(), rays.end(), rays.getDepth()+1,
- RayPacket::NormalizedDirections);
+ RayPacket refl_rays(rdata, RayPacket::UnknownShape, rays.begin(),
rays.end(),
+ rays.getDepth()+1, RayPacket::NormalizedDirections);
for(int i=rays.begin();i<rays.end();i++){
Vector refl_dir = (rays.getDirection(i) -
rays.getNormal(i)*(2*Dot(rays.getNormal(i),
rays.getDirection(i) )));
Modified: trunk/Model/Materials/Transparent.cc
==============================================================================
--- trunk/Model/Materials/Transparent.cc (original)
+++ trunk/Model/Materials/Transparent.cc Fri May 5 13:46:55 2006
@@ -82,7 +82,7 @@
do {
int map[RayPacket::MaxSize];
RayPacketData shadowData;
- RayPacket shadowRays(shadowData, 0, 0, rays.getDepth(), 0);
+ RayPacket shadowRays(shadowData, RayPacket::UnknownShape, 0, 0,
rays.getDepth(), 0);
// Call the shadowalgorithm(sa) to generate shadow rays. We may not be
// able to compute all of them, so we pass along a buffer for the sa
@@ -126,7 +126,7 @@
alpha->mapValues( context, rays, alpha_values );
RayPacketData secondaryData;
- RayPacket secondaryRays(secondaryData, 0, 0, rays.getDepth(), 0);
+ RayPacket secondaryRays(secondaryData, RayPacket::UnknownShape, 0, 0,
rays.getDepth(), 0);
int map[RayPacket::MaxSize];
// Shoot a secondary ray for all 1.0 alpha values.
Modified: trunk/Model/MiscObjects/CuttingPlane.cc
==============================================================================
--- trunk/Model/MiscObjects/CuttingPlane.cc (original)
+++ trunk/Model/MiscObjects/CuttingPlane.cc Fri May 5 13:46:55 2006
@@ -42,8 +42,8 @@
// Send a new ray packet with new ray origins.
RayPacketData new_data;
- RayPacket new_rays( new_data, rays.begin(), rays.end(),
rays.getDepth(),
- rays.getAllFlags());
+ RayPacket new_rays( new_data, RayPacket::UnknownShape, rays.begin(),
rays.end(),
+ rays.getDepth(), rays.getAllFlags());
rays.normalizeDirections();
rays.computeInverseDirections();
Modified: trunk/Model/MiscObjects/Difference.cc
==============================================================================
--- trunk/Model/MiscObjects/Difference.cc (original)
+++ trunk/Model/MiscObjects/Difference.cc Fri May 5 13:46:55 2006
@@ -30,11 +30,11 @@
void Difference::intersect(const RenderContext& context, RayPacket& rays)
const
{
RayPacketData raydata1;
- RayPacket object1_rays(raydata1, rays.begin(), rays.end(), rays.getDepth(),
- rays.getAllFlags());
+ RayPacket object1_rays(raydata1, RayPacket::UnknownShape, rays.begin(),
rays.end(),
+ rays.getDepth(), rays.getAllFlags());
RayPacketData raydata2;
- RayPacket object2_rays(raydata2, rays.begin(), rays.end(), rays.getDepth(),
- rays.getAllFlags());
+ RayPacket object2_rays(raydata2, RayPacket::UnknownShape, rays.begin(),
rays.end(),
+ rays.getDepth(), rays.getAllFlags());
for(int i = rays.begin();i<rays.end();i++){
object1_rays.setRay(i, rays.getRay(i));
Modified: trunk/Model/MiscObjects/Intersection.cc
==============================================================================
--- trunk/Model/MiscObjects/Intersection.cc (original)
+++ trunk/Model/MiscObjects/Intersection.cc Fri May 5 13:46:55 2006
@@ -33,11 +33,11 @@
void Intersection::intersect(const RenderContext& context, RayPacket& rays)
const
{
RayPacketData raydata1;
- RayPacket object1_rays(raydata1, rays.begin(), rays.end(), rays.getDepth(),
- rays.getAllFlags());
+ RayPacket object1_rays(raydata1, RayPacket::UnknownShape, rays.begin(),
rays.end(),
+ rays.getDepth(), rays.getAllFlags());
RayPacketData raydata2;
- RayPacket object2_rays(raydata2, rays.begin(), rays.end(), rays.getDepth(),
- rays.getAllFlags());
+ RayPacket object2_rays(raydata2, RayPacket::UnknownShape, rays.begin(),
rays.end(),
+ rays.getDepth(), rays.getAllFlags());
for(int i = rays.begin();i<rays.end();i++){
object1_rays.setRay(i, rays.getRay(i));
- [MANTA] r1045 - in trunk: . Engine/Control Engine/ImageTraversers Engine/PixelSamplers Engine/Renderers Interface Model/Instances Model/Materials Model/MiscObjects, sparker, 05/05/2006
Archive powered by MHonArc 2.6.16.