NVIDIA OptiX 7.1 API nvidia_logo_transpbg.gif Up
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups
Types

Classes

struct  OptixDeviceContextOptions
 
struct  OptixBuildInputTriangleArray
 
struct  OptixBuildInputCurveArray
 
struct  OptixAabb
 
struct  OptixBuildInputCustomPrimitiveArray
 
struct  OptixBuildInputInstanceArray
 
struct  OptixBuildInput
 
struct  OptixInstance
 
struct  OptixMotionOptions
 
struct  OptixAccelBuildOptions
 
struct  OptixAccelBufferSizes
 
struct  OptixAccelEmitDesc
 
struct  OptixAccelRelocationInfo
 
struct  OptixStaticTransform
 
struct  OptixMatrixMotionTransform
 
struct  OptixSRTData
 
struct  OptixSRTMotionTransform
 
struct  OptixImage2D
 
struct  OptixDenoiserOptions
 
struct  OptixDenoiserParams
 
struct  OptixDenoiserSizes
 
struct  OptixModuleCompileOptions
 
struct  OptixProgramGroupSingleModule
 
struct  OptixProgramGroupHitgroup
 
struct  OptixProgramGroupCallables
 
struct  OptixProgramGroupDesc
 
struct  OptixProgramGroupOptions
 
struct  OptixPipelineCompileOptions
 
struct  OptixPipelineLinkOptions
 
struct  OptixShaderBindingTable
 
struct  OptixStackSizes
 
struct  OptixBuiltinISOptions
 

Macros

#define OPTIX_SBT_RECORD_HEADER_SIZE   ( (size_t)32 )
 
#define OPTIX_SBT_RECORD_ALIGNMENT   16ull
 
#define OPTIX_ACCEL_BUFFER_BYTE_ALIGNMENT   128ull
 
#define OPTIX_INSTANCE_BYTE_ALIGNMENT   16ull
 
#define OPTIX_AABB_BUFFER_BYTE_ALIGNMENT   8ull
 
#define OPTIX_GEOMETRY_TRANSFORM_BYTE_ALIGNMENT   16ull
 
#define OPTIX_TRANSFORM_BYTE_ALIGNMENT   64ull
 
#define OPTIX_COMPILE_DEFAULT_MAX_REGISTER_COUNT   0
 

Typedefs

typedef unsigned long long CUdeviceptr
 
typedef struct
OptixDeviceContext_t * 
OptixDeviceContext
 
typedef struct OptixModule_t * OptixModule
 
typedef struct
OptixProgramGroup_t * 
OptixProgramGroup
 
typedef struct OptixPipeline_t * OptixPipeline
 
typedef struct OptixDenoiser_t * OptixDenoiser
 
typedef unsigned long long OptixTraversableHandle
 
typedef unsigned int OptixVisibilityMask
 
typedef enum OptixResult OptixResult
 
typedef enum OptixDeviceProperty OptixDeviceProperty
 
typedef void(* OptixLogCallback )(unsigned int level, const char *tag, const char *message, void *cbdata)
 
typedef struct
OptixDeviceContextOptions 
OptixDeviceContextOptions
 
typedef enum OptixGeometryFlags OptixGeometryFlags
 
typedef enum OptixHitKind OptixHitKind
 
typedef enum OptixIndicesFormat OptixIndicesFormat
 
typedef enum OptixVertexFormat OptixVertexFormat
 
typedef enum OptixTransformFormat OptixTransformFormat
 
typedef struct
OptixBuildInputTriangleArray 
OptixBuildInputTriangleArray
 
typedef enum OptixPrimitiveType OptixPrimitiveType
 
typedef enum
OptixPrimitiveTypeFlags 
OptixPrimitiveTypeFlags
 
typedef struct
OptixBuildInputCurveArray 
OptixBuildInputCurveArray
 
typedef struct OptixAabb OptixAabb
 
typedef struct
OptixBuildInputCustomPrimitiveArray 
OptixBuildInputCustomPrimitiveArray
 
typedef struct
OptixBuildInputInstanceArray 
OptixBuildInputInstanceArray
 
typedef enum OptixBuildInputType OptixBuildInputType
 
typedef struct OptixBuildInput OptixBuildInput
 
typedef enum OptixInstanceFlags OptixInstanceFlags
 
typedef struct OptixInstance OptixInstance
 
typedef enum OptixBuildFlags OptixBuildFlags
 
typedef enum OptixBuildOperation OptixBuildOperation
 
typedef enum OptixMotionFlags OptixMotionFlags
 
typedef struct OptixMotionOptions OptixMotionOptions
 
typedef struct
OptixAccelBuildOptions 
OptixAccelBuildOptions
 
typedef struct
OptixAccelBufferSizes 
OptixAccelBufferSizes
 
typedef enum OptixAccelPropertyType OptixAccelPropertyType
 
typedef struct OptixAccelEmitDesc OptixAccelEmitDesc
 
typedef struct
OptixAccelRelocationInfo 
OptixAccelRelocationInfo
 
typedef struct OptixStaticTransform OptixStaticTransform
 
typedef struct
OptixMatrixMotionTransform 
OptixMatrixMotionTransform
 
typedef struct OptixSRTData OptixSRTData
 
typedef struct
OptixSRTMotionTransform 
OptixSRTMotionTransform
 
typedef enum OptixTraversableType OptixTraversableType
 
typedef enum OptixPixelFormat OptixPixelFormat
 
typedef struct OptixImage2D OptixImage2D
 
typedef enum OptixDenoiserInputKind OptixDenoiserInputKind
 
typedef enum OptixDenoiserModelKind OptixDenoiserModelKind
 
typedef struct OptixDenoiserOptions OptixDenoiserOptions
 
typedef struct OptixDenoiserParams OptixDenoiserParams
 
typedef struct OptixDenoiserSizes OptixDenoiserSizes
 
typedef enum OptixRayFlags OptixRayFlags
 
typedef enum OptixTransformType OptixTransformType
 
typedef enum
OptixTraversableGraphFlags 
OptixTraversableGraphFlags
 
typedef enum
OptixCompileOptimizationLevel 
OptixCompileOptimizationLevel
 
typedef enum OptixCompileDebugLevel OptixCompileDebugLevel
 
typedef struct
OptixModuleCompileOptions 
OptixModuleCompileOptions
 
typedef enum OptixProgramGroupKind OptixProgramGroupKind
 
typedef enum OptixProgramGroupFlags OptixProgramGroupFlags
 
typedef struct
OptixProgramGroupSingleModule 
OptixProgramGroupSingleModule
 
typedef struct
OptixProgramGroupHitgroup 
OptixProgramGroupHitgroup
 
typedef struct
OptixProgramGroupCallables 
OptixProgramGroupCallables
 
typedef struct
OptixProgramGroupDesc 
OptixProgramGroupDesc
 
typedef struct
OptixProgramGroupOptions 
OptixProgramGroupOptions
 
typedef enum OptixExceptionCodes OptixExceptionCodes
 
typedef enum OptixExceptionFlags OptixExceptionFlags
 
typedef struct
OptixPipelineCompileOptions 
OptixPipelineCompileOptions
 
typedef struct
OptixPipelineLinkOptions 
OptixPipelineLinkOptions
 
typedef struct
OptixShaderBindingTable 
OptixShaderBindingTable
 
typedef struct OptixStackSizes OptixStackSizes
 
typedef enum
OptixQueryFunctionTableOptions 
OptixQueryFunctionTableOptions
 
typedef OptixResultOptixQueryFunctionTable_t )(int abiId, unsigned int numOptions, OptixQueryFunctionTableOptions *, const void **, void *functionTable, size_t sizeOfTable)
 
typedef struct
OptixBuiltinISOptions 
OptixBuiltinISOptions
 

Enumerations

enum  OptixResult {
  OPTIX_SUCCESS = 0,
  OPTIX_ERROR_INVALID_VALUE = 7001,
  OPTIX_ERROR_HOST_OUT_OF_MEMORY = 7002,
  OPTIX_ERROR_INVALID_OPERATION = 7003,
  OPTIX_ERROR_FILE_IO_ERROR = 7004,
  OPTIX_ERROR_INVALID_FILE_FORMAT = 7005,
  OPTIX_ERROR_DISK_CACHE_INVALID_PATH = 7010,
  OPTIX_ERROR_DISK_CACHE_PERMISSION_ERROR = 7011,
  OPTIX_ERROR_DISK_CACHE_DATABASE_ERROR = 7012,
  OPTIX_ERROR_DISK_CACHE_INVALID_DATA = 7013,
  OPTIX_ERROR_LAUNCH_FAILURE = 7050,
  OPTIX_ERROR_INVALID_DEVICE_CONTEXT = 7051,
  OPTIX_ERROR_CUDA_NOT_INITIALIZED = 7052,
  OPTIX_ERROR_INVALID_PTX = 7200,
  OPTIX_ERROR_INVALID_LAUNCH_PARAMETER = 7201,
  OPTIX_ERROR_INVALID_PAYLOAD_ACCESS = 7202,
  OPTIX_ERROR_INVALID_ATTRIBUTE_ACCESS = 7203,
  OPTIX_ERROR_INVALID_FUNCTION_USE = 7204,
  OPTIX_ERROR_INVALID_FUNCTION_ARGUMENTS = 7205,
  OPTIX_ERROR_PIPELINE_OUT_OF_CONSTANT_MEMORY = 7250,
  OPTIX_ERROR_PIPELINE_LINK_ERROR = 7251,
  OPTIX_ERROR_INTERNAL_COMPILER_ERROR = 7299,
  OPTIX_ERROR_DENOISER_MODEL_NOT_SET = 7300,
  OPTIX_ERROR_DENOISER_NOT_INITIALIZED = 7301,
  OPTIX_ERROR_ACCEL_NOT_COMPATIBLE = 7400,
  OPTIX_ERROR_NOT_SUPPORTED = 7800,
  OPTIX_ERROR_UNSUPPORTED_ABI_VERSION = 7801,
  OPTIX_ERROR_FUNCTION_TABLE_SIZE_MISMATCH = 7802,
  OPTIX_ERROR_INVALID_ENTRY_FUNCTION_OPTIONS = 7803,
  OPTIX_ERROR_LIBRARY_NOT_FOUND = 7804,
  OPTIX_ERROR_ENTRY_SYMBOL_NOT_FOUND = 7805,
  OPTIX_ERROR_CUDA_ERROR = 7900,
  OPTIX_ERROR_INTERNAL_ERROR = 7990,
  OPTIX_ERROR_UNKNOWN = 7999
}
 
enum  OptixDeviceProperty {
  OPTIX_DEVICE_PROPERTY_LIMIT_MAX_TRACE_DEPTH = 0x2001,
  OPTIX_DEVICE_PROPERTY_LIMIT_MAX_TRAVERSABLE_GRAPH_DEPTH = 0x2002,
  OPTIX_DEVICE_PROPERTY_LIMIT_MAX_PRIMITIVES_PER_GAS = 0x2003,
  OPTIX_DEVICE_PROPERTY_LIMIT_MAX_INSTANCES_PER_IAS = 0x2004,
  OPTIX_DEVICE_PROPERTY_RTCORE_VERSION = 0x2005,
  OPTIX_DEVICE_PROPERTY_LIMIT_MAX_INSTANCE_ID = 0x2006,
  OPTIX_DEVICE_PROPERTY_LIMIT_NUM_BITS_INSTANCE_VISIBILITY_MASK = 0x2007,
  OPTIX_DEVICE_PROPERTY_LIMIT_MAX_SBT_RECORDS_PER_GAS = 0x2008,
  OPTIX_DEVICE_PROPERTY_LIMIT_MAX_SBT_OFFSET = 0x2009
}
 
enum  OptixGeometryFlags {
  OPTIX_GEOMETRY_FLAG_NONE = 0,
  OPTIX_GEOMETRY_FLAG_DISABLE_ANYHIT = 1u << 0,
  OPTIX_GEOMETRY_FLAG_REQUIRE_SINGLE_ANYHIT_CALL = 1u << 1
}
 
enum  OptixHitKind {
  OPTIX_HIT_KIND_TRIANGLE_FRONT_FACE = 0xFE,
  OPTIX_HIT_KIND_TRIANGLE_BACK_FACE = 0xFF
}
 
enum  OptixIndicesFormat {
  OPTIX_INDICES_FORMAT_NONE = 0,
  OPTIX_INDICES_FORMAT_UNSIGNED_SHORT3 = 0x2102,
  OPTIX_INDICES_FORMAT_UNSIGNED_INT3 = 0x2103
}
 
enum  OptixVertexFormat {
  OPTIX_VERTEX_FORMAT_NONE = 0,
  OPTIX_VERTEX_FORMAT_FLOAT3 = 0x2121,
  OPTIX_VERTEX_FORMAT_FLOAT2 = 0x2122,
  OPTIX_VERTEX_FORMAT_HALF3 = 0x2123,
  OPTIX_VERTEX_FORMAT_HALF2 = 0x2124,
  OPTIX_VERTEX_FORMAT_SNORM16_3 = 0x2125,
  OPTIX_VERTEX_FORMAT_SNORM16_2 = 0x2126
}
 
enum  OptixTransformFormat {
  OPTIX_TRANSFORM_FORMAT_NONE = 0,
  OPTIX_TRANSFORM_FORMAT_MATRIX_FLOAT12 = 0x21E1
}
 
enum  OptixPrimitiveType {
  OPTIX_PRIMITIVE_TYPE_CUSTOM = 0x2500,
  OPTIX_PRIMITIVE_TYPE_ROUND_QUADRATIC_BSPLINE = 0x2501,
  OPTIX_PRIMITIVE_TYPE_ROUND_CUBIC_BSPLINE = 0x2502,
  OPTIX_PRIMITIVE_TYPE_ROUND_LINEAR = 0x2503,
  OPTIX_PRIMITIVE_TYPE_TRIANGLE = 0x2531
}
 
enum  OptixPrimitiveTypeFlags {
  OPTIX_PRIMITIVE_TYPE_FLAGS_CUSTOM = 1 << 0,
  OPTIX_PRIMITIVE_TYPE_FLAGS_ROUND_QUADRATIC_BSPLINE = 1 << 1,
  OPTIX_PRIMITIVE_TYPE_FLAGS_ROUND_CUBIC_BSPLINE = 1 << 2,
  OPTIX_PRIMITIVE_TYPE_FLAGS_ROUND_LINEAR = 1 << 3,
  OPTIX_PRIMITIVE_TYPE_FLAGS_TRIANGLE = 1 << 31
}
 
enum  OptixBuildInputType {
  OPTIX_BUILD_INPUT_TYPE_TRIANGLES = 0x2141,
  OPTIX_BUILD_INPUT_TYPE_CUSTOM_PRIMITIVES = 0x2142,
  OPTIX_BUILD_INPUT_TYPE_INSTANCES = 0x2143,
  OPTIX_BUILD_INPUT_TYPE_INSTANCE_POINTERS = 0x2144,
  OPTIX_BUILD_INPUT_TYPE_CURVES = 0x2145
}
 
enum  OptixInstanceFlags {
  OPTIX_INSTANCE_FLAG_NONE = 0,
  OPTIX_INSTANCE_FLAG_DISABLE_TRIANGLE_FACE_CULLING = 1u << 0,
  OPTIX_INSTANCE_FLAG_FLIP_TRIANGLE_FACING = 1u << 1,
  OPTIX_INSTANCE_FLAG_DISABLE_ANYHIT = 1u << 2,
  OPTIX_INSTANCE_FLAG_ENFORCE_ANYHIT = 1u << 3,
  OPTIX_INSTANCE_FLAG_DISABLE_TRANSFORM = 1u << 6
}
 
enum  OptixBuildFlags {
  OPTIX_BUILD_FLAG_NONE = 0,
  OPTIX_BUILD_FLAG_ALLOW_UPDATE = 1u << 0,
  OPTIX_BUILD_FLAG_ALLOW_COMPACTION = 1u << 1,
  OPTIX_BUILD_FLAG_PREFER_FAST_TRACE = 1u << 2,
  OPTIX_BUILD_FLAG_PREFER_FAST_BUILD = 1u << 3,
  OPTIX_BUILD_FLAG_ALLOW_RANDOM_VERTEX_ACCESS = 1u << 4
}
 
enum  OptixBuildOperation {
  OPTIX_BUILD_OPERATION_BUILD = 0x2161,
  OPTIX_BUILD_OPERATION_UPDATE = 0x2162
}
 
enum  OptixMotionFlags {
  OPTIX_MOTION_FLAG_NONE = 0,
  OPTIX_MOTION_FLAG_START_VANISH = 1u << 0,
  OPTIX_MOTION_FLAG_END_VANISH = 1u << 1
}
 
enum  OptixAccelPropertyType {
  OPTIX_PROPERTY_TYPE_COMPACTED_SIZE = 0x2181,
  OPTIX_PROPERTY_TYPE_AABBS = 0x2182
}
 
enum  OptixTraversableType {
  OPTIX_TRAVERSABLE_TYPE_STATIC_TRANSFORM = 0x21C1,
  OPTIX_TRAVERSABLE_TYPE_MATRIX_MOTION_TRANSFORM = 0x21C2,
  OPTIX_TRAVERSABLE_TYPE_SRT_MOTION_TRANSFORM = 0x21C3
}
 
enum  OptixPixelFormat {
  OPTIX_PIXEL_FORMAT_HALF3 = 0x2201,
  OPTIX_PIXEL_FORMAT_HALF4 = 0x2202,
  OPTIX_PIXEL_FORMAT_FLOAT3 = 0x2203,
  OPTIX_PIXEL_FORMAT_FLOAT4 = 0x2204,
  OPTIX_PIXEL_FORMAT_UCHAR3 = 0x2205,
  OPTIX_PIXEL_FORMAT_UCHAR4 = 0x2206
}
 
enum  OptixDenoiserInputKind {
  OPTIX_DENOISER_INPUT_RGB = 0x2301,
  OPTIX_DENOISER_INPUT_RGB_ALBEDO = 0x2302,
  OPTIX_DENOISER_INPUT_RGB_ALBEDO_NORMAL = 0x2303
}
 
enum  OptixDenoiserModelKind {
  OPTIX_DENOISER_MODEL_KIND_USER = 0x2321,
  OPTIX_DENOISER_MODEL_KIND_LDR = 0x2322,
  OPTIX_DENOISER_MODEL_KIND_HDR = 0x2323
}
 
enum  OptixRayFlags {
  OPTIX_RAY_FLAG_NONE = 0u,
  OPTIX_RAY_FLAG_DISABLE_ANYHIT = 1u << 0,
  OPTIX_RAY_FLAG_ENFORCE_ANYHIT = 1u << 1,
  OPTIX_RAY_FLAG_TERMINATE_ON_FIRST_HIT = 1u << 2,
  OPTIX_RAY_FLAG_DISABLE_CLOSESTHIT = 1u << 3,
  OPTIX_RAY_FLAG_CULL_BACK_FACING_TRIANGLES = 1u << 4,
  OPTIX_RAY_FLAG_CULL_FRONT_FACING_TRIANGLES = 1u << 5,
  OPTIX_RAY_FLAG_CULL_DISABLED_ANYHIT = 1u << 6,
  OPTIX_RAY_FLAG_CULL_ENFORCED_ANYHIT = 1u << 7
}
 
enum  OptixTransformType {
  OPTIX_TRANSFORM_TYPE_NONE = 0,
  OPTIX_TRANSFORM_TYPE_STATIC_TRANSFORM = 1,
  OPTIX_TRANSFORM_TYPE_MATRIX_MOTION_TRANSFORM = 2,
  OPTIX_TRANSFORM_TYPE_SRT_MOTION_TRANSFORM = 3,
  OPTIX_TRANSFORM_TYPE_INSTANCE = 4
}
 
enum  OptixTraversableGraphFlags {
  OPTIX_TRAVERSABLE_GRAPH_FLAG_ALLOW_ANY = 0,
  OPTIX_TRAVERSABLE_GRAPH_FLAG_ALLOW_SINGLE_GAS = 1u << 0,
  OPTIX_TRAVERSABLE_GRAPH_FLAG_ALLOW_SINGLE_LEVEL_INSTANCING = 1u << 1
}
 
enum  OptixCompileOptimizationLevel {
  OPTIX_COMPILE_OPTIMIZATION_DEFAULT = 0,
  OPTIX_COMPILE_OPTIMIZATION_LEVEL_0 = 0x2340,
  OPTIX_COMPILE_OPTIMIZATION_LEVEL_1 = 0x2341,
  OPTIX_COMPILE_OPTIMIZATION_LEVEL_2 = 0x2342,
  OPTIX_COMPILE_OPTIMIZATION_LEVEL_3 = 0x2343
}
 
enum  OptixCompileDebugLevel {
  OPTIX_COMPILE_DEBUG_LEVEL_DEFAULT = 0,
  OPTIX_COMPILE_DEBUG_LEVEL_NONE = 0x2350,
  OPTIX_COMPILE_DEBUG_LEVEL_LINEINFO = 0x2351,
  OPTIX_COMPILE_DEBUG_LEVEL_FULL = 0x2352
}
 
enum  OptixProgramGroupKind {
  OPTIX_PROGRAM_GROUP_KIND_RAYGEN = 0x2421,
  OPTIX_PROGRAM_GROUP_KIND_MISS = 0x2422,
  OPTIX_PROGRAM_GROUP_KIND_EXCEPTION = 0x2423,
  OPTIX_PROGRAM_GROUP_KIND_HITGROUP = 0x2424,
  OPTIX_PROGRAM_GROUP_KIND_CALLABLES = 0x2425
}
 
enum  OptixProgramGroupFlags { OPTIX_PROGRAM_GROUP_FLAGS_NONE = 0 }
 
enum  OptixExceptionCodes {
  OPTIX_EXCEPTION_CODE_STACK_OVERFLOW = -1,
  OPTIX_EXCEPTION_CODE_TRACE_DEPTH_EXCEEDED = -2,
  OPTIX_EXCEPTION_CODE_TRAVERSAL_DEPTH_EXCEEDED = -3,
  OPTIX_EXCEPTION_CODE_TRAVERSAL_INVALID_TRAVERSABLE = -5,
  OPTIX_EXCEPTION_CODE_TRAVERSAL_INVALID_MISS_SBT = -6,
  OPTIX_EXCEPTION_CODE_TRAVERSAL_INVALID_HIT_SBT = -7,
  OPTIX_EXCEPTION_CODE_UNSUPPORTED_PRIMITIVE_TYPE = -8,
  OPTIX_EXCEPTION_CODE_INVALID_RAY = -9,
  OPTIX_EXCEPTION_CODE_CALLABLE_PARAMETER_MISMATCH = -10,
  OPTIX_EXCEPTION_CODE_BUILTIN_IS_MISMATCH = -11,
  OPTIX_EXCEPTION_CODE_UNSUPPORTED_SINGLE_LEVEL_GAS = -15
}
 
enum  OptixExceptionFlags {
  OPTIX_EXCEPTION_FLAG_NONE = 0,
  OPTIX_EXCEPTION_FLAG_STACK_OVERFLOW = 1u << 0,
  OPTIX_EXCEPTION_FLAG_TRACE_DEPTH = 1u << 1,
  OPTIX_EXCEPTION_FLAG_USER = 1u << 2,
  OPTIX_EXCEPTION_FLAG_DEBUG = 1u << 3
}
 
enum  OptixQueryFunctionTableOptions { OPTIX_QUERY_FUNCTION_TABLE_OPTION_DUMMY = 0 }
 

Detailed Description

OptiX Types.

Macro Definition Documentation

#define OPTIX_AABB_BUFFER_BYTE_ALIGNMENT   8ull
#define OPTIX_ACCEL_BUFFER_BYTE_ALIGNMENT   128ull

Alignment requirement for output and temporay buffers for acceleration structures.

#define OPTIX_COMPILE_DEFAULT_MAX_REGISTER_COUNT   0

Maximum number of registers allowed. Defaults to no explicit limit.

#define OPTIX_GEOMETRY_TRANSFORM_BYTE_ALIGNMENT   16ull

Alignment requirement for OptixBuildInputTriangleArray::preTransform.

#define OPTIX_INSTANCE_BYTE_ALIGNMENT   16ull

Alignment requirement for OptixBuildInputInstanceArray::instances.

#define OPTIX_SBT_RECORD_ALIGNMENT   16ull

Alignment requirement for device pointers in OptixShaderBindingTable.

#define OPTIX_SBT_RECORD_HEADER_SIZE   ( (size_t)32 )

Size of the SBT record headers.

#define OPTIX_TRANSFORM_BYTE_ALIGNMENT   64ull

Typedef Documentation

typedef unsigned long long CUdeviceptr

CUDA device pointer.

typedef struct OptixAabb OptixAabb

AABB inputs.

Struct for querying builder allocation requirements.

Once queried the sizes should be used to allocate device memory of at least these sizes.

See Also
optixAccelComputeMemoryUsage()

Build options for acceleration structures.

See Also
optixAccelComputeMemoryUsage(), optixAccelBuild()

Specifies a type and output destination for emitted post-build properties.

See Also
optixAccelBuild()

Properties which can be emitted during acceleration structure build.

See Also
OptixAccelEmitDesc::type.

Used to store information related to relocation of acceleration structures.

See Also
optixAccelGetRelocationInfo(), optixAccelCheckRelocationCompatibility(), optixAccelRelocate()

Builder Options.

Used for OptixAccelBuildOptions::buildFlags. Can be or'ed together.

Build inputs.

All of them support motion and the size of the data arrays needs to match the number of motion steps

See Also
optixAccelComputeMemoryUsage(), optixAccelBuild()

Curve inputs.

A curve is a swept surface defined by a 3D spline curve and a varying width (radius). A curve (or "strand") of degree d (3=cubic, 2=quadratic, 1=linear) is represented by N > d vertices and N width values, and comprises N - d segments. Each segment is defined by d+1 consecutive vertices. Each curve may have a different number of vertices.

OptiX describes the curve array as a list of curve segments. The primitive id is the segment number. It is the user's responsibility to maintain a mapping between curves and curve segments. Each index buffer entry i = indexBuffer[primid] specifies the start of a curve segment, represented by d+1 consecutive vertices in the vertex buffer, and d+1 consecutive widths in the width buffer. Width is interpolated the same way vertices are interpolated, that is, using the curve basis.

Each curves build input has only one SBT record. To create curves with different materials in the same BVH, use multiple build inputs.

See Also
OptixBuildInput::curveArray

Instance and instance pointer inputs.

See Also
OptixBuildInput::instanceArray

Enum to distinguish the different build input types.

See Also
OptixBuildInput::type

Enum to specify the acceleration build operation.

Used in OptixAccelBuildOptions, which is then passed to optixAccelBuild and optixAccelComputeMemoryUsage, this enum indicates whether to do a build or an update of the acceleration structure.

Acceleration structure updates utilize the same acceleration structure, but with updated bounds. Updates are typically much faster than builds, however, large perturbations can degrade the quality of the acceleration structure.

See Also
optixAccelComputeMemoryUsage(), optixAccelBuild(), OptixAccelBuildOptions

Specifies the options for retrieving an intersection program for a built-in primitive type. The primitive type must not be OPTIX_PRIMITIVE_TYPE_CUSTOM.

See Also
optixBuiltinISModuleGet()
typedef struct OptixDenoiser_t* OptixDenoiser

Opaque type representing a denoiser instance.

Input kinds used by the denoiser.

RGB(A) values less than zero will be clamped to zero. Albedo values must be in the range [0..1] (values less than zero will be clamped to zero). The normals must be transformed into screen space. The z component is not used.

See Also
OptixDenoiserOptions::inputKind

Model kind used by the denoiser.

See Also
optixDenoiserSetModel()

Options used by the denoiser.

See Also
optixDenoiserCreate()

Various parameters used by the denoiser.

See Also
optixDenoiserInvoke()

Various sizes related to the denoiser.

See Also
optixDenoiserComputeMemoryResources()
typedef struct OptixDeviceContext_t* OptixDeviceContext

Opaque type representing a device context.

The following values are used to indicate which exception was thrown.

typedef enum OptixHitKind OptixHitKind

Legacy type: A subset of the hit kinds for built-in primitive intersections. It is preferred to use optixGetPrimitiveType(), together with optixIsFrontFaceHit() or optixIsBackFaceHit().

See Also
optixGetHitKind()
typedef struct OptixImage2D OptixImage2D

Image descriptor used by the denoiser.

See Also
optixDenoiserInvoke(), optixDenoiserComputeIntensity()

Flags set on the OptixInstance::flags.

These can be or'ed together to combine multiple flags.

typedef void( * OptixLogCallback)(unsigned int level, const char *tag, const char *message, void *cbdata)

Type of the callback function used for log messages.

Parameters
[in]levelThe log level indicates the severity of the message. See below for possible values.
[in]tagA terse message category description (e.g., 'SCENE STAT').
[in]messageNull terminated log message (without newline at the end).
[in]cbdataCallback data that was provided with the callback pointer.

It is the users responsibility to ensure thread safety within this function.

The following log levels are defined.

0 disable Setting the callback level will disable all messages. The callback function will not be called in this case. 1 fatal A non-recoverable error. The context and/or OptiX itself might no longer be in a usable state. 2 error A recoverable error, e.g., when passing invalid call parameters. 3 warning Hints that OptiX might not behave exactly as requested by the user or may perform slower than expected. 4 print Status or progress messages.

Higher levels might occur.

See Also
optixDeviceContextSetLogCallback(), OptixDeviceContextOptions

Represents a matrix motion transformation.

The device address of instances of this type must be a multiple of OPTIX_TRANSFORM_BYTE_ALIGNMENT.

This struct, as defined here, handles only N=2 motion keys due to the fixed array length of its transform member. The following example shows how to create instances for an arbitrary number N of motion keys:

float matrixData[N][12];
... // setup matrixData
size_t transformSizeInBytes = sizeof( OptixMatrixMotionTransform ) + ( N-2 ) * 12 * sizeof( float );
OptixMatrixMotionTransform* matrixMoptionTransform = (OptixMatrixMotionTransform*) malloc( transformSizeInBytes );
memset( matrixMoptionTransform, 0, transformSizeInBytes );
... // setup other members of matrixMoptionTransform
matrixMoptionTransform->motionOptions.numKeys
memcpy( matrixMoptionTransform->transform, matrixData, N * 12 * sizeof( float ) );
... // copy matrixMoptionTransform to device memory
free( matrixMoptionTransform )
See Also
optixConvertPointerToTraversableHandle()
typedef struct OptixModule_t* OptixModule

Opaque type representing a module.

Compilation options for module.

See Also
optixModuleCreateFromPTX()

Enum to specify motion flags.

See Also
OptixMotionOptions::flags.
typedef struct OptixPipeline_t* OptixPipeline

Opaque type representing a pipeline.

Compilation options for all modules of a pipeline.

Similar to OptixModuleCompileOptions, but these options here need to be equal for all modules of a pipeline.

See Also
optixModuleCreateFromPTX(), optixPipelineCreate()

Link options for a pipeline.

See Also
optixPipelineCreate()

Pixel formats used by the denoiser.

See Also
OptixImage2D::format

Builtin primitive types.

typedef struct OptixProgramGroup_t* OptixProgramGroup

Opaque type representing a program group.

Program group representing callables.

Module and entry function name need to be valid for at least one of the two callables.

See Also
#OptixProgramGroupDesc::callables

Descriptor for program groups.

Flags for program groups.

Program group representing the hitgroup.

For each of the three program types, module and entry function name might both be nullptr.

See Also
OptixProgramGroupDesc::hitgroup

Distinguishes different kinds of program groups.

Program group options.

See Also
optixProgramGroupCreate()

Program group representing a single module.

Used for raygen, miss, and exception programs. In case of raygen and exception programs, module and entry function name need to be valid. For miss programs, module and entry function name might both be nullptr.

See Also
OptixProgramGroupDesc::raygen, OptixProgramGroupDesc::miss, OptixProgramGroupDesc::exception
typedef OptixResult( OptixQueryFunctionTable_t)(int abiId, unsigned int numOptions, OptixQueryFunctionTableOptions *, const void **, void *functionTable, size_t sizeOfTable)

Type of the function optixQueryFunctionTable()

Options that can be passed to optixQueryFunctionTable()

Ray flags passed to the device function optixTrace(). These affect the behavior of traversal per invocation.

See Also
optixTrace()
typedef enum OptixResult OptixResult

Result codes returned from API functions.

All host side API functions return OptixResult with the exception of optixGetErrorName and optixGetErrorString. When successful OPTIX_SUCCESS is returned. All return codes except for OPTIX_SUCCESS should be assumed to be errors as opposed to a warning.

See Also
optixGetErrorName(), optixGetErrorString()

Describes the shader binding table (SBT)

See Also
optixLaunch()
typedef struct OptixSRTData OptixSRTData

Represents an SRT transformation.

An SRT transformation can represent a smooth rotation with fewer motion keys than a matrix transformation. Each motion key is constructed from elements taken from a matrix S, a quaternion R, and a translation T.

                   [  sx   a   b  pvx ]

The scaling matrix S = [ 0 sy c pvy ] defines an affine transformation that can include scale, shear, and a [ 0 0 sz pvz ]

translation. The translation allows to define the pivot point for the subsequent rotation.

The quaternion R = [ qx, qy, qz, qw ] describes a rotation with angular component qw = cos(theta/2) and other components [ qx, qy, qz ] = sin(theta/2) * [ ax, ay, az ] where the axis [ ax, ay, az ] is normalized.

                [  1  0  0 tx ]

The translation T = [ 0 1 0 ty ] defines another translation that is applied after the rotation. Typically, this [ 0 0 1 tz ]

translation includes the inverse translation from the matrix S to reverse its effect.

To obtain the effective transformation at time t, the elements of the components of S, R, and T will be interpolated linearly. The components are then multiplied to obtain the combined transformation C = T * R * S. The transformation C is the effective object-to-world transformations at time t, and C^(-1) is the effective world-to-object transformation at time t.

See Also
OptixSRTMotionTransform::srtData, optixConvertPointerToTraversableHandle()

Represents an SRT motion transformation.

The device address of instances of this type must be a multiple of OPTIX_TRANSFORM_BYTE_ALIGNMENT.

This struct, as defined here, handles only N=2 motion keys due to the fixed array length of its srtData member. The following example shows how to create instances for an arbitrary number N of motion keys:

OptixSRTData srtData[N];
... // setup srtData
size_t transformSizeInBytes = sizeof( OptixSRTMotionTransform ) + ( N-2 ) * sizeof( OptixSRTData );
OptixSRTMotionTransform* srtMotionTransform = (OptixSRTMotionTransform*) malloc( transformSizeInBytes );
memset( srtMotionTransform, 0, transformSizeInBytes );
... // setup other members of srtMotionTransform
srtMotionTransform->motionOptions.numKeys = N;
memcpy( srtMotionTransform->srtData, srtData, N * sizeof( OptixSRTData ) );
... // copy srtMotionTransform to device memory
free( srtMotionTransform )
See Also
optixConvertPointerToTraversableHandle()

Describes the stack size requirements of a program group.

See Also
optixProgramGroupGetStackSize()

Static transform.

The device address of instances of this type must be a multiple of OPTIX_TRANSFORM_BYTE_ALIGNMENT.

See Also
optixConvertPointerToTraversableHandle()

Transform.

OptixTransformType is used by the device function optixGetTransformTypeFromHandle() to determine the type of the OptixTraversableHandle returned from optixGetTransformListHandle().

Specifies the set of valid traversable graphs that may be passed to invocation of optixTrace(). Flags may be bitwise combined.

typedef unsigned long long OptixTraversableHandle

Traversable handle.

typedef unsigned int OptixVisibilityMask

Visibility mask.

Enumeration Type Documentation

Properties which can be emitted during acceleration structure build.

See Also
OptixAccelEmitDesc::type.
Enumerator
OPTIX_PROPERTY_TYPE_COMPACTED_SIZE 

Size of a compacted acceleration structure. The device pointer points to a uint64.

OPTIX_PROPERTY_TYPE_AABBS 

OptixAabb * numMotionSteps.

Builder Options.

Used for OptixAccelBuildOptions::buildFlags. Can be or'ed together.

Enumerator
OPTIX_BUILD_FLAG_NONE 

No special flags set.

OPTIX_BUILD_FLAG_ALLOW_UPDATE 

Allow updating the build with new vertex positions with subsequent calls to optixAccelBuild.

OPTIX_BUILD_FLAG_ALLOW_COMPACTION 
OPTIX_BUILD_FLAG_PREFER_FAST_TRACE 
OPTIX_BUILD_FLAG_PREFER_FAST_BUILD 
OPTIX_BUILD_FLAG_ALLOW_RANDOM_VERTEX_ACCESS 

Allow access to random baked vertex in closesthit.

Enum to distinguish the different build input types.

See Also
OptixBuildInput::type
Enumerator
OPTIX_BUILD_INPUT_TYPE_TRIANGLES 

Triangle inputs.

See Also
OptixBuildInputTriangleArray
OPTIX_BUILD_INPUT_TYPE_CUSTOM_PRIMITIVES 

Custom primitive inputs.

See Also
OptixBuildInputCustomPrimitiveArray
OPTIX_BUILD_INPUT_TYPE_INSTANCES 

Instance inputs.

See Also
OptixBuildInputInstanceArray
OPTIX_BUILD_INPUT_TYPE_INSTANCE_POINTERS 

Instance pointer inputs.

See Also
OptixBuildInputInstanceArray
OPTIX_BUILD_INPUT_TYPE_CURVES 

Curve inputs.

See Also
OptixBuildInputCurveArray

Enum to specify the acceleration build operation.

Used in OptixAccelBuildOptions, which is then passed to optixAccelBuild and optixAccelComputeMemoryUsage, this enum indicates whether to do a build or an update of the acceleration structure.

Acceleration structure updates utilize the same acceleration structure, but with updated bounds. Updates are typically much faster than builds, however, large perturbations can degrade the quality of the acceleration structure.

See Also
optixAccelComputeMemoryUsage(), optixAccelBuild(), OptixAccelBuildOptions
Enumerator
OPTIX_BUILD_OPERATION_BUILD 

Perform a full build operation.

OPTIX_BUILD_OPERATION_UPDATE 

Perform an update using new bounds.

Debug levels.

See Also
OptixModuleCompileOptions::debugLevel
Enumerator
OPTIX_COMPILE_DEBUG_LEVEL_DEFAULT 

Default currently is to add line info.

OPTIX_COMPILE_DEBUG_LEVEL_NONE 

No debug information.

OPTIX_COMPILE_DEBUG_LEVEL_LINEINFO 

Generate lineinfo only.

OPTIX_COMPILE_DEBUG_LEVEL_FULL 

Generate dwarf debug information.

Optimization levels.

See Also
OptixModuleCompileOptions::optLevel
Enumerator
OPTIX_COMPILE_OPTIMIZATION_DEFAULT 

Default is to run all optimizations.

OPTIX_COMPILE_OPTIMIZATION_LEVEL_0 

No optimizations.

OPTIX_COMPILE_OPTIMIZATION_LEVEL_1 

Some optimizations.

OPTIX_COMPILE_OPTIMIZATION_LEVEL_2 

Most optimizations.

OPTIX_COMPILE_OPTIMIZATION_LEVEL_3 

All optimizations.

Input kinds used by the denoiser.

RGB(A) values less than zero will be clamped to zero. Albedo values must be in the range [0..1] (values less than zero will be clamped to zero). The normals must be transformed into screen space. The z component is not used.

See Also
OptixDenoiserOptions::inputKind
Enumerator
OPTIX_DENOISER_INPUT_RGB 
OPTIX_DENOISER_INPUT_RGB_ALBEDO 
OPTIX_DENOISER_INPUT_RGB_ALBEDO_NORMAL 

Model kind used by the denoiser.

See Also
optixDenoiserSetModel()
Enumerator
OPTIX_DENOISER_MODEL_KIND_USER 

Use the model provided by the associated pointer. See the programming guide for a description of how to format the data.

OPTIX_DENOISER_MODEL_KIND_LDR 

Use the built-in model appropriate for low dynamic range input.

OPTIX_DENOISER_MODEL_KIND_HDR 

Use the built-in model appropriate for high dynamic range input.

Parameters used for optixDeviceContextGetProperty()

See Also
optixDeviceContextGetProperty()
Enumerator
OPTIX_DEVICE_PROPERTY_LIMIT_MAX_TRACE_DEPTH 

Maximum value for OptixPipelineLinkOptions::maxTraceDepth. sizeof( unsigned int )

OPTIX_DEVICE_PROPERTY_LIMIT_MAX_TRAVERSABLE_GRAPH_DEPTH 

Maximum value to pass into optixPipelineSetStackSize for parameter maxTraversableGraphDepth.v sizeof( unsigned int )

OPTIX_DEVICE_PROPERTY_LIMIT_MAX_PRIMITIVES_PER_GAS 

The maximum number of primitives (over all build inputs) as input to a single Geometry Acceleration Structure (GAS). sizeof( unsigned int )

OPTIX_DEVICE_PROPERTY_LIMIT_MAX_INSTANCES_PER_IAS 

The maximum number of instances (over all build inputs) as input to a single Instance Acceleration Structure (IAS). sizeof( unsigned int )

OPTIX_DEVICE_PROPERTY_RTCORE_VERSION 

The RT core version supported by the device (0 for no support, 10 for version 1.0). sizeof( unsigned int )

OPTIX_DEVICE_PROPERTY_LIMIT_MAX_INSTANCE_ID 

The maximum value for OptixInstance::instanceId. sizeof( unsigned int )

OPTIX_DEVICE_PROPERTY_LIMIT_NUM_BITS_INSTANCE_VISIBILITY_MASK 

The number of bits available for the OptixInstance::visibilityMask. Higher bits must be set to zero. sizeof( unsigned int )

OPTIX_DEVICE_PROPERTY_LIMIT_MAX_SBT_RECORDS_PER_GAS 

The maximum number of instances that can be added to a single Instance Acceleration Structure (IAS). sizeof( unsigned int )

OPTIX_DEVICE_PROPERTY_LIMIT_MAX_SBT_OFFSET 

The maximum value for OptixInstance::sbtOffset. sizeof( unsigned int )

The following values are used to indicate which exception was thrown.

Enumerator
OPTIX_EXCEPTION_CODE_STACK_OVERFLOW 

Stack overflow of the continuation stack. no exception details.

OPTIX_EXCEPTION_CODE_TRACE_DEPTH_EXCEEDED 

The trace depth is exceeded. no exception details.

OPTIX_EXCEPTION_CODE_TRAVERSAL_DEPTH_EXCEEDED 

The traversal depth is exceeded. Exception details: optixGetTransformListSize() optixGetTransformListHandle()

OPTIX_EXCEPTION_CODE_TRAVERSAL_INVALID_TRAVERSABLE 

Traversal encountered an invalid traversable type. Exception details: optixGetTransformListSize() optixGetTransformListHandle() optixGetExceptionInvalidTraversable()

OPTIX_EXCEPTION_CODE_TRAVERSAL_INVALID_MISS_SBT 

The miss SBT record index is out of bounds A miss SBT record index is valid within the range [0, OptixShaderBindingTable::missRecordCount) (See optixLaunch) Exception details: optixGetExceptionInvalidSbtOffset()

OPTIX_EXCEPTION_CODE_TRAVERSAL_INVALID_HIT_SBT 

The traversal hit SBT record index out of bounds.

A traversal hit SBT record index is valid within the range [0, OptixShaderBindingTable::hitgroupRecordCount) (See optixLaunch) The following formula relates the sbt-geometry-acceleration-structure-index (See optixGetSbtGASIndex), sbt-stride-from-trace-call and sbt-offset-from-trace-call (See optixTrace)

sbt-index = sbt-instance-offset + (sbt-geometry-acceleration-structure-index * sbt-stride-from-trace-call) + sbt-offset-from-trace-call

Exception details: optixGetTransformListSize() optixGetTransformListHandle() optixGetExceptionInvalidSbtOffset() optixGetSbtGASIndex()

OPTIX_EXCEPTION_CODE_UNSUPPORTED_PRIMITIVE_TYPE 

The shader encountered an unsupported primitive type (See OptixPipelineCompileOptions::usesPrimitiveTypeFlags). no exception details.

OPTIX_EXCEPTION_CODE_INVALID_RAY 

The shader encountered a call to optixTrace with at least one of the float arguments being inf or nan. Exception details: optixGetExceptionInvalidRay()

OPTIX_EXCEPTION_CODE_CALLABLE_PARAMETER_MISMATCH 

The shader encountered a call to either optixDirectCall or optixCallableCall where the argument count does not match the parameter count of the callable program which is called. Exception details: optixGetExceptionParameterMismatch.

OPTIX_EXCEPTION_CODE_BUILTIN_IS_MISMATCH 

The invoked builtin IS does not match the current GAS.

OPTIX_EXCEPTION_CODE_UNSUPPORTED_SINGLE_LEVEL_GAS 

Tried to directly traverse a single gas while single gas traversable graphs are not enabled.

Exception details: optixGetTransformListSize() optixGetTransformListHandle() optixGetExceptionInvalidTraversable()

Exception flags.

See Also
OptixPipelineCompileOptions::exceptionFlags, OptixExceptionCodes
Enumerator
OPTIX_EXCEPTION_FLAG_NONE 

No exception are enabled.

OPTIX_EXCEPTION_FLAG_STACK_OVERFLOW 

Enables exceptions check related to the continuation stack.

OPTIX_EXCEPTION_FLAG_TRACE_DEPTH 

Enables exceptions check related to trace depth.

OPTIX_EXCEPTION_FLAG_USER 

Enables user exceptions via optixThrowException(). This flag must be specified for all modules in a pipeline if any module calls optixThrowException().

OPTIX_EXCEPTION_FLAG_DEBUG 

Enables various exceptions check related to traversal.

Flags used by OptixBuildInputTriangleArray::flags and #OptixBuildInputCurveArray::flags and OptixBuildInputCustomPrimitiveArray::flags.

Enumerator
OPTIX_GEOMETRY_FLAG_NONE 

No flags set.

OPTIX_GEOMETRY_FLAG_DISABLE_ANYHIT 

Disables the invocation of the anyhit program. Can be overridden by OPTIX_INSTANCE_FLAG_ENFORCE_ANYHIT and OPTIX_RAY_FLAG_ENFORCE_ANYHIT.

OPTIX_GEOMETRY_FLAG_REQUIRE_SINGLE_ANYHIT_CALL 

If set, an intersection with the primitive will trigger one and only one invocation of the anyhit program. Otherwise, the anyhit program may be invoked more than once.

Legacy type: A subset of the hit kinds for built-in primitive intersections. It is preferred to use optixGetPrimitiveType(), together with optixIsFrontFaceHit() or optixIsBackFaceHit().

See Also
optixGetHitKind()
Enumerator
OPTIX_HIT_KIND_TRIANGLE_FRONT_FACE 

Ray hit the triangle on the front face.

OPTIX_HIT_KIND_TRIANGLE_BACK_FACE 

Ray hit the triangle on the back face.

Format of indices used int OptixBuildInputTriangleArray::indexFormat.

Enumerator
OPTIX_INDICES_FORMAT_NONE 

No indices, this format must only be used in combination with triangle soups, i.e., numIndexTriplets must be zero.

OPTIX_INDICES_FORMAT_UNSIGNED_SHORT3 

Three shorts.

OPTIX_INDICES_FORMAT_UNSIGNED_INT3 

Three ints.

Flags set on the OptixInstance::flags.

These can be or'ed together to combine multiple flags.

Enumerator
OPTIX_INSTANCE_FLAG_NONE 

No special flag set.

OPTIX_INSTANCE_FLAG_DISABLE_TRIANGLE_FACE_CULLING 

Prevent triangles from getting culled due to their orientation. Effectively ignores ray flags OPTIX_RAY_FLAG_CULL_BACK_FACING_TRIANGLES and OPTIX_RAY_FLAG_CULL_FRONT_FACING_TRIANGLES.

OPTIX_INSTANCE_FLAG_FLIP_TRIANGLE_FACING 

Flip triangle orientation. This affects front/backface culling as well as the reported face in case of a hit.

OPTIX_INSTANCE_FLAG_DISABLE_ANYHIT 

Disable anyhit programs for all geometries of the instance. Can be overridden by OPTIX_RAY_FLAG_ENFORCE_ANYHIT. This flag is mutually exclusive with OPTIX_INSTANCE_FLAG_ENFORCE_ANYHIT.

OPTIX_INSTANCE_FLAG_ENFORCE_ANYHIT 

Enables anyhit programs for all geometries of the instance. Overrides OPTIX_GEOMETRY_FLAG_DISABLE_ANYHIT Can be overridden by OPTIX_RAY_FLAG_DISABLE_ANYHIT. This flag is mutually exclusive with OPTIX_INSTANCE_FLAG_DISABLE_ANYHIT.

OPTIX_INSTANCE_FLAG_DISABLE_TRANSFORM 

Disable the instance transformation.

Enum to specify motion flags.

See Also
OptixMotionOptions::flags.
Enumerator
OPTIX_MOTION_FLAG_NONE 
OPTIX_MOTION_FLAG_START_VANISH 
OPTIX_MOTION_FLAG_END_VANISH 

Pixel formats used by the denoiser.

See Also
OptixImage2D::format
Enumerator
OPTIX_PIXEL_FORMAT_HALF3 

three halfs, RGB

OPTIX_PIXEL_FORMAT_HALF4 

four halfs, RGBA

OPTIX_PIXEL_FORMAT_FLOAT3 

three floats, RGB

OPTIX_PIXEL_FORMAT_FLOAT4 

four floats, RGBA

OPTIX_PIXEL_FORMAT_UCHAR3 

three unsigned chars, RGB

OPTIX_PIXEL_FORMAT_UCHAR4 

four unsigned chars, RGBA

Builtin primitive types.

Enumerator
OPTIX_PRIMITIVE_TYPE_CUSTOM 

Custom primitive.

OPTIX_PRIMITIVE_TYPE_ROUND_QUADRATIC_BSPLINE 

B-spline curve of degree 2 with circular cross-section.

OPTIX_PRIMITIVE_TYPE_ROUND_CUBIC_BSPLINE 

B-spline curve of degree 3 with circular cross-section.

OPTIX_PRIMITIVE_TYPE_ROUND_LINEAR 

Piecewise linear curve with circular cross-section.

OPTIX_PRIMITIVE_TYPE_TRIANGLE 

Triangle.

Builtin flags may be bitwise combined.

See Also
OptixPipelineCompileOptions::usesPrimitiveTypeFlags
Enumerator
OPTIX_PRIMITIVE_TYPE_FLAGS_CUSTOM 

Custom primitive.

OPTIX_PRIMITIVE_TYPE_FLAGS_ROUND_QUADRATIC_BSPLINE 

B-spline curve of degree 2 with circular cross-section.

OPTIX_PRIMITIVE_TYPE_FLAGS_ROUND_CUBIC_BSPLINE 

B-spline curve of degree 3 with circular cross-section.

OPTIX_PRIMITIVE_TYPE_FLAGS_ROUND_LINEAR 

Piecewise linear curve with circular cross-section.

OPTIX_PRIMITIVE_TYPE_FLAGS_TRIANGLE 

Triangle.

Flags for program groups.

Enumerator
OPTIX_PROGRAM_GROUP_FLAGS_NONE 

Currently there are no flags.

Distinguishes different kinds of program groups.

Enumerator
OPTIX_PROGRAM_GROUP_KIND_RAYGEN 

Program group containing a raygen (RG) program.

See Also
OptixProgramGroupSingleModule, OptixProgramGroupDesc::raygen
OPTIX_PROGRAM_GROUP_KIND_MISS 

Program group containing a miss (MS) program.

See Also
OptixProgramGroupSingleModule, OptixProgramGroupDesc::miss
OPTIX_PROGRAM_GROUP_KIND_EXCEPTION 

Program group containing an exception (EX) program.

See Also
OptixProgramGroupHitgroup, OptixProgramGroupDesc::exception
OPTIX_PROGRAM_GROUP_KIND_HITGROUP 

Program group containing an intersection (IS), any hit (AH), and/or closest hit (CH) program.

See Also
OptixProgramGroupSingleModule, OptixProgramGroupDesc::hitgroup
OPTIX_PROGRAM_GROUP_KIND_CALLABLES 

Program group containing a direct (DC) or continuation (CC) callable program.

See Also
OptixProgramGroupCallables, OptixProgramGroupDesc::callables

Options that can be passed to optixQueryFunctionTable()

Enumerator
OPTIX_QUERY_FUNCTION_TABLE_OPTION_DUMMY 

Placeholder (there are no options yet)

Ray flags passed to the device function optixTrace(). These affect the behavior of traversal per invocation.

See Also
optixTrace()
Enumerator
OPTIX_RAY_FLAG_NONE 

No change from the behavior configured for the individual AS.

OPTIX_RAY_FLAG_DISABLE_ANYHIT 

Disables anyhit programs for the ray. Overrides OPTIX_INSTANCE_FLAG_ENFORCE_ANYHIT. This flag is mutually exclusive with OPTIX_RAY_FLAG_ENFORCE_ANYHIT, OPTIX_RAY_FLAG_CULL_DISABLED_ANYHIT, OPTIX_RAY_FLAG_CULL_ENFORCED_ANYHIT.

OPTIX_RAY_FLAG_ENFORCE_ANYHIT 

Forces anyhit program execution for the ray. Overrides OPTIX_GEOMETRY_FLAG_DISABLE_ANYHIT as well as OPTIX_INSTANCE_FLAG_DISABLE_ANYHIT. This flag is mutually exclusive with OPTIX_RAY_FLAG_DISABLE_ANYHIT, OPTIX_RAY_FLAG_CULL_DISABLED_ANYHIT, OPTIX_RAY_FLAG_CULL_ENFORCED_ANYHIT.

OPTIX_RAY_FLAG_TERMINATE_ON_FIRST_HIT 

Terminates the ray after the first hit and executes the closesthit program of that hit.

OPTIX_RAY_FLAG_DISABLE_CLOSESTHIT 

Disables closesthit programs for the ray, but still executes miss program in case of a miss.

OPTIX_RAY_FLAG_CULL_BACK_FACING_TRIANGLES 

Do not intersect triangle back faces (respects a possible face change due to instance flag OPTIX_INSTANCE_FLAG_FLIP_TRIANGLE_FACING). This flag is mutually exclusive with OPTIX_RAY_FLAG_CULL_FRONT_FACING_TRIANGLES.

OPTIX_RAY_FLAG_CULL_FRONT_FACING_TRIANGLES 

Do not intersect triangle front faces (respects a possible face change due to instance flag OPTIX_INSTANCE_FLAG_FLIP_TRIANGLE_FACING). This flag is mutually exclusive with OPTIX_RAY_FLAG_CULL_BACK_FACING_TRIANGLES.

OPTIX_RAY_FLAG_CULL_DISABLED_ANYHIT 

Do not intersect geometry which disables anyhit programs (due to setting geometry flag OPTIX_GEOMETRY_FLAG_DISABLE_ANYHIT or instance flag OPTIX_INSTANCE_FLAG_DISABLE_ANYHIT). This flag is mutually exclusive with OPTIX_RAY_FLAG_CULL_ENFORCED_ANYHIT, OPTIX_RAY_FLAG_ENFORCE_ANYHIT, OPTIX_RAY_FLAG_DISABLE_ANYHIT.

OPTIX_RAY_FLAG_CULL_ENFORCED_ANYHIT 

Do not intersect geometry which have an enabled anyhit program (due to not setting geometry flag OPTIX_GEOMETRY_FLAG_DISABLE_ANYHIT or setting instance flag OPTIX_INSTANCE_FLAG_ENFORCE_ANYHIT). This flag is mutually exclusive with OPTIX_RAY_FLAG_CULL_DISABLED_ANYHIT, OPTIX_RAY_FLAG_ENFORCE_ANYHIT, OPTIX_RAY_FLAG_DISABLE_ANYHIT.

Result codes returned from API functions.

All host side API functions return OptixResult with the exception of optixGetErrorName and optixGetErrorString. When successful OPTIX_SUCCESS is returned. All return codes except for OPTIX_SUCCESS should be assumed to be errors as opposed to a warning.

See Also
optixGetErrorName(), optixGetErrorString()
Enumerator
OPTIX_SUCCESS 
OPTIX_ERROR_INVALID_VALUE 
OPTIX_ERROR_HOST_OUT_OF_MEMORY 
OPTIX_ERROR_INVALID_OPERATION 
OPTIX_ERROR_FILE_IO_ERROR 
OPTIX_ERROR_INVALID_FILE_FORMAT 
OPTIX_ERROR_DISK_CACHE_INVALID_PATH 
OPTIX_ERROR_DISK_CACHE_PERMISSION_ERROR 
OPTIX_ERROR_DISK_CACHE_DATABASE_ERROR 
OPTIX_ERROR_DISK_CACHE_INVALID_DATA 
OPTIX_ERROR_LAUNCH_FAILURE 
OPTIX_ERROR_INVALID_DEVICE_CONTEXT 
OPTIX_ERROR_CUDA_NOT_INITIALIZED 
OPTIX_ERROR_INVALID_PTX 
OPTIX_ERROR_INVALID_LAUNCH_PARAMETER 
OPTIX_ERROR_INVALID_PAYLOAD_ACCESS 
OPTIX_ERROR_INVALID_ATTRIBUTE_ACCESS 
OPTIX_ERROR_INVALID_FUNCTION_USE 
OPTIX_ERROR_INVALID_FUNCTION_ARGUMENTS 
OPTIX_ERROR_PIPELINE_OUT_OF_CONSTANT_MEMORY 
OPTIX_ERROR_PIPELINE_LINK_ERROR 
OPTIX_ERROR_INTERNAL_COMPILER_ERROR 
OPTIX_ERROR_DENOISER_MODEL_NOT_SET 
OPTIX_ERROR_DENOISER_NOT_INITIALIZED 
OPTIX_ERROR_ACCEL_NOT_COMPATIBLE 
OPTIX_ERROR_NOT_SUPPORTED 
OPTIX_ERROR_UNSUPPORTED_ABI_VERSION 
OPTIX_ERROR_FUNCTION_TABLE_SIZE_MISMATCH 
OPTIX_ERROR_INVALID_ENTRY_FUNCTION_OPTIONS 
OPTIX_ERROR_LIBRARY_NOT_FOUND 
OPTIX_ERROR_ENTRY_SYMBOL_NOT_FOUND 
OPTIX_ERROR_CUDA_ERROR 
OPTIX_ERROR_INTERNAL_ERROR 
OPTIX_ERROR_UNKNOWN 

Format of transform used in OptixBuildInputTriangleArray::transformFormat.

Enumerator
OPTIX_TRANSFORM_FORMAT_NONE 

no transform, default for zero initialization

OPTIX_TRANSFORM_FORMAT_MATRIX_FLOAT12 

3x4 row major affine matrix

Transform.

OptixTransformType is used by the device function optixGetTransformTypeFromHandle() to determine the type of the OptixTraversableHandle returned from optixGetTransformListHandle().

Enumerator
OPTIX_TRANSFORM_TYPE_NONE 

Not a transformation.

OPTIX_TRANSFORM_TYPE_STATIC_TRANSFORM 
See Also
OptixStaticTransform
OPTIX_TRANSFORM_TYPE_MATRIX_MOTION_TRANSFORM 
See Also
OptixMatrixMotionTransform
OPTIX_TRANSFORM_TYPE_SRT_MOTION_TRANSFORM 
See Also
OptixSRTMotionTransform
OPTIX_TRANSFORM_TYPE_INSTANCE 
See Also
OptixInstance

Specifies the set of valid traversable graphs that may be passed to invocation of optixTrace(). Flags may be bitwise combined.

Enumerator
OPTIX_TRAVERSABLE_GRAPH_FLAG_ALLOW_ANY 

Used to signal that any traversable graphs is valid. This flag is mutually exclusive with all other flags.

OPTIX_TRAVERSABLE_GRAPH_FLAG_ALLOW_SINGLE_GAS 

Used to signal that a traversable graph of a single Geometry Acceleration Structure (GAS) without any transforms is valid. This flag may be combined with other flags except for OPTIX_TRAVERSABLE_GRAPH_FLAG_ALLOW_ANY.

OPTIX_TRAVERSABLE_GRAPH_FLAG_ALLOW_SINGLE_LEVEL_INSTANCING 

Used to signal that a traversable graph of a single Instance Acceleration Structure (IAS) directly connected to Geometry Acceleration Structure (GAS) traversables without transform traversables in between is valid. This flag may be combined with other flags except for OPTIX_TRAVERSABLE_GRAPH_FLAG_ALLOW_ANY.

Traversable Handles.

See Also
optixConvertPointerToTraversableHandle()
Enumerator
OPTIX_TRAVERSABLE_TYPE_STATIC_TRANSFORM 

Static transforms.

See Also
OptixStaticTransform
OPTIX_TRAVERSABLE_TYPE_MATRIX_MOTION_TRANSFORM 

Matrix motion transform.

See Also
OptixMatrixMotionTransform
OPTIX_TRAVERSABLE_TYPE_SRT_MOTION_TRANSFORM 

SRT motion transform.

See Also
OptixSRTMotionTransform

Format of vertices used in OptixBuildInputTriangleArray::vertexFormat.

Enumerator
OPTIX_VERTEX_FORMAT_NONE 

No vertices.

OPTIX_VERTEX_FORMAT_FLOAT3 

Vertices are represented by three floats.

OPTIX_VERTEX_FORMAT_FLOAT2 

Vertices are represented by two floats.

OPTIX_VERTEX_FORMAT_HALF3 

Vertices are represented by three halfs.

OPTIX_VERTEX_FORMAT_HALF2 

Vertices are represented by two halfs.

OPTIX_VERTEX_FORMAT_SNORM16_3 
OPTIX_VERTEX_FORMAT_SNORM16_2