diff --git a/crates/optix/build.rs b/crates/optix/build.rs index 1356645d..c1783718 100644 --- a/crates/optix/build.rs +++ b/crates/optix/build.rs @@ -90,11 +90,6 @@ fn bindgen_optix(optix_include: &Path, cuda_include: &Path) { .generate() .expect("Unable to generate optix bindings"); - let dbg_path = std::path::PathBuf::from(std::env::var("CARGO_MANIFEST_DIR").unwrap()); - bindings - .write_to_file(dbg_path.join("optix_wrapper.rs")) - .expect("Couldn't write bindings!"); - bindings .write_to_file(out_path) .expect("Couldn't write bindings!"); diff --git a/crates/optix/examples/rust/ex04_mesh_gpu/src/lib.rs b/crates/optix/examples/rust/ex04_mesh_gpu/src/lib.rs index 4a82a710..ea2877c1 100644 --- a/crates/optix/examples/rust/ex04_mesh_gpu/src/lib.rs +++ b/crates/optix/examples/rust/ex04_mesh_gpu/src/lib.rs @@ -4,7 +4,6 @@ use cuda_std::kernel; use optix_device::{ closesthit, get_launch_index, glam::*, - misc::*, payload, trace::TraversableHandle, trace::{trace, RayFlags}, diff --git a/crates/optix/optix_wrapper.rs b/crates/optix/optix_wrapper.rs deleted file mode 100644 index 7f9740db..00000000 --- a/crates/optix/optix_wrapper.rs +++ /dev/null @@ -1,1552 +0,0 @@ -/* automatically generated by rust-bindgen 0.71.1 */ - -#[repr(C)] -pub struct __BindgenUnionField(::std::marker::PhantomData); -impl __BindgenUnionField { - #[inline] - pub const fn new() -> Self { - __BindgenUnionField(::std::marker::PhantomData) - } - #[inline] - pub unsafe fn as_ref(&self) -> &T { - ::std::mem::transmute(self) - } - #[inline] - pub unsafe fn as_mut(&mut self) -> &mut T { - ::std::mem::transmute(self) - } -} -impl ::std::default::Default for __BindgenUnionField { - #[inline] - fn default() -> Self { - Self::new() - } -} -impl ::std::clone::Clone for __BindgenUnionField { - #[inline] - fn clone(&self) -> Self { - *self - } -} -impl ::std::marker::Copy for __BindgenUnionField {} -impl ::std::fmt::Debug for __BindgenUnionField { - fn fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { - fmt.write_str("__BindgenUnionField") - } -} -impl ::std::hash::Hash for __BindgenUnionField { - fn hash(&self, _state: &mut H) {} -} -impl ::std::cmp::PartialEq for __BindgenUnionField { - fn eq(&self, _other: &__BindgenUnionField) -> bool { - true - } -} -impl ::std::cmp::Eq for __BindgenUnionField {} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct OptixDeviceContext_t { - _unused: [u8; 0], -} -pub type OptixDeviceContext = *mut OptixDeviceContext_t; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct OptixModule_t { - _unused: [u8; 0], -} -pub type OptixModule = *mut OptixModule_t; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct OptixProgramGroup_t { - _unused: [u8; 0], -} -pub type OptixProgramGroup = *mut OptixProgramGroup_t; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct OptixPipeline_t { - _unused: [u8; 0], -} -pub type OptixPipeline = *mut OptixPipeline_t; -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct OptixDenoiser_t { - _unused: [u8; 0], -} -pub type OptixDenoiser = *mut OptixDenoiser_t; -pub type OptixTraversableHandle = ::std::os::raw::c_ulonglong; -pub type OptixVisibilityMask = ::std::os::raw::c_uint; -impl OptixResult { - pub const OPTIX_SUCCESS: OptixResult = OptixResult(0); -} -impl OptixResult { - pub const OPTIX_ERROR_INVALID_VALUE: OptixResult = OptixResult(7001); -} -impl OptixResult { - pub const OPTIX_ERROR_HOST_OUT_OF_MEMORY: OptixResult = OptixResult(7002); -} -impl OptixResult { - pub const OPTIX_ERROR_INVALID_OPERATION: OptixResult = OptixResult(7003); -} -impl OptixResult { - pub const OPTIX_ERROR_FILE_IO_ERROR: OptixResult = OptixResult(7004); -} -impl OptixResult { - pub const OPTIX_ERROR_INVALID_FILE_FORMAT: OptixResult = OptixResult(7005); -} -impl OptixResult { - pub const OPTIX_ERROR_DISK_CACHE_INVALID_PATH: OptixResult = OptixResult(7010); -} -impl OptixResult { - pub const OPTIX_ERROR_DISK_CACHE_PERMISSION_ERROR: OptixResult = OptixResult(7011); -} -impl OptixResult { - pub const OPTIX_ERROR_DISK_CACHE_DATABASE_ERROR: OptixResult = OptixResult(7012); -} -impl OptixResult { - pub const OPTIX_ERROR_DISK_CACHE_INVALID_DATA: OptixResult = OptixResult(7013); -} -impl OptixResult { - pub const OPTIX_ERROR_LAUNCH_FAILURE: OptixResult = OptixResult(7050); -} -impl OptixResult { - pub const OPTIX_ERROR_INVALID_DEVICE_CONTEXT: OptixResult = OptixResult(7051); -} -impl OptixResult { - pub const OPTIX_ERROR_CUDA_NOT_INITIALIZED: OptixResult = OptixResult(7052); -} -impl OptixResult { - pub const OPTIX_ERROR_VALIDATION_FAILURE: OptixResult = OptixResult(7053); -} -impl OptixResult { - pub const OPTIX_ERROR_INVALID_PTX: OptixResult = OptixResult(7200); -} -impl OptixResult { - pub const OPTIX_ERROR_INVALID_LAUNCH_PARAMETER: OptixResult = OptixResult(7201); -} -impl OptixResult { - pub const OPTIX_ERROR_INVALID_PAYLOAD_ACCESS: OptixResult = OptixResult(7202); -} -impl OptixResult { - pub const OPTIX_ERROR_INVALID_ATTRIBUTE_ACCESS: OptixResult = OptixResult(7203); -} -impl OptixResult { - pub const OPTIX_ERROR_INVALID_FUNCTION_USE: OptixResult = OptixResult(7204); -} -impl OptixResult { - pub const OPTIX_ERROR_INVALID_FUNCTION_ARGUMENTS: OptixResult = OptixResult(7205); -} -impl OptixResult { - pub const OPTIX_ERROR_PIPELINE_OUT_OF_CONSTANT_MEMORY: OptixResult = OptixResult(7250); -} -impl OptixResult { - pub const OPTIX_ERROR_PIPELINE_LINK_ERROR: OptixResult = OptixResult(7251); -} -impl OptixResult { - pub const OPTIX_ERROR_ILLEGAL_DURING_TASK_EXECUTE: OptixResult = OptixResult(7270); -} -impl OptixResult { - pub const OPTIX_ERROR_INTERNAL_COMPILER_ERROR: OptixResult = OptixResult(7299); -} -impl OptixResult { - pub const OPTIX_ERROR_DENOISER_MODEL_NOT_SET: OptixResult = OptixResult(7300); -} -impl OptixResult { - pub const OPTIX_ERROR_DENOISER_NOT_INITIALIZED: OptixResult = OptixResult(7301); -} -impl OptixResult { - pub const OPTIX_ERROR_ACCEL_NOT_COMPATIBLE: OptixResult = OptixResult(7400); -} -impl OptixResult { - pub const OPTIX_ERROR_NOT_SUPPORTED: OptixResult = OptixResult(7800); -} -impl OptixResult { - pub const OPTIX_ERROR_UNSUPPORTED_ABI_VERSION: OptixResult = OptixResult(7801); -} -impl OptixResult { - pub const OPTIX_ERROR_FUNCTION_TABLE_SIZE_MISMATCH: OptixResult = OptixResult(7802); -} -impl OptixResult { - pub const OPTIX_ERROR_INVALID_ENTRY_FUNCTION_OPTIONS: OptixResult = OptixResult(7803); -} -impl OptixResult { - pub const OPTIX_ERROR_LIBRARY_NOT_FOUND: OptixResult = OptixResult(7804); -} -impl OptixResult { - pub const OPTIX_ERROR_ENTRY_SYMBOL_NOT_FOUND: OptixResult = OptixResult(7805); -} -impl OptixResult { - pub const OPTIX_ERROR_LIBRARY_UNLOAD_FAILURE: OptixResult = OptixResult(7806); -} -impl OptixResult { - pub const OPTIX_ERROR_CUDA_ERROR: OptixResult = OptixResult(7900); -} -impl OptixResult { - pub const OPTIX_ERROR_INTERNAL_ERROR: OptixResult = OptixResult(7990); -} -impl OptixResult { - pub const OPTIX_ERROR_UNKNOWN: OptixResult = OptixResult(7999); -} -#[repr(transparent)] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub struct OptixResult(pub ::std::os::raw::c_int); -pub mod OptixDeviceProperty { - pub type Type = ::std::os::raw::c_int; - pub const OPTIX_DEVICE_PROPERTY_LIMIT_MAX_TRACE_DEPTH: Type = 8193; - pub const OPTIX_DEVICE_PROPERTY_LIMIT_MAX_TRAVERSABLE_GRAPH_DEPTH: Type = 8194; - pub const OPTIX_DEVICE_PROPERTY_LIMIT_MAX_PRIMITIVES_PER_GAS: Type = 8195; - pub const OPTIX_DEVICE_PROPERTY_LIMIT_MAX_INSTANCES_PER_IAS: Type = 8196; - pub const OPTIX_DEVICE_PROPERTY_RTCORE_VERSION: Type = 8197; - pub const OPTIX_DEVICE_PROPERTY_LIMIT_MAX_INSTANCE_ID: Type = 8198; - 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 type OptixLogCallback = ::std::option::Option< - unsafe extern "C" fn( - level: ::std::os::raw::c_uint, - tag: *const ::std::os::raw::c_char, - message: *const ::std::os::raw::c_char, - cbdata: *mut ::std::os::raw::c_void, - ), ->; -pub const OptixDeviceContextValidationMode_OPTIX_DEVICE_CONTEXT_VALIDATION_MODE_OFF: - OptixDeviceContextValidationMode = 0; -pub const OptixDeviceContextValidationMode_OPTIX_DEVICE_CONTEXT_VALIDATION_MODE_ALL: - OptixDeviceContextValidationMode = -1; -pub type OptixDeviceContextValidationMode = ::std::os::raw::c_int; -#[repr(C)] -#[derive(Debug, Copy, Clone, PartialEq)] -pub struct OptixDeviceContextOptions { - pub logCallbackFunction: OptixLogCallback, - pub logCallbackData: *mut ::std::os::raw::c_void, - pub logCallbackLevel: ::std::os::raw::c_int, - pub validationMode: OptixDeviceContextValidationMode, -} -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() - } - } -} -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_SHORT3: OptixIndicesFormat = 8450; -pub const OptixIndicesFormat_OPTIX_INDICES_FORMAT_UNSIGNED_INT3: OptixIndicesFormat = 8451; -pub type OptixIndicesFormat = ::std::os::raw::c_int; -pub const OptixVertexFormat_OPTIX_VERTEX_FORMAT_NONE: OptixVertexFormat = 0; -pub const OptixVertexFormat_OPTIX_VERTEX_FORMAT_FLOAT3: OptixVertexFormat = 8481; -pub const OptixVertexFormat_OPTIX_VERTEX_FORMAT_FLOAT2: OptixVertexFormat = 8482; -pub const OptixVertexFormat_OPTIX_VERTEX_FORMAT_HALF3: OptixVertexFormat = 8483; -pub const OptixVertexFormat_OPTIX_VERTEX_FORMAT_HALF2: OptixVertexFormat = 8484; -pub const OptixVertexFormat_OPTIX_VERTEX_FORMAT_SNORM16_3: OptixVertexFormat = 8485; -pub const OptixVertexFormat_OPTIX_VERTEX_FORMAT_SNORM16_2: OptixVertexFormat = 8486; -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; -#[repr(C)] -pub struct OptixBuildInputTriangleArray { - pub vertexBuffers: *const CUdeviceptr, - pub numVertices: ::std::os::raw::c_uint, - pub vertexFormat: OptixVertexFormat, - pub vertexStrideInBytes: ::std::os::raw::c_uint, - pub indexBuffer: CUdeviceptr, - pub numIndexTriplets: ::std::os::raw::c_uint, - pub indexFormat: OptixIndicesFormat, - pub indexStrideInBytes: ::std::os::raw::c_uint, - pub preTransform: CUdeviceptr, - 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, - pub transformFormat: OptixTransformFormat, -} -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() - } - } -} -pub const OptixPrimitiveType_OPTIX_PRIMITIVE_TYPE_CUSTOM: OptixPrimitiveType = 9472; -pub const OptixPrimitiveType_OPTIX_PRIMITIVE_TYPE_ROUND_QUADRATIC_BSPLINE: OptixPrimitiveType = - 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_TRIANGLE: OptixPrimitiveType = 9521; -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: - OptixPrimitiveTypeFlags = 2; -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_TRIANGLE: OptixPrimitiveTypeFlags = - -2147483648; -pub type OptixPrimitiveTypeFlags = ::std::os::raw::c_int; -#[repr(C)] -pub struct OptixBuildInputCurveArray { - pub curveType: OptixPrimitiveType, - pub numPrimitives: ::std::os::raw::c_uint, - pub vertexBuffers: *const CUdeviceptr, - pub numVertices: ::std::os::raw::c_uint, - pub vertexStrideInBytes: ::std::os::raw::c_uint, - pub widthBuffers: *const CUdeviceptr, - pub widthStrideInBytes: ::std::os::raw::c_uint, - pub normalBuffers: *const CUdeviceptr, - pub normalStrideInBytes: ::std::os::raw::c_uint, - pub indexBuffer: CUdeviceptr, - pub indexStrideInBytes: ::std::os::raw::c_uint, - pub flag: ::std::os::raw::c_uint, - pub primitiveIndexOffset: ::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() - } - } -} -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct OptixAabb { - pub minX: f32, - pub minY: f32, - pub minZ: f32, - pub maxX: f32, - pub maxY: f32, - pub maxZ: f32, -} -#[repr(C)] -pub struct OptixBuildInputCustomPrimitiveArray { - pub aabbBuffers: *const CUdeviceptr, - pub numPrimitives: ::std::os::raw::c_uint, - pub strideInBytes: ::std::os::raw::c_uint, - 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 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() - } - } -} -#[repr(C)] -pub struct OptixBuildInputInstanceArray { - pub instances: CUdeviceptr, - pub numInstances: ::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() - } - } -} -pub const OptixBuildInputType_OPTIX_BUILD_INPUT_TYPE_TRIANGLES: OptixBuildInputType = 8513; -pub const OptixBuildInputType_OPTIX_BUILD_INPUT_TYPE_CUSTOM_PRIMITIVES: OptixBuildInputType = 8514; -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 type OptixBuildInputType = ::std::os::raw::c_int; -#[repr(C)] -pub struct OptixBuildInput__bindgen_ty_1 { - pub triangleArray: __BindgenUnionField, - pub curveArray: __BindgenUnionField, - pub customPrimitiveArray: __BindgenUnionField, - pub instanceArray: __BindgenUnionField, - pub pad: __BindgenUnionField<[::std::os::raw::c_char; 1024usize]>, - pub bindgen_union_field: [u64; 128usize], -} -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() - } - } -} -pub const OptixInstanceFlags_OPTIX_INSTANCE_FLAG_NONE: OptixInstanceFlags = 0; -pub const OptixInstanceFlags_OPTIX_INSTANCE_FLAG_DISABLE_TRIANGLE_FACE_CULLING: OptixInstanceFlags = - 1; -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 type OptixInstanceFlags = ::std::os::raw::c_int; -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct OptixInstance { - pub transform: [f32; 12usize], - pub instanceId: ::std::os::raw::c_uint, - pub sbtOffset: ::std::os::raw::c_uint, - pub visibilityMask: ::std::os::raw::c_uint, - pub flags: ::std::os::raw::c_uint, - pub traversableHandle: OptixTraversableHandle, - pub pad: [::std::os::raw::c_uint; 2usize], -} -pub const OptixBuildFlags_OPTIX_BUILD_FLAG_NONE: OptixBuildFlags = 0; -pub const OptixBuildFlags_OPTIX_BUILD_FLAG_ALLOW_UPDATE: OptixBuildFlags = 1; -pub const OptixBuildFlags_OPTIX_BUILD_FLAG_ALLOW_COMPACTION: OptixBuildFlags = 2; -pub const OptixBuildFlags_OPTIX_BUILD_FLAG_PREFER_FAST_TRACE: OptixBuildFlags = 4; -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 type OptixBuildFlags = ::std::os::raw::c_int; -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; -pub const OptixMotionFlags_OPTIX_MOTION_FLAG_NONE: OptixMotionFlags = 0; -pub const OptixMotionFlags_OPTIX_MOTION_FLAG_START_VANISH: OptixMotionFlags = 1; -pub const OptixMotionFlags_OPTIX_MOTION_FLAG_END_VANISH: OptixMotionFlags = 2; -pub type OptixMotionFlags = ::std::os::raw::c_int; -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct OptixMotionOptions { - pub numKeys: ::std::os::raw::c_ushort, - pub flags: ::std::os::raw::c_ushort, - pub timeBegin: f32, - pub timeEnd: f32, -} -#[repr(C)] -#[derive(Debug, Copy, Clone, PartialEq)] -pub struct OptixAccelBuildOptions { - pub buildFlags: ::std::os::raw::c_uint, - pub operation: OptixBuildOperation, - pub motionOptions: OptixMotionOptions, -} -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() - } - } -} -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct OptixAccelBufferSizes { - pub outputSizeInBytes: usize, - pub tempSizeInBytes: usize, - pub tempUpdateSizeInBytes: usize, -} -pub const OptixAccelPropertyType_OPTIX_PROPERTY_TYPE_COMPACTED_SIZE: OptixAccelPropertyType = 8577; -pub const OptixAccelPropertyType_OPTIX_PROPERTY_TYPE_AABBS: OptixAccelPropertyType = 8578; -pub type OptixAccelPropertyType = ::std::os::raw::c_int; -#[repr(C)] -pub struct OptixAccelEmitDesc { - pub result: CUdeviceptr, - pub type_: OptixAccelPropertyType, -} -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() - } - } -} -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct OptixAccelRelocationInfo { - pub info: [::std::os::raw::c_ulonglong; 4usize], -} -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct OptixStaticTransform { - pub child: OptixTraversableHandle, - pub pad: [::std::os::raw::c_uint; 2usize], - pub transform: [f32; 12usize], - pub invTransform: [f32; 12usize], -} -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct OptixMatrixMotionTransform { - pub child: OptixTraversableHandle, - pub motionOptions: OptixMotionOptions, - pub pad: [::std::os::raw::c_uint; 3usize], - pub transform: [[f32; 12usize]; 2usize], -} -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct OptixSRTData { - pub sx: f32, - pub a: f32, - pub b: f32, - pub pvx: f32, - pub sy: f32, - pub c: f32, - pub pvy: f32, - pub sz: f32, - pub pvz: f32, - pub qx: f32, - pub qy: f32, - pub qz: f32, - pub qw: f32, - pub tx: f32, - pub ty: f32, - pub tz: f32, -} -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct OptixSRTMotionTransform { - pub child: OptixTraversableHandle, - pub motionOptions: OptixMotionOptions, - pub pad: [::std::os::raw::c_uint; 3usize], - pub srtData: [OptixSRTData; 2usize], -} -pub const OptixTraversableType_OPTIX_TRAVERSABLE_TYPE_STATIC_TRANSFORM: OptixTraversableType = 8641; -pub const OptixTraversableType_OPTIX_TRAVERSABLE_TYPE_MATRIX_MOTION_TRANSFORM: - OptixTraversableType = 8642; -pub const OptixTraversableType_OPTIX_TRAVERSABLE_TYPE_SRT_MOTION_TRANSFORM: OptixTraversableType = - 8643; -pub type OptixTraversableType = ::std::os::raw::c_int; -pub mod OptixPixelFormat { - pub type Type = ::std::os::raw::c_int; - 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_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; -} -#[repr(C)] -pub struct OptixImage2D { - pub data: CUdeviceptr, - pub width: ::std::os::raw::c_uint, - pub height: ::std::os::raw::c_uint, - pub rowStrideInBytes: ::std::os::raw::c_uint, - pub pixelStrideInBytes: ::std::os::raw::c_uint, - pub format: OptixPixelFormat::Type, -} -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() - } - } -} -pub mod OptixDenoiserModelKind { - pub type Type = ::std::os::raw::c_int; - pub const OPTIX_DENOISER_MODEL_KIND_LDR: Type = 8994; - 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; -} -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct OptixDenoiserOptions { - pub guideAlbedo: ::std::os::raw::c_uint, - pub guideNormal: ::std::os::raw::c_uint, -} -#[repr(C)] -pub struct OptixDenoiserGuideLayer { - pub albedo: OptixImage2D, - pub normal: OptixImage2D, - pub flow: 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() - } - } -} -#[repr(C)] -pub struct OptixDenoiserLayer { - pub input: OptixImage2D, - pub previousOutput: OptixImage2D, - pub output: OptixImage2D, -} -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() - } - } -} -#[repr(C)] -pub struct OptixDenoiserParams { - pub denoiseAlpha: ::std::os::raw::c_uint, - pub hdrIntensity: CUdeviceptr, - pub blendFactor: f32, - pub hdrAverageColor: CUdeviceptr, -} -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() - } - } -} -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct OptixDenoiserSizes { - pub stateSizeInBytes: usize, - pub withOverlapScratchSizeInBytes: usize, - pub withoutOverlapScratchSizeInBytes: usize, - pub overlapWindowSizeInPixels: ::std::os::raw::c_uint, -} -pub const OptixRayFlags_OPTIX_RAY_FLAG_NONE: OptixRayFlags = 0; -pub const OptixRayFlags_OPTIX_RAY_FLAG_DISABLE_ANYHIT: OptixRayFlags = 1; -pub const OptixRayFlags_OPTIX_RAY_FLAG_ENFORCE_ANYHIT: OptixRayFlags = 2; -pub const OptixRayFlags_OPTIX_RAY_FLAG_TERMINATE_ON_FIRST_HIT: OptixRayFlags = 4; -pub const OptixRayFlags_OPTIX_RAY_FLAG_DISABLE_CLOSESTHIT: OptixRayFlags = 8; -pub const OptixRayFlags_OPTIX_RAY_FLAG_CULL_BACK_FACING_TRIANGLES: OptixRayFlags = 16; -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 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; -pub const OptixTransformType_OPTIX_TRANSFORM_TYPE_MATRIX_MOTION_TRANSFORM: OptixTransformType = 2; -pub const OptixTransformType_OPTIX_TRANSFORM_TYPE_SRT_MOTION_TRANSFORM: OptixTransformType = 3; -pub const OptixTransformType_OPTIX_TRANSFORM_TYPE_INSTANCE: OptixTransformType = 4; -pub type OptixTransformType = ::std::os::raw::c_int; -pub mod OptixTraversableGraphFlags { - pub type Type = ::std::os::raw::c_int; - pub const OPTIX_TRAVERSABLE_GRAPH_FLAG_ALLOW_ANY: Type = 0; - pub const OPTIX_TRAVERSABLE_GRAPH_FLAG_ALLOW_SINGLE_GAS: Type = 1; - pub const OPTIX_TRAVERSABLE_GRAPH_FLAG_ALLOW_SINGLE_LEVEL_INSTANCING: Type = 2; -} -pub mod OptixCompileOptimizationLevel { - pub type Type = ::std::os::raw::c_int; - pub const OPTIX_COMPILE_OPTIMIZATION_DEFAULT: Type = 0; - pub const OPTIX_COMPILE_OPTIMIZATION_LEVEL_0: Type = 9024; - pub const OPTIX_COMPILE_OPTIMIZATION_LEVEL_1: Type = 9025; - pub const OPTIX_COMPILE_OPTIMIZATION_LEVEL_2: Type = 9026; - pub const OPTIX_COMPILE_OPTIMIZATION_LEVEL_3: Type = 9027; -} -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_FULL: Type = 9042; -} -#[repr(C)] -#[derive(Debug, Copy, Clone, PartialEq)] -pub struct OptixModuleCompileBoundValueEntry { - pub pipelineParamOffsetInBytes: usize, - pub sizeInBytes: usize, - pub boundValuePtr: *const ::std::os::raw::c_void, - pub annotation: *const ::std::os::raw::c_char, -} -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() - } - } -} -#[repr(C)] -#[derive(Debug, Copy, Clone, PartialEq)] -pub struct OptixModuleCompileOptions { - pub maxRegisterCount: ::std::os::raw::c_int, - pub optLevel: OptixCompileOptimizationLevel::Type, - pub debugLevel: OptixCompileDebugLevel::Type, - pub boundValues: *const OptixModuleCompileBoundValueEntry, - pub numBoundValues: ::std::os::raw::c_uint, -} -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() - } - } -} -pub mod OptixProgramGroupKind { - pub type Type = ::std::os::raw::c_int; - pub const OPTIX_PROGRAM_GROUP_KIND_RAYGEN: Type = 9249; - pub const OPTIX_PROGRAM_GROUP_KIND_MISS: Type = 9250; - pub const OPTIX_PROGRAM_GROUP_KIND_EXCEPTION: Type = 9251; - pub const OPTIX_PROGRAM_GROUP_KIND_HITGROUP: Type = 9252; - pub const OPTIX_PROGRAM_GROUP_KIND_CALLABLES: Type = 9253; -} -pub const OptixProgramGroupFlags_OPTIX_PROGRAM_GROUP_FLAGS_NONE: OptixProgramGroupFlags = 0; -pub type OptixProgramGroupFlags = ::std::os::raw::c_int; -#[repr(C)] -#[derive(Debug, Copy, Clone, PartialEq)] -pub struct OptixProgramGroupSingleModule { - pub module: OptixModule, - pub entryFunctionName: *const ::std::os::raw::c_char, -} -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() - } - } -} -#[repr(C)] -#[derive(Debug, Copy, Clone, PartialEq)] -pub struct OptixProgramGroupHitgroup { - pub moduleCH: OptixModule, - pub entryFunctionNameCH: *const ::std::os::raw::c_char, - pub moduleAH: OptixModule, - pub entryFunctionNameAH: *const ::std::os::raw::c_char, - pub moduleIS: OptixModule, - pub entryFunctionNameIS: *const ::std::os::raw::c_char, -} -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() - } - } -} -#[repr(C)] -#[derive(Debug, Copy, Clone, PartialEq)] -pub struct OptixProgramGroupCallables { - pub moduleDC: OptixModule, - pub entryFunctionNameDC: *const ::std::os::raw::c_char, - pub moduleCC: OptixModule, - pub entryFunctionNameCC: *const ::std::os::raw::c_char, -} -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() - } - } -} -#[repr(C)] -#[derive(Copy, Clone)] -pub struct OptixProgramGroupDesc { - pub kind: OptixProgramGroupKind::Type, - pub flags: ::std::os::raw::c_uint, - pub __bindgen_anon_1: OptixProgramGroupDesc__bindgen_ty_1, -} -#[repr(C)] -#[derive(Copy, Clone)] -pub union OptixProgramGroupDesc__bindgen_ty_1 { - pub raygen: OptixProgramGroupSingleModule, - pub miss: OptixProgramGroupSingleModule, - pub exception: OptixProgramGroupSingleModule, - pub callables: OptixProgramGroupCallables, - pub hitgroup: OptixProgramGroupHitgroup, -} -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() - } - } -} -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() - } - } -} -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct OptixProgramGroupOptions { - pub reserved: ::std::os::raw::c_int, -} -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; - pub const OPTIX_EXCEPTION_FLAG_NONE: Type = 0; - 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, - pub numPayloadValues: ::std::os::raw::c_int, - pub numAttributeValues: ::std::os::raw::c_int, - 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: usize, -} -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() - } - } -} -#[repr(C)] -#[derive(Debug, 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 { - pub raygenRecord: CUdeviceptr, - pub exceptionRecord: CUdeviceptr, - pub missRecordBase: CUdeviceptr, - pub missRecordStrideInBytes: ::std::os::raw::c_uint, - pub missRecordCount: ::std::os::raw::c_uint, - pub hitgroupRecordBase: CUdeviceptr, - pub hitgroupRecordStrideInBytes: ::std::os::raw::c_uint, - pub hitgroupRecordCount: ::std::os::raw::c_uint, - pub callablesRecordBase: CUdeviceptr, - pub callablesRecordStrideInBytes: ::std::os::raw::c_uint, - pub callablesRecordCount: ::std::os::raw::c_uint, -} -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() - } - } -} -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct OptixStackSizes { - pub cssRG: ::std::os::raw::c_uint, - pub cssMS: ::std::os::raw::c_uint, - pub cssCH: ::std::os::raw::c_uint, - pub cssAH: ::std::os::raw::c_uint, - pub cssIS: ::std::os::raw::c_uint, - pub cssCC: ::std::os::raw::c_uint, - pub dssDC: ::std::os::raw::c_uint, -} -pub const OptixQueryFunctionTableOptions_OPTIX_QUERY_FUNCTION_TABLE_OPTION_DUMMY: - OptixQueryFunctionTableOptions = 0; -pub type OptixQueryFunctionTableOptions = ::std::os::raw::c_int; -pub type OptixQueryFunctionTable_t = ::std::option::Option< - unsafe extern "C" fn( - abiId: ::std::os::raw::c_int, - numOptions: ::std::os::raw::c_uint, - arg1: *mut OptixQueryFunctionTableOptions, - arg2: *mut *const ::std::os::raw::c_void, - functionTable: *mut ::std::os::raw::c_void, - sizeOfTable: usize, - ) -> OptixResult, ->; -#[repr(C)] -#[derive(Debug, Copy, Clone, PartialEq)] -pub struct OptixBuiltinISOptions { - pub builtinISModuleType: OptixPrimitiveType, - pub usesMotionBlur: ::std::os::raw::c_int, -} -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 extern "C" { - pub fn optixGetErrorName(result: OptixResult) -> *const ::std::os::raw::c_char; -} -unsafe extern "C" { - pub fn optixGetErrorString(result: OptixResult) -> *const ::std::os::raw::c_char; -} -unsafe extern "C" { - pub fn optixDeviceContextCreate( - fromContext: CUcontext, - options: *const OptixDeviceContextOptions, - context: *mut OptixDeviceContext, - ) -> OptixResult; -} -unsafe extern "C" { - pub fn optixDeviceContextDestroy(context: OptixDeviceContext) -> OptixResult; -} -unsafe extern "C" { - pub fn optixDeviceContextGetProperty( - context: OptixDeviceContext, - property: OptixDeviceProperty::Type, - value: *mut ::std::os::raw::c_void, - sizeInBytes: usize, - ) -> OptixResult; -} -unsafe extern "C" { - pub fn optixDeviceContextSetLogCallback( - context: OptixDeviceContext, - callbackFunction: OptixLogCallback, - callbackData: *mut ::std::os::raw::c_void, - callbackLevel: ::std::os::raw::c_uint, - ) -> OptixResult; -} -unsafe extern "C" { - pub fn optixDeviceContextSetCacheEnabled( - context: OptixDeviceContext, - enabled: ::std::os::raw::c_int, - ) -> OptixResult; -} -unsafe extern "C" { - pub fn optixDeviceContextSetCacheLocation( - context: OptixDeviceContext, - location: *const ::std::os::raw::c_char, - ) -> OptixResult; -} -unsafe extern "C" { - pub fn optixDeviceContextSetCacheDatabaseSizes( - context: OptixDeviceContext, - lowWaterMark: usize, - highWaterMark: usize, - ) -> OptixResult; -} -unsafe extern "C" { - pub fn optixDeviceContextGetCacheEnabled( - context: OptixDeviceContext, - enabled: *mut ::std::os::raw::c_int, - ) -> OptixResult; -} -unsafe extern "C" { - pub fn optixDeviceContextGetCacheLocation( - context: OptixDeviceContext, - location: *mut ::std::os::raw::c_char, - locationSize: usize, - ) -> OptixResult; -} -unsafe extern "C" { - pub fn optixDeviceContextGetCacheDatabaseSizes( - context: OptixDeviceContext, - lowWaterMark: *mut usize, - highWaterMark: *mut usize, - ) -> OptixResult; -} -unsafe extern "C" { - pub fn optixPipelineCreate( - context: OptixDeviceContext, - pipelineCompileOptions: *const OptixPipelineCompileOptions, - pipelineLinkOptions: *const OptixPipelineLinkOptions, - programGroups: *const OptixProgramGroup, - numProgramGroups: ::std::os::raw::c_uint, - logString: *mut ::std::os::raw::c_char, - logStringSize: *mut usize, - pipeline: *mut OptixPipeline, - ) -> OptixResult; -} -unsafe extern "C" { - pub fn optixPipelineDestroy(pipeline: OptixPipeline) -> OptixResult; -} -unsafe extern "C" { - pub fn optixPipelineSetStackSize( - pipeline: OptixPipeline, - directCallableStackSizeFromTraversal: ::std::os::raw::c_uint, - directCallableStackSizeFromState: ::std::os::raw::c_uint, - continuationStackSize: ::std::os::raw::c_uint, - maxTraversableGraphDepth: ::std::os::raw::c_uint, - ) -> OptixResult; -} -unsafe extern "C" { - pub fn optixModuleCreateFromPTX( - context: OptixDeviceContext, - moduleCompileOptions: *const OptixModuleCompileOptions, - pipelineCompileOptions: *const OptixPipelineCompileOptions, - PTX: *const ::std::os::raw::c_char, - PTXsize: usize, - logString: *mut ::std::os::raw::c_char, - logStringSize: *mut usize, - module: *mut OptixModule, - ) -> OptixResult; -} -unsafe extern "C" { - pub fn optixModuleDestroy(module: OptixModule) -> OptixResult; -} -unsafe extern "C" { - pub fn optixBuiltinISModuleGet( - context: OptixDeviceContext, - moduleCompileOptions: *const OptixModuleCompileOptions, - pipelineCompileOptions: *const OptixPipelineCompileOptions, - builtinISOptions: *const OptixBuiltinISOptions, - builtinModule: *mut OptixModule, - ) -> OptixResult; -} -unsafe extern "C" { - pub fn optixProgramGroupGetStackSize( - programGroup: OptixProgramGroup, - stackSizes: *mut OptixStackSizes, - ) -> OptixResult; -} -unsafe extern "C" { - pub fn optixProgramGroupCreate( - context: OptixDeviceContext, - programDescriptions: *const OptixProgramGroupDesc, - numProgramGroups: ::std::os::raw::c_uint, - options: *const OptixProgramGroupOptions, - logString: *mut ::std::os::raw::c_char, - logStringSize: *mut usize, - programGroups: *mut OptixProgramGroup, - ) -> OptixResult; -} -unsafe extern "C" { - pub fn optixProgramGroupDestroy(programGroup: OptixProgramGroup) -> OptixResult; -} -unsafe extern "C" { - pub fn optixLaunch( - pipeline: OptixPipeline, - stream: CUstream, - pipelineParams: CUdeviceptr, - pipelineParamsSize: usize, - sbt: *const OptixShaderBindingTable, - width: ::std::os::raw::c_uint, - height: ::std::os::raw::c_uint, - depth: ::std::os::raw::c_uint, - ) -> OptixResult; -} -unsafe extern "C" { - pub fn optixSbtRecordPackHeader( - programGroup: OptixProgramGroup, - sbtRecordHeaderHostPointer: *mut ::std::os::raw::c_void, - ) -> OptixResult; -} -unsafe extern "C" { - pub fn optixAccelComputeMemoryUsage( - context: OptixDeviceContext, - accelOptions: *const OptixAccelBuildOptions, - buildInputs: *const OptixBuildInput, - numBuildInputs: ::std::os::raw::c_uint, - bufferSizes: *mut OptixAccelBufferSizes, - ) -> OptixResult; -} -unsafe extern "C" { - pub fn optixAccelBuild( - context: OptixDeviceContext, - stream: CUstream, - accelOptions: *const OptixAccelBuildOptions, - buildInputs: *const OptixBuildInput, - numBuildInputs: ::std::os::raw::c_uint, - tempBuffer: CUdeviceptr, - tempBufferSizeInBytes: usize, - outputBuffer: CUdeviceptr, - outputBufferSizeInBytes: usize, - outputHandle: *mut OptixTraversableHandle, - emittedProperties: *const OptixAccelEmitDesc, - numEmittedProperties: ::std::os::raw::c_uint, - ) -> OptixResult; -} -unsafe extern "C" { - pub fn optixAccelGetRelocationInfo( - context: OptixDeviceContext, - handle: OptixTraversableHandle, - info: *mut OptixAccelRelocationInfo, - ) -> OptixResult; -} -unsafe extern "C" { - pub fn optixAccelCheckRelocationCompatibility( - context: OptixDeviceContext, - info: *const OptixAccelRelocationInfo, - compatible: *mut ::std::os::raw::c_int, - ) -> OptixResult; -} -unsafe extern "C" { - pub fn optixAccelRelocate( - context: OptixDeviceContext, - stream: CUstream, - info: *const OptixAccelRelocationInfo, - instanceTraversableHandles: CUdeviceptr, - numInstanceTraversableHandles: usize, - targetAccel: CUdeviceptr, - targetAccelSizeInBytes: usize, - targetHandle: *mut OptixTraversableHandle, - ) -> OptixResult; -} -unsafe extern "C" { - pub fn optixAccelCompact( - context: OptixDeviceContext, - stream: CUstream, - inputHandle: OptixTraversableHandle, - outputBuffer: CUdeviceptr, - outputBufferSizeInBytes: usize, - outputHandle: *mut OptixTraversableHandle, - ) -> OptixResult; -} -unsafe extern "C" { - pub fn optixConvertPointerToTraversableHandle( - onDevice: OptixDeviceContext, - pointer: CUdeviceptr, - traversableType: OptixTraversableType, - traversableHandle: *mut OptixTraversableHandle, - ) -> OptixResult; -} -unsafe extern "C" { - pub fn optixDenoiserCreate( - context: OptixDeviceContext, - modelKind: OptixDenoiserModelKind::Type, - options: *const OptixDenoiserOptions, - denoiser: *mut OptixDenoiser, - ) -> OptixResult; -} -unsafe extern "C" { - pub fn optixDenoiserCreateWithUserModel( - context: OptixDeviceContext, - userData: *const ::std::os::raw::c_void, - userDataSizeInBytes: usize, - denoiser: *mut OptixDenoiser, - ) -> OptixResult; -} -unsafe extern "C" { - pub fn optixDenoiserDestroy(denoiser: OptixDenoiser) -> OptixResult; -} -unsafe extern "C" { - pub fn optixDenoiserComputeMemoryResources( - denoiser: OptixDenoiser, - outputWidth: ::std::os::raw::c_uint, - outputHeight: ::std::os::raw::c_uint, - returnSizes: *mut OptixDenoiserSizes, - ) -> OptixResult; -} -unsafe extern "C" { - pub fn optixDenoiserSetup( - denoiser: OptixDenoiser, - stream: CUstream, - inputWidth: ::std::os::raw::c_uint, - inputHeight: ::std::os::raw::c_uint, - denoiserState: CUdeviceptr, - denoiserStateSizeInBytes: usize, - scratch: CUdeviceptr, - scratchSizeInBytes: usize, - ) -> OptixResult; -} -unsafe extern "C" { - pub fn optixDenoiserInvoke( - denoiser: OptixDenoiser, - stream: CUstream, - params: *const OptixDenoiserParams, - denoiserState: CUdeviceptr, - denoiserStateSizeInBytes: usize, - guideLayer: *const OptixDenoiserGuideLayer, - layers: *const OptixDenoiserLayer, - numLayers: ::std::os::raw::c_uint, - inputOffsetX: ::std::os::raw::c_uint, - inputOffsetY: ::std::os::raw::c_uint, - scratch: CUdeviceptr, - scratchSizeInBytes: usize, - ) -> OptixResult; -} -unsafe extern "C" { - pub fn optixDenoiserComputeIntensity( - denoiser: OptixDenoiser, - stream: CUstream, - inputImage: *const OptixImage2D, - outputIntensity: CUdeviceptr, - scratch: CUdeviceptr, - scratchSizeInBytes: usize, - ) -> OptixResult; -} -unsafe extern "C" { - pub fn optixDenoiserComputeAverageColor( - denoiser: OptixDenoiser, - stream: CUstream, - inputImage: *const OptixImage2D, - outputAverageColor: CUdeviceptr, - scratch: CUdeviceptr, - scratchSizeInBytes: usize, - ) -> OptixResult; -} -#[repr(C)] -#[derive(Debug, Default, Copy, Clone, PartialEq)] -pub struct OptixFunctionTable { - pub optixGetErrorName: ::std::option::Option< - unsafe extern "C" fn(result: OptixResult) -> *const ::std::os::raw::c_char, - >, - pub optixGetErrorString: ::std::option::Option< - unsafe extern "C" fn(result: OptixResult) -> *const ::std::os::raw::c_char, - >, - pub optixDeviceContextCreate: ::std::option::Option< - unsafe extern "C" fn( - fromContext: CUcontext, - options: *const OptixDeviceContextOptions, - context: *mut OptixDeviceContext, - ) -> OptixResult, - >, - pub optixDeviceContextDestroy: - ::std::option::Option OptixResult>, - pub optixDeviceContextGetProperty: ::std::option::Option< - unsafe extern "C" fn( - context: OptixDeviceContext, - property: OptixDeviceProperty::Type, - value: *mut ::std::os::raw::c_void, - sizeInBytes: usize, - ) -> OptixResult, - >, - pub optixDeviceContextSetLogCallback: ::std::option::Option< - unsafe extern "C" fn( - context: OptixDeviceContext, - callbackFunction: OptixLogCallback, - callbackData: *mut ::std::os::raw::c_void, - callbackLevel: ::std::os::raw::c_uint, - ) -> OptixResult, - >, - pub optixDeviceContextSetCacheEnabled: ::std::option::Option< - unsafe extern "C" fn( - context: OptixDeviceContext, - enabled: ::std::os::raw::c_int, - ) -> OptixResult, - >, - pub optixDeviceContextSetCacheLocation: ::std::option::Option< - unsafe extern "C" fn( - context: OptixDeviceContext, - location: *const ::std::os::raw::c_char, - ) -> OptixResult, - >, - pub optixDeviceContextSetCacheDatabaseSizes: ::std::option::Option< - unsafe extern "C" fn( - context: OptixDeviceContext, - lowWaterMark: usize, - highWaterMark: usize, - ) -> OptixResult, - >, - pub optixDeviceContextGetCacheEnabled: ::std::option::Option< - unsafe extern "C" fn( - context: OptixDeviceContext, - enabled: *mut ::std::os::raw::c_int, - ) -> OptixResult, - >, - pub optixDeviceContextGetCacheLocation: ::std::option::Option< - unsafe extern "C" fn( - context: OptixDeviceContext, - location: *mut ::std::os::raw::c_char, - locationSize: usize, - ) -> OptixResult, - >, - pub optixDeviceContextGetCacheDatabaseSizes: ::std::option::Option< - unsafe extern "C" fn( - context: OptixDeviceContext, - lowWaterMark: *mut usize, - highWaterMark: *mut usize, - ) -> OptixResult, - >, - pub optixModuleCreateFromPTX: ::std::option::Option< - unsafe extern "C" fn( - context: OptixDeviceContext, - moduleCompileOptions: *const OptixModuleCompileOptions, - pipelineCompileOptions: *const OptixPipelineCompileOptions, - PTX: *const ::std::os::raw::c_char, - PTXsize: usize, - logString: *mut ::std::os::raw::c_char, - logStringSize: *mut usize, - module: *mut OptixModule, - ) -> OptixResult, - >, - pub optixModuleDestroy: - ::std::option::Option OptixResult>, - pub optixBuiltinISModuleGet: ::std::option::Option< - unsafe extern "C" fn( - context: OptixDeviceContext, - moduleCompileOptions: *const OptixModuleCompileOptions, - pipelineCompileOptions: *const OptixPipelineCompileOptions, - builtinISOptions: *const OptixBuiltinISOptions, - builtinModule: *mut OptixModule, - ) -> OptixResult, - >, - pub optixProgramGroupCreate: ::std::option::Option< - unsafe extern "C" fn( - context: OptixDeviceContext, - programDescriptions: *const OptixProgramGroupDesc, - numProgramGroups: ::std::os::raw::c_uint, - options: *const OptixProgramGroupOptions, - logString: *mut ::std::os::raw::c_char, - logStringSize: *mut usize, - programGroups: *mut OptixProgramGroup, - ) -> OptixResult, - >, - pub optixProgramGroupDestroy: - ::std::option::Option OptixResult>, - pub optixProgramGroupGetStackSize: ::std::option::Option< - unsafe extern "C" fn( - programGroup: OptixProgramGroup, - stackSizes: *mut OptixStackSizes, - ) -> OptixResult, - >, - pub optixPipelineCreate: ::std::option::Option< - unsafe extern "C" fn( - context: OptixDeviceContext, - pipelineCompileOptions: *const OptixPipelineCompileOptions, - pipelineLinkOptions: *const OptixPipelineLinkOptions, - programGroups: *const OptixProgramGroup, - numProgramGroups: ::std::os::raw::c_uint, - logString: *mut ::std::os::raw::c_char, - logStringSize: *mut usize, - pipeline: *mut OptixPipeline, - ) -> OptixResult, - >, - pub optixPipelineDestroy: - ::std::option::Option OptixResult>, - pub optixPipelineSetStackSize: ::std::option::Option< - unsafe extern "C" fn( - pipeline: OptixPipeline, - directCallableStackSizeFromTraversal: ::std::os::raw::c_uint, - directCallableStackSizeFromState: ::std::os::raw::c_uint, - continuationStackSize: ::std::os::raw::c_uint, - maxTraversableGraphDepth: ::std::os::raw::c_uint, - ) -> OptixResult, - >, - pub optixAccelComputeMemoryUsage: ::std::option::Option< - unsafe extern "C" fn( - context: OptixDeviceContext, - accelOptions: *const OptixAccelBuildOptions, - buildInputs: *const OptixBuildInput, - numBuildInputs: ::std::os::raw::c_uint, - bufferSizes: *mut OptixAccelBufferSizes, - ) -> OptixResult, - >, - pub optixAccelBuild: ::std::option::Option< - unsafe extern "C" fn( - context: OptixDeviceContext, - stream: CUstream, - accelOptions: *const OptixAccelBuildOptions, - buildInputs: *const OptixBuildInput, - numBuildInputs: ::std::os::raw::c_uint, - tempBuffer: CUdeviceptr, - tempBufferSizeInBytes: usize, - outputBuffer: CUdeviceptr, - outputBufferSizeInBytes: usize, - outputHandle: *mut OptixTraversableHandle, - emittedProperties: *const OptixAccelEmitDesc, - numEmittedProperties: ::std::os::raw::c_uint, - ) -> OptixResult, - >, - pub optixAccelGetRelocationInfo: ::std::option::Option< - unsafe extern "C" fn( - context: OptixDeviceContext, - handle: OptixTraversableHandle, - info: *mut OptixAccelRelocationInfo, - ) -> OptixResult, - >, - pub optixAccelCheckRelocationCompatibility: ::std::option::Option< - unsafe extern "C" fn( - context: OptixDeviceContext, - info: *const OptixAccelRelocationInfo, - compatible: *mut ::std::os::raw::c_int, - ) -> OptixResult, - >, - pub optixAccelRelocate: ::std::option::Option< - unsafe extern "C" fn( - context: OptixDeviceContext, - stream: CUstream, - info: *const OptixAccelRelocationInfo, - instanceTraversableHandles: CUdeviceptr, - numInstanceTraversableHandles: usize, - targetAccel: CUdeviceptr, - targetAccelSizeInBytes: usize, - targetHandle: *mut OptixTraversableHandle, - ) -> OptixResult, - >, - pub optixAccelCompact: ::std::option::Option< - unsafe extern "C" fn( - context: OptixDeviceContext, - stream: CUstream, - inputHandle: OptixTraversableHandle, - outputBuffer: CUdeviceptr, - outputBufferSizeInBytes: usize, - outputHandle: *mut OptixTraversableHandle, - ) -> OptixResult, - >, - pub optixConvertPointerToTraversableHandle: ::std::option::Option< - unsafe extern "C" fn( - onDevice: OptixDeviceContext, - pointer: CUdeviceptr, - traversableType: OptixTraversableType, - traversableHandle: *mut OptixTraversableHandle, - ) -> OptixResult, - >, - pub optixSbtRecordPackHeader: ::std::option::Option< - unsafe extern "C" fn( - programGroup: OptixProgramGroup, - sbtRecordHeaderHostPointer: *mut ::std::os::raw::c_void, - ) -> OptixResult, - >, - pub optixLaunch: ::std::option::Option< - unsafe extern "C" fn( - pipeline: OptixPipeline, - stream: CUstream, - pipelineParams: CUdeviceptr, - pipelineParamsSize: usize, - sbt: *const OptixShaderBindingTable, - width: ::std::os::raw::c_uint, - height: ::std::os::raw::c_uint, - depth: ::std::os::raw::c_uint, - ) -> OptixResult, - >, - pub optixDenoiserCreate: ::std::option::Option< - unsafe extern "C" fn( - context: OptixDeviceContext, - modelKind: OptixDenoiserModelKind::Type, - options: *const OptixDenoiserOptions, - returnHandle: *mut OptixDenoiser, - ) -> OptixResult, - >, - pub optixDenoiserDestroy: - ::std::option::Option OptixResult>, - pub optixDenoiserComputeMemoryResources: ::std::option::Option< - unsafe extern "C" fn( - handle: OptixDenoiser, - maximumInputWidth: ::std::os::raw::c_uint, - maximumInputHeight: ::std::os::raw::c_uint, - returnSizes: *mut OptixDenoiserSizes, - ) -> OptixResult, - >, - pub optixDenoiserSetup: ::std::option::Option< - unsafe extern "C" fn( - denoiser: OptixDenoiser, - stream: CUstream, - inputWidth: ::std::os::raw::c_uint, - inputHeight: ::std::os::raw::c_uint, - state: CUdeviceptr, - stateSizeInBytes: usize, - scratch: CUdeviceptr, - scratchSizeInBytes: usize, - ) -> OptixResult, - >, - pub optixDenoiserInvoke: ::std::option::Option< - unsafe extern "C" fn( - denoiser: OptixDenoiser, - stream: CUstream, - params: *const OptixDenoiserParams, - denoiserState: CUdeviceptr, - denoiserStateSizeInBytes: usize, - guideLayer: *const OptixDenoiserGuideLayer, - layers: *const OptixDenoiserLayer, - numLayers: ::std::os::raw::c_uint, - inputOffsetX: ::std::os::raw::c_uint, - inputOffsetY: ::std::os::raw::c_uint, - scratch: CUdeviceptr, - scratchSizeInBytes: usize, - ) -> OptixResult, - >, - pub optixDenoiserComputeIntensity: ::std::option::Option< - unsafe extern "C" fn( - handle: OptixDenoiser, - stream: CUstream, - inputImage: *const OptixImage2D, - outputIntensity: CUdeviceptr, - scratch: CUdeviceptr, - scratchSizeInBytes: usize, - ) -> OptixResult, - >, - pub optixDenoiserComputeAverageColor: ::std::option::Option< - unsafe extern "C" fn( - handle: OptixDenoiser, - stream: CUstream, - inputImage: *const OptixImage2D, - outputAverageColor: CUdeviceptr, - scratch: CUdeviceptr, - scratchSizeInBytes: usize, - ) -> OptixResult, - >, - pub optixDenoiserCreateWithUserModel: ::std::option::Option< - unsafe extern "C" fn( - context: OptixDeviceContext, - data: *const ::std::os::raw::c_void, - dataSizeInBytes: usize, - returnHandle: *mut OptixDenoiser, - ) -> OptixResult, - >, -} -pub const OptixSbtRecordHeaderSize: usize = 32; -pub const OptixSbtRecordAlignment: usize = 16; -pub const OptixAccelBufferByteAlignment: usize = 128; -pub const OptixInstanceByteAlignment: usize = 16; -pub const OptixAabbBufferByteAlignment: usize = 8; -pub const OptixGeometryTransformByteAlignment: usize = 16; -pub const OptixTransformByteAlignment: usize = 64; -pub const OptixVersion: usize = 70300; -pub const OptixBuildInputSize: usize = 1032; -pub const OptixShaderBindingTableSize: usize = 64; -#[repr(i32)] -#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] -pub enum OptixGeometryFlags { - None = 0, - DisableAnyHit = 1, - RequireSingleAnyHitCall = 2, -} diff --git a/crates/optix/src/acceleration.rs b/crates/optix/src/acceleration.rs index 377e0f09..18788e1b 100644 --- a/crates/optix/src/acceleration.rs +++ b/crates/optix/src/acceleration.rs @@ -702,18 +702,13 @@ bitflags::bitflags! { /// Select which operation to perform with [`accel_build()`]. #[cfg_attr(windows, repr(i32))] #[cfg_attr(unix, repr(u32))] -#[derive(Debug, Copy, Clone, PartialEq)] +#[derive(Debug, Copy, Clone, PartialEq, Default)] pub enum BuildOperation { + #[default] Build = sys::OptixBuildOperation_OPTIX_BUILD_OPERATION_BUILD, Update = sys::OptixBuildOperation_OPTIX_BUILD_OPERATION_UPDATE, } -impl Default for BuildOperation { - fn default() -> Self { - BuildOperation::Build - } -} - /// Configure how to handle ray times that are outside of the provided motion keys. /// /// By default, the object will appear static (clamped) to the nearest motion @@ -983,7 +978,7 @@ pub struct CurveArray<'v, 'w, 'i> { primitive_index_offset: u32, } -impl<'v, 'w, 'i> Hash for CurveArray<'v, 'w, 'i> { +impl Hash for CurveArray<'_, '_, '_> { fn hash(&self, state: &mut H) { self.curve_type.hash(state); state.write_u32(self.num_primitives); @@ -1088,7 +1083,7 @@ impl<'v, 'w, 'i> CurveArray<'v, 'w, 'i> { } } -impl<'v, 'w, 'i> BuildInput for CurveArray<'v, 'w, 'i> { +impl BuildInput for CurveArray<'_, '_, '_> { fn to_sys(&self) -> sys::OptixBuildInput { sys::OptixBuildInput { type_: sys::OptixBuildInputType_OPTIX_BUILD_INPUT_TYPE_CURVES, @@ -1136,16 +1131,17 @@ impl From for sys::OptixPrimitiveType { } /// Specifies the type of vertex data -#[repr(u32)] +#[cfg_attr(windows, repr(i32))] +#[cfg_attr(unix, repr(u32))] #[derive(Copy, Clone, PartialEq)] pub enum VertexFormat { - None = sys::OptixVertexFormat_OPTIX_VERTEX_FORMAT_NONE as u32, - Float3 = sys::OptixVertexFormat_OPTIX_VERTEX_FORMAT_FLOAT3 as u32, - Float2 = sys::OptixVertexFormat_OPTIX_VERTEX_FORMAT_FLOAT2 as u32, - Half3 = sys::OptixVertexFormat_OPTIX_VERTEX_FORMAT_HALF3 as u32, - Half2 = sys::OptixVertexFormat_OPTIX_VERTEX_FORMAT_HALF2 as u32, - SNorm16 = sys::OptixVertexFormat_OPTIX_VERTEX_FORMAT_SNORM16_3 as u32, - SNorm32 = sys::OptixVertexFormat_OPTIX_VERTEX_FORMAT_SNORM16_2 as u32, + None = sys::OptixVertexFormat_OPTIX_VERTEX_FORMAT_NONE, + Float3 = sys::OptixVertexFormat_OPTIX_VERTEX_FORMAT_FLOAT3, + Float2 = sys::OptixVertexFormat_OPTIX_VERTEX_FORMAT_FLOAT2, + Half3 = sys::OptixVertexFormat_OPTIX_VERTEX_FORMAT_HALF3, + Half2 = sys::OptixVertexFormat_OPTIX_VERTEX_FORMAT_HALF2, + SNorm16 = sys::OptixVertexFormat_OPTIX_VERTEX_FORMAT_SNORM16_3, + SNorm32 = sys::OptixVertexFormat_OPTIX_VERTEX_FORMAT_SNORM16_2, } /// Specifies the type of index data @@ -1299,7 +1295,7 @@ impl<'v, 'g, V: Vertex> TriangleArray<'v, 'g, V> { } } -impl<'v, 'g, V: Vertex> Hash for TriangleArray<'v, 'g, V> { +impl Hash for TriangleArray<'_, '_, V> { fn hash(&self, state: &mut H) { state.write_u32(self.num_vertices); state.write_usize(self.d_vertex_buffers.len()); @@ -1307,7 +1303,7 @@ impl<'v, 'g, V: Vertex> Hash for TriangleArray<'v, 'g, V> { } } -impl<'v, 'g, V: Vertex> BuildInput for TriangleArray<'v, 'g, V> { +impl BuildInput for TriangleArray<'_, '_, V> { fn to_sys(&self) -> sys::OptixBuildInput { sys::OptixBuildInput { type_: sys::OptixBuildInputType_OPTIX_BUILD_INPUT_TYPE_TRIANGLES, @@ -1382,7 +1378,7 @@ impl<'v, 'i, V: Vertex, I: IndexTriple> IndexedTriangleArray<'v, 'i, V, I> { } } -impl<'v, 'i, V: Vertex, I: IndexTriple> Hash for IndexedTriangleArray<'v, 'i, V, I> { +impl Hash for IndexedTriangleArray<'_, '_, V, I> { fn hash(&self, state: &mut H) { state.write_u32(self.num_vertices); state.write_usize(self.d_vertex_buffers.len()); @@ -1391,7 +1387,7 @@ impl<'v, 'i, V: Vertex, I: IndexTriple> Hash for IndexedTriangleArray<'v, 'i, V, } } -impl<'v, 'i, V: Vertex, I: IndexTriple> BuildInput for IndexedTriangleArray<'v, 'i, V, I> { +impl BuildInput for IndexedTriangleArray<'_, '_, V, I> { fn to_sys(&self) -> sys::OptixBuildInput { sys::OptixBuildInput { type_: sys::OptixBuildInputType_OPTIX_BUILD_INPUT_TYPE_TRIANGLES, @@ -1439,7 +1435,7 @@ pub struct CustomPrimitiveArray<'a, 's> { primitive_index_offset: u32, } -impl<'a, 'g, 's> Hash for CustomPrimitiveArray<'a, 's> { +impl Hash for CustomPrimitiveArray<'_, '_> { fn hash(&self, state: &mut H) { state.write_usize(self.aabb_buffers.len()); state.write_u32(self.num_primitives); @@ -1509,7 +1505,7 @@ impl<'a, 's> CustomPrimitiveArray<'a, 's> { } } -impl<'a, 's> BuildInput for CustomPrimitiveArray<'a, 's> { +impl BuildInput for CustomPrimitiveArray<'_, '_> { fn to_sys(&self) -> sys::OptixBuildInput { sys::OptixBuildInput { type_: sys::OptixBuildInputType_OPTIX_BUILD_INPUT_TYPE_CUSTOM_PRIMITIVES, @@ -1646,13 +1642,13 @@ impl<'i, 'a> InstanceArray<'i, 'a> { } } -impl<'i, 'a> Hash for InstanceArray<'i, 'a> { +impl Hash for InstanceArray<'_, '_> { fn hash(&self, state: &mut H) { state.write_usize(self.instances.len()); } } -impl<'i, 'a> BuildInput for InstanceArray<'i, 'a> { +impl BuildInput for InstanceArray<'_, '_> { fn to_sys(&self) -> sys::OptixBuildInput { cfg_if::cfg_if! { if #[cfg(any(feature="optix72", feature="optix73"))] { @@ -1692,13 +1688,13 @@ impl<'i> InstancePointerArray<'i> { } } -impl<'i> Hash for InstancePointerArray<'i> { +impl Hash for InstancePointerArray<'_> { fn hash(&self, state: &mut H) { state.write_usize(self.instances.len()); } } -impl<'i> BuildInput for InstancePointerArray<'i> { +impl BuildInput for InstancePointerArray<'_> { fn to_sys(&self) -> sys::OptixBuildInput { cfg_if::cfg_if! { if #[cfg(any(feature="optix72", feature="optix73"))] { @@ -1865,7 +1861,7 @@ impl MatrixMotionTransform { cust::memory::memcpy_htod( transform_ptr.as_raw(), transforms.as_ptr() as *const c_void, - std::mem::size_of::>() * num_keys, + std::mem::size_of_val(transforms), )?; let hnd = convert_pointer_to_traversable_handle( @@ -2014,7 +2010,7 @@ impl SrtMotionTransform { cust::memory::memcpy_htod( transform_ptr.as_raw(), srt_data.as_ptr() as *const c_void, - std::mem::size_of::() * num_keys, + std::mem::size_of_val(srt_data), )?; let hnd = convert_pointer_to_traversable_handle( diff --git a/crates/optix/src/context.rs b/crates/optix/src/context.rs index 3df7429f..486cfff1 100644 --- a/crates/optix/src/context.rs +++ b/crates/optix/src/context.rs @@ -107,7 +107,7 @@ impl DeviceContext { Ok(optix_call!(optixDeviceContextGetCacheDatabaseSizes( self.raw, &mut low, &mut high, )) - .map(|_| (low as usize, high as usize))?) + .map(|_| (low, high))?) } } diff --git a/crates/optix/src/denoiser.rs b/crates/optix/src/denoiser.rs index 4d60281c..3d71d6ff 100644 --- a/crates/optix/src/denoiser.rs +++ b/crates/optix/src/denoiser.rs @@ -222,9 +222,9 @@ impl Denoiser { stream.as_inner(), width, height, - state.as_device_ptr().as_raw() as u64, + state.as_device_ptr().as_raw(), state_size, - scratch.as_device_ptr().as_raw() as u64, + scratch.as_device_ptr().as_raw(), scratch_size ))?; } @@ -373,7 +373,7 @@ impl Denoiser { let raw_params = parameters.to_raw(); let mut out = input_image.to_raw(); - out.data = out_buffer.as_device_ptr().as_raw() as u64; + out.data = out_buffer.as_device_ptr().as_raw(); let layer = sys::OptixDenoiserLayer { input: input_image.to_raw(), @@ -388,14 +388,14 @@ impl Denoiser { self.raw, stream.as_inner(), &raw_params as *const _, - state.state.as_device_ptr().as_raw() as u64, + state.state.as_device_ptr().as_raw(), state.state.len(), &cloned as *const _, &layer as *const _, 1, // num-layers 0, // offsetX 0, // offsetY - state.scratch.as_device_ptr().as_raw() as u64, + state.scratch.as_device_ptr().as_raw(), state.scratch.len() ))?; } @@ -426,11 +426,11 @@ impl DenoiserParams<'_> { denoiseAlpha: self.denoise_alpha as u32, hdrIntensity: self .hdr_intensity - .map(|x| x.as_device_ptr().as_raw() as u64) + .map(|x| x.as_device_ptr().as_raw()) .unwrap_or_default(), hdrAverageColor: self .hdr_average_color - .map(|x| x.as_device_ptr().as_raw() as u64) + .map(|x| x.as_device_ptr().as_raw()) .unwrap_or_default(), blendFactor: self.blend_factor, } @@ -581,7 +581,7 @@ impl<'a> Image<'a> { let buf_size = std::mem::size_of::() * bytes.len(); assert!( - buf_size >= required_size as usize, + buf_size >= required_size, "Buffer for {}x{} {:?} image is not large enough, expected {} bytes, found {}", width, height, @@ -605,7 +605,7 @@ impl<'a> Image<'a> { let required_bytes = Self::required_buffer_size(format, width, height); let t_size = std::mem::size_of::(); // round-up division - let buf_size = (required_bytes + t_size - 1) / t_size; + let buf_size = required_bytes.div_ceil(t_size); UnifiedBuffer::new(&T::default(), buf_size) } @@ -630,7 +630,7 @@ impl<'a> Image<'a> { rowStrideInBytes: self.row_stride_in_bytes(), pixelStrideInBytes: self.pixel_stride_in_bytes(), format: self.format.to_raw(), - data: self.buffer.as_raw() as u64, + data: self.buffer.as_raw(), } } diff --git a/crates/optix/src/lib.rs b/crates/optix/src/lib.rs index f497eaa1..9bd5e525 100644 --- a/crates/optix/src/lib.rs +++ b/crates/optix/src/lib.rs @@ -177,7 +177,7 @@ pub unsafe fn launch( Ok(optix_call!(optixLaunch( pipeline.raw, stream.as_inner(), - pipeline_params.as_raw_ptr() as u64, + pipeline_params.as_raw_ptr(), pipeline_params.size_in_bytes(), &sbt.0, width, diff --git a/crates/optix/src/pipeline.rs b/crates/optix/src/pipeline.rs index a60cc4d7..35f49f5d 100644 --- a/crates/optix/src/pipeline.rs +++ b/crates/optix/src/pipeline.rs @@ -1,6 +1,7 @@ use crate::{context::DeviceContext, error::Error, optix_call, sys}; type Result = std::result::Result; +use std::cmp::min; use std::ffi::{CStr, CString}; // Kinda nasty hack to work around the fact taht bindgen generates an i32 for enums on windows, @@ -134,8 +135,9 @@ pub struct Module { /// Module compilation optimization level #[cfg_attr(windows, repr(i32))] #[cfg_attr(unix, repr(u32))] -#[derive(Debug, Hash, PartialEq, Copy, Clone)] +#[derive(Debug, Hash, PartialEq, Copy, Clone, Default)] pub enum CompileOptimizationLevel { + #[default] Default = sys::OptixCompileOptimizationLevel::OPTIX_COMPILE_OPTIMIZATION_DEFAULT, Level0 = sys::OptixCompileOptimizationLevel::OPTIX_COMPILE_OPTIMIZATION_LEVEL_0, Level1 = sys::OptixCompileOptimizationLevel::OPTIX_COMPILE_OPTIMIZATION_LEVEL_1, @@ -143,28 +145,17 @@ pub enum CompileOptimizationLevel { Level3 = sys::OptixCompileOptimizationLevel::OPTIX_COMPILE_OPTIMIZATION_LEVEL_3, } -impl Default for CompileOptimizationLevel { - fn default() -> Self { - CompileOptimizationLevel::Default - } -} - /// Module compilation debug level #[cfg_attr(windows, repr(i32))] #[cfg_attr(unix, repr(u32))] -#[derive(Debug, Hash, PartialEq, Copy, Clone)] +#[derive(Debug, Hash, PartialEq, Copy, Clone, Default)] pub enum CompileDebugLevel { + #[default] None = sys::OptixCompileDebugLevel::OPTIX_COMPILE_DEBUG_LEVEL_NONE, LineInfo = sys::OptixCompileDebugLevel::OPTIX_COMPILE_DEBUG_LEVEL_LINEINFO, Full = sys::OptixCompileDebugLevel::OPTIX_COMPILE_DEBUG_LEVEL_FULL, } -impl Default for CompileDebugLevel { - fn default() -> Self { - CompileDebugLevel::None - } -} - cfg_if::cfg_if! { if #[cfg(any(feature="optix72", feature="optix73"))] { #[repr(C)] @@ -373,7 +364,7 @@ impl Module { )) }; - let log = CStr::from_bytes_with_nul(&log[0..log_len]) + let log = CStr::from_bytes_with_nul(&log[0..min(log_len, log.len())]) .unwrap() .to_string_lossy() .into_owned(); diff --git a/crates/optix_device/src/lib.rs b/crates/optix_device/src/lib.rs index 6471f0cc..76c0539f 100644 --- a/crates/optix_device/src/lib.rs +++ b/crates/optix_device/src/lib.rs @@ -17,7 +17,6 @@ pub mod util; use cuda_std::*; pub use glam; use glam::UVec3; - pub use misc::*; extern "C" { diff --git a/crates/rustc_codegen_nvvm/src/nvvm.rs b/crates/rustc_codegen_nvvm/src/nvvm.rs index eb90ee79..88f5e8ef 100644 --- a/crates/rustc_codegen_nvvm/src/nvvm.rs +++ b/crates/rustc_codegen_nvvm/src/nvvm.rs @@ -160,7 +160,6 @@ pub fn find_libdevice() -> Option> { .filter_map(Result::ok) .find(|f| f.path().extension() == Some(OsStr::new("bc")))? .path(); - fs::read(libdevice_file).ok() } else { None diff --git a/examples/cuda/cpu/add/src/main.rs b/examples/cuda/cpu/add/src/main.rs index 8ced6476..69c34b4c 100644 --- a/examples/cuda/cpu/add/src/main.rs +++ b/examples/cuda/cpu/add/src/main.rs @@ -45,7 +45,7 @@ fn main() -> Result<(), Box> { // current CUDA device/architecture. let (_, block_size) = func.suggested_launch_configuration(0, 0.into())?; - let grid_size = (NUMBERS_LEN as u32 + block_size - 1) / block_size; + let grid_size = (NUMBERS_LEN as u32).div_ceil(block_size); println!( "using {} blocks and {} threads per block", diff --git a/examples/cuda/cpu/path_tracer/Cargo.toml b/examples/cuda/cpu/path_tracer/Cargo.toml index 4eb7c4fc..763ba0e5 100644 --- a/examples/cuda/cpu/path_tracer/Cargo.toml +++ b/examples/cuda/cpu/path_tracer/Cargo.toml @@ -11,11 +11,11 @@ image = "0.25.5" path_tracer_gpu = { path = "../../gpu/path_tracer_gpu" } gpu_rand = { version = "0.1", path = "../../../../crates/gpu_rand" } optix = { version = "0.1", path = "../../../../crates/optix" } -glium = "0.36.0" -glutin = "0.32.2" -imgui = "0.12.0" -imgui-glium-renderer = "0.13.0" -imgui-winit-support = "0.13.0" +glium = "0.32.0" +glutin = "0.28.0" +imgui = "0.9.0" +imgui-glium-renderer = "0.9.0" +imgui-winit-support = "0.9.0" rayon = "1.10.0" sysinfo = "0.33.1" anyhow = "1.0.53" diff --git a/examples/cuda/cpu/path_tracer/src/common.rs b/examples/cuda/cpu/path_tracer/src/common.rs index 7f342492..bfe69df0 100644 --- a/examples/cuda/cpu/path_tracer/src/common.rs +++ b/examples/cuda/cpu/path_tracer/src/common.rs @@ -1,4 +1,4 @@ -use glutin::event::{ +use glium::glutin::event::{ ElementState, Event, MouseButton, MouseScrollDelta, VirtualKeyCode, WindowEvent, }; use path_tracer_gpu::Viewport; diff --git a/examples/cuda/cpu/path_tracer/src/cpu/mod.rs b/examples/cuda/cpu/path_tracer/src/cpu/mod.rs index 3b67efeb..217bde5e 100644 --- a/examples/cuda/cpu/path_tracer/src/cpu/mod.rs +++ b/examples/cuda/cpu/path_tracer/src/cpu/mod.rs @@ -6,7 +6,7 @@ use path_tracer_gpu::{ material::MaterialKind, render::generate_ray, scene::Scene, Object, Viewport, }; use rayon::prelude::*; -use sysinfo::{ProcessorExt, System, SystemExt}; +use sysinfo::System; use vek::{Clamp, Vec2, Vec3}; use crate::{common::Camera, cuda::SEED}; @@ -45,7 +45,7 @@ impl CpuRenderer { pub fn info(&self, ui: &Ui, system: &System) { let cores = system.physical_core_count().unwrap(); - let processor = &system.processors()[0]; + let processor = &system.cpus()[0]; let group = ui.begin_group(); ui.text(format!( diff --git a/examples/cuda/cpu/path_tracer/src/optix/mod.rs b/examples/cuda/cpu/path_tracer/src/optix/mod.rs index 3cea2967..bf8bdc09 100644 --- a/examples/cuda/cpu/path_tracer/src/optix/mod.rs +++ b/examples/cuda/cpu/path_tracer/src/optix/mod.rs @@ -135,8 +135,10 @@ impl OptixRenderer { let mut build_inputs = Vec::with_capacity(buf.len()); let mut aabb_slices = Vec::with_capacity(buf.len()); + let dev_slice = buf.as_slice(); + for i in 0..buf.len() { - aabb_slices.push(buf.index(i)); + aabb_slices.push(&dev_slice[i]); } for i in 0..buf.len() { build_inputs.push(CustomPrimitiveArray::new( diff --git a/examples/cuda/cpu/path_tracer/src/renderer.rs b/examples/cuda/cpu/path_tracer/src/renderer.rs index bd2bfac3..99e368ae 100644 --- a/examples/cuda/cpu/path_tracer/src/renderer.rs +++ b/examples/cuda/cpu/path_tracer/src/renderer.rs @@ -1,7 +1,7 @@ -use glutin::{event::Event, event_loop::ControlFlow}; +use glium::glutin::{event::Event, event_loop::ControlFlow}; use imgui::Ui; use path_tracer_gpu::scene::Scene; -use sysinfo::{System, SystemExt}; +use sysinfo::System; use vek::Vec2; use crate::{ diff --git a/examples/cuda/cpu/path_tracer/src/viewer.rs b/examples/cuda/cpu/path_tracer/src/viewer.rs index 4943fc55..9f040987 100644 --- a/examples/cuda/cpu/path_tracer/src/viewer.rs +++ b/examples/cuda/cpu/path_tracer/src/viewer.rs @@ -1,16 +1,17 @@ use glium::{ + glutin::{ + dpi::PhysicalSize, + event::{Event, WindowEvent}, + event_loop::{ControlFlow, EventLoop}, + window::WindowBuilder, + ContextBuilder, + }, implement_vertex, index::{NoIndices, PrimitiveType}, texture::{RawImage2d, SrgbTexture2d}, uniform, Display, Program, Rect, Surface, VertexBuffer, }; -use glutin::{ - dpi::PhysicalSize, - event::{Event, WindowEvent}, - event_loop::{ControlFlow, EventLoop}, - window::WindowBuilder, - ContextBuilder, -}; + use imgui::Condition; use imgui_winit_support::{HiDpiMode, WinitPlatform}; use path_tracer_gpu::scene::Scene; @@ -55,7 +56,7 @@ pub fn run(camera: &Camera, scene: &Scene) -> ! { let event_loop = EventLoop::new(); let wb = WindowBuilder::new() .with_title("Render") - .with_inner_size(PhysicalSize::new(WIDTH, HEIGHT)); + .with_inner_size(PhysicalSize::new(WIDTH as f64, HEIGHT as f64)); let cb = ContextBuilder::new().with_vsync(true); let display = Display::new(wb, cb, &event_loop).unwrap(); let renderer = Renderer::new(Vec2::new(WIDTH as usize, HEIGHT as usize), camera, scene); @@ -183,9 +184,10 @@ impl ViewerRenderer { .. } = self; let ui = self.imgui_ctx.frame(); - let out = imgui::Window::new("crab") + let out = ui + .window("crab") .size([300.0, 300.0], Condition::FirstUseEver) - .build(&ui, || renderer.render(&ui)) + .build(|| renderer.render(&ui)) .unwrap(); let raw = @@ -221,7 +223,8 @@ impl ViewerRenderer { let gl_window = display.gl_window(); platform.prepare_render(&ui, gl_window.window()); - imgui_renderer.render(&mut target, ui.render()).unwrap(); + let draw_data = self.imgui_ctx.render(); + imgui_renderer.render(&mut target, draw_data).unwrap(); target.finish().unwrap(); } } diff --git a/examples/cuda/gpu/path_tracer_gpu/Cargo.toml b/examples/cuda/gpu/path_tracer_gpu/Cargo.toml index 46a07950..02cbc45f 100644 --- a/examples/cuda/gpu/path_tracer_gpu/Cargo.toml +++ b/examples/cuda/gpu/path_tracer_gpu/Cargo.toml @@ -7,7 +7,7 @@ edition = "2018" cuda_std = { version = "0.2", path = "../../../../crates/cuda_std" } enum_dispatch = "0.3.13" gpu_rand = { version = "0.1", path = "../../../../crates/gpu_rand" } -cust_core = { path = "../../../../crates/cust_core" } +cust_core = { path = "../../../../crates/cust_core", features=["vek"] } optix_device = { path = "../../../../crates/optix_device" } [lib] diff --git a/examples/cuda/gpu/path_tracer_gpu/src/lib.rs b/examples/cuda/gpu/path_tracer_gpu/src/lib.rs index d28fae17..51614f77 100644 --- a/examples/cuda/gpu/path_tracer_gpu/src/lib.rs +++ b/examples/cuda/gpu/path_tracer_gpu/src/lib.rs @@ -1,4 +1,3 @@ -#![cfg_attr(target_os = "cuda", no_std, register_attr(nvvm_internal))] #![allow(clippy::missing_safety_doc)] extern crate alloc; diff --git a/examples/cuda/gpu/path_tracer_gpu/src/optix.rs b/examples/cuda/gpu/path_tracer_gpu/src/optix.rs index b4ee175f..7a0994f0 100644 --- a/examples/cuda/gpu/path_tracer_gpu/src/optix.rs +++ b/examples/cuda/gpu/path_tracer_gpu/src/optix.rs @@ -21,7 +21,11 @@ use optix_device::{ extern "C" { #[cfg(target_os = "cuda")] - #[cfg_attr(target_os = "cuda", nvvm_internal(addrspace(4)))] + #[cfg_attr( + target_os = "cuda", + nvvm_internal::addrspace(4), + allow(improper_ctypes) + )] static PARAMS: LaunchParams<'static>; }