File indexing completed on 2026-04-09 07:49:42
0001 #pragma once
0002
0003 #include "SOPTIX_BuildInput.h"
0004
0005 struct SOPTIX_BuildInput_IA : public SOPTIX_BuildInput
0006 {
0007 static constexpr const char* NAME = "BuildInputInstanceArray" ;
0008
0009 std::vector<OptixInstance> instances ;
0010 CUdeviceptr instances_buffer ;
0011
0012 SOPTIX_BuildInput_IA(std::vector<OptixInstance>& _instances );
0013 };
0014
0015
0016 inline SOPTIX_BuildInput_IA::SOPTIX_BuildInput_IA(std::vector<OptixInstance>& _instances)
0017 :
0018 SOPTIX_BuildInput(NAME),
0019 instances(_instances),
0020 instances_buffer(0)
0021 {
0022 unsigned num_bytes = sizeof( OptixInstance )*instances.size() ;
0023
0024 CUDA_CHECK( cudaMalloc( reinterpret_cast<void**>( &instances_buffer ), num_bytes ) );
0025 CUDA_CHECK( cudaMemcpy(
0026 reinterpret_cast<void*>( instances_buffer ),
0027 instances.data(),
0028 num_bytes,
0029 cudaMemcpyHostToDevice
0030 ) );
0031
0032 buildInput.type = OPTIX_BUILD_INPUT_TYPE_INSTANCES;
0033 OptixBuildInputInstanceArray& instanceArray = buildInput.instanceArray ;
0034 instanceArray.instances = instances_buffer ;
0035 instanceArray.numInstances = instances.size() ;
0036 }
0037
0038
0039