Manta Interactive Ray Tracer Development Mailing List

Text archives Help


[MANTA] r1544 - in trunk/Model: Lights Primitives


Chronological Thread 
  • From: boulos@sci.utah.edu
  • To: manta@sci.utah.edu
  • Subject: [MANTA] r1544 - in trunk/Model: Lights Primitives
  • Date: Tue, 24 Jul 2007 15:14:08 -0600 (MDT)

Author: boulos
Date: Tue Jul 24 15:14:08 2007
New Revision: 1544

Modified:
   trunk/Model/Lights/AreaLight.cc
   trunk/Model/Lights/AreaLight.h
   trunk/Model/Primitives/Parallelogram.cc
   trunk/Model/Primitives/Parallelogram.h
Log:
Model/Lights/AreaLight.cc
Model/Lights/AreaLight.h

  Removing const qualifier on Primitive* so that the underlying
  primitive can be modified after creation (for example, a moving
  light source).  Adding get/set for the underlying Primitive as well.

Model/Primitives/Parallelogram.cc
Model/Primitives/Parallelogram.h

  Adding a simple changeGeometry function so that a Parallelogram can
  be moved.


Modified: trunk/Model/Lights/AreaLight.cc
==============================================================================
--- trunk/Model/Lights/AreaLight.cc     (original)
+++ trunk/Model/Lights/AreaLight.cc     Tue Jul 24 15:14:08 2007
@@ -4,7 +4,7 @@
 
 using namespace Manta;
 
-AreaLight::AreaLight(const Primitive* primitive, const Color& color)
+AreaLight::AreaLight(Primitive* primitive, const Color& color)
   : primitive(primitive), color(color) {
 }
 
@@ -22,7 +22,6 @@
   Packet<Vector> normals;
   Packet<Real> pdfs;
   primitive->getRandomPoints(positions, normals, pdfs, context, sourceRays);
-  // TODO(boulos): SSE version
 
 #ifdef MANTA_SSE
   int b = (sourceRays.rayBegin + 3) & (~3);

Modified: trunk/Model/Lights/AreaLight.h
==============================================================================
--- trunk/Model/Lights/AreaLight.h      (original)
+++ trunk/Model/Lights/AreaLight.h      Tue Jul 24 15:14:08 2007
@@ -10,7 +10,7 @@
   class Primitive;
   class AreaLight : public Light {
   public:
-    AreaLight(const Primitive* primitive, const Color& color);
+    AreaLight(Primitive* primitive, const Color& color);
     virtual ~AreaLight();
 
     virtual void preprocess(const PreprocessContext&);
@@ -21,8 +21,10 @@
     Color getColor() const { return color; }
     void setColor(Color new_c) { color = new_c; }
 
+    Primitive* getPrimitive() const { return primitive; }
+    void setPrimitive(Primitive* new_prim) { primitive = new_prim; }
   private:
-    const Primitive* primitive;
+    Primitive* primitive;
     Color color;
   };
 }

Modified: trunk/Model/Primitives/Parallelogram.cc
==============================================================================
--- trunk/Model/Primitives/Parallelogram.cc     (original)
+++ trunk/Model/Primitives/Parallelogram.cc     Tue Jul 24 15:14:08 2007
@@ -20,8 +20,7 @@
 Parallelogram::Parallelogram(Material* material, const Vector& anchor,
                              const Vector& in_v1, const Vector& in_v2)
   : PrimitiveCommon(material, this), anchor(anchor), v1(in_v1), v2(in_v2),
-    v1_unscaled(in_v1), v2_unscaled(in_v2)
-{
+    v1_unscaled(in_v1), v2_unscaled(in_v2) {
   normal = Cross(v1, v2);
   inv_area = Real(1)/normal.normalize();
   d = Dot(normal, anchor);
@@ -29,8 +28,23 @@
   v2 *= 1./v2.length2();
 }
 
-Parallelogram::~Parallelogram()
-{
+Parallelogram::~Parallelogram() {
+}
+
+// NOTE(boulos): We might want to consider having the constructor just
+// call this function
+void Parallelogram::changeGeometry(Vector new_anchor,
+                                   Vector new_v1,
+                                   Vector new_v2) {
+  v1_unscaled = new_v1;
+  v2_unscaled = new_v2;
+  v1 = new_v1;
+  v2 = new_v2;
+  normal = Cross(v1, v2);
+  inv_area = Real(1)/normal.normalize();
+  d = Dot(normal, anchor);
+  v1 *= 1./v1.length2();
+  v2 *= 1./v2.length2();
 }
 
 void Parallelogram::computeBounds(const PreprocessContext&, BBox& bbox) const

Modified: trunk/Model/Primitives/Parallelogram.h
==============================================================================
--- trunk/Model/Primitives/Parallelogram.h      (original)
+++ trunk/Model/Primitives/Parallelogram.h      Tue Jul 24 15:14:08 2007
@@ -13,6 +13,12 @@
                   const Vector& v1, const Vector& v2);
     virtual ~Parallelogram();
 
+    // NOTE(boulos): This function doesn't take Vector& so that it can
+    // be used for callbacks.
+    void changeGeometry(Vector new_anchor,
+                        Vector new_v1,
+                        Vector new_v2);
+
     virtual void computeBounds(const PreprocessContext& context,
                                BBox& bbox) const;
     virtual void intersect(const RenderContext& context, RayPacket& rays) 
const;




  • [MANTA] r1544 - in trunk/Model: Lights Primitives, boulos, 07/24/2007

Archive powered by MHonArc 2.6.16.

Top of page