@protocol MTLComputePipelineState, MTLBuffer; @interface MPSRayIntersector : MPSKernel { unsigned long long _cullMode; unsigned long long _frontFacingWinding; unsigned long long _triangleIntersectionTestType; unsigned long long _boundingBoxIntersectionTestType; unsigned long long _rayMaskOptions; unsigned long long _rayDataType; unsigned long long _intersectionDataType; BOOL _proRender; unsigned long long _rayMaskOperator; id _dispatchIndirectBuffer; id _dispatchIndirectPipeline; unsigned long long _proRenderOptions; id _shapeIndexBuffer; unsigned long long _shapeIndexBufferOffset; id _shapeDataBuffer; unsigned long long _shapeDataBufferOffset; id _rayIndexBuffer; unsigned long long _rayIndexBufferOffset; id _rayMaskBuffer; unsigned long long _rayMaskBufferOffset; unsigned long long _multiHitCount; unsigned long long _renderLayerMask; void /* unknown type, empty encoding */ _clippingPlane; unsigned long long _globalRayMask; unsigned int _rayIndexDataType; unsigned long long _shapeDataStride; unsigned long long _shapeDataMaskOffset; unsigned long long _shapeDataRenderLayerOffset; id _rayStatisticsBuffer; unsigned long long _rayStatisticsBufferOffset; unsigned long long _rayStatistics; BOOL _useMultipleThreadsPerRay; unsigned long long _intersectionEvent; } @property (class, readonly) BOOL supportsSecureCoding; @property (nonatomic) unsigned long long cullMode; @property (nonatomic) unsigned long long frontFacingWinding; @property (nonatomic) unsigned long long triangleIntersectionTestType; @property (nonatomic) unsigned long long boundingBoxIntersectionTestType; @property (nonatomic) unsigned long long rayMaskOptions; @property (nonatomic) unsigned long long rayMaskOperator; @property (nonatomic) unsigned long long rayStride; @property (nonatomic) unsigned long long intersectionStride; @property (nonatomic) unsigned long long rayDataType; @property (nonatomic) unsigned long long intersectionDataType; @property (nonatomic) unsigned int rayIndexDataType; @property (nonatomic) unsigned int rayMask; + (const struct MPSLibraryInfo { int x0; unsigned int x1; char *x2; void /* function */ *x3; struct MPSDeviceSpecificInfo { struct MPSKernelInfo *x0; void /* function */ *x1; unsigned long long x2; } x4; struct MPSDeviceSpecificInfo { struct MPSKernelInfo *x0; void /* function */ *x1; unsigned long long x2; } x5; struct MPSDeviceSpecificInfo { struct MPSKernelInfo *x0; void /* function */ *x1; unsigned long long x2; } x6; struct MPSDeviceSpecificInfo { struct MPSKernelInfo *x0; void /* function */ *x1; unsigned long long x2; } x7; struct MPSDeviceSpecificInfo { struct MPSKernelInfo *x0; void /* function */ *x1; unsigned long long x2; } x8; struct MPSDeviceSpecificInfo { struct MPSKernelInfo *x0; void /* function */ *x1; unsigned long long x2; } x9; struct MPSDeviceSpecificInfo { struct MPSKernelInfo *x0; void /* function */ *x1; unsigned long long x2; } x10; struct MPSDeviceSpecificInfo { struct MPSKernelInfo *x0; void /* function */ *x1; unsigned long long x2; } x11; struct MPSDeviceSpecificInfo { struct MPSKernelInfo *x0; void /* function */ *x1; unsigned long long x2; } x12; struct MPSDeviceSpecificInfo { struct MPSKernelInfo *x0; void /* function */ *x1; unsigned long long x2; } x13; struct MPSDeviceSpecificInfo { struct MPSKernelInfo *x0; void /* function */ *x1; unsigned long long x2; } x14; struct MPSDeviceSpecificInfo { struct MPSKernelInfo *x0; void /* function */ *x1; unsigned long long x2; } x15; struct MPSDeviceSpecificInfo { struct MPSKernelInfo *x0; void /* function */ *x1; unsigned long long x2; } x16; struct MPSDeviceSpecificInfo { struct MPSKernelInfo *x0; void /* function */ *x1; unsigned long long x2; } x17; struct MPSDeviceSpecificInfo { struct MPSKernelInfo *x0; void /* function */ *x1; unsigned long long x2; } x18; struct MPSDeviceSpecificInfo { struct MPSKernelInfo *x0; void /* function */ *x1; unsigned long long x2; } x19; struct MPSDeviceSpecificInfo { struct MPSKernelInfo *x0; void /* function */ *x1; unsigned long long x2; } x20; struct MPSDeviceSpecificInfo { struct MPSKernelInfo *x0; void /* function */ *x1; unsigned long long x2; } x21; struct MPSDeviceSpecificInfo { struct MPSKernelInfo *x0; void /* function */ *x1; unsigned long long x2; } x22; struct MPSDeviceSpecificInfo { struct MPSKernelInfo *x0; void /* function */ *x1; unsigned long long x2; } x23; struct MPSDeviceSpecificInfo { struct MPSKernelInfo *x0; void /* function */ *x1; unsigned long long x2; } x24; struct MPSDeviceSpecificInfo { struct MPSKernelInfo *x0; void /* function */ *x1; unsigned long long x2; } x25; struct MPSDeviceSpecificInfo { struct MPSKernelInfo *x0; void /* function */ *x1; unsigned long long x2; } x26; struct MPSDeviceSpecificInfo { struct MPSKernelInfo *x0; void /* function */ *x1; unsigned long long x2; } x27; struct MPSDeviceSpecificInfo { struct MPSKernelInfo *x0; void /* function */ *x1; unsigned long long x2; } x28; struct MPSDeviceSpecificInfo { struct MPSKernelInfo *x0; void /* function */ *x1; unsigned long long x2; } x29; struct MPSDeviceSpecificInfo { struct MPSKernelInfo *x0; void /* function */ *x1; unsigned long long x2; } x30; struct MPSDeviceSpecificInfo { struct MPSKernelInfo *x0; void /* function */ *x1; unsigned long long x2; } x31; struct MPSDeviceSpecificInfo { struct MPSKernelInfo *x0; void /* function */ *x1; unsigned long long x2; } x32; struct MPSDeviceSpecificInfo { struct MPSKernelInfo *x0; void /* function */ *x1; unsigned long long x2; } x33; struct MPSDeviceSpecificInfo { struct MPSKernelInfo *x0; void /* function */ *x1; unsigned long long x2; } x34; struct MPSDeviceSpecificInfo { struct MPSKernelInfo *x0; void /* function */ *x1; unsigned long long x2; } x35; struct MPSDeviceSpecificInfo { struct MPSKernelInfo *x0; void /* function */ *x1; unsigned long long x2; } x36; struct MPSDeviceSpecificInfo { struct MPSKernelInfo *x0; void /* function */ *x1; unsigned long long x2; } x37; struct MPSDeviceSpecificInfo { struct MPSKernelInfo *x0; void /* function */ *x1; unsigned long long x2; } x38; struct MPSDeviceSpecificInfo { struct MPSKernelInfo *x0; void /* function */ *x1; unsigned long long x2; } x39; struct MPSDeviceSpecificInfo { struct MPSKernelInfo *x0; void /* function */ *x1; unsigned long long x2; } x40; struct MPSDeviceSpecificInfo { struct MPSKernelInfo *x0; void /* function */ *x1; unsigned long long x2; } x41; struct MPSDeviceSpecificInfo { struct MPSKernelInfo *x0; void /* function */ *x1; unsigned long long x2; } x42; struct MPSDeviceSpecificInfo { struct MPSKernelInfo *x0; void /* function */ *x1; unsigned long long x2; } x43; struct MPSDeviceSpecificInfo { struct MPSKernelInfo *x0; void /* function */ *x1; unsigned long long x2; } x44; struct MPSDeviceSpecificInfo { struct MPSKernelInfo *x0; void /* function */ *x1; unsigned long long x2; } x45; } *)libraryInfo:(void *)a0; - (id)copyWithZone:(struct _NSZone { } *)a0 device:(id)a1; - (id)initWithCoder:(id)a0 device:(id)a1; - (void)dealloc; - (void)encodeWithCoder:(id)a0; - (id)description; - (id)initWithDevice:(id)a0; - (void)encodeIntersectionToCommandBuffer:(id)a0 intersectionType:(unsigned long long)a1 rayBuffer:(id)a2 rayBufferOffset:(unsigned long long)a3 intersectionBuffer:(id)a4 intersectionBufferOffset:(unsigned long long)a5 rayCount:(unsigned long long)a6 accelerationStructure:(id)a7; - (unsigned long long)renderLayerMask; - (id)shapeDataBuffer; - (unsigned long long)shapeDataStride; - (void /* unknown type, empty encoding */)clippingPlane; - (void)encodeIntersectionToCommandBuffer:(id)a0 intersectionType:(unsigned long long)a1 rayBuffer:(id)a2 rayBufferOffset:(unsigned long long)a3 intersectionBuffer:(id)a4 intersectionBufferOffset:(unsigned long long)a5 rayCountBuffer:(id)a6 rayCountBufferOffset:(unsigned long long)a7 accelerationStructure:(id)a8; - (void)encodeIntersectionToCommandBuffer:(id)a0 intersectionType:(unsigned long long)a1 rayBuffer:(id)a2 rayBufferOffset:(unsigned long long)a3 rayIndexBuffer:(id)a4 rayIndexBufferOffset:(unsigned long long)a5 intersectionBuffer:(id)a6 intersectionBufferOffset:(unsigned long long)a7 rayIndexCount:(unsigned long long)a8 accelerationStructure:(id)a9; - (void)encodeIntersectionToCommandBuffer:(id)a0 intersectionType:(unsigned long long)a1 rayBuffer:(id)a2 rayBufferOffset:(unsigned long long)a3 rayIndexBuffer:(id)a4 rayIndexBufferOffset:(unsigned long long)a5 intersectionBuffer:(id)a6 intersectionBufferOffset:(unsigned long long)a7 rayIndexCountBuffer:(id)a8 rayIndexCountBufferOffset:(unsigned long long)a9 accelerationStructure:(id)a10; - (void)encodeIntersectionToCommandBuffer:(id)a0 intersectionType:(unsigned long long)a1 rayTexture:(id)a2 intersectionTexture:(id)a3 accelerationStructure:(id)a4; - (void)endIntersectionEvent:(unsigned long long)a0 commandBuffer:(id)a1 accelerationStructure:(id)a2; - (struct MPSRayIntersectorFunctionHash { union { struct { unsigned char x0 : 2; unsigned char x1 : 2; unsigned char x2 : 1; unsigned char x3 : 1; unsigned char x4 : 1; unsigned char x5 : 2; unsigned char x6 : 1; unsigned char x7 : 2; unsigned char x8 : 1; unsigned char x9 : 2; unsigned char x10 : 4; unsigned char x11 : 2; unsigned char x12 : 8; unsigned char x13 : 1; unsigned char x14 : 6; unsigned char x15 : 1; unsigned char x16 : 1; unsigned char x17 : 1; unsigned char x18 : 1; unsigned char x19 : 2; unsigned char x20 : 1; unsigned char x21 : 1; unsigned char x22 : 4; unsigned short x23 : 16; } x0; unsigned long long x1; } x0; unsigned int x1; unsigned int x2; unsigned int x3; unsigned int x4; unsigned int x5; unsigned int x6; unsigned int x7; })getHashForIntersectionType:(unsigned long long)a0 indexing:(BOOL)a1 indexType:(unsigned int)a2 instancing:(BOOL)a3 vertexStride:(unsigned long long)a4 transformType:(unsigned long long)a5 rootNodeType:(int)a6 branchingFactor:(unsigned long long)a7 nodeLayout:(int)a8 polygonType:(unsigned long long)a9 rayIndexing:(BOOL)a10 useRayTexture:(BOOL)a11 useResourceBuffer:(BOOL)a12; - (id)getPipelineForIntersectionType:(unsigned long long)a0 rayIndexing:(BOOL)a1 useRayTexture:(BOOL)a2 useResourceBuffer:(BOOL)a3 accelerationStructure:(id)a4 commandBuffer:(id)a5; - (unsigned long long)globalRayMask; - (unsigned long long)multiHitCount; - (unsigned long long)proRenderOptions; - (id)rayIndexBuffer; - (unsigned long long)rayIndexBufferOffset; - (id)rayMaskBuffer; - (unsigned long long)rayMaskBufferOffset; - (unsigned long long)rayStatistics; - (id)rayStatisticsBuffer; - (unsigned long long)rayStatisticsBufferOffset; - (unsigned long long)recommendedMinimumRayBatchSizeForRayCount:(unsigned long long)a0; - (void)setClippingPlane:(SEL)a0; - (void)setGlobalRayMask:(unsigned long long)a0; - (void)setMultiHitCount:(unsigned long long)a0; - (void)setProRenderOptions:(unsigned long long)a0; - (void)setRayIndexBuffer:(id)a0; - (void)setRayIndexBufferOffset:(unsigned long long)a0; - (void)setRayMaskBuffer:(id)a0; - (void)setRayMaskBufferOffset:(unsigned long long)a0; - (void)setRayStatistics:(unsigned long long)a0; - (void)setRayStatisticsBuffer:(id)a0; - (void)setRayStatisticsBufferOffset:(unsigned long long)a0; - (void)setRenderLayerMask:(unsigned long long)a0; - (void)setShapeDataBuffer:(id)a0; - (void)setShapeDataBufferOffset:(unsigned long long)a0; - (void)setShapeDataMaskOffset:(unsigned long long)a0; - (void)setShapeDataRenderLayerOffset:(unsigned long long)a0; - (void)setShapeDataStride:(unsigned long long)a0; - (void)setShapeIndexBuffer:(id)a0; - (void)setShapeIndexBufferOffset:(unsigned long long)a0; - (void)setUseMultipleThreadsPerRay:(BOOL)a0; - (unsigned long long)shapeDataBufferOffset; - (unsigned long long)shapeDataMaskOffset; - (unsigned long long)shapeDataRenderLayerOffset; - (id)shapeIndexBuffer; - (unsigned long long)shapeIndexBufferOffset; - (void)sharedInitRaytracer; - (unsigned long long)startIntersectionEventWithCommandBuffer:(id)a0 accelerationStructure:(id)a1; - (BOOL)useMultipleThreadsPerRay; @end