Manta Interactive Ray Tracer Development Mailing List

Text archives Help


[MANTA] r288 - in trunk: Model/Textures scenes


Chronological Thread 
  • From: aek@sci.utah.edu
  • To: rtrt@sci.utah.edu
  • Subject: [MANTA] r288 - in trunk: Model/Textures scenes
  • Date: Wed, 11 May 2005 14:40:54 -0600 (MDT)

Author: aek
Date: Wed May 11 14:40:54 2005
New Revision: 288

Added:
   trunk/Model/Textures/MarbleTexture.cc
   trunk/Model/Textures/MarbleTexture.h
Modified:
   trunk/scenes/primtest.cc
Log:
Added a simple marble texture function to test out/show off the Perlin
noise functions.  Run primtest with "-material marble" to see it.



Added: trunk/Model/Textures/MarbleTexture.cc
==============================================================================
--- (empty file)
+++ trunk/Model/Textures/MarbleTexture.cc       Wed May 11 14:40:54 2005
@@ -0,0 +1,51 @@
+
+#include <Model/Textures/MarbleTexture.h>
+#include <Interface/RayPacket.h>
+#include <Core/Geometry/Point.h>
+#include <Core/Geometry/Vector.h>
+#include <Core/Math/Noise.h>
+#include <Core/Math/MiscMath.h>
+
+namespace Manta {
+
+  template< class ValueType >
+  MarbleTexture< ValueType >::MarbleTexture(
+      ValueType const &value1,
+      ValueType const &value2,
+      double const scale,
+      double const fscale,
+      double const tscale,
+      int const octaves,
+      double const lacunarity,
+      double const gain )
+    : value1( value1 ),
+      value2( value2 ),
+      scale ( scale ),
+      fscale( fscale ),
+      tscale( tscale ),
+      octaves( octaves ),
+      lacunarity( lacunarity ),
+      gain( gain )
+  {
+  }
+  
+  template< class ValueType >
+  MarbleTexture< ValueType >::~MarbleTexture()
+  {
+  }
+  
+  template< class ValueType >
+  void MarbleTexture< ValueType >::mapValues(
+    RenderContext const &context,
+    RayPacket &rays,
+    ValueType results[] ) const
+  {
+    rays.computeTextureCoordinates3( context );
+    for( int i = 0; i < rays.getSize(); i++ ) {
+      RayPacket::Element &e = rays.get( i );
+      Point T = e.texCoords * scale * fscale;
+      double value = 0.5 * cos( e.texCoords.x() * scale + tscale * 
Turbulence( T, octaves, lacunarity, gain ) ) * 0.5;
+      results[ i ] = Interpolate( value1, value2, value );
+    }
+  }
+}

Added: trunk/Model/Textures/MarbleTexture.h
==============================================================================
--- (empty file)
+++ trunk/Model/Textures/MarbleTexture.h        Wed May 11 14:40:54 2005
@@ -0,0 +1,49 @@
+
+#ifndef Manta_Model_MarbleTexture_h
+#define Manta_Model_MarbleTexture_h
+
+#include <Interface/Texture.h>
+
+namespace Manta {
+  class RayPacket;
+  class RenderContext;
+  template< typename ValueType >
+  class MarbleTexture : public Texture< ValueType > {
+    public:
+    MarbleTexture(
+      ValueType const &value1,
+      ValueType const &value2,
+      double const scale,
+      double const fscale,
+      double const tscale,
+      int const octaves,
+      double const lacunarity,
+      double const gain );
+    virtual ~MarbleTexture();
+    virtual void mapValues(
+      RenderContext const &context, 
+      RayPacket &rays,
+      ValueType results[] ) const;
+    private:
+    MarbleTexture(
+      MarbleTexture const & );
+    MarbleTexture& operator=(
+      MarbleTexture const & );
+    
+    ValueType value1;
+    ValueType value2;
+    double scale;
+    double fscale;
+    double tscale;
+    int octaves;
+    double lacunarity;
+    double gain;
+  };
+}
+
+#ifdef __GNUG__
+// This should instead be a configure variable...
+#include <Model/Textures/MarbleTexture.cc>
+#endif
+
+#endif

Modified: trunk/scenes/primtest.cc
==============================================================================
--- trunk/scenes/primtest.cc    (original)
+++ trunk/scenes/primtest.cc    Wed May 11 14:40:54 2005
@@ -28,6 +28,7 @@
 #include <Model/TexCoordMappers/SphericalMapper.h>
 #include <Model/Textures/Constant.h>
 #include <Model/Textures/CheckerTexture.h>
+#include <Model/Textures/MarbleTexture.h>
 #include <Core/Math/MinMax.h>
 #include <sgi_stl_warnings_off.h>
 #include <string>
@@ -114,6 +115,14 @@
     matl = new Checker(new Phong(Color(RGB(.6,.6,.6)), Color(RGB(.6,.6,.6)), 
32, 0.2),
                       new Phong(Color(RGB(.6,0,0)), Color(RGB(.6,.6,.6)), 
32, 0.5),
                       Vector(1,0,0)*texscale, Vector(0,1,0)*texscale);
+  else if(material == "marble")
+    matl = new Phong(
+             new MarbleTexture<Color>(
+               Color(RGB(0.1,0.2,0.5)), Color(RGB(0.7,0.8,1.0)),
+               10.0, 1.0, 15.0, 6, 2.0, 0.6 ), 
+                    new Constant<Color>(Color(RGB(.6,.6,.6))),
+                    32,
+                    new Constant<double>(0));
   else
     throw IllegalArgument("Unknown material type for primtest: "+material, 
0, args);
   Object* spinprim = 0;




  • [MANTA] r288 - in trunk: Model/Textures scenes, aek, 05/11/2005

Archive powered by MHonArc 2.6.16.

Top of page