Do you run into the problem with -np 1? Also, would it be possible to get the full copy of your camera implementation instead of just makeRays (which looks okay to me).
On Sep 4, 2007, at 10:49 PM, Christian Odom wrote:On 9/5/07, Abe Stephens <abe@sci.utah.edu> wrote:It looks like ray packets or fragments are being corrupted somehow (e.g. invalid directions or origins causing rays that should it the background to hit the plane).Do you experience this problem when using the default pinhole camera? We don't experience the artifact on our systems, which suggests it could be a IA64 code path problem, a non-SSE code path problem, or an issue with your camera implementation.If it doesn't occur with the default camera we can eliminate the first two and we'll have a lot less of the code to deal with.
The default camera is fine.
This is our makeRays implementation.
void MatrixCamera::makeRays(RayPacket& rays) const
{
ASSERT(rays.getFlag(RayPacket::HaveImageCoordinates));
ASSERT(rays.getFlag(RayPacket::ConstantEye));
rays.setFlag(RayPacket::ConstantOrigin);
float temp[4];
temp[0] = inverseProjView[0][3];
temp[1] = inverseProjView[1][3];
temp[2] = inverseProjView[2][3];
temp[3] = inverseProjView[3][3];
Vector tempEye;
tempEye = Vector((float)temp[0]/(float)temp[3],(float)temp[1]/(float)temp[3],(float)temp[2]/(float)temp[3]);
for(int i = rays.begin(); i < rays.end(); i++){
temp[0] = inverseProjView[0][0]* rays.getImageCoordinates(i, 0) + inverseProjView[0][1]*rays.getImageCoordinates(i,1 )
+ inverseProjView[0][2] + inverseProjView[0][3];
temp[1] = inverseProjView[1][0]*rays.getImageCoordinates(i, 0) + inverseProjView[1][1]* rays.getImageCoordinates(i,1 )
+ inverseProjView[1][2] + inverseProjView[1][3];
temp[2] = inverseProjView[2][0]*rays.getImageCoordinates(i, 0) + inverseProjView[2][1]*rays.getImageCoordinates(i,1 )
+ inverseProjView[2][2] + inverseProjView[2][3];
temp[3] = inverseProjView[3][0]*rays.getImageCoordinates(i, 0) + inverseProjView[3][1]*rays.getImageCoordinates(i,1 )
+ inverseProjView[3][2] + inverseProjView[3][3];
target = Vector((float)temp[0]/(float)temp[3],(float)temp[1]/(float)temp[3],(float)temp[2]/(float)temp[3]);
target.normalize();
rays.setRay(i, tempEye, target);
}AbeOn Sep 4, 2007, at 9:26 PM, Christian Odom wrote:Hi everybody.
I wanted to see if anybody had an idea about what is going on in the picture.
The "Left Screen" is running on an ia64 system using 3 processors. The
"Right Screen" is also running on an ia64 system, but it is using 25 processors.
Both are using a custom camera class, which uses a matrix to generate the eye point and
the raydir.
It seems that the "noise" in the image is related to the number of processors we use. The
more processors the more "noise."
Any ideas would be awesome.
--
Christian Odom
Graduate Student
Center for Advanced Computer Studies
http://www.cacs.louisiana.edu
Louisiana Immersive Technologies Enterprise
http://www.lite3d.com<snapshot1.png >
--
Christian Odom
Graduate Student
Center for Advanced Computer Studies
http://www.cacs.louisiana.edu
Louisiana Immersive Technologies Enterprise
http://www.lite3d.com
Attachment:
MatrixCamera.cc
Description: Binary data
Attachment:
MatrixCamera.h
Description: Binary data
Archive powered by MHonArc 2.6.16.