Skip to main content

BrepModel

The BrepModel class represents a GPU-accelerated representation of brep geometry, supporting efficient rendering, material mapping, and geometric analysis. It enables loading or creation of models from brep data with configurable flags for buffer types, material generation, and curve/surface degree limitations.

#include <graphics/TellusimBrepModel.h>

Constructors

BrepModel()

Methods

Clear model.

void clear()

Check model.

bool isCreated() const

Model flags.

Flags getFlags() const
bool hasFlag(Flags flags) const
bool hasFlags(Flags flags) const

Load model.

bool load(const Device &device, const char *name, Flags flags = DefaultFlags, Async *async = nullptr)
bool load(const Device &device, Stream &stream, Flags flags = DefaultFlags, Async *async = nullptr)

Create model.

bool create(const Device &device, const Brep &brep, Flags flags = DefaultFlags)
bool create(const Device &device, const BrepGeometry &geometry, Flags flags = DefaultFlags)
bool create(const Device &device, Array<BrepGeometry> geometries, Flags flags = DefaultFlags)

Set model buffers.

void setBuffers(Command &command, uint32_t index = 0, const Pipeline *pipeline = nullptr) const

Vertices buffer.

uint32_t getNumVertices() const
Buffer getVertexBuffer() const
Texture getVertexTexture() const

Indices buffer.

uint32_t getNumIndices() const
Buffer getIndexBuffer() const
Texture getIndexTexture() const

Ranges buffer.

uint32_t getNumRanges() const
Buffer getRangeBuffer() const
Texture getRangeTexture() const

Faces buffer.

uint32_t getNumPrimitives() const
Buffer getFaceBuffer() const
Texture getFaceTexture() const

Primitives parameters.

Type getPrimitiveFace(uint32_t index) const
uint32_t getPrimitiveIndex(uint32_t index) const
uint32_t getPrimitiveGeometry(uint32_t index) const
uint32_t getPrimitiveMaterial(uint32_t index) const

Primitive masks.

uint32_t getBaseFaceMask() const
uint32_t getWrapFaceMask() const
bool hasBaseFace(Type face) const
bool hasWrapFace(Type face) const
bool hasFace(Type face, bool wrap) const

Geometries.

uint32_t getNumGeometries() const
uint32_t getNumGeometryBaseIndices(uint32_t geometry, Type face) const
uint32_t getNumGeometryWrapIndices(uint32_t geometry, Type face) const
uint32_t getNumGeometryIndices(uint32_t geometry, Type face, bool wrap) const
uint32_t getGeometryBaseIndex(uint32_t geometry, Type face) const
uint32_t getGeometryWrapIndex(uint32_t geometry, Type face) const
uint32_t getGeometryIndex(uint32_t geometry, Type face, bool wrap) const

Geometry materials.

uint32_t getNumMaterials(uint32_t geometry) const
uint32_t getNumMaterialBaseIndices(uint32_t geometry, uint32_t material, Type face) const
uint32_t getNumMaterialWrapIndices(uint32_t geometry, uint32_t material, Type face) const
uint32_t getNumMaterialIndices(uint32_t geometry, uint32_t material, Type face, bool wrap) const
uint32_t getMaterialBaseIndex(uint32_t geometry, uint32_t material, Type face) const
uint32_t getMaterialWrapIndex(uint32_t geometry, uint32_t material, Type face) const
uint32_t getMaterialIndex(uint32_t geometry, uint32_t material, Type face, bool wrap) const

Memory usage.

size_t getMemory() const

Types

using Face = BrepFace::Type

Enums

Flags

Model flags.

NameValueDescription
FlagNone0
FlagVerbose(1 << 0)Verbose creation.
FlagCurve2(1 << 1)Maximum curve degree is 2.
FlagSurface2(1 << 2)Maximum surface degree is 2.
FlagMaterials(1 << 3)Create materials.
FlagBufferTexture(1 << 4)Create texture buffers.
FlagBufferStorage(1 << 5)Create storage buffers.
FlagBufferTracing(1 << 6)Create tracing buffers.
FlagBufferAddress(1 << 7)Create address buffers.
FlagBufferTexel(1 << 8)Create texel buffers.
DefaultFlags(FlagVerbose | FlagMaterials | FlagBufferStorage)
NumFlags9

Structs

FaceParameters

.

Variables

TypeNameDescription
Matrix4x3ftransformFace transform.
Matrix4x3fitransformFace inverse transform.
Vector3fbound_minBound minimum.
float32_tbrep_windingBrep winding.
Vector3fbound_maxBound maximum.
float32_tface_windingFace winding.
ColorcolorFace color.
Vector4ucurvesFace curves (linear begin, quadratic begin, cubic begin, cubic end).
Vector4frange_xPcoord range x (min, max, range index, range size).
Vector4frange_yPcoord range y (min, max, range index, range size).