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