Text archives Help
- From: boulos@sci.utah.edu
- To: manta@sci.utah.edu
- Subject: [Manta] r1939 - trunk/Image
- Date: Wed, 19 Dec 2007 11:23:27 -0700 (MST)
Author: boulos
Date: Wed Dec 19 11:23:26 2007
New Revision: 1939
Modified:
trunk/Image/SimpleImage_special.cc
Log:
Image/SimpleImage_special.cc
Addding splatting for RGBA8 as well.
Modified: trunk/Image/SimpleImage_special.cc
==============================================================================
--- trunk/Image/SimpleImage_special.cc (original)
+++ trunk/Image/SimpleImage_special.cc Wed Dec 19 11:23:26 2007
@@ -62,10 +62,10 @@
}
} else
#endif /* MANTA_SSE */
- {
- for(int i=fragment.begin(); i< fragment.end();i++)
- convertToPixel(*pix++, fragment.getColor(i).convertRGB());
- }
+ {
+ for(int i=fragment.begin(); i< fragment.end();i++)
+ convertToPixel(*pix++, fragment.getColor(i).convertRGB());
+ }
} else {
for(int i=fragment.begin();i<fragment.end();i++){
convertToPixel(eyeStart[fragment.getWhichEye(i)][fragment.getY(i)][fragment.getX(i)],
fragment.getColor(i).convertRGB());
@@ -125,10 +125,10 @@
}
} else
#endif /* MANTA_SSE */
- {
- for(int i=fragment.begin(); i< fragment.end();i++)
- convertToPixel(*pix++, fragment.getColor(i).convertRGB());
- }
+ {
+ for(int i=fragment.begin(); i< fragment.end();i++)
+ convertToPixel(*pix++, fragment.getColor(i).convertRGB());
+ }
} else {
for(int i=fragment.begin();i<fragment.end();i++){
convertToPixel(eyeStart[fragment.getWhichEye(i)][fragment.getY(i)][fragment.getX(i)],
fragment.getColor(i).convertRGB());
@@ -139,7 +139,28 @@
template<>
void SimpleImage<RGBA8Pixel>::set(const Fragment& fragment)
{
- if(fragment.getFlag(Fragment::ConsecutiveX|Fragment::ConstantEye)) {
+ if(fragment.xPixelSize != 1 || fragment.yPixelSize != 1){
+ // NOTE(boulos): This branch tries to copy fragments where a
+ // single sample splats onto several pixels
+ for(int i=fragment.begin();i<fragment.end();i++){
+ RGBA8Pixel pix;
+ convertToPixel(pix, fragment.getColor(i).convertRGB());
+
+ // start splatting
+ int y_index = fragment.getY(i);
+ int last_x = std::min(xres - fragment.getX(i), fragment.xPixelSize);
+ for(int y=0;y<fragment.yPixelSize;y++){
+
+ if (y_index >= yres) break;
+
+ RGBA8Pixel* row = eyeStart[fragment.getWhichEye(i)][y_index];
+ for(int x=0;x<last_x;x++)
+ row[fragment.getX(i) + x] = pix;
+
+ y_index++;
+ }
+ }
+ } else if(fragment.getFlag(Fragment::ConsecutiveX|Fragment::ConstantEye)) {
int b = fragment.begin();
RGBA8Pixel* pix =
eyeStart[fragment.getWhichEye(b)][fragment.getY(b)]+fragment.getX(b);
#if MANTA_SSE
@@ -188,10 +209,10 @@
}
} else
#endif /* MANTA_SSE */
- {
- for(int i=fragment.begin(); i< fragment.end();i++)
- convertToPixel(*pix++, fragment.getColor(i).convertRGB());
- }
+ {
+ for(int i=fragment.begin(); i< fragment.end();i++)
+ convertToPixel(*pix++, fragment.getColor(i).convertRGB());
+ }
} else {
for(int i=fragment.begin();i<fragment.end();i++){
convertToPixel(eyeStart[fragment.getWhichEye(i)][fragment.getY(i)][fragment.getX(i)],
fragment.getColor(i).convertRGB());
@@ -237,10 +258,10 @@
}
} else
#endif /* MANTA_SSE */
- {
- for(int i=fragment.begin(); i< fragment.end();i++)
- convertToPixel(*pix++, fragment.getColor(i).convertRGB());
- }
+ {
+ for(int i=fragment.begin(); i< fragment.end();i++)
+ convertToPixel(*pix++, fragment.getColor(i).convertRGB());
+ }
} else {
for(int i=fragment.begin();i<fragment.end();i++){
convertToPixel(eyeStart[fragment.getWhichEye(i)][fragment.getY(i)][fragment.getX(i)],
fragment.getColor(i).convertRGB());
- [Manta] r1939 - trunk/Image, boulos, 12/19/2007
Archive powered by MHonArc 2.6.16.