GClasses

GClasses::GRayTraceScene Class Reference

Represents a scene that you can ray-trace. More...

#include <GRayTrace.h>

List of all members.

Public Types

enum  RenderMode { FAST_RAY_TRACE, QUALITY_RAY_TRACE, PATH_TRACE }

Public Member Functions

 GRayTraceScene (GRand *pRand)
 GRayTraceScene (GDomNode *pNode, GRand *pRand)
 ~GRayTraceScene ()
GDomNodeserialize (GDom *pDoc)
 Marshal this object into a DOM, which can then be converted to a variety of serial formats.
void flushObjects ()
 Deletes all the materials and objects. (Leaves the lights and camera as they are.)
void swapObjects (GRayTraceScene *pOther)
 Swap all matrials, meshes and objects with the other scene. (Leaves the camera and lights as they are.)
void setRenderMode (RenderMode eMode)
 Specify whether to emphasize quality or speed.
void render ()
 This method calls RenderBegin, then calls RenderLine until the whole image has been rendered.
void renderBegin ()
 Call this before calling RenderLine(). It resets the image and computes values necessary for rendering.
bool renderLine ()
 Call this to render a singe horizontal line of the image. Returns true if there's still more rendering to do. Returns false if it's done. You must call RenderBegin() once before you start calling this method.
void drawWireFrame ()
 This draws a wire frame of the scene. This is a fast way to ensure your camera is looking where you think it is looking before you perform a long render.
unsigned int renderSinglePixel (int x, int y)
 This calls RenderBegine and then renders a single pixel. It's not efficient to call this method for every pixel. The only purpose for this method is to make debugging the ray tracer easier. Pick a pixel that isn't rendered the way you want and step through the ray tracing process to see why.
GImageimage ()
 Returns the rendered image (or partially rendered image). Returns NULL if Render() or RenderBegin() has not been called yet.
GImagereleaseImage ()
void setBackgroundColor (G3DReal a, G3DReal r, G3DReal g, G3DReal b)
void setAmbientLight (G3DReal r, G3DReal g, G3DReal b)
GRayTraceColorambientLight ()
GRayTraceCameracamera ()
GRandrand ()
void activateDistanceMap ()
G3DRealdistanceMap ()
void addMaterial (GRayTraceMaterial *pMaterial)
void addMesh (GRayTraceTriMesh *pMesh)
void addObject (GRayTraceObject *pObject)
void addLight (GRayTraceLight *pLight)
size_t materialCount ()
size_t meshCount ()
size_t objectCount ()
size_t lightCount ()
GRayTraceMaterialmaterial (size_t n)
GRayTraceTriMeshmesh (size_t n)
GRayTraceObjectobject (size_t n)
GRayTraceLightlight (size_t n)
std::vector< GRayTraceMaterial * > & materials ()
GRayTraceColorbackgroundColor ()
GRayTraceBoundingBoxBaseboundingBoxTree ()
void setToneMappingConstant (G3DReal c)
size_t materialIndex (GRayTraceMaterial *pMaterial)
size_t meshIndex (GRayTraceTriMesh *pMesh)
size_t objectIndex (GRayTraceObject *pObj)
unsigned int renderPixel (GRayTraceRay *pRay, G3DVector *pScreenPoint, G3DReal *pDistance)
unsigned int renderPixelAntiAliassed (GRayTraceRay *pRay, G3DVector *pScreenPoint, G3DReal *pDistance)
unsigned int renderPixelPathTrace (GRayTraceRay *pRay, G3DVector *pScreenPoint)

Protected Attributes

GRayTraceColor m_backgroundColor
GRayTraceColor m_ambientLight
std::vector< GRayTraceMaterial * > m_materials
std::vector< GRayTraceTriMesh * > m_meshes
std::vector< GRayTraceObject * > m_objects
std::vector< GRayTraceLight * > m_lights
GRayTraceCameram_pCamera
GRayTraceBoundingBoxBasem_pBoundingBoxTree
G3DReal m_toneMappingConstant
RenderMode m_eMode
 Rendering values.
GImagem_pImage
G3DRealm_pDistanceMap
int m_nY
G3DVector m_pixSide
G3DVector m_pixDX
G3DVector m_pixDY
GRandm_pRand

Detailed Description

Represents a scene that you can ray-trace.


Member Enumeration Documentation

Enumerator:
FAST_RAY_TRACE 
QUALITY_RAY_TRACE 
PATH_TRACE 

Constructor & Destructor Documentation

GClasses::GRayTraceScene::GRayTraceScene ( GRand pRand)
GClasses::GRayTraceScene::GRayTraceScene ( GDomNode pNode,
GRand pRand 
)
GClasses::GRayTraceScene::~GRayTraceScene ( )

Member Function Documentation

void GClasses::GRayTraceScene::activateDistanceMap ( )
void GClasses::GRayTraceScene::addLight ( GRayTraceLight pLight)
void GClasses::GRayTraceScene::addMaterial ( GRayTraceMaterial pMaterial)
void GClasses::GRayTraceScene::addMesh ( GRayTraceTriMesh pMesh)
void GClasses::GRayTraceScene::addObject ( GRayTraceObject pObject)
GRayTraceColor* GClasses::GRayTraceScene::ambientLight ( ) [inline]
GRayTraceColor* GClasses::GRayTraceScene::backgroundColor ( ) [inline]
GRayTraceBoundingBoxBase* GClasses::GRayTraceScene::boundingBoxTree ( ) [inline]
GRayTraceCamera* GClasses::GRayTraceScene::camera ( ) [inline]
G3DReal* GClasses::GRayTraceScene::distanceMap ( ) [inline]
void GClasses::GRayTraceScene::drawWireFrame ( )

This draws a wire frame of the scene. This is a fast way to ensure your camera is looking where you think it is looking before you perform a long render.

void GClasses::GRayTraceScene::flushObjects ( )

Deletes all the materials and objects. (Leaves the lights and camera as they are.)

GImage* GClasses::GRayTraceScene::image ( ) [inline]

Returns the rendered image (or partially rendered image). Returns NULL if Render() or RenderBegin() has not been called yet.

GRayTraceLight* GClasses::GRayTraceScene::light ( size_t  n)
size_t GClasses::GRayTraceScene::lightCount ( )
GRayTraceMaterial* GClasses::GRayTraceScene::material ( size_t  n)
size_t GClasses::GRayTraceScene::materialCount ( )
size_t GClasses::GRayTraceScene::materialIndex ( GRayTraceMaterial pMaterial)
std::vector<GRayTraceMaterial*>& GClasses::GRayTraceScene::materials ( ) [inline]
GRayTraceTriMesh* GClasses::GRayTraceScene::mesh ( size_t  n)
size_t GClasses::GRayTraceScene::meshCount ( )
size_t GClasses::GRayTraceScene::meshIndex ( GRayTraceTriMesh pMesh)
GRayTraceObject* GClasses::GRayTraceScene::object ( size_t  n)
size_t GClasses::GRayTraceScene::objectCount ( )
size_t GClasses::GRayTraceScene::objectIndex ( GRayTraceObject pObj)
GRand* GClasses::GRayTraceScene::rand ( ) [inline]
GImage* GClasses::GRayTraceScene::releaseImage ( ) [inline]
void GClasses::GRayTraceScene::render ( )

This method calls RenderBegin, then calls RenderLine until the whole image has been rendered.

void GClasses::GRayTraceScene::renderBegin ( )

Call this before calling RenderLine(). It resets the image and computes values necessary for rendering.

bool GClasses::GRayTraceScene::renderLine ( )

Call this to render a singe horizontal line of the image. Returns true if there's still more rendering to do. Returns false if it's done. You must call RenderBegin() once before you start calling this method.

unsigned int GClasses::GRayTraceScene::renderPixel ( GRayTraceRay *  pRay,
G3DVector pScreenPoint,
G3DReal pDistance 
)
unsigned int GClasses::GRayTraceScene::renderPixelAntiAliassed ( GRayTraceRay *  pRay,
G3DVector pScreenPoint,
G3DReal pDistance 
)
unsigned int GClasses::GRayTraceScene::renderPixelPathTrace ( GRayTraceRay *  pRay,
G3DVector pScreenPoint 
)
unsigned int GClasses::GRayTraceScene::renderSinglePixel ( int  x,
int  y 
)

This calls RenderBegine and then renders a single pixel. It's not efficient to call this method for every pixel. The only purpose for this method is to make debugging the ray tracer easier. Pick a pixel that isn't rendered the way you want and step through the ray tracing process to see why.

GDomNode* GClasses::GRayTraceScene::serialize ( GDom pDoc)

Marshal this object into a DOM, which can then be converted to a variety of serial formats.

void GClasses::GRayTraceScene::setAmbientLight ( G3DReal  r,
G3DReal  g,
G3DReal  b 
) [inline]
void GClasses::GRayTraceScene::setBackgroundColor ( G3DReal  a,
G3DReal  r,
G3DReal  g,
G3DReal  b 
) [inline]
void GClasses::GRayTraceScene::setRenderMode ( RenderMode  eMode) [inline]

Specify whether to emphasize quality or speed.

void GClasses::GRayTraceScene::setToneMappingConstant ( G3DReal  c) [inline]
void GClasses::GRayTraceScene::swapObjects ( GRayTraceScene pOther)

Swap all matrials, meshes and objects with the other scene. (Leaves the camera and lights as they are.)


Member Data Documentation

Rendering values.