SceneCollider
The SceneCollider class provides an interface for performing collision detection within a Scene using GPU shaders. To perform collision detection, a new collision index must be obtained by atomically incrementing the indirect buffer, and input collision parameters must be written to the input buffer. The collision result is then available in the output buffer at the same index on the next frame or after manually executing the dispatch() method. The SceneManager class offers a simpler interface to SceneCollider for CPU-initiated collision queries, with results reported via callbacks.
The SceneCollider is available for GraphVarying shaders.
#include <scene/TellusimSceneCollider.h>
Constructors
SceneCollider()
Methods
Collider parameters.
uint32_t getMaxCollisions() const
Output buffer offset.
size_t getOutputOffset() const
Collider buffers.
Buffer getInputBuffer() const
Buffer getOutputBuffer() const
Buffer getIndirectBuffer() const
Collider queries.
Query getQuery(QueryType type) const
static const char *getQueryName(QueryType type)
Dispatch collider.
void dispatch(Compute compute, Flags flags = FlagNone)
Enums
Flags
Collider flags.
Name | Value | Description |
---|---|---|
FlagNone | 0 | |
FlagQuery | (1 << 0) | Time query profiler. |
DefaultFlags | FlagNone | |
NumFlags | 1 |
CollisionFlags
Collision flags.
Name | Value | Description |
---|---|---|
CollisionFlagNone | 0 | |
CollisionFlagAll | (1 << 28) | Incusive collision mode. |
CollisionFlagObject | (1 << 29) | Stop on object collision. |
CollisionFlagInstance | (1 << 30) | Stop on node instance collision. |
QueryType
Query types.
Name | Value | Description |
---|---|---|
QueryGraph | 0 | Graph collision time. |
QueryNode | 1 | Node collision time. |
QueryObject | 2 | Object collision time. |
QueryMerge | 3 | Collision merge time. |
NumQueries | 4 |
Structs
Collision
Collider collision.
Variables
Type | Name | Value | Description |
---|---|---|---|
Matrix4x3d | transform | Global transform. | |
Vector4d[6] | planes | Bounding planes. | |
uint32_t | mask | ~0u | Collision mask. |
uint32_t | flags | CollisionFlagNone | Collision flags and collision index. |
uint32_t | graph_index | Collision graph index. | |
uint32_t | node_index | Collision node index. | |
uint32_t | object_index | Collision object index. | |
uint32_t | object_node_index | Collision object node index. | |
uint32_t | geometry_index | Collision geometry index. | |
uint32_t | next_index | Next collision index. | |
uint32_t | payload | Collision payload data. |