diff --git a/crates/optix/Cargo.toml b/crates/optix/Cargo.toml index 815e4bbe..87e05c0a 100644 --- a/crates/optix/Cargo.toml +++ b/crates/optix/Cargo.toml @@ -27,7 +27,7 @@ mint = "0.5.9" embed-doc-image = {version = "0.1.4"} [build-dependencies] -bindgen = "0.59" +bindgen = "0.58" cc = "1.0.71" find_cuda_helper = { version = "0.2", path = "../find_cuda_helper" } diff --git a/crates/optix/optix_wrapper.rs b/crates/optix/optix_wrapper.rs index 24bad9e9..fc640433 100644 --- a/crates/optix/optix_wrapper.rs +++ b/crates/optix/optix_wrapper.rs @@ -1,4 +1,4 @@ -/* automatically generated by rust-bindgen 0.59.2 */ +/* automatically generated by rust-bindgen 0.58.1 */ #[repr(C)] pub struct __BindgenUnionField(::std::marker::PhantomData); @@ -73,6 +73,12 @@ pub struct OptixDenoiser_t { _unused: [u8; 0], } pub type OptixDenoiser = *mut OptixDenoiser_t; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct OptixTask_t { + _unused: [u8; 0], +} +pub type OptixTask = *mut OptixTask_t; pub type OptixTraversableHandle = ::std::os::raw::c_ulonglong; pub type OptixVisibilityMask = ::std::os::raw::c_uint; impl OptixResult { @@ -118,7 +124,7 @@ impl OptixResult { pub const OPTIX_ERROR_VALIDATION_FAILURE: OptixResult = OptixResult(7053); } impl OptixResult { - pub const OPTIX_ERROR_INVALID_PTX: OptixResult = OptixResult(7200); + pub const OPTIX_ERROR_INVALID_INPUT: OptixResult = OptixResult(7200); } impl OptixResult { pub const OPTIX_ERROR_INVALID_LAUNCH_PARAMETER: OptixResult = OptixResult(7201); @@ -154,7 +160,16 @@ impl OptixResult { pub const OPTIX_ERROR_DENOISER_NOT_INITIALIZED: OptixResult = OptixResult(7301); } impl OptixResult { - pub const OPTIX_ERROR_ACCEL_NOT_COMPATIBLE: OptixResult = OptixResult(7400); + pub const OPTIX_ERROR_NOT_COMPATIBLE: OptixResult = OptixResult(7400); +} +impl OptixResult { + pub const OPTIX_ERROR_PAYLOAD_TYPE_MISMATCH: OptixResult = OptixResult(7500); +} +impl OptixResult { + pub const OPTIX_ERROR_PAYLOAD_TYPE_RESOLUTION_FAILED: OptixResult = OptixResult(7501); +} +impl OptixResult { + pub const OPTIX_ERROR_PAYLOAD_TYPE_ID_INVALID: OptixResult = OptixResult(7502); } impl OptixResult { pub const OPTIX_ERROR_NOT_SUPPORTED: OptixResult = OptixResult(7800); @@ -177,6 +192,9 @@ impl OptixResult { impl OptixResult { pub const OPTIX_ERROR_LIBRARY_UNLOAD_FAILURE: OptixResult = OptixResult(7806); } +impl OptixResult { + pub const OPTIX_ERROR_DEVICE_OUT_OF_MEMORY: OptixResult = OptixResult(7807); +} impl OptixResult { pub const OPTIX_ERROR_CUDA_ERROR: OptixResult = OptixResult(7900); } @@ -200,6 +218,7 @@ pub mod OptixDeviceProperty { pub const OPTIX_DEVICE_PROPERTY_LIMIT_NUM_BITS_INSTANCE_VISIBILITY_MASK: Type = 8199; pub const OPTIX_DEVICE_PROPERTY_LIMIT_MAX_SBT_RECORDS_PER_GAS: Type = 8200; pub const OPTIX_DEVICE_PROPERTY_LIMIT_MAX_SBT_OFFSET: Type = 8201; + pub const OPTIX_DEVICE_PROPERTY_SHADER_EXECUTION_REORDERING: Type = 8202; } pub type OptixLogCallback = ::std::option::Option< unsafe extern "C" fn( @@ -224,17 +243,17 @@ pub struct OptixDeviceContextOptions { } impl Default for OptixDeviceContextOptions { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } } } +pub const OptixDevicePropertyShaderExecutionReorderingFlags_OPTIX_DEVICE_PROPERTY_SHADER_EXECUTION_REORDERING_FLAG_NONE : OptixDevicePropertyShaderExecutionReorderingFlags = 0 ; +pub const OptixDevicePropertyShaderExecutionReorderingFlags_OPTIX_DEVICE_PROPERTY_SHADER_EXECUTION_REORDERING_FLAG_STANDARD : OptixDevicePropertyShaderExecutionReorderingFlags = 1 ; +pub type OptixDevicePropertyShaderExecutionReorderingFlags = ::std::os::raw::c_int; pub const OptixHitKind_OPTIX_HIT_KIND_TRIANGLE_FRONT_FACE: OptixHitKind = 254; pub const OptixHitKind_OPTIX_HIT_KIND_TRIANGLE_BACK_FACE: OptixHitKind = 255; pub type OptixHitKind = ::std::os::raw::c_int; pub const OptixIndicesFormat_OPTIX_INDICES_FORMAT_NONE: OptixIndicesFormat = 0; +pub const OptixIndicesFormat_OPTIX_INDICES_FORMAT_UNSIGNED_BYTE3: OptixIndicesFormat = 8449; pub const OptixIndicesFormat_OPTIX_INDICES_FORMAT_UNSIGNED_SHORT3: OptixIndicesFormat = 8450; pub const OptixIndicesFormat_OPTIX_INDICES_FORMAT_UNSIGNED_INT3: OptixIndicesFormat = 8451; pub type OptixIndicesFormat = ::std::os::raw::c_int; @@ -249,6 +268,155 @@ pub type OptixVertexFormat = ::std::os::raw::c_int; pub const OptixTransformFormat_OPTIX_TRANSFORM_FORMAT_NONE: OptixTransformFormat = 0; pub const OptixTransformFormat_OPTIX_TRANSFORM_FORMAT_MATRIX_FLOAT12: OptixTransformFormat = 8673; pub type OptixTransformFormat = ::std::os::raw::c_int; +pub const OptixDisplacementMicromapBiasAndScaleFormat_OPTIX_DISPLACEMENT_MICROMAP_BIAS_AND_SCALE_FORMAT_NONE : OptixDisplacementMicromapBiasAndScaleFormat = 0 ; +pub const OptixDisplacementMicromapBiasAndScaleFormat_OPTIX_DISPLACEMENT_MICROMAP_BIAS_AND_SCALE_FORMAT_FLOAT2 : OptixDisplacementMicromapBiasAndScaleFormat = 8769 ; +pub const OptixDisplacementMicromapBiasAndScaleFormat_OPTIX_DISPLACEMENT_MICROMAP_BIAS_AND_SCALE_FORMAT_HALF2 : OptixDisplacementMicromapBiasAndScaleFormat = 8770 ; +pub type OptixDisplacementMicromapBiasAndScaleFormat = ::std::os::raw::c_int; +pub const OptixDisplacementMicromapDirectionFormat_OPTIX_DISPLACEMENT_MICROMAP_DIRECTION_FORMAT_NONE : OptixDisplacementMicromapDirectionFormat = 0 ; +pub const OptixDisplacementMicromapDirectionFormat_OPTIX_DISPLACEMENT_MICROMAP_DIRECTION_FORMAT_FLOAT3 : OptixDisplacementMicromapDirectionFormat = 8801 ; +pub const OptixDisplacementMicromapDirectionFormat_OPTIX_DISPLACEMENT_MICROMAP_DIRECTION_FORMAT_HALF3 : OptixDisplacementMicromapDirectionFormat = 8802 ; +pub type OptixDisplacementMicromapDirectionFormat = ::std::os::raw::c_int; +pub const OptixOpacityMicromapFormat_OPTIX_OPACITY_MICROMAP_FORMAT_NONE: + OptixOpacityMicromapFormat = 0; +pub const OptixOpacityMicromapFormat_OPTIX_OPACITY_MICROMAP_FORMAT_2_STATE: + OptixOpacityMicromapFormat = 1; +pub const OptixOpacityMicromapFormat_OPTIX_OPACITY_MICROMAP_FORMAT_4_STATE: + OptixOpacityMicromapFormat = 2; +pub type OptixOpacityMicromapFormat = ::std::os::raw::c_int; +pub const OptixOpacityMicromapArrayIndexingMode_OPTIX_OPACITY_MICROMAP_ARRAY_INDEXING_MODE_NONE: + OptixOpacityMicromapArrayIndexingMode = 0; +pub const OptixOpacityMicromapArrayIndexingMode_OPTIX_OPACITY_MICROMAP_ARRAY_INDEXING_MODE_LINEAR : OptixOpacityMicromapArrayIndexingMode = 1 ; +pub const OptixOpacityMicromapArrayIndexingMode_OPTIX_OPACITY_MICROMAP_ARRAY_INDEXING_MODE_INDEXED : OptixOpacityMicromapArrayIndexingMode = 2 ; +pub type OptixOpacityMicromapArrayIndexingMode = ::std::os::raw::c_int; +#[repr(C)] +#[derive(Debug, Copy, Clone, PartialEq)] +pub struct OptixOpacityMicromapUsageCount { + pub count: ::std::os::raw::c_uint, + pub subdivisionLevel: ::std::os::raw::c_uint, + pub format: OptixOpacityMicromapFormat, +} +impl Default for OptixOpacityMicromapUsageCount { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +pub struct OptixBuildInputOpacityMicromap { + pub indexingMode: OptixOpacityMicromapArrayIndexingMode, + pub opacityMicromapArray: CUdeviceptr, + pub indexBuffer: CUdeviceptr, + pub indexSizeInBytes: ::std::os::raw::c_uint, + pub indexStrideInBytes: ::std::os::raw::c_uint, + pub indexOffset: ::std::os::raw::c_uint, + pub numMicromapUsageCounts: ::std::os::raw::c_uint, + pub micromapUsageCounts: *const OptixOpacityMicromapUsageCount, +} +impl Default for OptixBuildInputOpacityMicromap { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +pub struct OptixRelocateInputOpacityMicromap { + pub opacityMicromapArray: CUdeviceptr, +} +impl Default for OptixRelocateInputOpacityMicromap { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +pub const OptixDisplacementMicromapFormat_OPTIX_DISPLACEMENT_MICROMAP_FORMAT_NONE: + OptixDisplacementMicromapFormat = 0; +pub const OptixDisplacementMicromapFormat_OPTIX_DISPLACEMENT_MICROMAP_FORMAT_64_MICRO_TRIS_64_BYTES : OptixDisplacementMicromapFormat = 1 ; +pub const OptixDisplacementMicromapFormat_OPTIX_DISPLACEMENT_MICROMAP_FORMAT_256_MICRO_TRIS_128_BYTES : OptixDisplacementMicromapFormat = 2 ; +pub const OptixDisplacementMicromapFormat_OPTIX_DISPLACEMENT_MICROMAP_FORMAT_1024_MICRO_TRIS_128_BYTES : OptixDisplacementMicromapFormat = 3 ; +pub type OptixDisplacementMicromapFormat = ::std::os::raw::c_int; +pub const OptixDisplacementMicromapFlags_OPTIX_DISPLACEMENT_MICROMAP_FLAG_NONE: + OptixDisplacementMicromapFlags = 0; +pub const OptixDisplacementMicromapFlags_OPTIX_DISPLACEMENT_MICROMAP_FLAG_PREFER_FAST_TRACE: + OptixDisplacementMicromapFlags = 1; +pub const OptixDisplacementMicromapFlags_OPTIX_DISPLACEMENT_MICROMAP_FLAG_PREFER_FAST_BUILD: + OptixDisplacementMicromapFlags = 2; +pub type OptixDisplacementMicromapFlags = ::std::os::raw::c_int; +pub const OptixDisplacementMicromapTriangleFlags_OPTIX_DISPLACEMENT_MICROMAP_TRIANGLE_FLAG_NONE: + OptixDisplacementMicromapTriangleFlags = 0; +pub const OptixDisplacementMicromapTriangleFlags_OPTIX_DISPLACEMENT_MICROMAP_TRIANGLE_FLAG_DECIMATE_EDGE_01 : OptixDisplacementMicromapTriangleFlags = 1 ; +pub const OptixDisplacementMicromapTriangleFlags_OPTIX_DISPLACEMENT_MICROMAP_TRIANGLE_FLAG_DECIMATE_EDGE_12 : OptixDisplacementMicromapTriangleFlags = 2 ; +pub const OptixDisplacementMicromapTriangleFlags_OPTIX_DISPLACEMENT_MICROMAP_TRIANGLE_FLAG_DECIMATE_EDGE_20 : OptixDisplacementMicromapTriangleFlags = 4 ; +pub type OptixDisplacementMicromapTriangleFlags = ::std::os::raw::c_int; +#[repr(C)] +#[derive(Debug, Default, Copy, Clone, PartialEq)] +pub struct OptixDisplacementMicromapDesc { + pub byteOffset: ::std::os::raw::c_uint, + pub subdivisionLevel: ::std::os::raw::c_ushort, + pub format: ::std::os::raw::c_ushort, +} +#[repr(C)] +#[derive(Debug, Copy, Clone, PartialEq)] +pub struct OptixDisplacementMicromapHistogramEntry { + pub count: ::std::os::raw::c_uint, + pub subdivisionLevel: ::std::os::raw::c_uint, + pub format: OptixDisplacementMicromapFormat, +} +impl Default for OptixDisplacementMicromapHistogramEntry { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +pub struct OptixDisplacementMicromapArrayBuildInput { + pub flags: OptixDisplacementMicromapFlags, + pub displacementValuesBuffer: CUdeviceptr, + pub perDisplacementMicromapDescBuffer: CUdeviceptr, + pub perDisplacementMicromapDescStrideInBytes: ::std::os::raw::c_uint, + pub numDisplacementMicromapHistogramEntries: ::std::os::raw::c_uint, + pub displacementMicromapHistogramEntries: *const OptixDisplacementMicromapHistogramEntry, +} +impl Default for OptixDisplacementMicromapArrayBuildInput { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +#[derive(Debug, Copy, Clone, PartialEq)] +pub struct OptixDisplacementMicromapUsageCount { + pub count: ::std::os::raw::c_uint, + pub subdivisionLevel: ::std::os::raw::c_uint, + pub format: OptixDisplacementMicromapFormat, +} +impl Default for OptixDisplacementMicromapUsageCount { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +pub const OptixDisplacementMicromapArrayIndexingMode_OPTIX_DISPLACEMENT_MICROMAP_ARRAY_INDEXING_MODE_NONE : OptixDisplacementMicromapArrayIndexingMode = 0 ; +pub const OptixDisplacementMicromapArrayIndexingMode_OPTIX_DISPLACEMENT_MICROMAP_ARRAY_INDEXING_MODE_LINEAR : OptixDisplacementMicromapArrayIndexingMode = 1 ; +pub const OptixDisplacementMicromapArrayIndexingMode_OPTIX_DISPLACEMENT_MICROMAP_ARRAY_INDEXING_MODE_INDEXED : OptixDisplacementMicromapArrayIndexingMode = 2 ; +pub type OptixDisplacementMicromapArrayIndexingMode = ::std::os::raw::c_int; +#[repr(C)] +pub struct OptixBuildInputDisplacementMicromap { + pub indexingMode: OptixDisplacementMicromapArrayIndexingMode, + pub displacementMicromapArray: CUdeviceptr, + pub displacementMicromapIndexBuffer: CUdeviceptr, + pub vertexDirectionsBuffer: CUdeviceptr, + pub vertexBiasAndScaleBuffer: CUdeviceptr, + pub triangleFlagsBuffer: CUdeviceptr, + pub displacementMicromapIndexOffset: ::std::os::raw::c_uint, + pub displacementMicromapIndexStrideInBytes: ::std::os::raw::c_uint, + pub displacementMicromapIndexSizeInBytes: ::std::os::raw::c_uint, + pub vertexDirectionFormat: OptixDisplacementMicromapDirectionFormat, + pub vertexDirectionStrideInBytes: ::std::os::raw::c_uint, + pub vertexBiasAndScaleFormat: OptixDisplacementMicromapBiasAndScaleFormat, + pub vertexBiasAndScaleStrideInBytes: ::std::os::raw::c_uint, + pub triangleFlagsStrideInBytes: ::std::os::raw::c_uint, + pub numDisplacementMicromapUsageCounts: ::std::os::raw::c_uint, + pub displacementMicromapUsageCounts: *const OptixDisplacementMicromapUsageCount, +} +impl Default for OptixBuildInputDisplacementMicromap { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} #[repr(C)] pub struct OptixBuildInputTriangleArray { pub vertexBuffers: *const CUdeviceptr, @@ -267,14 +435,22 @@ pub struct OptixBuildInputTriangleArray { pub sbtIndexOffsetStrideInBytes: ::std::os::raw::c_uint, pub primitiveIndexOffset: ::std::os::raw::c_uint, pub transformFormat: OptixTransformFormat, + pub opacityMicromap: OptixBuildInputOpacityMicromap, + pub displacementMicromap: OptixBuildInputDisplacementMicromap, } impl Default for OptixBuildInputTriangleArray { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +pub struct OptixRelocateInputTriangleArray { + pub numSbtRecords: ::std::os::raw::c_uint, + pub opacityMicromap: OptixRelocateInputOpacityMicromap, +} +impl Default for OptixRelocateInputTriangleArray { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } } } pub const OptixPrimitiveType_OPTIX_PRIMITIVE_TYPE_CUSTOM: OptixPrimitiveType = 9472; @@ -282,7 +458,13 @@ pub const OptixPrimitiveType_OPTIX_PRIMITIVE_TYPE_ROUND_QUADRATIC_BSPLINE: Optix 9473; pub const OptixPrimitiveType_OPTIX_PRIMITIVE_TYPE_ROUND_CUBIC_BSPLINE: OptixPrimitiveType = 9474; pub const OptixPrimitiveType_OPTIX_PRIMITIVE_TYPE_ROUND_LINEAR: OptixPrimitiveType = 9475; +pub const OptixPrimitiveType_OPTIX_PRIMITIVE_TYPE_ROUND_CATMULLROM: OptixPrimitiveType = 9476; +pub const OptixPrimitiveType_OPTIX_PRIMITIVE_TYPE_FLAT_QUADRATIC_BSPLINE: OptixPrimitiveType = 9477; +pub const OptixPrimitiveType_OPTIX_PRIMITIVE_TYPE_SPHERE: OptixPrimitiveType = 9478; +pub const OptixPrimitiveType_OPTIX_PRIMITIVE_TYPE_ROUND_CUBIC_BEZIER: OptixPrimitiveType = 9479; pub const OptixPrimitiveType_OPTIX_PRIMITIVE_TYPE_TRIANGLE: OptixPrimitiveType = 9521; +pub const OptixPrimitiveType_OPTIX_PRIMITIVE_TYPE_DISPLACED_MICROMESH_TRIANGLE: OptixPrimitiveType = + 9522; pub type OptixPrimitiveType = ::std::os::raw::c_int; pub const OptixPrimitiveTypeFlags_OPTIX_PRIMITIVE_TYPE_FLAGS_CUSTOM: OptixPrimitiveTypeFlags = 1; pub const OptixPrimitiveTypeFlags_OPTIX_PRIMITIVE_TYPE_FLAGS_ROUND_QUADRATIC_BSPLINE: @@ -291,9 +473,21 @@ pub const OptixPrimitiveTypeFlags_OPTIX_PRIMITIVE_TYPE_FLAGS_ROUND_CUBIC_BSPLINE OptixPrimitiveTypeFlags = 4; pub const OptixPrimitiveTypeFlags_OPTIX_PRIMITIVE_TYPE_FLAGS_ROUND_LINEAR: OptixPrimitiveTypeFlags = 8; +pub const OptixPrimitiveTypeFlags_OPTIX_PRIMITIVE_TYPE_FLAGS_ROUND_CATMULLROM: + OptixPrimitiveTypeFlags = 16; +pub const OptixPrimitiveTypeFlags_OPTIX_PRIMITIVE_TYPE_FLAGS_FLAT_QUADRATIC_BSPLINE: + OptixPrimitiveTypeFlags = 32; +pub const OptixPrimitiveTypeFlags_OPTIX_PRIMITIVE_TYPE_FLAGS_SPHERE: OptixPrimitiveTypeFlags = 64; +pub const OptixPrimitiveTypeFlags_OPTIX_PRIMITIVE_TYPE_FLAGS_ROUND_CUBIC_BEZIER: + OptixPrimitiveTypeFlags = 128; pub const OptixPrimitiveTypeFlags_OPTIX_PRIMITIVE_TYPE_FLAGS_TRIANGLE: OptixPrimitiveTypeFlags = -2147483648; +pub const OptixPrimitiveTypeFlags_OPTIX_PRIMITIVE_TYPE_FLAGS_DISPLACED_MICROMESH_TRIANGLE: + OptixPrimitiveTypeFlags = 1073741824; pub type OptixPrimitiveTypeFlags = ::std::os::raw::c_int; +pub const OptixCurveEndcapFlags_OPTIX_CURVE_ENDCAP_DEFAULT: OptixCurveEndcapFlags = 0; +pub const OptixCurveEndcapFlags_OPTIX_CURVE_ENDCAP_ON: OptixCurveEndcapFlags = 1; +pub type OptixCurveEndcapFlags = ::std::os::raw::c_int; #[repr(C)] pub struct OptixBuildInputCurveArray { pub curveType: OptixPrimitiveType, @@ -309,14 +503,31 @@ pub struct OptixBuildInputCurveArray { pub indexStrideInBytes: ::std::os::raw::c_uint, pub flag: ::std::os::raw::c_uint, pub primitiveIndexOffset: ::std::os::raw::c_uint, + pub endcapFlags: ::std::os::raw::c_uint, } impl Default for OptixBuildInputCurveArray { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +pub struct OptixBuildInputSphereArray { + pub vertexBuffers: *const CUdeviceptr, + pub vertexStrideInBytes: ::std::os::raw::c_uint, + pub numVertices: ::std::os::raw::c_uint, + pub radiusBuffers: *const CUdeviceptr, + pub radiusStrideInBytes: ::std::os::raw::c_uint, + pub singleRadius: ::std::os::raw::c_int, + pub flags: *const ::std::os::raw::c_uint, + pub numSbtRecords: ::std::os::raw::c_uint, + pub sbtIndexOffsetBuffer: CUdeviceptr, + pub sbtIndexOffsetSizeInBytes: ::std::os::raw::c_uint, + pub sbtIndexOffsetStrideInBytes: ::std::os::raw::c_uint, + pub primitiveIndexOffset: ::std::os::raw::c_uint, +} +impl Default for OptixBuildInputSphereArray { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } } } #[repr(C)] @@ -343,25 +554,28 @@ pub struct OptixBuildInputCustomPrimitiveArray { } impl Default for OptixBuildInputCustomPrimitiveArray { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } } } #[repr(C)] pub struct OptixBuildInputInstanceArray { pub instances: CUdeviceptr, pub numInstances: ::std::os::raw::c_uint, + pub instanceStride: ::std::os::raw::c_uint, } impl Default for OptixBuildInputInstanceArray { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +pub struct OptixRelocateInputInstanceArray { + pub numInstances: ::std::os::raw::c_uint, + pub traversableHandles: CUdeviceptr, +} +impl Default for OptixRelocateInputInstanceArray { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } } } pub const OptixBuildInputType_OPTIX_BUILD_INPUT_TYPE_TRIANGLES: OptixBuildInputType = 8513; @@ -369,11 +583,13 @@ pub const OptixBuildInputType_OPTIX_BUILD_INPUT_TYPE_CUSTOM_PRIMITIVES: OptixBui pub const OptixBuildInputType_OPTIX_BUILD_INPUT_TYPE_INSTANCES: OptixBuildInputType = 8515; pub const OptixBuildInputType_OPTIX_BUILD_INPUT_TYPE_INSTANCE_POINTERS: OptixBuildInputType = 8516; pub const OptixBuildInputType_OPTIX_BUILD_INPUT_TYPE_CURVES: OptixBuildInputType = 8517; +pub const OptixBuildInputType_OPTIX_BUILD_INPUT_TYPE_SPHERES: OptixBuildInputType = 8518; pub type OptixBuildInputType = ::std::os::raw::c_int; #[repr(C)] pub struct OptixBuildInput__bindgen_ty_1 { pub triangleArray: __BindgenUnionField, pub curveArray: __BindgenUnionField, + pub sphereArray: __BindgenUnionField, pub customPrimitiveArray: __BindgenUnionField, pub instanceArray: __BindgenUnionField, pub pad: __BindgenUnionField<[::std::os::raw::c_char; 1024usize]>, @@ -381,11 +597,28 @@ pub struct OptixBuildInput__bindgen_ty_1 { } impl Default for OptixBuildInput__bindgen_ty_1 { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +pub struct OptixRelocateInput { + pub type_: OptixBuildInputType, + pub __bindgen_anon_1: OptixRelocateInput__bindgen_ty_1, +} +#[repr(C)] +pub struct OptixRelocateInput__bindgen_ty_1 { + pub instanceArray: __BindgenUnionField, + pub triangleArray: __BindgenUnionField, + pub bindgen_union_field: [u64; 2usize], +} +impl Default for OptixRelocateInput__bindgen_ty_1 { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +impl Default for OptixRelocateInput { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } } } pub const OptixInstanceFlags_OPTIX_INSTANCE_FLAG_NONE: OptixInstanceFlags = 0; @@ -394,7 +627,9 @@ pub const OptixInstanceFlags_OPTIX_INSTANCE_FLAG_DISABLE_TRIANGLE_FACE_CULLING: pub const OptixInstanceFlags_OPTIX_INSTANCE_FLAG_FLIP_TRIANGLE_FACING: OptixInstanceFlags = 2; pub const OptixInstanceFlags_OPTIX_INSTANCE_FLAG_DISABLE_ANYHIT: OptixInstanceFlags = 4; pub const OptixInstanceFlags_OPTIX_INSTANCE_FLAG_ENFORCE_ANYHIT: OptixInstanceFlags = 8; -pub const OptixInstanceFlags_OPTIX_INSTANCE_FLAG_DISABLE_TRANSFORM: OptixInstanceFlags = 64; +pub const OptixInstanceFlags_OPTIX_INSTANCE_FLAG_FORCE_OPACITY_MICROMAP_2_STATE: + OptixInstanceFlags = 16; +pub const OptixInstanceFlags_OPTIX_INSTANCE_FLAG_DISABLE_OPACITY_MICROMAPS: OptixInstanceFlags = 32; pub type OptixInstanceFlags = ::std::os::raw::c_int; #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] @@ -414,7 +649,70 @@ pub const OptixBuildFlags_OPTIX_BUILD_FLAG_PREFER_FAST_TRACE: OptixBuildFlags = pub const OptixBuildFlags_OPTIX_BUILD_FLAG_PREFER_FAST_BUILD: OptixBuildFlags = 8; pub const OptixBuildFlags_OPTIX_BUILD_FLAG_ALLOW_RANDOM_VERTEX_ACCESS: OptixBuildFlags = 16; pub const OptixBuildFlags_OPTIX_BUILD_FLAG_ALLOW_RANDOM_INSTANCE_ACCESS: OptixBuildFlags = 32; +pub const OptixBuildFlags_OPTIX_BUILD_FLAG_ALLOW_OPACITY_MICROMAP_UPDATE: OptixBuildFlags = 64; +pub const OptixBuildFlags_OPTIX_BUILD_FLAG_ALLOW_DISABLE_OPACITY_MICROMAPS: OptixBuildFlags = 128; pub type OptixBuildFlags = ::std::os::raw::c_int; +pub const OptixOpacityMicromapFlags_OPTIX_OPACITY_MICROMAP_FLAG_NONE: OptixOpacityMicromapFlags = 0; +pub const OptixOpacityMicromapFlags_OPTIX_OPACITY_MICROMAP_FLAG_PREFER_FAST_TRACE: + OptixOpacityMicromapFlags = 1; +pub const OptixOpacityMicromapFlags_OPTIX_OPACITY_MICROMAP_FLAG_PREFER_FAST_BUILD: + OptixOpacityMicromapFlags = 2; +pub type OptixOpacityMicromapFlags = ::std::os::raw::c_int; +#[repr(C)] +#[derive(Debug, Default, Copy, Clone, PartialEq)] +pub struct OptixOpacityMicromapDesc { + pub byteOffset: ::std::os::raw::c_uint, + pub subdivisionLevel: ::std::os::raw::c_ushort, + pub format: ::std::os::raw::c_ushort, +} +#[repr(C)] +#[derive(Debug, Copy, Clone, PartialEq)] +pub struct OptixOpacityMicromapHistogramEntry { + pub count: ::std::os::raw::c_uint, + pub subdivisionLevel: ::std::os::raw::c_uint, + pub format: OptixOpacityMicromapFormat, +} +impl Default for OptixOpacityMicromapHistogramEntry { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +pub struct OptixOpacityMicromapArrayBuildInput { + pub flags: ::std::os::raw::c_uint, + pub inputBuffer: CUdeviceptr, + pub perMicromapDescBuffer: CUdeviceptr, + pub perMicromapDescStrideInBytes: ::std::os::raw::c_uint, + pub numMicromapHistogramEntries: ::std::os::raw::c_uint, + pub micromapHistogramEntries: *const OptixOpacityMicromapHistogramEntry, +} +impl Default for OptixOpacityMicromapArrayBuildInput { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +pub struct OptixMicromapBufferSizes { + pub outputSizeInBytes: size_t, + pub tempSizeInBytes: size_t, +} +impl Default for OptixMicromapBufferSizes { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} +#[repr(C)] +pub struct OptixMicromapBuffers { + pub output: CUdeviceptr, + pub outputSizeInBytes: size_t, + pub temp: CUdeviceptr, + pub tempSizeInBytes: size_t, +} +impl Default for OptixMicromapBuffers { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } +} pub const OptixBuildOperation_OPTIX_BUILD_OPERATION_BUILD: OptixBuildOperation = 8545; pub const OptixBuildOperation_OPTIX_BUILD_OPERATION_UPDATE: OptixBuildOperation = 8546; pub type OptixBuildOperation = ::std::os::raw::c_int; @@ -439,11 +737,7 @@ pub struct OptixAccelBuildOptions { } impl Default for OptixAccelBuildOptions { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } } } #[repr(C)] @@ -454,11 +748,7 @@ pub struct OptixAccelBufferSizes { } impl Default for OptixAccelBufferSizes { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } } } pub const OptixAccelPropertyType_OPTIX_PROPERTY_TYPE_COMPACTED_SIZE: OptixAccelPropertyType = 8577; @@ -471,16 +761,12 @@ pub struct OptixAccelEmitDesc { } impl Default for OptixAccelEmitDesc { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } } } #[repr(C)] #[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct OptixAccelRelocationInfo { +pub struct OptixRelocationInfo { pub info: [::std::os::raw::c_ulonglong; 4usize], } #[repr(C)] @@ -535,14 +821,17 @@ pub const OptixTraversableType_OPTIX_TRAVERSABLE_TYPE_SRT_MOTION_TRANSFORM: Opti pub type OptixTraversableType = ::std::os::raw::c_int; pub mod OptixPixelFormat { pub type Type = ::std::os::raw::c_int; + pub const OPTIX_PIXEL_FORMAT_HALF1: Type = 8714; pub const OPTIX_PIXEL_FORMAT_HALF2: Type = 8711; pub const OPTIX_PIXEL_FORMAT_HALF3: Type = 8705; pub const OPTIX_PIXEL_FORMAT_HALF4: Type = 8706; + pub const OPTIX_PIXEL_FORMAT_FLOAT1: Type = 8715; pub const OPTIX_PIXEL_FORMAT_FLOAT2: Type = 8712; pub const OPTIX_PIXEL_FORMAT_FLOAT3: Type = 8707; pub const OPTIX_PIXEL_FORMAT_FLOAT4: Type = 8708; pub const OPTIX_PIXEL_FORMAT_UCHAR3: Type = 8709; pub const OPTIX_PIXEL_FORMAT_UCHAR4: Type = 8710; + pub const OPTIX_PIXEL_FORMAT_INTERNAL_GUIDE_LAYER: Type = 8713; } #[repr(C)] pub struct OptixImage2D { @@ -555,11 +844,7 @@ pub struct OptixImage2D { } impl Default for OptixImage2D { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } } } pub mod OptixDenoiserModelKind { @@ -568,57 +853,68 @@ pub mod OptixDenoiserModelKind { pub const OPTIX_DENOISER_MODEL_KIND_HDR: Type = 8995; pub const OPTIX_DENOISER_MODEL_KIND_AOV: Type = 8996; pub const OPTIX_DENOISER_MODEL_KIND_TEMPORAL: Type = 8997; + pub const OPTIX_DENOISER_MODEL_KIND_TEMPORAL_AOV: Type = 8998; + pub const OPTIX_DENOISER_MODEL_KIND_UPSCALE2X: Type = 8999; + pub const OPTIX_DENOISER_MODEL_KIND_TEMPORAL_UPSCALE2X: Type = 9000; } +pub const OptixDenoiserAlphaMode_OPTIX_DENOISER_ALPHA_MODE_COPY: OptixDenoiserAlphaMode = 0; +pub const OptixDenoiserAlphaMode_OPTIX_DENOISER_ALPHA_MODE_DENOISE: OptixDenoiserAlphaMode = 1; +pub type OptixDenoiserAlphaMode = ::std::os::raw::c_int; #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] +#[derive(Debug, Copy, Clone, PartialEq)] pub struct OptixDenoiserOptions { pub guideAlbedo: ::std::os::raw::c_uint, pub guideNormal: ::std::os::raw::c_uint, + pub denoiseAlpha: OptixDenoiserAlphaMode, +} +impl Default for OptixDenoiserOptions { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } } #[repr(C)] pub struct OptixDenoiserGuideLayer { pub albedo: OptixImage2D, pub normal: OptixImage2D, pub flow: OptixImage2D, + pub previousOutputInternalGuideLayer: OptixImage2D, + pub outputInternalGuideLayer: OptixImage2D, + pub flowTrustworthiness: OptixImage2D, } impl Default for OptixDenoiserGuideLayer { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } } } +pub const OptixDenoiserAOVType_OPTIX_DENOISER_AOV_TYPE_NONE: OptixDenoiserAOVType = 0; +pub const OptixDenoiserAOVType_OPTIX_DENOISER_AOV_TYPE_BEAUTY: OptixDenoiserAOVType = 28672; +pub const OptixDenoiserAOVType_OPTIX_DENOISER_AOV_TYPE_SPECULAR: OptixDenoiserAOVType = 28673; +pub const OptixDenoiserAOVType_OPTIX_DENOISER_AOV_TYPE_REFLECTION: OptixDenoiserAOVType = 28674; +pub const OptixDenoiserAOVType_OPTIX_DENOISER_AOV_TYPE_REFRACTION: OptixDenoiserAOVType = 28675; +pub const OptixDenoiserAOVType_OPTIX_DENOISER_AOV_TYPE_DIFFUSE: OptixDenoiserAOVType = 28676; +pub type OptixDenoiserAOVType = ::std::os::raw::c_int; #[repr(C)] pub struct OptixDenoiserLayer { pub input: OptixImage2D, pub previousOutput: OptixImage2D, pub output: OptixImage2D, + pub type_: OptixDenoiserAOVType, } impl Default for OptixDenoiserLayer { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } } } #[repr(C)] pub struct OptixDenoiserParams { - pub denoiseAlpha: ::std::os::raw::c_uint, pub hdrIntensity: CUdeviceptr, pub blendFactor: f32, pub hdrAverageColor: CUdeviceptr, + pub temporalModeUsePreviousLayers: ::std::os::raw::c_uint, } impl Default for OptixDenoiserParams { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } } } #[repr(C)] @@ -627,14 +923,13 @@ pub struct OptixDenoiserSizes { pub withOverlapScratchSizeInBytes: size_t, pub withoutOverlapScratchSizeInBytes: size_t, pub overlapWindowSizeInPixels: ::std::os::raw::c_uint, + pub computeAverageColorSizeInBytes: size_t, + pub computeIntensitySizeInBytes: size_t, + pub internalGuideLayerPixelSizeInBytes: size_t, } impl Default for OptixDenoiserSizes { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } } } pub const OptixRayFlags_OPTIX_RAY_FLAG_NONE: OptixRayFlags = 0; @@ -646,6 +941,7 @@ pub const OptixRayFlags_OPTIX_RAY_FLAG_CULL_BACK_FACING_TRIANGLES: OptixRayFlags pub const OptixRayFlags_OPTIX_RAY_FLAG_CULL_FRONT_FACING_TRIANGLES: OptixRayFlags = 32; pub const OptixRayFlags_OPTIX_RAY_FLAG_CULL_DISABLED_ANYHIT: OptixRayFlags = 64; pub const OptixRayFlags_OPTIX_RAY_FLAG_CULL_ENFORCED_ANYHIT: OptixRayFlags = 128; +pub const OptixRayFlags_OPTIX_RAY_FLAG_FORCE_OPACITY_MICROMAP_2_STATE: OptixRayFlags = 1024; pub type OptixRayFlags = ::std::os::raw::c_int; pub const OptixTransformType_OPTIX_TRANSFORM_TYPE_NONE: OptixTransformType = 0; pub const OptixTransformType_OPTIX_TRANSFORM_TYPE_STATIC_TRANSFORM: OptixTransformType = 1; @@ -671,9 +967,20 @@ pub mod OptixCompileDebugLevel { pub type Type = ::std::os::raw::c_int; pub const OPTIX_COMPILE_DEBUG_LEVEL_DEFAULT: Type = 0; pub const OPTIX_COMPILE_DEBUG_LEVEL_NONE: Type = 9040; - pub const OPTIX_COMPILE_DEBUG_LEVEL_LINEINFO: Type = 9041; + pub const OPTIX_COMPILE_DEBUG_LEVEL_MINIMAL: Type = 9041; + pub const OPTIX_COMPILE_DEBUG_LEVEL_MODERATE: Type = 9043; pub const OPTIX_COMPILE_DEBUG_LEVEL_FULL: Type = 9042; } +pub const OptixModuleCompileState_OPTIX_MODULE_COMPILE_STATE_NOT_STARTED: OptixModuleCompileState = + 9056; +pub const OptixModuleCompileState_OPTIX_MODULE_COMPILE_STATE_STARTED: OptixModuleCompileState = + 9057; +pub const OptixModuleCompileState_OPTIX_MODULE_COMPILE_STATE_IMPENDING_FAILURE: + OptixModuleCompileState = 9058; +pub const OptixModuleCompileState_OPTIX_MODULE_COMPILE_STATE_FAILED: OptixModuleCompileState = 9059; +pub const OptixModuleCompileState_OPTIX_MODULE_COMPILE_STATE_COMPLETED: OptixModuleCompileState = + 9060; +pub type OptixModuleCompileState = ::std::os::raw::c_int; #[repr(C)] pub struct OptixModuleCompileBoundValueEntry { pub pipelineParamOffsetInBytes: size_t, @@ -683,11 +990,53 @@ pub struct OptixModuleCompileBoundValueEntry { } impl Default for OptixModuleCompileBoundValueEntry { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } + } +} +pub const OptixPayloadTypeID_OPTIX_PAYLOAD_TYPE_DEFAULT: OptixPayloadTypeID = 0; +pub const OptixPayloadTypeID_OPTIX_PAYLOAD_TYPE_ID_0: OptixPayloadTypeID = 1; +pub const OptixPayloadTypeID_OPTIX_PAYLOAD_TYPE_ID_1: OptixPayloadTypeID = 2; +pub const OptixPayloadTypeID_OPTIX_PAYLOAD_TYPE_ID_2: OptixPayloadTypeID = 4; +pub const OptixPayloadTypeID_OPTIX_PAYLOAD_TYPE_ID_3: OptixPayloadTypeID = 8; +pub const OptixPayloadTypeID_OPTIX_PAYLOAD_TYPE_ID_4: OptixPayloadTypeID = 16; +pub const OptixPayloadTypeID_OPTIX_PAYLOAD_TYPE_ID_5: OptixPayloadTypeID = 32; +pub const OptixPayloadTypeID_OPTIX_PAYLOAD_TYPE_ID_6: OptixPayloadTypeID = 64; +pub const OptixPayloadTypeID_OPTIX_PAYLOAD_TYPE_ID_7: OptixPayloadTypeID = 128; +pub type OptixPayloadTypeID = ::std::os::raw::c_int; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_TRACE_CALLER_NONE: OptixPayloadSemantics = + 0; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_TRACE_CALLER_READ: OptixPayloadSemantics = + 1; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_TRACE_CALLER_WRITE: OptixPayloadSemantics = + 2; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_TRACE_CALLER_READ_WRITE: + OptixPayloadSemantics = 3; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_CH_NONE: OptixPayloadSemantics = 0; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_CH_READ: OptixPayloadSemantics = 4; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_CH_WRITE: OptixPayloadSemantics = 8; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_CH_READ_WRITE: OptixPayloadSemantics = 12; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_MS_NONE: OptixPayloadSemantics = 0; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_MS_READ: OptixPayloadSemantics = 16; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_MS_WRITE: OptixPayloadSemantics = 32; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_MS_READ_WRITE: OptixPayloadSemantics = 48; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_AH_NONE: OptixPayloadSemantics = 0; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_AH_READ: OptixPayloadSemantics = 64; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_AH_WRITE: OptixPayloadSemantics = 128; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_AH_READ_WRITE: OptixPayloadSemantics = 192; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_IS_NONE: OptixPayloadSemantics = 0; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_IS_READ: OptixPayloadSemantics = 256; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_IS_WRITE: OptixPayloadSemantics = 512; +pub const OptixPayloadSemantics_OPTIX_PAYLOAD_SEMANTICS_IS_READ_WRITE: OptixPayloadSemantics = 768; +pub type OptixPayloadSemantics = ::std::os::raw::c_int; +#[repr(C)] +#[derive(Debug, Copy, Clone, PartialEq)] +pub struct OptixPayloadType { + pub numPayloadValues: ::std::os::raw::c_uint, + pub payloadSemantics: *const ::std::os::raw::c_uint, +} +impl Default for OptixPayloadType { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } } } #[repr(C)] @@ -698,14 +1047,12 @@ pub struct OptixModuleCompileOptions { pub debugLevel: OptixCompileDebugLevel::Type, pub boundValues: *const OptixModuleCompileBoundValueEntry, pub numBoundValues: ::std::os::raw::c_uint, + pub numPayloadTypes: ::std::os::raw::c_uint, + pub payloadTypes: *const OptixPayloadType, } impl Default for OptixModuleCompileOptions { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } } } pub mod OptixProgramGroupKind { @@ -726,11 +1073,7 @@ pub struct OptixProgramGroupSingleModule { } impl Default for OptixProgramGroupSingleModule { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } } } #[repr(C)] @@ -745,11 +1088,7 @@ pub struct OptixProgramGroupHitgroup { } impl Default for OptixProgramGroupHitgroup { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } } } #[repr(C)] @@ -762,11 +1101,7 @@ pub struct OptixProgramGroupCallables { } impl Default for OptixProgramGroupCallables { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } } } #[repr(C)] @@ -787,58 +1122,26 @@ pub union OptixProgramGroupDesc__bindgen_ty_1 { } impl Default for OptixProgramGroupDesc__bindgen_ty_1 { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } } } impl Default for OptixProgramGroupDesc { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } } } #[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] +#[derive(Debug, Copy, Clone, PartialEq)] pub struct OptixProgramGroupOptions { - pub reserved: ::std::os::raw::c_int, + pub payloadType: *const OptixPayloadType, +} +impl Default for OptixProgramGroupOptions { + fn default() -> Self { + unsafe { ::std::mem::zeroed() } + } } pub const OptixExceptionCodes_OPTIX_EXCEPTION_CODE_STACK_OVERFLOW: OptixExceptionCodes = -1; pub const OptixExceptionCodes_OPTIX_EXCEPTION_CODE_TRACE_DEPTH_EXCEEDED: OptixExceptionCodes = -2; -pub const OptixExceptionCodes_OPTIX_EXCEPTION_CODE_TRAVERSAL_DEPTH_EXCEEDED: OptixExceptionCodes = - -3; -pub const OptixExceptionCodes_OPTIX_EXCEPTION_CODE_TRAVERSAL_INVALID_TRAVERSABLE: - OptixExceptionCodes = -5; -pub const OptixExceptionCodes_OPTIX_EXCEPTION_CODE_TRAVERSAL_INVALID_MISS_SBT: OptixExceptionCodes = - -6; -pub const OptixExceptionCodes_OPTIX_EXCEPTION_CODE_TRAVERSAL_INVALID_HIT_SBT: OptixExceptionCodes = - -7; -pub const OptixExceptionCodes_OPTIX_EXCEPTION_CODE_UNSUPPORTED_PRIMITIVE_TYPE: OptixExceptionCodes = - -8; -pub const OptixExceptionCodes_OPTIX_EXCEPTION_CODE_INVALID_RAY: OptixExceptionCodes = -9; -pub const OptixExceptionCodes_OPTIX_EXCEPTION_CODE_CALLABLE_PARAMETER_MISMATCH: - OptixExceptionCodes = -10; -pub const OptixExceptionCodes_OPTIX_EXCEPTION_CODE_BUILTIN_IS_MISMATCH: OptixExceptionCodes = -11; -pub const OptixExceptionCodes_OPTIX_EXCEPTION_CODE_CALLABLE_INVALID_SBT: OptixExceptionCodes = -12; -pub const OptixExceptionCodes_OPTIX_EXCEPTION_CODE_CALLABLE_NO_DC_SBT_RECORD: OptixExceptionCodes = - -13; -pub const OptixExceptionCodes_OPTIX_EXCEPTION_CODE_CALLABLE_NO_CC_SBT_RECORD: OptixExceptionCodes = - -14; -pub const OptixExceptionCodes_OPTIX_EXCEPTION_CODE_UNSUPPORTED_SINGLE_LEVEL_GAS: - OptixExceptionCodes = -15; -pub const OptixExceptionCodes_OPTIX_EXCEPTION_CODE_INVALID_VALUE_ARGUMENT_0: OptixExceptionCodes = - -16; -pub const OptixExceptionCodes_OPTIX_EXCEPTION_CODE_INVALID_VALUE_ARGUMENT_1: OptixExceptionCodes = - -17; -pub const OptixExceptionCodes_OPTIX_EXCEPTION_CODE_INVALID_VALUE_ARGUMENT_2: OptixExceptionCodes = - -18; -pub const OptixExceptionCodes_OPTIX_EXCEPTION_CODE_UNSUPPORTED_DATA_ACCESS: OptixExceptionCodes = - -32; pub type OptixExceptionCodes = ::std::os::raw::c_int; pub mod OptixExceptionFlags { pub type Type = ::std::os::raw::c_int; @@ -846,9 +1149,9 @@ pub mod OptixExceptionFlags { pub const OPTIX_EXCEPTION_FLAG_STACK_OVERFLOW: Type = 1; pub const OPTIX_EXCEPTION_FLAG_TRACE_DEPTH: Type = 2; pub const OPTIX_EXCEPTION_FLAG_USER: Type = 4; - pub const OPTIX_EXCEPTION_FLAG_DEBUG: Type = 8; } #[repr(C)] +#[derive(Debug, Copy, Clone, PartialEq)] pub struct OptixPipelineCompileOptions { pub usesMotionBlur: ::std::os::raw::c_int, pub traversableGraphFlags: ::std::os::raw::c_uint, @@ -857,32 +1160,17 @@ pub struct OptixPipelineCompileOptions { pub exceptionFlags: ::std::os::raw::c_uint, pub pipelineLaunchParamsVariableName: *const ::std::os::raw::c_char, pub usesPrimitiveTypeFlags: ::std::os::raw::c_uint, - pub reserved: ::std::os::raw::c_uint, - pub reserved2: size_t, + pub allowOpacityMicromaps: ::std::os::raw::c_int, } impl Default for OptixPipelineCompileOptions { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } } } #[repr(C)] -#[derive(Debug, Copy, Clone, PartialEq)] +#[derive(Debug, Default, Copy, Clone, PartialEq)] pub struct OptixPipelineLinkOptions { pub maxTraceDepth: ::std::os::raw::c_uint, - pub debugLevel: OptixCompileDebugLevel::Type, -} -impl Default for OptixPipelineLinkOptions { - fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } - } } #[repr(C)] pub struct OptixShaderBindingTable { @@ -900,11 +1188,7 @@ pub struct OptixShaderBindingTable { } impl Default for OptixShaderBindingTable { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } } } #[repr(C)] @@ -936,14 +1220,12 @@ pub type OptixQueryFunctionTable_t = ::std::option::Option< pub struct OptixBuiltinISOptions { pub builtinISModuleType: OptixPrimitiveType, pub usesMotionBlur: ::std::os::raw::c_int, + pub buildFlags: ::std::os::raw::c_uint, + pub curveEndcapFlags: ::std::os::raw::c_uint, } impl Default for OptixBuiltinISOptions { fn default() -> Self { - let mut s = ::std::mem::MaybeUninit::::uninit(); - unsafe { - ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1); - s.assume_init() - } + unsafe { ::std::mem::zeroed() } } } extern "C" { @@ -1042,17 +1324,36 @@ extern "C" { ) -> OptixResult; } extern "C" { - pub fn optixModuleCreateFromPTX( + pub fn optixModuleCreate( context: OptixDeviceContext, moduleCompileOptions: *const OptixModuleCompileOptions, pipelineCompileOptions: *const OptixPipelineCompileOptions, - PTX: *const ::std::os::raw::c_char, - PTXsize: size_t, + input: *const ::std::os::raw::c_char, + inputSize: size_t, logString: *mut ::std::os::raw::c_char, logStringSize: *mut size_t, module: *mut OptixModule, ) -> OptixResult; } +extern "C" { + pub fn optixModuleCreateWithTasks( + context: OptixDeviceContext, + moduleCompileOptions: *const OptixModuleCompileOptions, + pipelineCompileOptions: *const OptixPipelineCompileOptions, + input: *const ::std::os::raw::c_char, + inputSize: size_t, + logString: *mut ::std::os::raw::c_char, + logStringSize: *mut size_t, + module: *mut OptixModule, + firstTask: *mut OptixTask, + ) -> OptixResult; +} +extern "C" { + pub fn optixModuleGetCompilationState( + module: OptixModule, + state: *mut OptixModuleCompileState, + ) -> OptixResult; +} extern "C" { pub fn optixModuleDestroy(module: OptixModule) -> OptixResult; } @@ -1065,10 +1366,19 @@ extern "C" { builtinModule: *mut OptixModule, ) -> OptixResult; } +extern "C" { + pub fn optixTaskExecute( + task: OptixTask, + additionalTasks: *mut OptixTask, + maxNumAdditionalTasks: ::std::os::raw::c_uint, + numAdditionalTasksCreated: *mut ::std::os::raw::c_uint, + ) -> OptixResult; +} extern "C" { pub fn optixProgramGroupGetStackSize( programGroup: OptixProgramGroup, stackSizes: *mut OptixStackSizes, + pipeline: OptixPipeline, ) -> OptixResult; } extern "C" { @@ -1132,13 +1442,13 @@ extern "C" { pub fn optixAccelGetRelocationInfo( context: OptixDeviceContext, handle: OptixTraversableHandle, - info: *mut OptixAccelRelocationInfo, + info: *mut OptixRelocationInfo, ) -> OptixResult; } extern "C" { - pub fn optixAccelCheckRelocationCompatibility( + pub fn optixCheckRelocationCompatibility( context: OptixDeviceContext, - info: *const OptixAccelRelocationInfo, + info: *const OptixRelocationInfo, compatible: *mut ::std::os::raw::c_int, ) -> OptixResult; } @@ -1146,9 +1456,9 @@ extern "C" { pub fn optixAccelRelocate( context: OptixDeviceContext, stream: CUstream, - info: *const OptixAccelRelocationInfo, - instanceTraversableHandles: CUdeviceptr, - numInstanceTraversableHandles: size_t, + info: *const OptixRelocationInfo, + relocateInputs: *const OptixRelocateInput, + numRelocateInputs: size_t, targetAccel: CUdeviceptr, targetAccelSizeInBytes: size_t, targetHandle: *mut OptixTraversableHandle, @@ -1164,6 +1474,14 @@ extern "C" { outputHandle: *mut OptixTraversableHandle, ) -> OptixResult; } +extern "C" { + pub fn optixAccelEmitProperty( + context: OptixDeviceContext, + stream: CUstream, + handle: OptixTraversableHandle, + emittedProperty: *const OptixAccelEmitDesc, + ) -> OptixResult; +} extern "C" { pub fn optixConvertPointerToTraversableHandle( onDevice: OptixDeviceContext, @@ -1172,6 +1490,52 @@ extern "C" { traversableHandle: *mut OptixTraversableHandle, ) -> OptixResult; } +extern "C" { + pub fn optixOpacityMicromapArrayComputeMemoryUsage( + context: OptixDeviceContext, + buildInput: *const OptixOpacityMicromapArrayBuildInput, + bufferSizes: *mut OptixMicromapBufferSizes, + ) -> OptixResult; +} +extern "C" { + pub fn optixOpacityMicromapArrayBuild( + context: OptixDeviceContext, + stream: CUstream, + buildInput: *const OptixOpacityMicromapArrayBuildInput, + buffers: *const OptixMicromapBuffers, + ) -> OptixResult; +} +extern "C" { + pub fn optixOpacityMicromapArrayGetRelocationInfo( + context: OptixDeviceContext, + opacityMicromapArray: CUdeviceptr, + info: *mut OptixRelocationInfo, + ) -> OptixResult; +} +extern "C" { + pub fn optixOpacityMicromapArrayRelocate( + context: OptixDeviceContext, + stream: CUstream, + info: *const OptixRelocationInfo, + targetOpacityMicromapArray: CUdeviceptr, + targetOpacityMicromapArraySizeInBytes: size_t, + ) -> OptixResult; +} +extern "C" { + pub fn optixDisplacementMicromapArrayComputeMemoryUsage( + context: OptixDeviceContext, + buildInput: *const OptixDisplacementMicromapArrayBuildInput, + bufferSizes: *mut OptixMicromapBufferSizes, + ) -> OptixResult; +} +extern "C" { + pub fn optixDisplacementMicromapArrayBuild( + context: OptixDeviceContext, + stream: CUstream, + buildInput: *const OptixDisplacementMicromapArrayBuildInput, + buffers: *const OptixMicromapBuffers, + ) -> OptixResult; +} extern "C" { pub fn optixDenoiserCreate( context: OptixDeviceContext, @@ -1320,16 +1684,35 @@ pub struct OptixFunctionTable { highWaterMark: *mut size_t, ) -> OptixResult, >, - pub optixModuleCreateFromPTX: ::std::option::Option< + pub optixModuleCreate: ::std::option::Option< + unsafe extern "C" fn( + context: OptixDeviceContext, + moduleCompileOptions: *const OptixModuleCompileOptions, + pipelineCompileOptions: *const OptixPipelineCompileOptions, + input: *const ::std::os::raw::c_char, + inputSize: size_t, + logString: *mut ::std::os::raw::c_char, + logStringSize: *mut size_t, + module: *mut OptixModule, + ) -> OptixResult, + >, + pub optixModuleCreateWithTasks: ::std::option::Option< unsafe extern "C" fn( context: OptixDeviceContext, moduleCompileOptions: *const OptixModuleCompileOptions, pipelineCompileOptions: *const OptixPipelineCompileOptions, - PTX: *const ::std::os::raw::c_char, - PTXsize: size_t, + input: *const ::std::os::raw::c_char, + inputSize: size_t, logString: *mut ::std::os::raw::c_char, logStringSize: *mut size_t, module: *mut OptixModule, + firstTask: *mut OptixTask, + ) -> OptixResult, + >, + pub optixModuleGetCompilationState: ::std::option::Option< + unsafe extern "C" fn( + module: OptixModule, + state: *mut OptixModuleCompileState, ) -> OptixResult, >, pub optixModuleDestroy: @@ -1343,6 +1726,14 @@ pub struct OptixFunctionTable { builtinModule: *mut OptixModule, ) -> OptixResult, >, + pub optixTaskExecute: ::std::option::Option< + unsafe extern "C" fn( + task: OptixTask, + additionalTasks: *mut OptixTask, + maxNumAdditionalTasks: ::std::os::raw::c_uint, + numAdditionalTasksCreated: *mut ::std::os::raw::c_uint, + ) -> OptixResult, + >, pub optixProgramGroupCreate: ::std::option::Option< unsafe extern "C" fn( context: OptixDeviceContext, @@ -1360,6 +1751,7 @@ pub struct OptixFunctionTable { unsafe extern "C" fn( programGroup: OptixProgramGroup, stackSizes: *mut OptixStackSizes, + pipeline: OptixPipeline, ) -> OptixResult, >, pub optixPipelineCreate: ::std::option::Option< @@ -1414,13 +1806,13 @@ pub struct OptixFunctionTable { unsafe extern "C" fn( context: OptixDeviceContext, handle: OptixTraversableHandle, - info: *mut OptixAccelRelocationInfo, + info: *mut OptixRelocationInfo, ) -> OptixResult, >, - pub optixAccelCheckRelocationCompatibility: ::std::option::Option< + pub optixCheckRelocationCompatibility: ::std::option::Option< unsafe extern "C" fn( context: OptixDeviceContext, - info: *const OptixAccelRelocationInfo, + info: *const OptixRelocationInfo, compatible: *mut ::std::os::raw::c_int, ) -> OptixResult, >, @@ -1428,9 +1820,9 @@ pub struct OptixFunctionTable { unsafe extern "C" fn( context: OptixDeviceContext, stream: CUstream, - info: *const OptixAccelRelocationInfo, - instanceTraversableHandles: CUdeviceptr, - numInstanceTraversableHandles: size_t, + info: *const OptixRelocationInfo, + relocateInputs: *const OptixRelocateInput, + numRelocateInputs: size_t, targetAccel: CUdeviceptr, targetAccelSizeInBytes: size_t, targetHandle: *mut OptixTraversableHandle, @@ -1446,6 +1838,14 @@ pub struct OptixFunctionTable { outputHandle: *mut OptixTraversableHandle, ) -> OptixResult, >, + pub optixAccelEmitProperty: ::std::option::Option< + unsafe extern "C" fn( + context: OptixDeviceContext, + stream: CUstream, + handle: OptixTraversableHandle, + emittedProperty: *const OptixAccelEmitDesc, + ) -> OptixResult, + >, pub optixConvertPointerToTraversableHandle: ::std::option::Option< unsafe extern "C" fn( onDevice: OptixDeviceContext, @@ -1454,6 +1854,52 @@ pub struct OptixFunctionTable { traversableHandle: *mut OptixTraversableHandle, ) -> OptixResult, >, + pub optixOpacityMicromapArrayComputeMemoryUsage: ::std::option::Option< + unsafe extern "C" fn( + context: OptixDeviceContext, + buildInput: *const OptixOpacityMicromapArrayBuildInput, + bufferSizes: *mut OptixMicromapBufferSizes, + ) -> OptixResult, + >, + pub optixOpacityMicromapArrayBuild: ::std::option::Option< + unsafe extern "C" fn( + context: OptixDeviceContext, + stream: CUstream, + buildInput: *const OptixOpacityMicromapArrayBuildInput, + buffers: *const OptixMicromapBuffers, + ) -> OptixResult, + >, + pub optixOpacityMicromapArrayGetRelocationInfo: ::std::option::Option< + unsafe extern "C" fn( + context: OptixDeviceContext, + opacityMicromapArray: CUdeviceptr, + info: *mut OptixRelocationInfo, + ) -> OptixResult, + >, + pub optixOpacityMicromapArrayRelocate: ::std::option::Option< + unsafe extern "C" fn( + context: OptixDeviceContext, + stream: CUstream, + info: *const OptixRelocationInfo, + targetOpacityMicromapArray: CUdeviceptr, + targetOpacityMicromapArraySizeInBytes: size_t, + ) -> OptixResult, + >, + pub optixDisplacementMicromapArrayComputeMemoryUsage: ::std::option::Option< + unsafe extern "C" fn( + context: OptixDeviceContext, + buildInput: *const OptixDisplacementMicromapArrayBuildInput, + bufferSizes: *mut OptixMicromapBufferSizes, + ) -> OptixResult, + >, + pub optixDisplacementMicromapArrayBuild: ::std::option::Option< + unsafe extern "C" fn( + context: OptixDeviceContext, + stream: CUstream, + buildInput: *const OptixDisplacementMicromapArrayBuildInput, + buffers: *const OptixMicromapBuffers, + ) -> OptixResult, + >, pub optixSbtRecordPackHeader: ::std::option::Option< unsafe extern "C" fn( programGroup: OptixProgramGroup, @@ -1472,6 +1918,10 @@ pub struct OptixFunctionTable { depth: ::std::os::raw::c_uint, ) -> OptixResult, >, + pub optixPlaceholder001: + ::std::option::Option OptixResult>, + pub optixPlaceholder002: + ::std::option::Option OptixResult>, pub optixDenoiserCreate: ::std::option::Option< unsafe extern "C" fn( context: OptixDeviceContext, @@ -1554,7 +2004,7 @@ pub const OptixInstanceByteAlignment: size_t = 16; pub const OptixAabbBufferByteAlignment: size_t = 8; pub const OptixGeometryTransformByteAlignment: size_t = 16; pub const OptixTransformByteAlignment: size_t = 64; -pub const OptixVersion: size_t = 70300; +pub const OptixVersion: size_t = 80100; pub const OptixBuildInputSize: size_t = 1032; pub const OptixShaderBindingTableSize: size_t = 64; #[repr(i32)] diff --git a/examples/cuda/cpu/path_tracer/Cargo.toml b/examples/cuda/cpu/path_tracer/Cargo.toml index 14c1987d..077b59c8 100644 --- a/examples/cuda/cpu/path_tracer/Cargo.toml +++ b/examples/cuda/cpu/path_tracer/Cargo.toml @@ -7,7 +7,7 @@ edition = "2018" vek = { version = "0.17.1", features = ["bytemuck", "mint"] } bytemuck = { version = "1.21", features = ["derive"] } cust = { version = "0.3", path = "../../../../crates/cust", features = ["impl_vek"] } -image = "0.25.5" +image = "0.23" path_tracer_gpu = { path = "../../gpu/path_tracer_gpu" } gpu_rand = { version = "0.1", path = "../../../../crates/gpu_rand" } optix = { version = "0.1", path = "../../../../crates/optix" } @@ -17,7 +17,7 @@ imgui = "0.8.0" imgui-glium-renderer = "0.8.0" imgui-winit-support = "0.8.0" rayon = "1.10" -sysinfo = "0.33.1" +sysinfo = "0.30" anyhow = "1.0.53" [build-dependencies] diff --git a/examples/optix/denoiser/Cargo.toml b/examples/optix/denoiser/Cargo.toml index 134beb20..47157b41 100644 --- a/examples/optix/denoiser/Cargo.toml +++ b/examples/optix/denoiser/Cargo.toml @@ -7,5 +7,5 @@ edition = "2021" optix = { version = "0.1", path = "../../../crates/optix" } structopt = "0.3" cust = { version = "0.3", path = "../../../crates/cust", features = ["impl_vek", "bytemuck"] } -image = "0.25.5" +image = "0.23" vek = { version = "0.17.1", features = ["bytemuck"] } diff --git a/rust-toolchain b/rust-toolchain index 4937196f..3d3bbe01 100644 --- a/rust-toolchain +++ b/rust-toolchain @@ -5,5 +5,5 @@ # to the user in the error, instead of "error: invalid channel name '[toolchain]'". [toolchain] -channel = "nightly-2025-01-23" +channel = "nightly-2023-04-15" components = ["rust-src", "rustc-dev", "llvm-tools-preview"] \ No newline at end of file