Open3D (C++ API)  0.19.0
Data Structures | Typedefs | Enumerations | Functions | Variables
open3d::visualization::rendering Namespace Reference

Data Structures

class  Camera
 
class  CameraInteractorLogic
 
class  CameraSphereInteractorLogic
 
class  ColorGradingParams
 Manages. More...
 
class  FilamentCamera
 
class  EngineInstance
 
class  FilamentMaterialModifier
 
class  TemporaryLineSetBuilder
 
class  TemporaryMeshBuilder
 
class  GeometryBuffersBuilder
 
class  TriangleMeshBuffersBuilder
 
class  PointCloudBuffersBuilder
 
class  LineSetBuffersBuilder
 
class  TMeshBuffersBuilder
 
class  TPointCloudBuffersBuilder
 
class  TLineSetBuffersBuilder
 
class  FilamentRenderer
 
class  FilamentRenderToBuffer
 
class  FilamentResourceManager
 
struct  RenderRequest
 
class  FilamentScene
 
class  FilamentView
 
struct  RadixSortParams
 
struct  GaussianSplatViewGpuResources
 Per-view GPU resource handles (opaque: GL name or MTLBuffer/MTLTexture). More...
 
class  GaussianSplatGpuContext
 
class  GpuComputeFrame
 
class  GpuComputePass
 
struct  ShaderBindingDesc
 
struct  ShaderBindingTable
 
class  GaussianSplatGpuContextVulkan
 
struct  Std430Vec4
 vec4 stored as 4 floats (std430 layout). More...
 
struct  GaussianViewParams
 
struct  ProjectedComposite
 
struct  GaussianGpuCounters
 
struct  GaussianSplatPackedAttrs
 
struct  GaussianSplatMergeItem
 
struct  PackedGaussianScene
 
struct  GaussianGpuBufferSizes
 
class  GaussianSplatOpenGLContext
 
class  GaussianSplatRenderer
 
class  GaussianSplatVulkanBackend
 
struct  SharedImageDesc
 
class  GaussianSplatVulkanInteropContext
 
class  Gradient
 
class  IBLRotationInteractorLogic
 
struct  Light
 
class  LightDirectionInteractorLogic
 
class  Material
 
struct  TextureSamplerParameters
 
class  MaterialModifier
 
struct  MaterialRecord
 
class  MatrixInteractorLogic
 
struct  TriangleMeshModel
 
class  ModelInteractorLogic
 
class  Open3DScene
 
class  ResourceLoadRequest
 
class  Renderer
 
struct  REHandle_abstract
 
struct  REHandle
 
struct  LightDescription
 
class  RenderToBuffer
 
class  RotationInteractorLogic
 
class  Scene
 
class  View
 

Typedefs

using PBDParams = std::tuple< FilamentRenderToBuffer *, FilamentRenderToBuffer::BufferReadyCallback >
 
typedef REHandle< EntityType::ViewViewHandle
 
typedef REHandle< EntityType::SceneSceneHandle
 
typedef REHandle< EntityType::GeometryGeometryHandle
 
typedef REHandle< EntityType::LightLightHandle
 
typedef REHandle< EntityType::IndirectLightIndirectLightHandle
 
typedef REHandle< EntityType::SkyboxSkyboxHandle
 
typedef REHandle< EntityType::CameraCameraHandle
 
typedef REHandle< EntityType::MaterialMaterialHandle
 
typedef REHandle< EntityType::MaterialInstanceMaterialInstanceHandle
 
typedef REHandle< EntityType::TextureTextureHandle
 
typedef REHandle< EntityType::RenderTargetRenderTargetHandle
 
typedef REHandle< EntityType::VertexBufferVertexBufferHandle
 
typedef REHandle< EntityType::IndexBufferIndexBufferHandle
 

Enumerations

enum class  ComputeProgramId : int {
  kGsProject = 0 , kGsComposite = 1 , kGsRadixHistograms = 2 , kGsRadixScatter = 3 ,
  kGsDispatchArgs = 4 , kGsDepthMerge = 5 , kCount = 6
}
 
enum class  ImageFormat { kRGBA16F , kR32F , kR16UI }
 Format selector for GaussianSplatGpuContext::BindImage(). More...
 
enum class  VkInteropImageFormat { kRGBA16F , kDepth32F }
 Image format selector used for interop image creation. More...
 
enum class  RenderingType { kDefault , kOpenGL , kVulkan , kMetal }
 
enum class  EntityType : std::uint32_t {
  None = 0 , View , Scene , Geometry ,
  Light , IndirectLight , Skybox , Camera ,
  Material , MaterialInstance , Texture , RenderTarget ,
  VertexBuffer , IndexBuffer , Count
}
 

Functions

FilamentMetalNativeHandles GetFilamentMetalNativeHandles (filament::backend::Platform *platform)
 
std::uint64_t fnv1a_block_hash (const void *const block, std::size_t len)
 
uint8_t maxLevelCount (uint32_t width, uint32_t height)
 
void OutputMaterialProperties (const visualization::rendering::MaterialRecord &mat)
 
std::shared_ptr< geometry::ImageCombineTextures (std::shared_ptr< geometry::Image > ao, std::shared_ptr< geometry::Image > rough, std::shared_ptr< geometry::Image > metal)
 
void CombineTextures (std::shared_ptr< geometry::Image > ao, std::shared_ptr< geometry::Image > rough_metal)
 
void ReadPixelsCallback (void *buffer, size_t buffer_size, void *user)
 
void RegisterSharedImageInVulkanContext (GaussianSplatGpuContext &ctx, std::uint32_t gl_name, std::uintptr_t vk_image_opaque, std::uint32_t vk_format_opaque, std::uint32_t width, std::uint32_t height)
 
void UnregisterSharedImageFromVulkanContext (GaussianSplatGpuContext &ctx, std::uint32_t gl_name)
 
std::unique_ptr< GaussianSplatGpuContextCreateComputeGpuContextVulkan ()
 
void ComputeGaussianGpuBufferSizes (const PackedGaussianScene &packed, GaussianGpuBufferSizes *out)
 
PackedGaussianScene PackGaussianViewParams (const GaussianSplatPackedAttrs &attrs, const GaussianSplatRenderer::ViewRenderData &render_data, const GaussianSplatRenderer::RenderConfig &config)
 
void PackGaussianSplatAttrsDirect (const float *pts_ptr, std::size_t n, const float *scale_ptr, const float *rot_ptr, const float *f_dc_ptr, const float *opacity_ptr, const float *f_rest_ptr, int source_sh_degree, int desired_sh_degree, float min_opacity_logit, bool antialias, GaussianSplatPackedAttrs &out)
 
void MergeGaussianSplatPackedAttrs (const std::vector< GaussianSplatMergeItem > &items, GaussianSplatPackedAttrs *out, std::vector< std::uint32_t > *splat_starts)
 
bool RunGaussianGeometryPasses (GaussianSplatGpuContext &ctx, const GaussianSplatRenderer::RenderConfig &config, const PackedGaussianScene &frame_data, const GaussianSplatPackedAttrs &attrs, GaussianSplatViewGpuResources &vs, std::uint64_t scene_change_id, bool scene_changed)
 
bool RunGaussianCompositePass (GaussianSplatGpuContext &ctx, const GaussianSplatRenderer::RenderConfig &config, GaussianSplatViewGpuResources &vs, GaussianSplatRenderer::OutputTargets &targets)
 
bool ProjectionInfoEquals (const Camera::ProjectionInfo &left, const Camera::ProjectionInfo &right)
 
bool ViewRenderDataEquals (const GaussianSplatRenderer::ViewRenderData &left, const GaussianSplatRenderer::ViewRenderData &right)
 
std::unique_ptr< GaussianSplatRenderer::BackendCreateGaussianSplatVulkanBackend (FilamentResourceManager &, const GaussianSplatRenderer::RenderConfig &config)
 
const std::string kAxisObjectName ("__axis__")
 
const std::string kFastModelObjectSuffix ("__fast__")
 
const std::string kLowQualityModelObjectSuffix ("__low__")
 
std::ostream & operator<< (std::ostream &os, const REHandle_abstract &uid)
 

Variables

constexpr const char * kGsShaderNames []
 
constexpr std::uint32_t kGaussianGpuErrorTileEntryOverflow = 1u << 0
 
constexpr std::uint32_t kGaussianGpuErrorSortCountClamped = 1u << 1
 
constexpr std::uint32_t kGaussianGpuErrorKnownMask
 
constexpr std::uint32_t kGaussianRadixParamsStride = 256
 

Typedef Documentation

◆ CameraHandle

◆ GeometryHandle

◆ IndexBufferHandle

◆ IndirectLightHandle

◆ LightHandle

◆ MaterialHandle

◆ MaterialInstanceHandle

◆ PBDParams

◆ RenderTargetHandle

◆ SceneHandle

◆ SkyboxHandle

◆ TextureHandle

◆ VertexBufferHandle

◆ ViewHandle

Enumeration Type Documentation

◆ ComputeProgramId

Program IDs for the Gaussian splatting compute shaders. Values index into kGsShaderNames; kCount must stay last.

Enumerator
kGsProject 
kGsComposite 
kGsRadixHistograms 
kGsRadixScatter 
kGsDispatchArgs 
kGsDepthMerge 

Merges GS linear depth (R32F) with Filament scene depth (reversed-Z) into a normalised R16UI texture for CPU readback.

kCount 

◆ EntityType

enum open3d::visualization::rendering::EntityType : std::uint32_t
strong
Enumerator
None 
View 
Scene 
Geometry 
Light 
IndirectLight 
Skybox 
Camera 
Material 
MaterialInstance 
Texture 
RenderTarget 
VertexBuffer 
IndexBuffer 
Count 

◆ ImageFormat

Format selector for GaussianSplatGpuContext::BindImage().

Enumerator
kRGBA16F 
kR32F 
kR16UI 

◆ RenderingType

Enumerator
kDefault 
kOpenGL 
kVulkan 
kMetal 

◆ VkInteropImageFormat

Image format selector used for interop image creation.

Enumerator
kRGBA16F 

RGBA16F colour (VK_FORMAT_R16G16B16A16_SFLOAT / GL RGBA16F)

kDepth32F 

Depth-only (VK_FORMAT_D32_SFLOAT / GL DEPTH_COMPONENT32F)

Function Documentation

◆ CombineTextures() [1/2]

std::shared_ptr<geometry::Image> open3d::visualization::rendering::CombineTextures ( std::shared_ptr< geometry::Image ao,
std::shared_ptr< geometry::Image rough,
std::shared_ptr< geometry::Image metal 
)

◆ CombineTextures() [2/2]

void open3d::visualization::rendering::CombineTextures ( std::shared_ptr< geometry::Image ao,
std::shared_ptr< geometry::Image rough_metal 
)

◆ ComputeGaussianGpuBufferSizes()

void open3d::visualization::rendering::ComputeGaussianGpuBufferSizes ( const PackedGaussianScene packed,
GaussianGpuBufferSizes out 
)

Compute GPU buffer sizes from a packed-scene frame description. Called once per geometry pass to size intermediate SSBO allocations.

◆ CreateComputeGpuContextVulkan()

std::unique_ptr< GaussianSplatGpuContext > open3d::visualization::rendering::CreateComputeGpuContextVulkan ( )

Factory: create a Vulkan-backed GaussianSplatGpuContext. Uses device / queue from GaussianSplatVulkanInteropContext::GetInstance(). Returns nullptr if the interop context is not initialized.

◆ CreateGaussianSplatVulkanBackend()

std::unique_ptr< GaussianSplatRenderer::Backend > open3d::visualization::rendering::CreateGaussianSplatVulkanBackend ( FilamentResourceManager resource_mgr,
const GaussianSplatRenderer::RenderConfig config 
)

Create the Vulkan compute Gaussian splat backend. Returns nullptr if GaussianSplatVulkanInteropContext is not initialized.

◆ fnv1a_block_hash()

std::uint64_t open3d::visualization::rendering::fnv1a_block_hash ( const void *const  block,
std::size_t  len 
)

◆ GetFilamentMetalNativeHandles()

FilamentMetalNativeHandles open3d::visualization::rendering::GetFilamentMetalNativeHandles ( filament::backend::Platform *  platform)

◆ kAxisObjectName()

const std::string open3d::visualization::rendering::kAxisObjectName ( "__axis__"  )

◆ kFastModelObjectSuffix()

const std::string open3d::visualization::rendering::kFastModelObjectSuffix ( "__fast__"  )

◆ kLowQualityModelObjectSuffix()

const std::string open3d::visualization::rendering::kLowQualityModelObjectSuffix ( "__low__"  )

◆ maxLevelCount()

uint8_t open3d::visualization::rendering::maxLevelCount ( uint32_t  width,
uint32_t  height 
)
inline

◆ MergeGaussianSplatPackedAttrs()

void open3d::visualization::rendering::MergeGaussianSplatPackedAttrs ( const std::vector< GaussianSplatMergeItem > &  items,
GaussianSplatPackedAttrs out,
std::vector< std::uint32_t > *  splat_starts = nullptr 
)

Merge multiple per-object packed Gaussian-splat buffers into one scene-level packed buffer. The output uses a single SH stride (max source SH degree), with lower-order sources zero-padded per splat.

Parameters
itemsMerge sources in output order.
outOutput packed buffer (overwritten).
splat_startsOptional output; receives per-item start index in merged splat arrays. splat_starts[i] corresponds to items[i].

◆ operator<<()

std::ostream & open3d::visualization::rendering::operator<< ( std::ostream &  os,
const REHandle_abstract uid 
)

◆ OutputMaterialProperties()

void open3d::visualization::rendering::OutputMaterialProperties ( const visualization::rendering::MaterialRecord mat)

◆ PackGaussianSplatAttrsDirect()

void open3d::visualization::rendering::PackGaussianSplatAttrsDirect ( const float *  pts_ptr,
std::size_t  n,
const float *  scale_ptr,
const float *  rot_ptr,
const float *  f_dc_ptr,
const float *  opacity_ptr,
const float *  f_rest_ptr,
int  source_sh_degree,
int  desired_sh_degree,
float  min_opacity_logit,
bool  antialias,
GaussianSplatPackedAttrs out 
)

Pack Gaussian splat attributes from raw PointCloud data pointers into GPU-ready format, filtering by opacity in a single pass. Called once at scene cache time (FilamentScene::CacheGaussianSplatData) to eliminate the intermediate fp32 copy that was previously re-packed every scene-change frame.

Parameters
nTotal number of splats in source
scale_ptrNon-null when n>0: linear scales (3 floats/splat).
rot_ptrNon-null when n>0: unit quaternion (w,x,y,z).
f_dc_ptrNon-null when n>0: DC SH color (3 floats/splat).
opacity_ptrNon-null when n>0: opacity logit (1 float/splat).
f_rest_ptrMay be nullptr → no SH rest coefficients
source_sh_degreeSH degree in the source f_rest tensor (sets stride)
desired_sh_degreeEffective degree to pack (may be < source_sh_degree)
min_opacity_logitFilter threshold in logit space; splats below this are dropped
antialiasStored as out.antialias metadata

◆ PackGaussianViewParams()

PackedGaussianScene open3d::visualization::rendering::PackGaussianViewParams ( const GaussianSplatPackedAttrs attrs,
const GaussianSplatRenderer::ViewRenderData render_data,
const GaussianSplatRenderer::RenderConfig config 
)

Pack camera, viewport, and scene metadata into the view-params UBO. Uses the splat count, SH degree, and antialias flag from attrs. Per-frame GPU cost: glBufferSubData / MTLBuffer memcpy of 288 bytes.

◆ ProjectionInfoEquals()

bool open3d::visualization::rendering::ProjectionInfoEquals ( const Camera::ProjectionInfo left,
const Camera::ProjectionInfo right 
)

◆ ReadPixelsCallback()

void open3d::visualization::rendering::ReadPixelsCallback ( void *  buffer,
size_t  buffer_size,
void *  user 
)

◆ RegisterSharedImageInVulkanContext()

void open3d::visualization::rendering::RegisterSharedImageInVulkanContext ( GaussianSplatGpuContext ctx,
std::uint32_t  gl_name,
std::uintptr_t  vk_image_opaque,
std::uint32_t  vk_format_opaque,
std::uint32_t  width,
std::uint32_t  height 
)

Register a GL-Vulkan shared image with a Vulkan compute context so that subsequent BindImage() / BindSamplerTexture() calls for that GL texture name resolve to the backing VkImage.

Parameters
ctxCreated by CreateComputeGpuContextVulkan().
gl_nameGL texture name from SharedImageDesc.gl_texture.
vk_image_opaqueSharedImageDesc.vk_image cast to uintptr_t.
vk_format_opaqueVkFormat value cast to uint32_t.
width,heightImage dimensions in pixels.

◆ RunGaussianCompositePass()

bool open3d::visualization::rendering::RunGaussianCompositePass ( GaussianSplatGpuContext ctx,
const GaussianSplatRenderer::RenderConfig config,
GaussianSplatViewGpuResources vs,
GaussianSplatRenderer::OutputTargets targets 
)

Final composite pass into imported color/depth targets. Dispatch grid sizes are computed inline from config and targets dimensions.

◆ RunGaussianGeometryPasses()

bool open3d::visualization::rendering::RunGaussianGeometryPasses ( GaussianSplatGpuContext ctx,
const GaussianSplatRenderer::RenderConfig config,
const PackedGaussianScene frame_data,
const GaussianSplatPackedAttrs attrs,
GaussianSplatViewGpuResources vs,
std::uint64_t  scene_change_id,
bool  scene_changed 
)

Resize/upload buffers, then run the projection → radix → payload chain. Dispatch grid sizes are computed inline from frame_data and config.

Parameters
framePer-frame view parameters (UBO, splat/tile counts).
attrsPre-packed per-splat GPU data (uploaded when scene_changed).
scene_change_idScene geometry change token from Filament.
scene_changedTrue when per-splat buffers must be re-uploaded.

◆ UnregisterSharedImageFromVulkanContext()

void open3d::visualization::rendering::UnregisterSharedImageFromVulkanContext ( GaussianSplatGpuContext ctx,
std::uint32_t  gl_name 
)

Unregister a previously registered shared image (called on resize / teardown before VulkanInteropContext::DestroySharedImage).

◆ ViewRenderDataEquals()

bool open3d::visualization::rendering::ViewRenderDataEquals ( const GaussianSplatRenderer::ViewRenderData left,
const GaussianSplatRenderer::ViewRenderData right 
)

Variable Documentation

◆ kGaussianGpuErrorKnownMask

constexpr std::uint32_t open3d::visualization::rendering::kGaussianGpuErrorKnownMask
inlineconstexpr
Initial value:
=
constexpr std::uint32_t kGaussianGpuErrorTileEntryOverflow
Definition: GaussianSplatDataPacking.h:107
constexpr std::uint32_t kGaussianGpuErrorSortCountClamped
Definition: GaussianSplatDataPacking.h:108

◆ kGaussianGpuErrorSortCountClamped

constexpr std::uint32_t open3d::visualization::rendering::kGaussianGpuErrorSortCountClamped = 1u << 1
inlineconstexpr

◆ kGaussianGpuErrorTileEntryOverflow

constexpr std::uint32_t open3d::visualization::rendering::kGaussianGpuErrorTileEntryOverflow = 1u << 0
inlineconstexpr

◆ kGaussianRadixParamsStride

constexpr std::uint32_t open3d::visualization::rendering::kGaussianRadixParamsStride = 256
inlineconstexpr

UBO stride for radix-sort params: must match GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT padding used by both the OpenGL backend and the radix-sort dispatch shaders.

◆ kGsShaderNames

constexpr const char* open3d::visualization::rendering::kGsShaderNames[]
constexpr
Initial value:
= {
"gaussian_project",
"gaussian_composite",
"gaussian_radix_sort_histograms",
"gaussian_radix_sort_scatter",
"gaussian_compute_dispatch_args",
"gaussian_depth_merge",
}

Canonical shader base names indexed by ComputeProgramId. Backends append ".spv" (Vulkan) or "_main" (Metal entry point).