Text archives Help
- 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.