Manta Interactive Ray Tracer Development Mailing List

Text archives Help


[MANTA] r1024 - in trunk: Engine/PixelSamplers Image


Chronological Thread 
  • From: sparker@sci.utah.edu
  • To: manta@sci.utah.edu
  • Subject: [MANTA] r1024 - in trunk: Engine/PixelSamplers Image
  • Date: Sat, 29 Apr 2006 00:13:50 -0600 (MDT)

Author: sparker
Date: Sat Apr 29 00:13:49 2006
New Revision: 1024

Modified:
   trunk/Engine/PixelSamplers/NullSampler.cc
   trunk/Image/SimpleImage_special.cc
Log:
Minor optimization in SimpleImage SSE code
SSEify NullSampler (89 fps vs. 82 fps)


Modified: trunk/Engine/PixelSamplers/NullSampler.cc
==============================================================================
--- trunk/Engine/PixelSamplers/NullSampler.cc   (original)
+++ trunk/Engine/PixelSamplers/NullSampler.cc   Sat Apr 29 00:13:49 2006
@@ -2,6 +2,7 @@
 #include <Engine/PixelSamplers/NullSampler.h>
 #include <Core/Color/RGBColor.h>
 #include <Interface/Fragment.h>
+#include <MantaSSE.h>
 
 using namespace Manta;
 
@@ -32,6 +33,23 @@
 
 void NullSampler::renderFragment(const RenderContext&, Fragment& fragment)
 {
-  for(int i=fragment.begin();i<fragment.end();i++)
-    fragment.setColor(i, Color(RGBColor(0.3, 0.6, 0.9)));
+#if MANTA_SSE
+  if(((fragment.pixelBegin | fragment.pixelEnd) & 0xf) == 0){
+    __m128 r = _mm_set1_ps( 0.3 );
+    __m128 g = _mm_set1_ps( 0.6 );
+    __m128 b = _mm_set1_ps( 0.9 );
+    for(int i=fragment.pixelBegin; i < fragment.pixelEnd; i+=4){
+      _mm_store_ps(&fragment.color[0][i], r);
+      _mm_store_ps(&fragment.color[1][i], g);
+      _mm_store_ps(&fragment.color[2][i], b);
+    }
+  } else
+#endif /* MANTA_SSE */
+  {
+    for(int i=fragment.pixelBegin;i<fragment.pixelEnd;i++){
+      fragment.color[0][i] = 0.3;
+      fragment.color[1][i] = 0.6;
+      fragment.color[2][i] = 0.9;
+    }
+  }
 }

Modified: trunk/Image/SimpleImage_special.cc
==============================================================================
--- trunk/Image/SimpleImage_special.cc  (original)
+++ trunk/Image/SimpleImage_special.cc  Sat Apr 29 00:13:49 2006
@@ -18,7 +18,8 @@
     if(((fragment.pixelBegin | fragment.pixelEnd) & 0xf) == 0){
       // Aligned for SSE
       __m128 scale = _mm_set1_ps( 255.99999f );
-      for(int i=fragment.begin(); i+3< fragment.end();i+=4){
+      int f = fragment.end()-3;
+      for(int i=fragment.begin(); i< f;i+=4){
         __m128 r = _mm_load_ps(&fragment.color[0][i]);
         __m128 g = _mm_load_ps(&fragment.color[1][i]);
         __m128 b = _mm_load_ps(&fragment.color[2][i]);




  • [MANTA] r1024 - in trunk: Engine/PixelSamplers Image, sparker, 04/29/2006

Archive powered by MHonArc 2.6.16.

Top of page