Kanzi  3.9.9
Kanzi Engine C++ API
kanzi::Renderer3D Class Reference

Renderer is the core component for assigning lights, meshes, cameras, skin animations etc. to lower level rendering. More...

#include <kanzi/core.ui/platform/graphics_backend/gl/renderer3d.hpp>

Public Types

typedef void(* FramebufferCallback) (unsigned int framebufferHandle)
 Callback prototype for setActiveFramebuffer. More...
 
typedef MaterialSharedPtr(* OverrideMaterialCallback) (Node *node, MaterialSharedPtr material, size_t cluster, void *userData)
 Callback function for override materials. More...
 

Public Member Functions

void applyCameraMatrix (Matrix4x4 cameraProjectionMatrix, Matrix4x4 cameraViewMatrix, float near, float far) const
 Applies camera matrices to renderer so that they can be applied as uniforms to shaders. More...
 
bool applyColorMaterial (const Node *node, Material &material, ColorRGBA color)
 Applies the given material with the given emissive color. More...
 
void applyFixedUniforms (const Material &material, RenderPass *renderPass, Node *node)
 Apply fixed uniforms related to lights. More...
 
void applyFixedUniforms (const Material &material)
 Apply fixed uniforms related to lights. More...
 
bool applyMaterial (const Node *node, const Material &material)
 Applies material to renderer, attaches the shader and uniforms. More...
 
bool applyMaterialStrict (const Node *node, const Material &material)
 Applies material to renderer, attaches the shader and uniforms. Does not allow material which shader has samplers without corresponding texture properties. More...
 
void applyStencilSettings (bool stencilTestEnabled, unsigned int stencilRef, unsigned int stencilMask, GraphicsCompareFunction stencilFunction, GraphicsStencilOperation stencilOperationStencilFail, GraphicsStencilOperation stencilOperationStencilPassDepthFail, GraphicsStencilOperation stencilOperationStencilPassDepthPass) const
 Applies stencil settings with overrides for rendering. More...
 
void beginFrame ()
 Resets user renderer for frame, that is, clear property stack and core renderer per-frame variables. More...
 
void disableSubRectangleProjection ()
 Disable sub-rectangle of projection. More...
 
void drawBoxSolidNormal (const Box &box, Matrix4x4 worldTransformation, const Material &material)
 Draws a solid box. More...
 
void drawBoxSolidNormal (Vector3 backBottomLeft, Vector3 frontTopRight, Material &material, ColorRGBA color, Matrix4x4 worldTransform)
 Draws a solid box given by two opposite corner points. More...
 
void drawCamera (const Camera *cameraNode, Material &material, Matrix4x4 worldTransformation)
 Draws a wire frame camera symbol. More...
 
void drawLayerOutlineQuad (float width, float height, Material &material, float textureHeight, float textureOffset, ColorRGBA color, Matrix4x4 worldTransformation)
 
void drawLayerQuad (Vector2 renderOffset, Vector2 renderSize, Vector2 contentOffset, Vector2 contentSize, float depth, Matrix3x3 renderTransform, const Material &material)
 Render a layer quad. More...
 
void drawLayerQuadWithMaterial (const Material &material, Vector2 renderOffset, Vector2 renderSize, Vector2 contentOffset, Vector2 contentSize, float depth, Matrix3x3 renderTransform)
 Render a layer quad. More...
 
void drawLineList (const float *lineList, unsigned int lineCount, Matrix4x4 worldTransformation, const Material &material) const
 Draws a line list with current settings. Handles only position data. More...
 
void drawOrientedBoundingBoxSolidNormal (const OrientedBoundingBox &orientedBoundingBox, const Material &material)
 Draws a solid oriented bounding box. More...
 
void drawPrimitiveBufferTextured (const float *coordinateBuffer, const float *texCoordBuffer, Matrix4x4 worldTransform, GraphicsPrimitiveType type, unsigned int count, const Material &material) const
 Draw primitive buffer. More...
 
void drawPrimitiveBufferUntextured (const float *coordinateBuffer, Matrix4x4 worldTransform, GraphicsPrimitiveType type, unsigned int count, const Material &material) const
 Draw primitive buffer. More...
 
void drawPrimitives (const float *vertexList, unsigned int vertexCount, GraphicsPrimitiveType type, Matrix4x4 worldTransformation, const Material &material) const
 Draws primitives of the given type. More...
 
void drawPrimitivesNormal (const float *vertexList, const float *normalList, unsigned int vertexCount, GraphicsPrimitiveType type, Matrix4x4 worldTransformation, const Material &material)
 Draws primitives of the given type. More...
 
void drawQuad (Vector3 p1, Vector3 p2, Vector3 p3, Vector3 p4, Vector2 textureSpan, Material &material, optional< ColorRGBA > color, Matrix4x4 worldTransformation)
 Draws a quad. More...
 
void drawSelectionIndicator (const Box &boundingBox, Matrix4x4 worldTransformation, Material &material, ColorRGBA color)
 Draws a selection indicator. More...
 
void drawTrajectory (Trajectory *trajectory, Material &material, Matrix4x4 worldTransformation, Matrix4x4 arrangeTransform, Vector3 scaling)
 Draws a trajectory with wire frame lines. More...
 
void drawUntexturedLayerQuad (Vector2 renderOffset, Vector2 renderSize, const Material &material, Matrix4x4 worldTransformation)
 As rendering a layer quad, but omit everything concerning texture coordinates. More...
 
void drawViewportQuadWithTextureSpan (Vector2 offset, Vector2 limits, Material &material, TextureSharedPtr texture)
 Draws viewport quad, fills with given pattern. More...
 
void drawViewportQuadWithTextureSpan (Vector2 offset, Vector2 limits, Material &material, TextureSharedPtr texture, ColorRGBA color)
 Draws viewport quad, fills with given pattern. More...
 
void drawViewportQuadWithTextureSpan (Vector2 offset, Vector2 limits, Material &material, Vector2 textureSpan, ColorRGBA color)
 Draws viewport quad, fills with given pattern. More...
 
void endFrame ()
 Ends a frame. More...
 
GLGraphicsOutputgetActiveGLGraphicsOutput () const
 Gets active GL graphics output from renderer. More...
 
GraphicsOutputgetActiveGraphicsOutput () const
 Gets active graphics output from renderer. More...
 
optional< ColorRGBAgetClearColorOverride () const
 Gets clear color override from renderer. Returns true if override enabled. More...
 
CompositionStackgetCompositionStack ()
 Returns the render context stack. More...
 
RenderergetCoreRenderer () const
 Returns core renderer from user renderer. More...
 
span< float > getFloatBuffer ()
 Returns temporary float buffer from renderer. More...
 
unsigned int getFrameCount () const
 Gets number of frames rendered by renderer. More...
 
float getInheritedAspectRatioMultiplier () const
 Get the multiplier to inherited aspect ratio. More...
 
MaterialSharedPtr getOverrideClusterMaterial (Node *node, MaterialSharedPtr clusterMaterial, size_t clusterIndex) const
 Gets overriding material for given transformed object node and cluster material. More...
 
OverrideMaterialCallback getOverrideMaterialCallback () const
 Gets override material callback from renderer, 0 if not enabled. More...
 
void * getOverrideMaterialCallbackUserData () const
 Gets override material callback user data from renderer. More...
 
ResourceManagergetResourceManager () const
 Gets renderer resource manager. More...
 
bool isBoundingBoxVisualizationEnabled () const
 Returns if bounding box visualization is enabled. More...
 
bool isColorWriteDisabled () const
 Returns if color write is disabled. More...
 
bool isSkeletonVisualizationEnabled () const
 Returns if skeleton visualization is enabled. More...
 
void printInfo () const
 Ends frame for renderer. More...
 
void removeClearColorOverride ()
 Removes clear color override. More...
 
 Renderer3D (ResourceManager *resourceManager, Renderer *renderer)
 
void reset ()
 Resets renderer, that is, puts it to initial state. More...
 
void setActiveGLGraphicsOutput (GLGraphicsOutput *glGraphicsOutput)
 Sets active GL graphics output for renderer. More...
 
void setBoundingBoxVisualizationEnabled (bool enabled)
 Sets bounding box visualization enabled / disabled. More...
 
void setClearColorOverride (ColorRGBA colorRGBA)
 Sets clear color override for rendering. More...
 
void setDefaultOrthoProjection () const
 Sets default orthogonal projection and viewport for renderer. More...
 
void setDisableColorWrite (bool setDisabled)
 Sets color write disabled, overrides render pass settings. More...
 
void setFramebufferCallback (FramebufferCallback callbackFunction)
 Sets callback function for setActiveFrameBuffer. Called each time engine changes framebuffer. More...
 
void setLogging (bool logging)
 Enables or disables debug log writing. More...
 
void setOverrideMaterial (MaterialSharedPtr material)
 Sets current override material, which is used instead of all default materials. Setting material to 0 disables overrides. More...
 
void setOverrideMaterialCallback (OverrideMaterialCallback callbackFunction, void *userData)
 Set override material callback. Pass 0 to disable. More...
 
void setSkeletonVisualizationEnabled (bool enabled)
 Sets skeleton visualization enabled / disabled. More...
 
void setSubRectangleProjection (RectangleFloat subRectangle)
 Turn on sub-rectangle of what would be the normal projection with given relative parameters. More...
 
 ~Renderer3D ()=default
 

Static Public Member Functions

static void addVertexAndNormalToFloatArrays (Vector3 vertex, Vector3 normal, float *&vertexArray, float *&normalArray)
 Adds a vertex and a normal to their destination arrays. More...
 
static void addVertexToFloatArray (Vector3 vertex, float *&destinationArray)
 Adds a vertex to the destination array from the given vertex pointer. More...
 
static Vector3 calculateNormal (Vector3 rightPoint, Vector3 middlePoint, Vector3 upPoint)
 Calculates normal for plane defined by three points. More...
 

Detailed Description

Renderer is the core component for assigning lights, meshes, cameras, skin animations etc. to lower level rendering.

Member Typedef Documentation

typedef MaterialSharedPtr(* kanzi::Renderer3D::OverrideMaterialCallback) (Node *node, MaterialSharedPtr material, size_t cluster, void *userData)

Callback function for override materials.

typedef void(* kanzi::Renderer3D::FramebufferCallback) (unsigned int framebufferHandle)

Callback prototype for setActiveFramebuffer.

Constructor & Destructor Documentation

kanzi::Renderer3D::Renderer3D ( ResourceManager resourceManager,
Renderer renderer 
)
explicit
kanzi::Renderer3D::~Renderer3D ( )
default

Member Function Documentation

void kanzi::Renderer3D::setLogging ( bool  logging)

Enables or disables debug log writing.

void kanzi::Renderer3D::reset ( )

Resets renderer, that is, puts it to initial state.

void kanzi::Renderer3D::beginFrame ( )

Resets user renderer for frame, that is, clear property stack and core renderer per-frame variables.

void kanzi::Renderer3D::endFrame ( )

Ends a frame.

unsigned int kanzi::Renderer3D::getFrameCount ( ) const

Gets number of frames rendered by renderer.

void kanzi::Renderer3D::printInfo ( ) const

Ends frame for renderer.

ResourceManager* kanzi::Renderer3D::getResourceManager ( ) const

Gets renderer resource manager.

Returns
Resource manager used by the renderer.
void kanzi::Renderer3D::applyFixedUniforms ( const Material material,
RenderPass renderPass,
Node node 
)

Apply fixed uniforms related to lights.

Called by applyMaterial(). Should be called by user if applying a material manually. If render pass and node are specified, this function will also execute fixed uniform functions and apply transforms.

Parameters
materialMaterial to which to apply the fixed uniforms.
renderPassCurrent render pass of the local context.
nodeCurrent node of the local context.
void kanzi::Renderer3D::applyFixedUniforms ( const Material material)
inline

Apply fixed uniforms related to lights.

Called by applyMaterial(). Should be called by user if applying a material manually. Render pass or node are not provided, so neither fixed functions for uniforms or transforms are handled.

Parameters
materialMaterial to which to apply the fixed uniforms.
bool kanzi::Renderer3D::applyMaterial ( const Node node,
const Material material 
)

Applies material to renderer, attaches the shader and uniforms.

bool kanzi::Renderer3D::applyMaterialStrict ( const Node node,
const Material material 
)

Applies material to renderer, attaches the shader and uniforms. Does not allow material which shader has samplers without corresponding texture properties.

void kanzi::Renderer3D::applyCameraMatrix ( Matrix4x4  cameraProjectionMatrix,
Matrix4x4  cameraViewMatrix,
float  near,
float  far 
) const

Applies camera matrices to renderer so that they can be applied as uniforms to shaders.

Parameters
cameraProjectionMatrixCamera projection matrix.
cameraViewMatrixCamera view matrix - already inverted from camera transform.
nearDistance to near plane.
farDistance to far plane.
void kanzi::Renderer3D::setClearColorOverride ( ColorRGBA  colorRGBA)

Sets clear color override for rendering.

void kanzi::Renderer3D::removeClearColorOverride ( )

Removes clear color override.

optional<ColorRGBA> kanzi::Renderer3D::getClearColorOverride ( ) const

Gets clear color override from renderer. Returns true if override enabled.

void kanzi::Renderer3D::setDisableColorWrite ( bool  setDisabled)

Sets color write disabled, overrides render pass settings.

bool kanzi::Renderer3D::isColorWriteDisabled ( ) const

Returns if color write is disabled.

void kanzi::Renderer3D::setOverrideMaterial ( MaterialSharedPtr  material)

Sets current override material, which is used instead of all default materials. Setting material to 0 disables overrides.

MaterialSharedPtr kanzi::Renderer3D::getOverrideClusterMaterial ( Node node,
MaterialSharedPtr  clusterMaterial,
size_t  clusterIndex 
) const

Gets overriding material for given transformed object node and cluster material.

Parameters
nodeNode to get overriding material for.
clusterMaterialCluster material that would be used.
clusterIndexCluster index.
Returns
Overriding material. May be empty if not overridden.
void kanzi::Renderer3D::setActiveGLGraphicsOutput ( GLGraphicsOutput glGraphicsOutput)

Sets active GL graphics output for renderer.

Also sets active graphics output.

GLGraphicsOutput* kanzi::Renderer3D::getActiveGLGraphicsOutput ( ) const

Gets active GL graphics output from renderer.

GraphicsOutput* kanzi::Renderer3D::getActiveGraphicsOutput ( ) const

Gets active graphics output from renderer.

void kanzi::Renderer3D::setSubRectangleProjection ( RectangleFloat  subRectangle)

Turn on sub-rectangle of what would be the normal projection with given relative parameters.

void kanzi::Renderer3D::disableSubRectangleProjection ( )

Disable sub-rectangle of projection.

float kanzi::Renderer3D::getInheritedAspectRatioMultiplier ( ) const

Get the multiplier to inherited aspect ratio.

Renderer* kanzi::Renderer3D::getCoreRenderer ( ) const

Returns core renderer from user renderer.

void kanzi::Renderer3D::setBoundingBoxVisualizationEnabled ( bool  enabled)

Sets bounding box visualization enabled / disabled.

bool kanzi::Renderer3D::isBoundingBoxVisualizationEnabled ( ) const

Returns if bounding box visualization is enabled.

void kanzi::Renderer3D::setSkeletonVisualizationEnabled ( bool  enabled)

Sets skeleton visualization enabled / disabled.

bool kanzi::Renderer3D::isSkeletonVisualizationEnabled ( ) const

Returns if skeleton visualization is enabled.

span<float> kanzi::Renderer3D::getFloatBuffer ( )

Returns temporary float buffer from renderer.

void kanzi::Renderer3D::setOverrideMaterialCallback ( OverrideMaterialCallback  callbackFunction,
void *  userData 
)

Set override material callback. Pass 0 to disable.

OverrideMaterialCallback kanzi::Renderer3D::getOverrideMaterialCallback ( ) const

Gets override material callback from renderer, 0 if not enabled.

void* kanzi::Renderer3D::getOverrideMaterialCallbackUserData ( ) const

Gets override material callback user data from renderer.

void kanzi::Renderer3D::setFramebufferCallback ( FramebufferCallback  callbackFunction)

Sets callback function for setActiveFrameBuffer. Called each time engine changes framebuffer.

CompositionStack& kanzi::Renderer3D::getCompositionStack ( )

Returns the render context stack.

Returns
Render context stack from renderer.
void kanzi::Renderer3D::drawLayerOutlineQuad ( float  width,
float  height,
Material material,
float  textureHeight,
float  textureOffset,
ColorRGBA  color,
Matrix4x4  worldTransformation 
)
void kanzi::Renderer3D::drawBoxSolidNormal ( const Box box,
Matrix4x4  worldTransformation,
const Material material 
)

Draws a solid box.

This function draws the box with a triangle strip and with vertices that have normals.

Parameters
boxThe box.
worldTransformationThe transformation of the box.
materialThe material to use to render the box.
void kanzi::Renderer3D::drawOrientedBoundingBoxSolidNormal ( const OrientedBoundingBox orientedBoundingBox,
const Material material 
)

Draws a solid oriented bounding box.

This function draws the box with a triangle strip and with vertices that have normals.

Parameters
orientedBoundingBoxThe oriented bounding box.
materialThe material to use to render the box.
void kanzi::Renderer3D::drawSelectionIndicator ( const Box boundingBox,
Matrix4x4  worldTransformation,
Material material,
ColorRGBA  color 
)

Draws a selection indicator.

The selection indicator is a partial wireframe around an object. Kanzi shows the selection indicator as three short lines at each corner of the bounding box.

Parameters
boundingBoxThe bounding box of the selection.
worldTransformationThe transformation of the selection.
materialThe material to use to render the selection indicator.
colorThe color that this function passes to the material.
void kanzi::Renderer3D::drawPrimitives ( const float *  vertexList,
unsigned int  vertexCount,
GraphicsPrimitiveType  type,
Matrix4x4  worldTransformation,
const Material material 
) const

Draws primitives of the given type.

Takes vertex position data as a parameter.

void kanzi::Renderer3D::drawPrimitivesNormal ( const float *  vertexList,
const float *  normalList,
unsigned int  vertexCount,
GraphicsPrimitiveType  type,
Matrix4x4  worldTransformation,
const Material material 
)

Draws primitives of the given type.

Takes vertex position and normal data as parameters.

void kanzi::Renderer3D::drawLineList ( const float *  lineList,
unsigned int  lineCount,
Matrix4x4  worldTransformation,
const Material material 
) const

Draws a line list with current settings. Handles only position data.

void kanzi::Renderer3D::drawPrimitiveBufferUntextured ( const float *  coordinateBuffer,
Matrix4x4  worldTransform,
GraphicsPrimitiveType  type,
unsigned int  count,
const Material material 
) const

Draw primitive buffer.

Parameters
coordinateBufferCoordinate buffer to bind.
worldTransformWorld transformation.
typePrimitive type to render.
countNumber of vertices to send.
materialMaterial that Kanzi uses to render primitive buffer.
void kanzi::Renderer3D::drawPrimitiveBufferTextured ( const float *  coordinateBuffer,
const float *  texCoordBuffer,
Matrix4x4  worldTransform,
GraphicsPrimitiveType  type,
unsigned int  count,
const Material material 
) const

Draw primitive buffer.

Parameters
coordinateBufferCoordinate buffer to bind.
texCoordBufferTexture coordinate buffer to bind.
worldTransformWorld transformation.
typePrimitive type to render.
countNumber of vertices to send.
materialMaterial that Kanzi uses to render primitive buffer.
void kanzi::Renderer3D::drawQuad ( Vector3  p1,
Vector3  p2,
Vector3  p3,
Vector3  p4,
Vector2  textureSpan,
Material material,
optional< ColorRGBA color,
Matrix4x4  worldTransformation 
)

Draws a quad.

void kanzi::Renderer3D::drawLayerQuad ( Vector2  renderOffset,
Vector2  renderSize,
Vector2  contentOffset,
Vector2  contentSize,
float  depth,
Matrix3x3  renderTransform,
const Material material 
)

Render a layer quad.

Material used for rendering the quad must be applied prior to this call, one way or another.

Parameters
renderOffsetQuad start offset.
renderSizeQuad start size.
contentOffsetTexture coordinate start offset.
contentSizeTexture coordinate size.
depthRender depth.
renderTransformRender transformation.
materialMaterial that Kanzi uses to render the layer quad.
void kanzi::Renderer3D::drawLayerQuadWithMaterial ( const Material material,
Vector2  renderOffset,
Vector2  renderSize,
Vector2  contentOffset,
Vector2  contentSize,
float  depth,
Matrix3x3  renderTransform 
)

Render a layer quad.

Parameters
materialMaterial to be applied before rendering the quad.
renderOffsetQuad start offset.
renderSizeQuad start size.
contentOffsetTexture coordinate start offset.
contentSizeTexture coordinate size.
depthRender depth.
renderTransformRender transformation.
void kanzi::Renderer3D::drawUntexturedLayerQuad ( Vector2  renderOffset,
Vector2  renderSize,
const Material material,
Matrix4x4  worldTransformation 
)

As rendering a layer quad, but omit everything concerning texture coordinates.

void kanzi::Renderer3D::drawViewportQuadWithTextureSpan ( Vector2  offset,
Vector2  limits,
Material material,
TextureSharedPtr  texture 
)

Draws viewport quad, fills with given pattern.

Whole texture is used.

Parameters
offsetPosition of quad.
limitsSize of quad.
materialMaterial to use.
textureTexture to use.
void kanzi::Renderer3D::drawViewportQuadWithTextureSpan ( Vector2  offset,
Vector2  limits,
Material material,
TextureSharedPtr  texture,
ColorRGBA  color 
)

Draws viewport quad, fills with given pattern.

Whole texture is used, specified color is passed to material.

Parameters
offsetPosition of quad.
limitsSize of quad.
materialMaterial to use.
textureTexture to use.
colorColor that is passed to the material.
void kanzi::Renderer3D::drawViewportQuadWithTextureSpan ( Vector2  offset,
Vector2  limits,
Material material,
Vector2  textureSpan,
ColorRGBA  color 
)

Draws viewport quad, fills with given pattern.

Provided texture coordinates are used, specified color is passed to material.

Parameters
offsetPosition of quad.
limitsSize of quad.
materialMaterial to use.
textureSpanArea of texture to use.
colorColor that is passed to the material.
void kanzi::Renderer3D::applyStencilSettings ( bool  stencilTestEnabled,
unsigned int  stencilRef,
unsigned int  stencilMask,
GraphicsCompareFunction  stencilFunction,
GraphicsStencilOperation  stencilOperationStencilFail,
GraphicsStencilOperation  stencilOperationStencilPassDepthFail,
GraphicsStencilOperation  stencilOperationStencilPassDepthPass 
) const

Applies stencil settings with overrides for rendering.

void kanzi::Renderer3D::setDefaultOrthoProjection ( ) const

Sets default orthogonal projection and viewport for renderer.

bool kanzi::Renderer3D::applyColorMaterial ( const Node node,
Material material,
ColorRGBA  color 
)

Applies the given material with the given emissive color.

void kanzi::Renderer3D::drawCamera ( const Camera cameraNode,
Material material,
Matrix4x4  worldTransformation 
)

Draws a wire frame camera symbol.

void kanzi::Renderer3D::drawTrajectory ( Trajectory trajectory,
Material material,
Matrix4x4  worldTransformation,
Matrix4x4  arrangeTransform,
Vector3  scaling 
)

Draws a trajectory with wire frame lines.

void kanzi::Renderer3D::drawBoxSolidNormal ( Vector3  backBottomLeft,
Vector3  frontTopRight,
Material material,
ColorRGBA  color,
Matrix4x4  worldTransform 
)

Draws a solid box given by two opposite corner points.

The corner points are assumed axis-aligned and are transformed with the given transform before drawing. Uses the current rendering settings.

static Vector3 kanzi::Renderer3D::calculateNormal ( Vector3  rightPoint,
Vector3  middlePoint,
Vector3  upPoint 
)
inlinestatic

Calculates normal for plane defined by three points.

static void kanzi::Renderer3D::addVertexToFloatArray ( Vector3  vertex,
float *&  destinationArray 
)
inlinestatic

Adds a vertex to the destination array from the given vertex pointer.

static void kanzi::Renderer3D::addVertexAndNormalToFloatArrays ( Vector3  vertex,
Vector3  normal,
float *&  vertexArray,
float *&  normalArray 
)
inlinestatic

Adds a vertex and a normal to their destination arrays.


The documentation for this class was generated from the following file: