1.3.64
 
Loading...
Searching...
No Matches
helios::OptiX6Backend Class Reference

OptiX 6.5 implementation of the ray tracing backend. More...

#include <OptiX6Backend.h>

Inheritance diagram for helios::OptiX6Backend:
helios::RayTracingBackend

Public Member Functions

void initialize () override
 Initialize the ray tracing backend.
 
void shutdown () override
 Shutdown the ray tracing backend.
 
void updateGeometry (const RayTracingGeometry &geometry) override
 Update geometry data in the ray tracing backend.
 
void buildAccelerationStructure () override
 Build or rebuild the acceleration structure.
 
void updateMaterials (const RayTracingMaterial &materials) override
 Update material properties (reflectivity, transmissivity, specular)
 
void updateSources (const std::vector< RayTracingSource > &sources) override
 Update radiation source definitions.
 
void updateDiffuseRadiation (const std::vector< float > &flux, const std::vector< float > &extinction, const std::vector< helios::vec3 > &peak_dir, const std::vector< float > &dist_norm, const std::vector< float > &sky_energy) override
 Update diffuse (ambient) radiation parameters.
 
void updateSkyModel (const std::vector< helios::vec4 > &sky_radiance_params, const std::vector< float > &camera_sky_radiance, const helios::vec3 &sun_direction, const std::vector< float > &solar_disk_radiance, float solar_disk_cos_angle) override
 Update sky radiance model parameters (for camera rendering)
 
void launchDirectRays (const RayTracingLaunchParams &params) override
 Launch direct (unscattered) rays to radiation sources.
 
void launchDiffuseRays (const RayTracingLaunchParams &params) override
 Launch diffuse (hemispherically-distributed) rays.
 
void launchCameraRays (const RayTracingLaunchParams &params) override
 Launch camera rays for image rendering.
 
void launchPixelLabelRays (const RayTracingLaunchParams &params) override
 Launch pixel labeling rays (for primitive identification in images)
 
void getRadiationResults (RayTracingResults &results) override
 Get radiation simulation results.
 
void getCameraResults (std::vector< float > &pixel_data, std::vector< uint > &pixel_labels, std::vector< float > &pixel_depths, uint camera_id, const helios::int2 &resolution) override
 Get camera rendering results.
 
void zeroRadiationBuffers (size_t launch_band_count) override
 Zero all radiation result buffers (radiation_in, radiation_out, radiation_specular)
 
void zeroScatterBuffers () override
 Zero scatter buffers (scatter_buff_top, scatter_buff_bottom)
 
void zeroCameraPixelBuffers (const helios::int2 &resolution) override
 Zero camera pixel label and depth buffers.
 
void copyScatterToRadiation () override
 Copy scatter buffer contents to radiation buffers.
 
void uploadRadiationOut (const std::vector< float > &radiation_out_top, const std::vector< float > &radiation_out_bottom) override
 Upload radiation_out buffers directly (without launching rays)
 
void uploadCameraScatterBuffers (const std::vector< float > &scatter_top_cam, const std::vector< float > &scatter_bottom_cam) override
 Upload camera scatter buffers.
 
void zeroCameraScatterBuffers (size_t launch_band_count) override
 Zero camera scatter buffers (scatter_buff_top_cam, scatter_buff_bottom_cam)
 
void uploadSourceFluxes (const std::vector< float > &fluxes) override
 Upload source flux values for launched bands.
 
void queryGPUMemory () const override
 Query and report GPU memory usage.
 
std::string getBackendName () const override
 Get the name of the backend implementation.
 

Additional Inherited Members

- Static Public Member Functions inherited from helios::RayTracingBackend
static std::unique_ptr< RayTracingBackendcreate (const std::string &backend_type)
 Create a ray tracing backend instance.
 

Detailed Description

OptiX 6.5 implementation of the ray tracing backend.

This backend wraps the existing OptiX 6.5 code from RadiationModel, providing the same functionality through the RayTracingBackend interface.

Definition at line 56 of file OptiX6Backend.h.

Constructor & Destructor Documentation

◆ OptiX6Backend()

OptiX6Backend::OptiX6Backend ( )

Definition at line 26 of file OptiX6Backend.cpp.

◆ ~OptiX6Backend()

OptiX6Backend::~OptiX6Backend ( )
override

Definition at line 30 of file OptiX6Backend.cpp.

Member Function Documentation

◆ buildAccelerationStructure()

void OptiX6Backend::buildAccelerationStructure ( )
overridevirtual

Build or rebuild the acceleration structure.

Constructs the BVH or other acceleration structure for efficient ray traversal. Should be called after updateGeometry() or when geometry changes.

Implements helios::RayTracingBackend.

Definition at line 486 of file OptiX6Backend.cpp.

◆ copyScatterToRadiation()

void OptiX6Backend::copyScatterToRadiation ( )
overridevirtual

Copy scatter buffer contents to radiation buffers.

Used for multi-bounce radiation: scattering iteration results are accumulated into the main radiation buffers.

Implements helios::RayTracingBackend.

Definition at line 797 of file OptiX6Backend.cpp.

◆ getBackendName()

std::string OptiX6Backend::getBackendName ( ) const
overridevirtual

Get the name of the backend implementation.

Returns
Backend name (e.g., "OptiX 6.5", "OptiX 7.7", "Vulkan")

Implements helios::RayTracingBackend.

Definition at line 856 of file OptiX6Backend.cpp.

◆ getCameraResults()

void OptiX6Backend::getCameraResults ( std::vector< float > &  pixel_data,
std::vector< uint > &  pixel_labels,
std::vector< float > &  pixel_depths,
uint  camera_id,
const helios::int2 resolution 
)
overridevirtual

Get camera rendering results.

Parameters
[out]pixel_dataFlattened pixel values [band][pixel_y][pixel_x]
[out]pixel_labelsPrimitive UUID for each pixel (0 if sky/miss)
[out]pixel_depthsDepth value for each pixel
[in]camera_idCamera identifier
[in]resolutionCamera resolution (width, height)

Implements helios::RayTracingBackend.

Definition at line 692 of file OptiX6Backend.cpp.

◆ getRadiationResults()

void OptiX6Backend::getRadiationResults ( RayTracingResults results)
overridevirtual

Get radiation simulation results.

Parameters
[out]resultsStructure containing radiation_in, radiation_out, scatter buffers, etc.

Retrieves absorbed and emitted radiation for all primitives and bands.

Implements helios::RayTracingBackend.

Definition at line 677 of file OptiX6Backend.cpp.

◆ initialize()

void OptiX6Backend::initialize ( )
overridevirtual

Initialize the ray tracing backend.

Creates the ray tracing context, allocates buffers, compiles/loads programs, and sets up the acceleration structure.

Implements helios::RayTracingBackend.

Definition at line 36 of file OptiX6Backend.cpp.

◆ launchCameraRays()

void OptiX6Backend::launchCameraRays ( const RayTracingLaunchParams params)
overridevirtual

Launch camera rays for image rendering.

Parameters
[in]paramsLaunch parameters including camera position, direction, FOV, etc.

Implements helios::RayTracingBackend.

Definition at line 604 of file OptiX6Backend.cpp.

◆ launchDiffuseRays()

void OptiX6Backend::launchDiffuseRays ( const RayTracingLaunchParams params)
overridevirtual

Launch diffuse (hemispherically-distributed) rays.

Parameters
[in]paramsLaunch parameters including diffuse distribution parameters

Implements helios::RayTracingBackend.

Definition at line 565 of file OptiX6Backend.cpp.

◆ launchDirectRays()

void OptiX6Backend::launchDirectRays ( const RayTracingLaunchParams params)
overridevirtual

Launch direct (unscattered) rays to radiation sources.

Parameters
[in]paramsLaunch parameters (dimensions, seed, band config, etc.)

Implements helios::RayTracingBackend.

Definition at line 548 of file OptiX6Backend.cpp.

◆ launchPixelLabelRays()

void OptiX6Backend::launchPixelLabelRays ( const RayTracingLaunchParams params)
overridevirtual

Launch pixel labeling rays (for primitive identification in images)

Parameters
[in]paramsLaunch parameters with camera configuration

Implements helios::RayTracingBackend.

Definition at line 651 of file OptiX6Backend.cpp.

◆ queryGPUMemory()

void OptiX6Backend::queryGPUMemory ( ) const
overridevirtual

Query and report GPU memory usage.

Implements helios::RayTracingBackend.

Definition at line 843 of file OptiX6Backend.cpp.

◆ shutdown()

void OptiX6Backend::shutdown ( )
overridevirtual

Shutdown the ray tracing backend.

Destroys the context, frees all buffers and resources.

Implements helios::RayTracingBackend.

Definition at line 440 of file OptiX6Backend.cpp.

◆ updateDiffuseRadiation()

void OptiX6Backend::updateDiffuseRadiation ( const std::vector< float > &  flux,
const std::vector< float > &  extinction,
const std::vector< helios::vec3 > &  peak_dir,
const std::vector< float > &  dist_norm,
const std::vector< float > &  sky_energy 
)
overridevirtual

Update diffuse (ambient) radiation parameters.

Parameters
[in]fluxDiffuse flux per band
[in]extinctionExtinction coefficient per band
[in]peak_dirPeak direction for diffuse distribution per band
[in]dist_normDistribution normalization factor per band
[in]sky_energyEnergy absorbed by sky per band

Implements helios::RayTracingBackend.

Definition at line 530 of file OptiX6Backend.cpp.

◆ updateGeometry()

void OptiX6Backend::updateGeometry ( const RayTracingGeometry geometry)
overridevirtual

Update geometry data in the ray tracing backend.

Parameters
[in]geometryGeometry data for all primitive types

This uploads vertex data, transform matrices, UUIDs, texture masks, and all other geometry-related data to the GPU.

Implements helios::RayTracingBackend.

Definition at line 455 of file OptiX6Backend.cpp.

◆ updateMaterials()

void OptiX6Backend::updateMaterials ( const RayTracingMaterial materials)
overridevirtual

Update material properties (reflectivity, transmissivity, specular)

Parameters
[in]materialsMaterial data for all primitives, sources, and bands

Implements helios::RayTracingBackend.

Definition at line 502 of file OptiX6Backend.cpp.

◆ updateSkyModel()

void OptiX6Backend::updateSkyModel ( const std::vector< helios::vec4 > &  sky_radiance_params,
const std::vector< float > &  camera_sky_radiance,
const helios::vec3 sun_direction,
const std::vector< float > &  solar_disk_radiance,
float  solar_disk_cos_angle 
)
overridevirtual

Update sky radiance model parameters (for camera rendering)

Parameters
[in]sky_radiance_paramsPrague sky model parameters per band (vec4)
[in]camera_sky_radianceSky radiance for cameras per band
[in]sun_directionDirection to the sun
[in]solar_disk_radianceSolar disk radiance per band
[in]solar_disk_cos_angleCosine of solar disk angular radius

Implements helios::RayTracingBackend.

Definition at line 539 of file OptiX6Backend.cpp.

◆ updateSources()

void OptiX6Backend::updateSources ( const std::vector< RayTracingSource > &  sources)
overridevirtual

Update radiation source definitions.

Parameters
[in]sourcesVector of radiation sources (collimated, sphere, sun, rectangle, disk)

Implements helios::RayTracingBackend.

Definition at line 518 of file OptiX6Backend.cpp.

◆ uploadCameraScatterBuffers()

void OptiX6Backend::uploadCameraScatterBuffers ( const std::vector< float > &  scatter_top_cam,
const std::vector< float > &  scatter_bottom_cam 
)
overridevirtual

Upload camera scatter buffers.

Parameters
[in]scatter_top_camScattered radiation for cameras (top surface) indexed by [primitive * Nbands_launch + band]
[in]scatter_bottom_camScattered radiation for cameras (bottom surface)

Used to upload emission energy that cameras should see before scatter iterations.

Implements helios::RayTracingBackend.

Definition at line 820 of file OptiX6Backend.cpp.

◆ uploadRadiationOut()

void OptiX6Backend::uploadRadiationOut ( const std::vector< float > &  radiation_out_top,
const std::vector< float > &  radiation_out_bottom 
)
overridevirtual

Upload radiation_out buffers directly (without launching rays)

Parameters
[in]radiation_out_topTop-face outgoing radiation [Nprims * Nbands]
[in]radiation_out_bottomBottom-face outgoing radiation [Nprims * Nbands]

Used to set outgoing radiation for scattering iterations.

Implements helios::RayTracingBackend.

Definition at line 807 of file OptiX6Backend.cpp.

◆ uploadSourceFluxes()

void OptiX6Backend::uploadSourceFluxes ( const std::vector< float > &  fluxes)
overridevirtual

Upload source flux values for launched bands.

Parameters
[in]fluxesSource flux values indexed by [source * Nbands_launch + band]

Used to set per-band source fluxes before direct ray launch.

Implements helios::RayTracingBackend.

Definition at line 833 of file OptiX6Backend.cpp.

◆ zeroCameraPixelBuffers()

void OptiX6Backend::zeroCameraPixelBuffers ( const helios::int2 resolution)
overridevirtual

Zero camera pixel label and depth buffers.

Parameters
[in]resolutionFull camera resolution (width, height)

Must be called before launching pixel label rays for multiple tiles. Each tile launch accumulates results without zeroing, so this must be called once before the tile loop to initialize the buffers.

Implements helios::RayTracingBackend.

Definition at line 784 of file OptiX6Backend.cpp.

◆ zeroCameraScatterBuffers()

void OptiX6Backend::zeroCameraScatterBuffers ( size_t  launch_band_count)
overridevirtual

Zero camera scatter buffers (scatter_buff_top_cam, scatter_buff_bottom_cam)

Parameters
[in]launch_band_countNumber of bands being launched in current iteration

Buffers are sized by launch_band_count to prevent double-counting when accumulating camera scatter across multiple ray launches.

Implements helios::RayTracingBackend.

Definition at line 764 of file OptiX6Backend.cpp.

◆ zeroRadiationBuffers()

void OptiX6Backend::zeroRadiationBuffers ( size_t  launch_band_count)
overridevirtual

Zero all radiation result buffers (radiation_in, radiation_out, radiation_specular)

Parameters
[in]launch_band_countNumber of bands being launched in current iteration

Camera scatter buffers are sized by launch_band_count (not global band count) to match per-launch accumulation semantics. All other buffers use the global band count.

Implements helios::RayTracingBackend.

Definition at line 704 of file OptiX6Backend.cpp.

◆ zeroScatterBuffers()

void OptiX6Backend::zeroScatterBuffers ( )
overridevirtual

Zero scatter buffers (scatter_buff_top, scatter_buff_bottom)

Implements helios::RayTracingBackend.

Definition at line 748 of file OptiX6Backend.cpp.


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