Manta Interactive Ray Tracer Development Mailing List

Text archives Help


[Manta] r1939 - trunk/Image


Chronological Thread 
  • 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.

Top of page