Abstract renderer implementation. More...
#include <mitsuba/hw/renderer.h>
 Inheritance diagram for mitsuba::Renderer:
 Inheritance diagram for mitsuba::Renderer:| Classes | |
| struct | ShaderRecord | 
| Public Types | |
| enum | EBlendMode { EBlendNone = 0, EBlendAlpha, EBlendAdditive } | 
| enum | ECullMode { ECullNone = 0, ECullFront, ECullBack } | 
| Possible culling modes.  More... | |
| enum | EMatrixType { EProjection = 0, EModelView } | 
| Matrices of the fixed function pipeline.  More... | |
| typedef std::pair< const GPUGeometry *, Matrix4x4 > | TransformedGPUGeometry | 
| Public Member Functions | |
| const RendererCapabilities * | getCapabilities () const | 
| Return the renderer's capabilities.  More... | |
| virtual void | init (Device *device, Renderer *other=NULL) | 
| virtual void | reconfigure (const Device *device)=0 | 
| Reconfigure the renderer for a certain device (e.g. after a resize event)  More... | |
| virtual void | shutdown () | 
| Shut the renderer down.  More... | |
| virtual GPUTexture * | createGPUTexture (const std::string &name, Bitmap *bitmap=NULL)=0 | 
| Create a new GPU texture object.  More... | |
| virtual GPUProgram * | createGPUProgram (const std::string &name)=0 | 
| Create a new GPU program object.  More... | |
| virtual GPUSync * | createGPUSync ()=0 | 
| Create a new synchronization object.  More... | |
| virtual void | clear ()=0 | 
| Clear the viewport.  More... | |
| virtual void | setCamera (const ProjectiveCamera *pCamera, const Point2 &apertureSample=Point2(0.5f), const Point2 &aaSample=Point2(0.5f), Float timeSample=0.5f)=0 | 
| Configure the camera.  More... | |
| virtual void | setCamera (const Matrix4x4 &proj, const Matrix4x4 &view)=0 | 
| Configure the camera (manual)  More... | |
| virtual void | setMatrix (EMatrixType type, const Matrix4x4 &value)=0 | 
| Directly set the modelview or projection matrix.  More... | |
| virtual Matrix4x4 | getMatrix (EMatrixType type) const =0 | 
| Fetch the currently set modelview or projection matrix.  More... | |
| virtual void | beginDrawingMeshes (bool transmitOnlyPositions=false)=0 | 
| Set up the renderer for drawing triangle geometry.  More... | |
| virtual void | drawMesh (const TriMesh *shape)=0 | 
| Send a triangle mesh to the renderer.  More... | |
| virtual void | drawMesh (const GPUGeometry *geo)=0 | 
| Send a triangle mesh to the renderer.  More... | |
| virtual void | endDrawingMeshes ()=0 | 
| Clean up the renderer after drawing triangle geometry.  More... | |
| virtual void | drawAll (const std::vector< TransformedGPUGeometry > &geo)=0 | 
| Quickly draw all geometry that has been registered with the renderer.  More... | |
| virtual void | blitTexture (const GPUTexture *texture, bool flipVertically=false, bool centerHoriz=true, bool centerVert=true, const Vector2i &offset=Vector2i(0, 0))=0 | 
| Draw a quad using the given texture.  More... | |
| virtual void | blitQuad (bool flipVertically)=0 | 
| Blit a screen-sized quad.  More... | |
| virtual void | drawText (const Point2i &pos, const Font *font, const std::string &text)=0 | 
| virtual void | setPointSize (Float size)=0 | 
| Set the size of point primitives.  More... | |
| virtual void | drawPoint (const Point &p)=0 | 
| Draw a point.  More... | |
| virtual void | drawLine (const Point &a, const Point &b)=0 | 
| Draw a line between two specified points.  More... | |
| virtual void | drawPoint (const Point2 &p)=0 | 
| Draw a point (2D)  More... | |
| virtual void | drawPoint (const Point2i &p)=0 | 
| Draw a point (2D, integer coordinates)  More... | |
| virtual void | drawLine (const Point2 &a, const Point2 &b)=0 | 
| Draw a line between two specified points (2D)  More... | |
| virtual void | drawLine (const Point2i &a, const Point2i &b)=0 | 
| Draw a line between two specified points (2D, integer coordinates)  More... | |
| virtual void | drawRectangle (const Point2 &a, const Point2 &b)=0 | 
| Draw a rectangle between two specified points (2D)  More... | |
| virtual void | drawRectangle (const Point2i &a, const Point2i &b)=0 | 
| Draw a rectangle between two specified points (2D, integer coordinates)  More... | |
| virtual void | drawFilledRectangle (const Point2 &a, const Point2 &b)=0 | 
| Draw a filled rectangle between two specified points (2D)  More... | |
| virtual void | drawFilledRectangle (const Point2i &a, const Point2i &b)=0 | 
| Draw a filled rectangle between two specified points (2D, integer coordinates)  More... | |
| virtual void | drawEllipse (const Point ¢er, const Vector &axis1, const Vector &axis2)=0 | 
| Draw an ellipse with the specified center and axes.  More... | |
| virtual void | drawAABB (const AABB &aabb)=0 | 
| Draw a wire-frame axis-aligned box.  More... | |
| virtual void | setBlendMode (EBlendMode mode)=0 | 
| Set the currently active blending mode.  More... | |
| virtual void | setCullMode (ECullMode mode)=0 | 
| Set the currently active culling mode.  More... | |
| virtual void | setDepthTest (bool value)=0 | 
| Activate or deactivate depth testing.  More... | |
| virtual void | setDepthMask (bool value)=0 | 
| Activate or deactivate the writing of depth information.  More... | |
| virtual void | setColor (const Color3 &color, Float alpha=1.0f)=0 | 
| Set the current fixed-function pipeline color.  More... | |
| virtual void | setColor (const Spectrum &spec, Float alpha=1.0f)=0 | 
| Set the current fixed-function pipeline color.  More... | |
| virtual void | setClearDepth (Float depth)=0 | 
| Set the depth value that is written by clear()  More... | |
| virtual void | setClearColor (const Color3 &color)=0 | 
| Set the color value that is written by clear()  More... | |
| virtual void | clearTransforms ()=0 | 
| Clear the view and projection transformations.  More... | |
| virtual void | flush ()=0 | 
| Flush outstanding rendering commands.  More... | |
| virtual void | finish ()=0 | 
| Completely finish outstanding rendering commands.  More... | |
| virtual void | checkError (bool onlyWarn=true)=0 | 
| Check for any error indications.  More... | |
| Shader * | registerShaderForResource (const HWResource *res) | 
| Shader * | getShaderForResource (const HWResource *res) | 
| Look up a shader by the associated HWResource object.  More... | |
| void | unregisterShaderForResource (const HWResource *res) | 
| Decrease the reference count of a shader. Deletes it when zero is reached.  More... | |
| virtual GPUGeometry * | createGPUGeometry (const Shape *mesh)=0 | 
| Create a new GPU geometry object.  More... | |
| GPUGeometry * | registerGeometry (const Shape *shape) | 
| bool | unregisterGeometry (const Shape *shape) | 
| Unregister a triangle mesh from the renderer.  More... | |
| void | setLogLevel (ELogLevel logLevel) | 
| Set the log level.  More... | |
| void | setWarnLogLevel (ELogLevel logLevel) | 
| Set the log level for warnings.  More... | |
| virtual void | debugString (const std::string &text)=0 | 
| Send a debug string to the rendering backend.  More... | |
| virtual const Class * | getClass () const | 
| Retrieve this object's class.  More... | |
|  Public Member Functions inherited from Object | |
| Object () | |
| Construct a new object.  More... | |
| int | getRefCount () const | 
| Return the current reference count.  More... | |
| void | incRef () const | 
| Increase the reference count of the object by one.  More... | |
| void | decRef (bool autoDeallocate=true) const | 
| Decrease the reference count of the object and possibly deallocate it.  More... | |
| virtual std::string | toString () const | 
| Return a human-readable string representation of the object's contents.  More... | |
| Static Public Member Functions | |
| static Renderer * | create (Session *session) | 
|  Static Public Member Functions inherited from Object | |
| static void | staticInitialization () | 
| Initializes the built-in reference count debugger (if enabled)  More... | |
| static void | staticShutdown () | 
| Free the memory taken by staticInitialization()  More... | |
| Static Public Attributes | |
| static Class * | m_theClass | 
|  Static Public Attributes inherited from Object | |
| static Class * | m_theClass | 
| Pointer to the object's class descriptor.  More... | |
| Protected Member Functions | |
| Renderer (Session *session) | |
| Construct a new OpenI rendering interface.  More... | |
| virtual | ~Renderer () | 
| Virtual destructor.  More... | |
|  Protected Member Functions inherited from Object | |
| virtual | ~Object () | 
| Virtual private deconstructor. (Will only be called by ref)  More... | |
| Protected Attributes | |
| ref< Session > | m_session | 
| ref< Device > | m_device | 
| ref< RendererCapabilities > | m_capabilities | 
| std::map< const HWResource *, ShaderRecord > | m_shaders | 
| std::map< const Shape *, GPUGeometry * > | m_geometry | 
| bool | m_initialized | 
| bool | m_borrowed | 
| std::string | m_driverVendor | 
| std::string | m_driverRenderer | 
| std::string | m_driverVersion | 
| ELogLevel | m_logLevel | 
| ELogLevel | m_warnLogLevel | 
Abstract renderer implementation.
| typedef std::pair<const GPUGeometry *, Matrix4x4> mitsuba::Renderer::TransformedGPUGeometry | 
| Enumerator | |
|---|---|
| EBlendNone | Blending turned off. | 
| EBlendAlpha | Normal alpha blending. | 
| EBlendAdditive | Additive blending. | 
| 
 | protected | 
Construct a new OpenI rendering interface.
| 
 | protectedvirtual | 
Virtual destructor.
| 
 | pure virtual | 
Set up the renderer for drawing triangle geometry.
Implemented in mitsuba::GLRenderer.
| 
 | pure virtual | 
Blit a screen-sized quad.
Implemented in mitsuba::GLRenderer.
| 
 | pure virtual | 
Draw a quad using the given texture.
Implemented in mitsuba::GLRenderer.
| 
 | pure virtual | 
Check for any error indications.
Implemented in mitsuba::GLRenderer.
| 
 | pure virtual | 
Clear the viewport.
Implemented in mitsuba::GLRenderer.
| 
 | pure virtual | 
Clear the view and projection transformations.
Implemented in mitsuba::GLRenderer.
| 
 | pure virtual | 
Create a new GPU geometry object.
Implemented in mitsuba::GLRenderer.
| 
 | pure virtual | 
Create a new GPU program object.
Implemented in mitsuba::GLRenderer.
| 
 | pure virtual | 
Create a new synchronization object.
Implemented in mitsuba::GLRenderer.
| 
 | pure virtual | 
Create a new GPU texture object.
Implemented in mitsuba::GLRenderer.
| 
 | pure virtual | 
Send a debug string to the rendering backend.
This is mainly useful when an OpenGL trace is captured by a tool such as 'apitrace'.
Implemented in mitsuba::GLRenderer.
| 
 | pure virtual | 
Draw a wire-frame axis-aligned box.
Implemented in mitsuba::GLRenderer.
| 
 | pure virtual | 
Quickly draw all geometry that has been registered with the renderer.
Only transmits positions, hence this is mainly useful for shadow mapping.
Implemented in mitsuba::GLRenderer.
| 
 | pure virtual | 
Draw an ellipse with the specified center and axes.
Implemented in mitsuba::GLRenderer.
| 
 | pure virtual | 
Draw a filled rectangle between two specified points (2D)
Implemented in mitsuba::GLRenderer.
| 
 | pure virtual | 
Draw a filled rectangle between two specified points (2D, integer coordinates)
Implemented in mitsuba::GLRenderer.
Draw a line between two specified points.
Implemented in mitsuba::GLRenderer.
Draw a line between two specified points (2D)
Implemented in mitsuba::GLRenderer.
Draw a line between two specified points (2D, integer coordinates)
Implemented in mitsuba::GLRenderer.
| 
 | pure virtual | 
Send a triangle mesh to the renderer.
Implemented in mitsuba::GLRenderer.
| 
 | pure virtual | 
Send a triangle mesh to the renderer.
Implemented in mitsuba::GLRenderer.
| 
 | pure virtual | 
Draw a point.
Implemented in mitsuba::GLRenderer.
| 
 | pure virtual | 
Draw a point (2D)
Implemented in mitsuba::GLRenderer.
| 
 | pure virtual | 
Draw a point (2D, integer coordinates)
Implemented in mitsuba::GLRenderer.
Draw a rectangle between two specified points (2D)
Implemented in mitsuba::GLRenderer.
Draw a rectangle between two specified points (2D, integer coordinates)
Implemented in mitsuba::GLRenderer.
| 
 | pure virtual | 
Draw a line of text on the screen. The coordinates are specified in pixel coordinates, where the upper left corner is the origin
Implemented in mitsuba::GLRenderer.
| 
 | pure virtual | 
Clean up the renderer after drawing triangle geometry.
Implemented in mitsuba::GLRenderer.
| 
 | pure virtual | 
Completely finish outstanding rendering commands.
Implemented in mitsuba::GLRenderer.
| 
 | pure virtual | 
Flush outstanding rendering commands.
Implemented in mitsuba::GLRenderer.
| 
 | inline | 
Return the renderer's capabilities.
| 
 | virtual | 
Retrieve this object's class.
Reimplemented from Object.
Reimplemented in mitsuba::GLRenderer, mitsuba::NSGLRenderer, mitsuba::WGLRenderer, and mitsuba::GLXRenderer.
| 
 | pure virtual | 
Fetch the currently set modelview or projection matrix.
Implemented in mitsuba::GLRenderer.
| Shader* mitsuba::Renderer::getShaderForResource | ( | const HWResource * | res | ) | 
Look up a shader by the associated HWResource object.
Initialize the renderer. Optionally, an existing renderer instance can be provided as a second argument – this establishes a link between them to permit sharing of textures, programs, etc.
Reimplemented in mitsuba::GLRenderer, mitsuba::NSGLRenderer, mitsuba::WGLRenderer, and mitsuba::GLXRenderer.
| 
 | pure virtual | 
Reconfigure the renderer for a certain device (e.g. after a resize event)
Implemented in mitsuba::GLRenderer.
| GPUGeometry* mitsuba::Renderer::registerGeometry | ( | const Shape * | shape | ) | 
Register a triangle mesh with the renderer. This will transfer the associated geometry to the GPU, which accelerates later calls to drawMesh()
| Shader* mitsuba::Renderer::registerShaderForResource | ( | const HWResource * | res | ) | 
Register a shader with this renderer. Increases the reference count if it already exists
| 
 | pure virtual | 
Set the currently active blending mode.
Implemented in mitsuba::GLRenderer.
| 
 | pure virtual | 
Configure the camera.
Implemented in mitsuba::GLRenderer.
| 
 | pure virtual | 
Configure the camera (manual)
Implemented in mitsuba::GLRenderer.
| 
 | pure virtual | 
Set the color value that is written by clear()
Implemented in mitsuba::GLRenderer.
| 
 | pure virtual | 
Set the depth value that is written by clear()
Implemented in mitsuba::GLRenderer.
Set the current fixed-function pipeline color.
Implemented in mitsuba::GLRenderer.
Set the current fixed-function pipeline color.
Implemented in mitsuba::GLRenderer.
| 
 | pure virtual | 
Set the currently active culling mode.
Implemented in mitsuba::GLRenderer.
| 
 | pure virtual | 
Activate or deactivate the writing of depth information.
Implemented in mitsuba::GLRenderer.
| 
 | pure virtual | 
Activate or deactivate depth testing.
Implemented in mitsuba::GLRenderer.
| 
 | inline | 
Set the log level.
| 
 | pure virtual | 
Directly set the modelview or projection matrix.
Implemented in mitsuba::GLRenderer.
| 
 | pure virtual | 
Set the size of point primitives.
Implemented in mitsuba::GLRenderer.
| 
 | inline | 
Set the log level for warnings.
| 
 | virtual | 
Shut the renderer down.
Reimplemented in mitsuba::GLRenderer, mitsuba::NSGLRenderer, mitsuba::WGLRenderer, and mitsuba::GLXRenderer.
Unregister a triangle mesh from the renderer.
| void mitsuba::Renderer::unregisterShaderForResource | ( | const HWResource * | res | ) | 
Decrease the reference count of a shader. Deletes it when zero is reached.
| 
 | protected | 
| 
 | protected | 
| 
 | protected | 
| 
 | protected | 
| 
 | protected | 
| 
 | protected | 
| 
 | protected | 
| 
 | protected | 
| 
 | protected | 
| 
 | static | 
| 
 | protected |