candlewick 0.1.0
A renderer
Loading...
Searching...
No Matches
candlewick::multibody::RobotScene Class Referencefinal

A render system for Pinocchio robot geometries using Pinocchio. More...

#include <candlewick/multibody/RobotScene.h>

Classes

struct  Config
 
struct  GBuffer
 
struct  PipelineConfig
 
struct  Pipelines
 

Public Types

enum  PipelineType { PIPELINE_TRIANGLEMESH , PIPELINE_HEIGHTFIELD , PIPELINE_POINTCLOUD }
 
enum  VertexUniformSlots : Uint32 { TRANSFORM = 0 }
 
enum  FragmentUniformSlots : Uint32 { MATERIAL = 0 , LIGHTING = 1 }
 
template<PipelineType t>
using pipeline_tag = entt::tag<t>
 

Public Member Functions

 RobotScene (entt::registry &registry, const Renderer &renderer)
 Non-initializing constructor.
 
 RobotScene (entt::registry &registry, const Renderer &renderer, const pin::GeometryModel &geom_model, const pin::GeometryData &geom_data, Config config)
 Constructor which initializes the system.
 
 RobotScene (const RobotScene &)=delete
 
void setConfig (const Config &config)
 
void loadModels (const pin::GeometryModel &geom_model, const pin::GeometryData &geom_data)
 Set the internal geometry model and data pointers, and load the corresponding models.
 
void updateTransforms ()
 Update the transform component of the GeometryObject entities.
 
void collectOpaqueCastables ()
 
const std::vector< OpaqueCastable > & castables () const
 
entt::entity addEnvironmentObject (MeshData &&data, Mat4f placement, PipelineType pipe_type=PIPELINE_TRIANGLEMESH)
 
entt::entity addEnvironmentObject (MeshData &&data, const Eigen::Affine3f &T, PipelineType pipe_type=PIPELINE_TRIANGLEMESH)
 
void clearEnvironment ()
 Destroy all entities with the EnvironmentTag component.
 
void clearRobotGeometries ()
 Destroy all entities with the PinGeomObjComponent component (Pinocchio geometry objects).
 
void createPipeline (const MeshLayout &layout, SDL_GPUTextureFormat render_target_format, SDL_GPUTextureFormat depth_stencil_format, PipelineType type, bool transparent)
 
void render (CommandBuffer &command_buffer, const Camera &camera)
 
void renderOpaque (CommandBuffer &command_buffer, const Camera &camera)
 
void renderTransparent (CommandBuffer &command_buffer, const Camera &camera)
 
void release ()
 Release all resources.
 
Configconfig ()
 
const Configconfig () const
 
bool pbrHasPrepass () const
 
bool shadowsEnabled () const
 
const pin::GeometryModel & geomModel () const
 Getter for the pinocchio GeometryModel object.
 
const pin::GeometryData & geomData () const
 Getter for the pinocchio GeometryData object.
 
const entt::registry & registry () const
 
const Devicedevice ()
 
SDL_GPUGraphicsPipeline * getPipeline (PipelineType type, bool transparent=false)
 

Static Public Member Functions

static PipelineType pinGeomToPipeline (const coal::CollisionGeometry &geom)
 Map hpp-fcl/coal collision geometry to desired pipeline type.
 
static constexpr SDL_GPUPrimitiveType getPrimitiveTopologyForType (PipelineType type)
 Map pipeline type to geometry primitive.
 

Public Attributes

struct candlewick::multibody::RobotScene::Pipelines pipelines
 
DirectionalLight directionalLight
 
ssao::SsaoPass ssaoPass {NoInit}
 
struct candlewick::multibody::RobotScene::GBuffer gBuffer
 
ShadowMapPass shadowPass {NoInit}
 
AABB worldSpaceBounds
 

Static Public Attributes

static constexpr size_t kNumPipelineTypes
 

Detailed Description

A render system for Pinocchio robot geometries using Pinocchio.

This internally stores references to pinocchio::GeometryModel and pinocchio::GeometryData objects.

Member Typedef Documentation

◆ pipeline_tag

Member Enumeration Documentation

◆ FragmentUniformSlots

Enumerator
MATERIAL 
LIGHTING 

◆ PipelineType

Enumerator
PIPELINE_TRIANGLEMESH 
PIPELINE_HEIGHTFIELD 
PIPELINE_POINTCLOUD 

◆ VertexUniformSlots

Enumerator
TRANSFORM 

Constructor & Destructor Documentation

◆ RobotScene() [1/3]

candlewick::multibody::RobotScene::RobotScene ( entt::registry & registry,
const Renderer & renderer )

Non-initializing constructor.

◆ RobotScene() [2/3]

candlewick::multibody::RobotScene::RobotScene ( entt::registry & registry,
const Renderer & renderer,
const pin::GeometryModel & geom_model,
const pin::GeometryData & geom_data,
Config config )

Constructor which initializes the system.

loadModels() will be called.

◆ RobotScene() [3/3]

candlewick::multibody::RobotScene::RobotScene ( const RobotScene & )
delete

Member Function Documentation

◆ addEnvironmentObject() [1/2]

entt::entity candlewick::multibody::RobotScene::addEnvironmentObject ( MeshData && data,
const Eigen::Affine3f & T,
PipelineType pipe_type = PIPELINE_TRIANGLEMESH )
inline

◆ addEnvironmentObject() [2/2]

entt::entity candlewick::multibody::RobotScene::addEnvironmentObject ( MeshData && data,
Mat4f placement,
PipelineType pipe_type = PIPELINE_TRIANGLEMESH )

◆ castables()

const std::vector< OpaqueCastable > & candlewick::multibody::RobotScene::castables ( ) const
inline

◆ clearEnvironment()

void candlewick::multibody::RobotScene::clearEnvironment ( )

Destroy all entities with the EnvironmentTag component.

◆ clearRobotGeometries()

void candlewick::multibody::RobotScene::clearRobotGeometries ( )

Destroy all entities with the PinGeomObjComponent component (Pinocchio geometry objects).

◆ collectOpaqueCastables()

void candlewick::multibody::RobotScene::collectOpaqueCastables ( )

◆ config() [1/2]

Config & candlewick::multibody::RobotScene::config ( )
inline

◆ config() [2/2]

const Config & candlewick::multibody::RobotScene::config ( ) const
inline

◆ createPipeline()

void candlewick::multibody::RobotScene::createPipeline ( const MeshLayout & layout,
SDL_GPUTextureFormat render_target_format,
SDL_GPUTextureFormat depth_stencil_format,
PipelineType type,
bool transparent )

◆ device()

const Device & candlewick::multibody::RobotScene::device ( )
inline

◆ geomData()

const pin::GeometryData & candlewick::multibody::RobotScene::geomData ( ) const
inline

Getter for the pinocchio GeometryData object.

◆ geomModel()

const pin::GeometryModel & candlewick::multibody::RobotScene::geomModel ( ) const
inline

Getter for the pinocchio GeometryModel object.

◆ getPipeline()

SDL_GPUGraphicsPipeline * candlewick::multibody::RobotScene::getPipeline ( PipelineType type,
bool transparent = false )
inline

◆ getPrimitiveTopologyForType()

static constexpr SDL_GPUPrimitiveType candlewick::multibody::RobotScene::getPrimitiveTopologyForType ( PipelineType type)
inlinestaticconstexpr

Map pipeline type to geometry primitive.

◆ loadModels()

void candlewick::multibody::RobotScene::loadModels ( const pin::GeometryModel & geom_model,
const pin::GeometryData & geom_data )

Set the internal geometry model and data pointers, and load the corresponding models.

◆ pbrHasPrepass()

bool candlewick::multibody::RobotScene::pbrHasPrepass ( ) const
inline

◆ pinGeomToPipeline()

static PipelineType candlewick::multibody::RobotScene::pinGeomToPipeline ( const coal::CollisionGeometry & geom)
static

Map hpp-fcl/coal collision geometry to desired pipeline type.

◆ registry()

const entt::registry & candlewick::multibody::RobotScene::registry ( ) const
inline

◆ release()

void candlewick::multibody::RobotScene::release ( )

Release all resources.

◆ render()

void candlewick::multibody::RobotScene::render ( CommandBuffer & command_buffer,
const Camera & camera )
Warning
Call updateTransforms() before rendering the objects with this function.

◆ renderOpaque()

void candlewick::multibody::RobotScene::renderOpaque ( CommandBuffer & command_buffer,
const Camera & camera )

◆ renderTransparent()

void candlewick::multibody::RobotScene::renderTransparent ( CommandBuffer & command_buffer,
const Camera & camera )

◆ setConfig()

void candlewick::multibody::RobotScene::setConfig ( const Config & config)
inline

◆ shadowsEnabled()

bool candlewick::multibody::RobotScene::shadowsEnabled ( ) const
inline

◆ updateTransforms()

void candlewick::multibody::RobotScene::updateTransforms ( )

Update the transform component of the GeometryObject entities.

Member Data Documentation

◆ directionalLight

DirectionalLight candlewick::multibody::RobotScene::directionalLight

◆ gBuffer

struct candlewick::multibody::RobotScene::GBuffer candlewick::multibody::RobotScene::gBuffer

◆ kNumPipelineTypes

size_t candlewick::multibody::RobotScene::kNumPipelineTypes
staticconstexpr
Initial value:
=
magic_enum::enum_count<PipelineType>()

◆ pipelines

struct candlewick::multibody::RobotScene::Pipelines candlewick::multibody::RobotScene::pipelines

◆ shadowPass

ShadowMapPass candlewick::multibody::RobotScene::shadowPass {NoInit}

◆ ssaoPass

ssao::SsaoPass candlewick::multibody::RobotScene::ssaoPass {NoInit}

◆ worldSpaceBounds

AABB candlewick::multibody::RobotScene::worldSpaceBounds

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