Description
Class to hold all the Shader Binding Table parameters adnd manage the ray tracing pipeline, materials, ray gen programs.
#include <ChOptixPipeline.h>
Public Member Functions | |
ChOptixPipeline (OptixDeviceContext context, unsigned int trace_depth, bool debug) | |
Class constructor. More... | |
~ChOptixPipeline () | |
Class destructor. Cleans up all data associated with the pipeline. | |
void | SpawnPipeline (PipelineType type) |
Create a new pipeline for a specific type of sensor. More... | |
unsigned int | GetBoxMaterial (std::vector< std::shared_ptr< ChVisualMaterial >> mat_list={}) |
Creates a new box material. More... | |
unsigned int | GetSphereMaterial (std::vector< std::shared_ptr< ChVisualMaterial >> mat_list={}) |
Creates a new sphere material. More... | |
unsigned int | GetCylinderMaterial (std::vector< std::shared_ptr< ChVisualMaterial >> mat_list={}) |
Creates a new cylinder material. More... | |
unsigned int | GetRigidMeshMaterial (CUdeviceptr &d_vertices, CUdeviceptr &d_indices, std::shared_ptr< ChTriangleMeshShape > sphere_shape, std::vector< std::shared_ptr< ChVisualMaterial >> mat_list) |
Creates a new rigid material/mesh in optix. More... | |
unsigned int | GetDeformableMeshMaterial (CUdeviceptr &d_vertices, CUdeviceptr &d_indices, std::shared_ptr< ChTriangleMeshShape > sphere_shape, std::vector< std::shared_ptr< ChVisualMaterial >> mat_list) |
Creates a new deformable material/mesh in optix. More... | |
void | UpdateDeformableMeshes () |
Function to update all the deformable meshes in the optix scene based on their chrono meshes. | |
void | UpdateAllSBTs () |
Function to update all the shader binding tables associated with this optix scene. | |
void | UpdateAllPipelines () |
Function to update all the pipeline associated with this optix scene. | |
void | UpdateObjectVelocity () |
Function to update all object velocities. More... | |
CUdeviceptr | GetMeshPool () |
Function to access the mesh pool on the device. More... | |
CUdeviceptr | GetMaterialPool () |
Function to access the material pool on the device. More... | |
void | AddBody (std::shared_ptr< ChBody > body) |
Add a new body to the optix scene based on a chrono body. More... | |
OptixPipeline & | GetPipeline (unsigned int id) |
OptixPipeline accessor function. More... | |
std::shared_ptr< OptixShaderBindingTable > | GetSBT (unsigned int id) |
SBT accessor. More... | |
std::shared_ptr< Record< RaygenParameters > > | GetRayGenRecord (unsigned int id) |
Raygen record accessor. More... | |
void | Cleanup () |
Explicit cleanup function for freeing memory associated with this pipeline which should be freed before reconstructing the pipeline. More... | |
void | CleanMaterials () |
Explicit material cleanup function for freeing all memory associate with materials in the optix scene. | |
void | UpdateBackground (Background b) |
Updates the background of the scene. More... | |
Constructor & Destructor Documentation
◆ ChOptixPipeline()
chrono::sensor::ChOptixPipeline::ChOptixPipeline | ( | OptixDeviceContext | context, |
unsigned int | trace_depth, | ||
bool | debug | ||
) |
Class constructor.
Creates a ChOptixPipeline that can manage sensors, materials, and SBT information
- Parameters
-
context The optix context to which this pipeline will be attached trace_depth the maximum trace depth for ray recusions in this pipeline (contant for all sensors in the pipeline) debug whether the pipeline should be run in debug mode. Only use for development as this slows down the ray tracing
Member Function Documentation
◆ AddBody()
|
inline |
Add a new body to the optix scene based on a chrono body.
- Parameters
-
body the Chrono body from which to create an optix object
◆ Cleanup()
void chrono::sensor::ChOptixPipeline::Cleanup | ( | ) |
Explicit cleanup function for freeing memory associated with this pipeline which should be freed before reconstructing the pipeline.
Any reusable varaibles will not be cleaned up here
◆ GetBoxMaterial()
unsigned int chrono::sensor::ChOptixPipeline::GetBoxMaterial | ( | std::vector< std::shared_ptr< ChVisualMaterial >> | mat_list = {} | ) |
Creates a new box material.
- Parameters
-
mat the chrono material from which to create an optix material
- Returns
- an id pointing to the material that was created
◆ GetCylinderMaterial()
unsigned int chrono::sensor::ChOptixPipeline::GetCylinderMaterial | ( | std::vector< std::shared_ptr< ChVisualMaterial >> | mat_list = {} | ) |
Creates a new cylinder material.
- Parameters
-
mat the chrono material from which to create an optix material
- Returns
- an id pointing to the material that was created
◆ GetDeformableMeshMaterial()
unsigned int chrono::sensor::ChOptixPipeline::GetDeformableMeshMaterial | ( | CUdeviceptr & | d_vertices, |
CUdeviceptr & | d_indices, | ||
std::shared_ptr< ChTriangleMeshShape > | sphere_shape, | ||
std::vector< std::shared_ptr< ChVisualMaterial >> | mat_list | ||
) |
Creates a new deformable material/mesh in optix.
- Parameters
-
[out] d_vertices a device pointer where the mesh's vertices will be stored [out] d_indices a device pointer where the mesh's indices will be stored [in] sphere_shape the chrono mesh to add to the optix scene [in] mat_list the chrono materials from which to create an optix material
- Returns
- an id pointing to the material that was created
◆ GetMaterialPool()
CUdeviceptr chrono::sensor::ChOptixPipeline::GetMaterialPool | ( | ) |
Function to access the material pool on the device.
- Returns
- a device pointer to the collection of materials
◆ GetMeshPool()
CUdeviceptr chrono::sensor::ChOptixPipeline::GetMeshPool | ( | ) |
Function to access the mesh pool on the device.
- Returns
- a device pointer to the collection of meshes
◆ GetPipeline()
OptixPipeline & chrono::sensor::ChOptixPipeline::GetPipeline | ( | unsigned int | id | ) |
OptixPipeline accessor function.
- Parameters
-
id the id of the desired pipeline
- Returns
- a reference to the specified OptixPipeline
◆ GetRayGenRecord()
std::shared_ptr< Record< RaygenParameters > > chrono::sensor::ChOptixPipeline::GetRayGenRecord | ( | unsigned int | id | ) |
Raygen record accessor.
- Parameters
-
id the id of the pipline whose raygen record should be returned
- Returns
- a shared pointer to the specified raygen record
◆ GetRigidMeshMaterial()
unsigned int chrono::sensor::ChOptixPipeline::GetRigidMeshMaterial | ( | CUdeviceptr & | d_vertices, |
CUdeviceptr & | d_indices, | ||
std::shared_ptr< ChTriangleMeshShape > | sphere_shape, | ||
std::vector< std::shared_ptr< ChVisualMaterial >> | mat_list | ||
) |
Creates a new rigid material/mesh in optix.
- Parameters
-
[out] d_vertices a device pointer where the mesh's vertices will be stored [out] d_indices a device pointer where the mesh's indices will be stored [in] sphere_shape the chrono mesh to add to the optix scene [in] mat_list the chrono materials from which to create an optix material
- Returns
- an id pointing to the material that was created
◆ GetSBT()
std::shared_ptr< OptixShaderBindingTable > chrono::sensor::ChOptixPipeline::GetSBT | ( | unsigned int | id | ) |
SBT accessor.
- Parameters
-
id the id of the pipeline whose shader binding table should be returned
- Returns
- a shared pointer to the specified shader binding table
◆ GetSphereMaterial()
unsigned int chrono::sensor::ChOptixPipeline::GetSphereMaterial | ( | std::vector< std::shared_ptr< ChVisualMaterial >> | mat_list = {} | ) |
Creates a new sphere material.
- Parameters
-
mat the chrono material from which to create an optix material
- Returns
- an id pointing to the material that was created
◆ SpawnPipeline()
void chrono::sensor::ChOptixPipeline::SpawnPipeline | ( | PipelineType | type | ) |
Create a new pipeline for a specific type of sensor.
- Parameters
-
type the type of sensor/ray tracing to add to the pipeline manager
◆ UpdateBackground()
void chrono::sensor::ChOptixPipeline::UpdateBackground | ( | Background | b | ) |
Updates the background of the scene.
Only used for cameras
- Parameters
-
b a new background to use for the scene. The old background will be removed
◆ UpdateObjectVelocity()
void chrono::sensor::ChOptixPipeline::UpdateObjectVelocity | ( | ) |
Function to update all object velocities.
Only required for sensors that measure velocity with is a dynamic property
The documentation for this class was generated from the following files:
- /builds/uwsbel/chrono/src/chrono_sensor/optix/ChOptixPipeline.h
- /builds/uwsbel/chrono/src/chrono_sensor/optix/ChOptixPipeline.cpp