SPB Git

spb/forge Public MIT

Forge — LLM training from scratch in pure C++20 + Metal on Apple Silicon.

C++ 61.2% C 23% Python 7.6% TeX 7.2% CMake 1.1%
85.0 KB · 1,888 lines cpp
Raw Blame History
1//-------------------------------------------------------------------------------------------------------------------------------------------------------------2//3// Metal/MTLAccelerationStructure.hpp4//5// Copyright 2020-2025 Apple Inc.6//7// Licensed under the Apache License, Version 2.0 (the "License");8// you may not use this file except in compliance with the License.9// You may obtain a copy of the License at10//11//     http://www.apache.org/licenses/LICENSE-2.012//13// Unless required by applicable law or agreed to in writing, software14// distributed under the License is distributed on an "AS IS" BASIS,15// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.16// See the License for the specific language governing permissions and17// limitations under the License.18//19//-------------------------------------------------------------------------------------------------------------------------------------------------------------2021#pragma once2223#include "../Foundation/Foundation.hpp"24#include "MTLAccelerationStructureTypes.hpp"25#include "MTLArgument.hpp"26#include "MTLDefines.hpp"27#include "MTLHeaderBridge.hpp"28#include "MTLPrivate.hpp"29#include "MTLResource.hpp"30#include "MTLStageInputOutputDescriptor.hpp"31#include "MTLTypes.hpp"32#include <cstdint>3334namespace MTL35{36class AccelerationStructureBoundingBoxGeometryDescriptor;37class AccelerationStructureCurveGeometryDescriptor;38class AccelerationStructureDescriptor;39class AccelerationStructureGeometryDescriptor;40class AccelerationStructureMotionBoundingBoxGeometryDescriptor;41class AccelerationStructureMotionCurveGeometryDescriptor;42class AccelerationStructureMotionTriangleGeometryDescriptor;43class AccelerationStructureTriangleGeometryDescriptor;44class Buffer;45class IndirectInstanceAccelerationStructureDescriptor;46class InstanceAccelerationStructureDescriptor;47class MotionKeyframeData;48class PrimitiveAccelerationStructureDescriptor;49}5051namespace MTL52{53_MTL_ENUM(NS::Integer, MatrixLayout) {54    MatrixLayoutColumnMajor = 0,55    MatrixLayoutRowMajor = 1,56};5758_MTL_ENUM(uint32_t, MotionBorderMode) {59    MotionBorderModeClamp = 0,60    MotionBorderModeVanish = 1,61};6263_MTL_ENUM(NS::Integer, CurveType) {64    CurveTypeRound = 0,65    CurveTypeFlat = 1,66};6768_MTL_ENUM(NS::Integer, CurveBasis) {69    CurveBasisBSpline = 0,70    CurveBasisCatmullRom = 1,71    CurveBasisLinear = 2,72    CurveBasisBezier = 3,73};7475_MTL_ENUM(NS::Integer, CurveEndCaps) {76    CurveEndCapsNone = 0,77    CurveEndCapsDisk = 1,78    CurveEndCapsSphere = 2,79};8081_MTL_ENUM(NS::UInteger, AccelerationStructureInstanceDescriptorType) {82    AccelerationStructureInstanceDescriptorTypeDefault = 0,83    AccelerationStructureInstanceDescriptorTypeUserID = 1,84    AccelerationStructureInstanceDescriptorTypeMotion = 2,85    AccelerationStructureInstanceDescriptorTypeIndirect = 3,86    AccelerationStructureInstanceDescriptorTypeIndirectMotion = 4,87};8889_MTL_ENUM(NS::Integer, TransformType) {90    TransformTypePackedFloat4x3 = 0,91    TransformTypeComponent = 1,92};9394_MTL_OPTIONS(NS::UInteger, AccelerationStructureRefitOptions) {95    AccelerationStructureRefitOptionVertexData = 1,96    AccelerationStructureRefitOptionPerPrimitiveData = 1 << 1,97};9899_MTL_OPTIONS(NS::UInteger, AccelerationStructureUsage) {100    AccelerationStructureUsageNone = 0,101    AccelerationStructureUsageRefit = 1,102    AccelerationStructureUsagePreferFastBuild = 1 << 1,103    AccelerationStructureUsageExtendedLimits = 1 << 2,104    AccelerationStructureUsagePreferFastIntersection = 1 << 4,105    AccelerationStructureUsageMinimizeMemory = 1 << 5,106};107108_MTL_OPTIONS(uint32_t, AccelerationStructureInstanceOptions) {109    AccelerationStructureInstanceOptionNone = 0,110    AccelerationStructureInstanceOptionDisableTriangleCulling = 1,111    AccelerationStructureInstanceOptionTriangleFrontFacingWindingCounterClockwise = 1 << 1,112    AccelerationStructureInstanceOptionOpaque = 1 << 2,113    AccelerationStructureInstanceOptionNonOpaque = 1 << 3,114};115116struct AccelerationStructureInstanceDescriptor117{118    MTL::PackedFloat4x3                       transformationMatrix;119    MTL::AccelerationStructureInstanceOptions options;120    uint32_t                                  mask;121    uint32_t                                  intersectionFunctionTableOffset;122    uint32_t                                  accelerationStructureIndex;123} _MTL_PACKED;124125struct AccelerationStructureUserIDInstanceDescriptor126{127    MTL::PackedFloat4x3                       transformationMatrix;128    MTL::AccelerationStructureInstanceOptions options;129    uint32_t                                  mask;130    uint32_t                                  intersectionFunctionTableOffset;131    uint32_t                                  accelerationStructureIndex;132    uint32_t                                  userID;133} _MTL_PACKED;134135struct AccelerationStructureMotionInstanceDescriptor136{137    MTL::AccelerationStructureInstanceOptions options;138    uint32_t                                  mask;139    uint32_t                                  intersectionFunctionTableOffset;140    uint32_t                                  accelerationStructureIndex;141    uint32_t                                  userID;142    uint32_t                                  motionTransformsStartIndex;143    uint32_t                                  motionTransformsCount;144    MTL::MotionBorderMode                     motionStartBorderMode;145    MTL::MotionBorderMode                     motionEndBorderMode;146    float                                     motionStartTime;147    float                                     motionEndTime;148} _MTL_PACKED;149150struct IndirectAccelerationStructureInstanceDescriptor151{152    MTL::PackedFloat4x3                       transformationMatrix;153    MTL::AccelerationStructureInstanceOptions options;154    uint32_t                                  mask;155    uint32_t                                  intersectionFunctionTableOffset;156    uint32_t                                  userID;157    MTL::ResourceID                           accelerationStructureID;158} _MTL_PACKED;159160struct IndirectAccelerationStructureMotionInstanceDescriptor161{162    MTL::AccelerationStructureInstanceOptions options;163    uint32_t                                  mask;164    uint32_t                                  intersectionFunctionTableOffset;165    uint32_t                                  userID;166    MTL::ResourceID                           accelerationStructureID;167    uint32_t                                  motionTransformsStartIndex;168    uint32_t                                  motionTransformsCount;169    MTL::MotionBorderMode                     motionStartBorderMode;170    MTL::MotionBorderMode                     motionEndBorderMode;171    float                                     motionStartTime;172    float                                     motionEndTime;173} _MTL_PACKED;174175class AccelerationStructureDescriptor : public NS::Copying<AccelerationStructureDescriptor>176{177public:178    static AccelerationStructureDescriptor* alloc();179180    AccelerationStructureDescriptor*        init();181182    void                                    setUsage(MTL::AccelerationStructureUsage usage);183    AccelerationStructureUsage              usage() const;184};185class AccelerationStructureGeometryDescriptor : public NS::Copying<AccelerationStructureGeometryDescriptor>186{187public:188    static AccelerationStructureGeometryDescriptor* alloc();189190    bool                                            allowDuplicateIntersectionFunctionInvocation() const;191192    AccelerationStructureGeometryDescriptor*        init();193194    NS::UInteger                                    intersectionFunctionTableOffset() const;195196    NS::String*                                     label() const;197198    bool                                            opaque() const;199200    Buffer*                                         primitiveDataBuffer() const;201    NS::UInteger                                    primitiveDataBufferOffset() const;202203    NS::UInteger                                    primitiveDataElementSize() const;204205    NS::UInteger                                    primitiveDataStride() const;206207    void                                            setAllowDuplicateIntersectionFunctionInvocation(bool allowDuplicateIntersectionFunctionInvocation);208209    void                                            setIntersectionFunctionTableOffset(NS::UInteger intersectionFunctionTableOffset);210211    void                                            setLabel(const NS::String* label);212213    void                                            setOpaque(bool opaque);214215    void                                            setPrimitiveDataBuffer(const MTL::Buffer* primitiveDataBuffer);216    void                                            setPrimitiveDataBufferOffset(NS::UInteger primitiveDataBufferOffset);217218    void                                            setPrimitiveDataElementSize(NS::UInteger primitiveDataElementSize);219220    void                                            setPrimitiveDataStride(NS::UInteger primitiveDataStride);221};222class PrimitiveAccelerationStructureDescriptor : public NS::Copying<PrimitiveAccelerationStructureDescriptor, AccelerationStructureDescriptor>223{224public:225    static PrimitiveAccelerationStructureDescriptor* alloc();226227    static PrimitiveAccelerationStructureDescriptor* descriptor();228    NS::Array*                                       geometryDescriptors() const;229230    PrimitiveAccelerationStructureDescriptor*        init();231232    MotionBorderMode                                 motionEndBorderMode() const;233234    float                                            motionEndTime() const;235236    NS::UInteger                                     motionKeyframeCount() const;237238    MotionBorderMode                                 motionStartBorderMode() const;239240    float                                            motionStartTime() const;241242    void                                             setGeometryDescriptors(const NS::Array* geometryDescriptors);243244    void                                             setMotionEndBorderMode(MTL::MotionBorderMode motionEndBorderMode);245246    void                                             setMotionEndTime(float motionEndTime);247248    void                                             setMotionKeyframeCount(NS::UInteger motionKeyframeCount);249250    void                                             setMotionStartBorderMode(MTL::MotionBorderMode motionStartBorderMode);251252    void                                             setMotionStartTime(float motionStartTime);253};254class AccelerationStructureTriangleGeometryDescriptor : public NS::Copying<AccelerationStructureTriangleGeometryDescriptor, AccelerationStructureGeometryDescriptor>255{256public:257    static AccelerationStructureTriangleGeometryDescriptor* alloc();258259    static AccelerationStructureTriangleGeometryDescriptor* descriptor();260261    Buffer*                                                 indexBuffer() const;262    NS::UInteger                                            indexBufferOffset() const;263264    IndexType                                               indexType() const;265266    AccelerationStructureTriangleGeometryDescriptor*        init();267268    void                                                    setIndexBuffer(const MTL::Buffer* indexBuffer);269    void                                                    setIndexBufferOffset(NS::UInteger indexBufferOffset);270271    void                                                    setIndexType(MTL::IndexType indexType);272273    void                                                    setTransformationMatrixBuffer(const MTL::Buffer* transformationMatrixBuffer);274    void                                                    setTransformationMatrixBufferOffset(NS::UInteger transformationMatrixBufferOffset);275276    void                                                    setTransformationMatrixLayout(MTL::MatrixLayout transformationMatrixLayout);277278    void                                                    setTriangleCount(NS::UInteger triangleCount);279280    void                                                    setVertexBuffer(const MTL::Buffer* vertexBuffer);281    void                                                    setVertexBufferOffset(NS::UInteger vertexBufferOffset);282283    void                                                    setVertexFormat(MTL::AttributeFormat vertexFormat);284285    void                                                    setVertexStride(NS::UInteger vertexStride);286287    Buffer*                                                 transformationMatrixBuffer() const;288    NS::UInteger                                            transformationMatrixBufferOffset() const;289290    MatrixLayout                                            transformationMatrixLayout() const;291292    NS::UInteger                                            triangleCount() const;293294    Buffer*                                                 vertexBuffer() const;295    NS::UInteger                                            vertexBufferOffset() const;296297    AttributeFormat                                         vertexFormat() const;298299    NS::UInteger                                            vertexStride() const;300};301class AccelerationStructureBoundingBoxGeometryDescriptor : public NS::Copying<AccelerationStructureBoundingBoxGeometryDescriptor, AccelerationStructureGeometryDescriptor>302{303public:304    static AccelerationStructureBoundingBoxGeometryDescriptor* alloc();305306    Buffer*                                                    boundingBoxBuffer() const;307    NS::UInteger                                               boundingBoxBufferOffset() const;308309    NS::UInteger                                               boundingBoxCount() const;310311    NS::UInteger                                               boundingBoxStride() const;312313    static AccelerationStructureBoundingBoxGeometryDescriptor* descriptor();314315    AccelerationStructureBoundingBoxGeometryDescriptor*        init();316317    void                                                       setBoundingBoxBuffer(const MTL::Buffer* boundingBoxBuffer);318    void                                                       setBoundingBoxBufferOffset(NS::UInteger boundingBoxBufferOffset);319320    void                                                       setBoundingBoxCount(NS::UInteger boundingBoxCount);321322    void                                                       setBoundingBoxStride(NS::UInteger boundingBoxStride);323};324class MotionKeyframeData : public NS::Referencing<MotionKeyframeData>325{326public:327    static MotionKeyframeData* alloc();328329    Buffer*                    buffer() const;330331    static MotionKeyframeData* data();332333    MotionKeyframeData*        init();334335    NS::UInteger               offset() const;336337    void                       setBuffer(const MTL::Buffer* buffer);338339    void                       setOffset(NS::UInteger offset);340};341class AccelerationStructureMotionTriangleGeometryDescriptor : public NS::Copying<AccelerationStructureMotionTriangleGeometryDescriptor, AccelerationStructureGeometryDescriptor>342{343public:344    static AccelerationStructureMotionTriangleGeometryDescriptor* alloc();345346    static AccelerationStructureMotionTriangleGeometryDescriptor* descriptor();347348    Buffer*                                                       indexBuffer() const;349    NS::UInteger                                                  indexBufferOffset() const;350351    IndexType                                                     indexType() const;352353    AccelerationStructureMotionTriangleGeometryDescriptor*        init();354355    void                                                          setIndexBuffer(const MTL::Buffer* indexBuffer);356    void                                                          setIndexBufferOffset(NS::UInteger indexBufferOffset);357358    void                                                          setIndexType(MTL::IndexType indexType);359360    void                                                          setTransformationMatrixBuffer(const MTL::Buffer* transformationMatrixBuffer);361    void                                                          setTransformationMatrixBufferOffset(NS::UInteger transformationMatrixBufferOffset);362363    void                                                          setTransformationMatrixLayout(MTL::MatrixLayout transformationMatrixLayout);364365    void                                                          setTriangleCount(NS::UInteger triangleCount);366367    void                                                          setVertexBuffers(const NS::Array* vertexBuffers);368369    void                                                          setVertexFormat(MTL::AttributeFormat vertexFormat);370371    void                                                          setVertexStride(NS::UInteger vertexStride);372373    Buffer*                                                       transformationMatrixBuffer() const;374    NS::UInteger                                                  transformationMatrixBufferOffset() const;375376    MatrixLayout                                                  transformationMatrixLayout() const;377378    NS::UInteger                                                  triangleCount() const;379380    NS::Array*                                                    vertexBuffers() const;381382    AttributeFormat                                               vertexFormat() const;383384    NS::UInteger                                                  vertexStride() const;385};386class AccelerationStructureMotionBoundingBoxGeometryDescriptor : public NS::Copying<AccelerationStructureMotionBoundingBoxGeometryDescriptor, AccelerationStructureGeometryDescriptor>387{388public:389    static AccelerationStructureMotionBoundingBoxGeometryDescriptor* alloc();390391    NS::Array*                                                       boundingBoxBuffers() const;392393    NS::UInteger                                                     boundingBoxCount() const;394395    NS::UInteger                                                     boundingBoxStride() const;396397    static AccelerationStructureMotionBoundingBoxGeometryDescriptor* descriptor();398399    AccelerationStructureMotionBoundingBoxGeometryDescriptor*        init();400401    void                                                             setBoundingBoxBuffers(const NS::Array* boundingBoxBuffers);402403    void                                                             setBoundingBoxCount(NS::UInteger boundingBoxCount);404405    void                                                             setBoundingBoxStride(NS::UInteger boundingBoxStride);406};407class AccelerationStructureCurveGeometryDescriptor : public NS::Copying<AccelerationStructureCurveGeometryDescriptor, AccelerationStructureGeometryDescriptor>408{409public:410    static AccelerationStructureCurveGeometryDescriptor* alloc();411412    Buffer*                                              controlPointBuffer() const;413    NS::UInteger                                         controlPointBufferOffset() const;414415    NS::UInteger                                         controlPointCount() const;416417    AttributeFormat                                      controlPointFormat() const;418419    NS::UInteger                                         controlPointStride() const;420421    CurveBasis                                           curveBasis() const;422423    CurveEndCaps                                         curveEndCaps() const;424425    CurveType                                            curveType() const;426427    static AccelerationStructureCurveGeometryDescriptor* descriptor();428429    Buffer*                                              indexBuffer() const;430    NS::UInteger                                         indexBufferOffset() const;431432    IndexType                                            indexType() const;433434    AccelerationStructureCurveGeometryDescriptor*        init();435436    Buffer*                                              radiusBuffer() const;437    NS::UInteger                                         radiusBufferOffset() const;438439    AttributeFormat                                      radiusFormat() const;440441    NS::UInteger                                         radiusStride() const;442443    NS::UInteger                                         segmentControlPointCount() const;444445    NS::UInteger                                         segmentCount() const;446447    void                                                 setControlPointBuffer(const MTL::Buffer* controlPointBuffer);448    void                                                 setControlPointBufferOffset(NS::UInteger controlPointBufferOffset);449450    void                                                 setControlPointCount(NS::UInteger controlPointCount);451452    void                                                 setControlPointFormat(MTL::AttributeFormat controlPointFormat);453454    void                                                 setControlPointStride(NS::UInteger controlPointStride);455456    void                                                 setCurveBasis(MTL::CurveBasis curveBasis);457458    void                                                 setCurveEndCaps(MTL::CurveEndCaps curveEndCaps);459460    void                                                 setCurveType(MTL::CurveType curveType);461462    void                                                 setIndexBuffer(const MTL::Buffer* indexBuffer);463    void                                                 setIndexBufferOffset(NS::UInteger indexBufferOffset);464465    void                                                 setIndexType(MTL::IndexType indexType);466467    void                                                 setRadiusBuffer(const MTL::Buffer* radiusBuffer);468    void                                                 setRadiusBufferOffset(NS::UInteger radiusBufferOffset);469470    void                                                 setRadiusFormat(MTL::AttributeFormat radiusFormat);471472    void                                                 setRadiusStride(NS::UInteger radiusStride);473474    void                                                 setSegmentControlPointCount(NS::UInteger segmentControlPointCount);475476    void                                                 setSegmentCount(NS::UInteger segmentCount);477};478class AccelerationStructureMotionCurveGeometryDescriptor : public NS::Copying<AccelerationStructureMotionCurveGeometryDescriptor, AccelerationStructureGeometryDescriptor>479{480public:481    static AccelerationStructureMotionCurveGeometryDescriptor* alloc();482483    NS::Array*                                                 controlPointBuffers() const;484485    NS::UInteger                                               controlPointCount() const;486487    AttributeFormat                                            controlPointFormat() const;488489    NS::UInteger                                               controlPointStride() const;490491    CurveBasis                                                 curveBasis() const;492493    CurveEndCaps                                               curveEndCaps() const;494495    CurveType                                                  curveType() const;496497    static AccelerationStructureMotionCurveGeometryDescriptor* descriptor();498499    Buffer*                                                    indexBuffer() const;500    NS::UInteger                                               indexBufferOffset() const;501502    IndexType                                                  indexType() const;503504    AccelerationStructureMotionCurveGeometryDescriptor*        init();505506    NS::Array*                                                 radiusBuffers() const;507508    AttributeFormat                                            radiusFormat() const;509510    NS::UInteger                                               radiusStride() const;511512    NS::UInteger                                               segmentControlPointCount() const;513514    NS::UInteger                                               segmentCount() const;515516    void                                                       setControlPointBuffers(const NS::Array* controlPointBuffers);517518    void                                                       setControlPointCount(NS::UInteger controlPointCount);519520    void                                                       setControlPointFormat(MTL::AttributeFormat controlPointFormat);521522    void                                                       setControlPointStride(NS::UInteger controlPointStride);523524    void                                                       setCurveBasis(MTL::CurveBasis curveBasis);525526    void                                                       setCurveEndCaps(MTL::CurveEndCaps curveEndCaps);527528    void                                                       setCurveType(MTL::CurveType curveType);529530    void                                                       setIndexBuffer(const MTL::Buffer* indexBuffer);531    void                                                       setIndexBufferOffset(NS::UInteger indexBufferOffset);532533    void                                                       setIndexType(MTL::IndexType indexType);534535    void                                                       setRadiusBuffers(const NS::Array* radiusBuffers);536537    void                                                       setRadiusFormat(MTL::AttributeFormat radiusFormat);538539    void                                                       setRadiusStride(NS::UInteger radiusStride);540541    void                                                       setSegmentControlPointCount(NS::UInteger segmentControlPointCount);542543    void                                                       setSegmentCount(NS::UInteger segmentCount);544};545class InstanceAccelerationStructureDescriptor : public NS::Copying<InstanceAccelerationStructureDescriptor, AccelerationStructureDescriptor>546{547public:548    static InstanceAccelerationStructureDescriptor* alloc();549550    static InstanceAccelerationStructureDescriptor* descriptor();551552    InstanceAccelerationStructureDescriptor*        init();553554    NS::UInteger                                    instanceCount() const;555556    Buffer*                                         instanceDescriptorBuffer() const;557    NS::UInteger                                    instanceDescriptorBufferOffset() const;558559    NS::UInteger                                    instanceDescriptorStride() const;560561    AccelerationStructureInstanceDescriptorType     instanceDescriptorType() const;562563    MatrixLayout                                    instanceTransformationMatrixLayout() const;564565    NS::Array*                                      instancedAccelerationStructures() const;566567    Buffer*                                         motionTransformBuffer() const;568    NS::UInteger                                    motionTransformBufferOffset() const;569570    NS::UInteger                                    motionTransformCount() const;571572    NS::UInteger                                    motionTransformStride() const;573574    TransformType                                   motionTransformType() const;575576    void                                            setInstanceCount(NS::UInteger instanceCount);577578    void                                            setInstanceDescriptorBuffer(const MTL::Buffer* instanceDescriptorBuffer);579    void                                            setInstanceDescriptorBufferOffset(NS::UInteger instanceDescriptorBufferOffset);580581    void                                            setInstanceDescriptorStride(NS::UInteger instanceDescriptorStride);582583    void                                            setInstanceDescriptorType(MTL::AccelerationStructureInstanceDescriptorType instanceDescriptorType);584585    void                                            setInstanceTransformationMatrixLayout(MTL::MatrixLayout instanceTransformationMatrixLayout);586587    void                                            setInstancedAccelerationStructures(const NS::Array* instancedAccelerationStructures);588589    void                                            setMotionTransformBuffer(const MTL::Buffer* motionTransformBuffer);590    void                                            setMotionTransformBufferOffset(NS::UInteger motionTransformBufferOffset);591592    void                                            setMotionTransformCount(NS::UInteger motionTransformCount);593594    void                                            setMotionTransformStride(NS::UInteger motionTransformStride);595596    void                                            setMotionTransformType(MTL::TransformType motionTransformType);597};598class IndirectInstanceAccelerationStructureDescriptor : public NS::Copying<IndirectInstanceAccelerationStructureDescriptor, AccelerationStructureDescriptor>599{600public:601    static IndirectInstanceAccelerationStructureDescriptor* alloc();602603    static IndirectInstanceAccelerationStructureDescriptor* descriptor();604605    IndirectInstanceAccelerationStructureDescriptor*        init();606607    Buffer*                                                 instanceCountBuffer() const;608    NS::UInteger                                            instanceCountBufferOffset() const;609610    Buffer*                                                 instanceDescriptorBuffer() const;611    NS::UInteger                                            instanceDescriptorBufferOffset() const;612613    NS::UInteger                                            instanceDescriptorStride() const;614615    AccelerationStructureInstanceDescriptorType             instanceDescriptorType() const;616617    MatrixLayout                                            instanceTransformationMatrixLayout() const;618619    NS::UInteger                                            maxInstanceCount() const;620621    NS::UInteger                                            maxMotionTransformCount() const;622623    Buffer*                                                 motionTransformBuffer() const;624    NS::UInteger                                            motionTransformBufferOffset() const;625626    Buffer*                                                 motionTransformCountBuffer() const;627    NS::UInteger                                            motionTransformCountBufferOffset() const;628629    NS::UInteger                                            motionTransformStride() const;630631    TransformType                                           motionTransformType() const;632633    void                                                    setInstanceCountBuffer(const MTL::Buffer* instanceCountBuffer);634    void                                                    setInstanceCountBufferOffset(NS::UInteger instanceCountBufferOffset);635636    void                                                    setInstanceDescriptorBuffer(const MTL::Buffer* instanceDescriptorBuffer);637    void                                                    setInstanceDescriptorBufferOffset(NS::UInteger instanceDescriptorBufferOffset);638639    void                                                    setInstanceDescriptorStride(NS::UInteger instanceDescriptorStride);640641    void                                                    setInstanceDescriptorType(MTL::AccelerationStructureInstanceDescriptorType instanceDescriptorType);642643    void                                                    setInstanceTransformationMatrixLayout(MTL::MatrixLayout instanceTransformationMatrixLayout);644645    void                                                    setMaxInstanceCount(NS::UInteger maxInstanceCount);646647    void                                                    setMaxMotionTransformCount(NS::UInteger maxMotionTransformCount);648649    void                                                    setMotionTransformBuffer(const MTL::Buffer* motionTransformBuffer);650    void                                                    setMotionTransformBufferOffset(NS::UInteger motionTransformBufferOffset);651652    void                                                    setMotionTransformCountBuffer(const MTL::Buffer* motionTransformCountBuffer);653    void                                                    setMotionTransformCountBufferOffset(NS::UInteger motionTransformCountBufferOffset);654655    void                                                    setMotionTransformStride(NS::UInteger motionTransformStride);656657    void                                                    setMotionTransformType(MTL::TransformType motionTransformType);658};659class AccelerationStructure : public NS::Referencing<AccelerationStructure, Resource>660{661public:662    ResourceID   gpuResourceID() const;663664    NS::UInteger size() const;665};666667}668669_MTL_INLINE MTL::AccelerationStructureDescriptor* MTL::AccelerationStructureDescriptor::alloc()670{671    return NS::Object::alloc<MTL::AccelerationStructureDescriptor>(_MTL_PRIVATE_CLS(MTLAccelerationStructureDescriptor));672}673674_MTL_INLINE MTL::AccelerationStructureDescriptor* MTL::AccelerationStructureDescriptor::init()675{676    return NS::Object::init<MTL::AccelerationStructureDescriptor>();677}678679_MTL_INLINE void MTL::AccelerationStructureDescriptor::setUsage(MTL::AccelerationStructureUsage usage)680{681    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setUsage_), usage);682}683684_MTL_INLINE MTL::AccelerationStructureUsage MTL::AccelerationStructureDescriptor::usage() const685{686    return Object::sendMessage<MTL::AccelerationStructureUsage>(this, _MTL_PRIVATE_SEL(usage));687}688689_MTL_INLINE MTL::AccelerationStructureGeometryDescriptor* MTL::AccelerationStructureGeometryDescriptor::alloc()690{691    return NS::Object::alloc<MTL::AccelerationStructureGeometryDescriptor>(_MTL_PRIVATE_CLS(MTLAccelerationStructureGeometryDescriptor));692}693694_MTL_INLINE bool MTL::AccelerationStructureGeometryDescriptor::allowDuplicateIntersectionFunctionInvocation() const695{696    return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(allowDuplicateIntersectionFunctionInvocation));697}698699_MTL_INLINE MTL::AccelerationStructureGeometryDescriptor* MTL::AccelerationStructureGeometryDescriptor::init()700{701    return NS::Object::init<MTL::AccelerationStructureGeometryDescriptor>();702}703704_MTL_INLINE NS::UInteger MTL::AccelerationStructureGeometryDescriptor::intersectionFunctionTableOffset() const705{706    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(intersectionFunctionTableOffset));707}708709_MTL_INLINE NS::String* MTL::AccelerationStructureGeometryDescriptor::label() const710{711    return Object::sendMessage<NS::String*>(this, _MTL_PRIVATE_SEL(label));712}713714_MTL_INLINE bool MTL::AccelerationStructureGeometryDescriptor::opaque() const715{716    return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(opaque));717}718719_MTL_INLINE MTL::Buffer* MTL::AccelerationStructureGeometryDescriptor::primitiveDataBuffer() const720{721    return Object::sendMessage<MTL::Buffer*>(this, _MTL_PRIVATE_SEL(primitiveDataBuffer));722}723724_MTL_INLINE NS::UInteger MTL::AccelerationStructureGeometryDescriptor::primitiveDataBufferOffset() const725{726    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(primitiveDataBufferOffset));727}728729_MTL_INLINE NS::UInteger MTL::AccelerationStructureGeometryDescriptor::primitiveDataElementSize() const730{731    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(primitiveDataElementSize));732}733734_MTL_INLINE NS::UInteger MTL::AccelerationStructureGeometryDescriptor::primitiveDataStride() const735{736    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(primitiveDataStride));737}738739_MTL_INLINE void MTL::AccelerationStructureGeometryDescriptor::setAllowDuplicateIntersectionFunctionInvocation(bool allowDuplicateIntersectionFunctionInvocation)740{741    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setAllowDuplicateIntersectionFunctionInvocation_), allowDuplicateIntersectionFunctionInvocation);742}743744_MTL_INLINE void MTL::AccelerationStructureGeometryDescriptor::setIntersectionFunctionTableOffset(NS::UInteger intersectionFunctionTableOffset)745{746    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setIntersectionFunctionTableOffset_), intersectionFunctionTableOffset);747}748749_MTL_INLINE void MTL::AccelerationStructureGeometryDescriptor::setLabel(const NS::String* label)750{751    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setLabel_), label);752}753754_MTL_INLINE void MTL::AccelerationStructureGeometryDescriptor::setOpaque(bool opaque)755{756    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setOpaque_), opaque);757}758759_MTL_INLINE void MTL::AccelerationStructureGeometryDescriptor::setPrimitiveDataBuffer(const MTL::Buffer* primitiveDataBuffer)760{761    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setPrimitiveDataBuffer_), primitiveDataBuffer);762}763764_MTL_INLINE void MTL::AccelerationStructureGeometryDescriptor::setPrimitiveDataBufferOffset(NS::UInteger primitiveDataBufferOffset)765{766    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setPrimitiveDataBufferOffset_), primitiveDataBufferOffset);767}768769_MTL_INLINE void MTL::AccelerationStructureGeometryDescriptor::setPrimitiveDataElementSize(NS::UInteger primitiveDataElementSize)770{771    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setPrimitiveDataElementSize_), primitiveDataElementSize);772}773774_MTL_INLINE void MTL::AccelerationStructureGeometryDescriptor::setPrimitiveDataStride(NS::UInteger primitiveDataStride)775{776    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setPrimitiveDataStride_), primitiveDataStride);777}778779_MTL_INLINE MTL::PrimitiveAccelerationStructureDescriptor* MTL::PrimitiveAccelerationStructureDescriptor::alloc()780{781    return NS::Object::alloc<MTL::PrimitiveAccelerationStructureDescriptor>(_MTL_PRIVATE_CLS(MTLPrimitiveAccelerationStructureDescriptor));782}783784_MTL_INLINE MTL::PrimitiveAccelerationStructureDescriptor* MTL::PrimitiveAccelerationStructureDescriptor::descriptor()785{786    return Object::sendMessage<MTL::PrimitiveAccelerationStructureDescriptor*>(_MTL_PRIVATE_CLS(MTLPrimitiveAccelerationStructureDescriptor), _MTL_PRIVATE_SEL(descriptor));787}788789_MTL_INLINE NS::Array* MTL::PrimitiveAccelerationStructureDescriptor::geometryDescriptors() const790{791    return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(geometryDescriptors));792}793794_MTL_INLINE MTL::PrimitiveAccelerationStructureDescriptor* MTL::PrimitiveAccelerationStructureDescriptor::init()795{796    return NS::Object::init<MTL::PrimitiveAccelerationStructureDescriptor>();797}798799_MTL_INLINE MTL::MotionBorderMode MTL::PrimitiveAccelerationStructureDescriptor::motionEndBorderMode() const800{801    return Object::sendMessage<MTL::MotionBorderMode>(this, _MTL_PRIVATE_SEL(motionEndBorderMode));802}803804_MTL_INLINE float MTL::PrimitiveAccelerationStructureDescriptor::motionEndTime() const805{806    return Object::sendMessage<float>(this, _MTL_PRIVATE_SEL(motionEndTime));807}808809_MTL_INLINE NS::UInteger MTL::PrimitiveAccelerationStructureDescriptor::motionKeyframeCount() const810{811    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(motionKeyframeCount));812}813814_MTL_INLINE MTL::MotionBorderMode MTL::PrimitiveAccelerationStructureDescriptor::motionStartBorderMode() const815{816    return Object::sendMessage<MTL::MotionBorderMode>(this, _MTL_PRIVATE_SEL(motionStartBorderMode));817}818819_MTL_INLINE float MTL::PrimitiveAccelerationStructureDescriptor::motionStartTime() const820{821    return Object::sendMessage<float>(this, _MTL_PRIVATE_SEL(motionStartTime));822}823824_MTL_INLINE void MTL::PrimitiveAccelerationStructureDescriptor::setGeometryDescriptors(const NS::Array* geometryDescriptors)825{826    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setGeometryDescriptors_), geometryDescriptors);827}828829_MTL_INLINE void MTL::PrimitiveAccelerationStructureDescriptor::setMotionEndBorderMode(MTL::MotionBorderMode motionEndBorderMode)830{831    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMotionEndBorderMode_), motionEndBorderMode);832}833834_MTL_INLINE void MTL::PrimitiveAccelerationStructureDescriptor::setMotionEndTime(float motionEndTime)835{836    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMotionEndTime_), motionEndTime);837}838839_MTL_INLINE void MTL::PrimitiveAccelerationStructureDescriptor::setMotionKeyframeCount(NS::UInteger motionKeyframeCount)840{841    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMotionKeyframeCount_), motionKeyframeCount);842}843844_MTL_INLINE void MTL::PrimitiveAccelerationStructureDescriptor::setMotionStartBorderMode(MTL::MotionBorderMode motionStartBorderMode)845{846    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMotionStartBorderMode_), motionStartBorderMode);847}848849_MTL_INLINE void MTL::PrimitiveAccelerationStructureDescriptor::setMotionStartTime(float motionStartTime)850{851    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMotionStartTime_), motionStartTime);852}853854_MTL_INLINE MTL::AccelerationStructureTriangleGeometryDescriptor* MTL::AccelerationStructureTriangleGeometryDescriptor::alloc()855{856    return NS::Object::alloc<MTL::AccelerationStructureTriangleGeometryDescriptor>(_MTL_PRIVATE_CLS(MTLAccelerationStructureTriangleGeometryDescriptor));857}858859_MTL_INLINE MTL::AccelerationStructureTriangleGeometryDescriptor* MTL::AccelerationStructureTriangleGeometryDescriptor::descriptor()860{861    return Object::sendMessage<MTL::AccelerationStructureTriangleGeometryDescriptor*>(_MTL_PRIVATE_CLS(MTLAccelerationStructureTriangleGeometryDescriptor), _MTL_PRIVATE_SEL(descriptor));862}863864_MTL_INLINE MTL::Buffer* MTL::AccelerationStructureTriangleGeometryDescriptor::indexBuffer() const865{866    return Object::sendMessage<MTL::Buffer*>(this, _MTL_PRIVATE_SEL(indexBuffer));867}868869_MTL_INLINE NS::UInteger MTL::AccelerationStructureTriangleGeometryDescriptor::indexBufferOffset() const870{871    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(indexBufferOffset));872}873874_MTL_INLINE MTL::IndexType MTL::AccelerationStructureTriangleGeometryDescriptor::indexType() const875{876    return Object::sendMessage<MTL::IndexType>(this, _MTL_PRIVATE_SEL(indexType));877}878879_MTL_INLINE MTL::AccelerationStructureTriangleGeometryDescriptor* MTL::AccelerationStructureTriangleGeometryDescriptor::init()880{881    return NS::Object::init<MTL::AccelerationStructureTriangleGeometryDescriptor>();882}883884_MTL_INLINE void MTL::AccelerationStructureTriangleGeometryDescriptor::setIndexBuffer(const MTL::Buffer* indexBuffer)885{886    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setIndexBuffer_), indexBuffer);887}888889_MTL_INLINE void MTL::AccelerationStructureTriangleGeometryDescriptor::setIndexBufferOffset(NS::UInteger indexBufferOffset)890{891    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setIndexBufferOffset_), indexBufferOffset);892}893894_MTL_INLINE void MTL::AccelerationStructureTriangleGeometryDescriptor::setIndexType(MTL::IndexType indexType)895{896    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setIndexType_), indexType);897}898899_MTL_INLINE void MTL::AccelerationStructureTriangleGeometryDescriptor::setTransformationMatrixBuffer(const MTL::Buffer* transformationMatrixBuffer)900{901    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setTransformationMatrixBuffer_), transformationMatrixBuffer);902}903904_MTL_INLINE void MTL::AccelerationStructureTriangleGeometryDescriptor::setTransformationMatrixBufferOffset(NS::UInteger transformationMatrixBufferOffset)905{906    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setTransformationMatrixBufferOffset_), transformationMatrixBufferOffset);907}908909_MTL_INLINE void MTL::AccelerationStructureTriangleGeometryDescriptor::setTransformationMatrixLayout(MTL::MatrixLayout transformationMatrixLayout)910{911    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setTransformationMatrixLayout_), transformationMatrixLayout);912}913914_MTL_INLINE void MTL::AccelerationStructureTriangleGeometryDescriptor::setTriangleCount(NS::UInteger triangleCount)915{916    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setTriangleCount_), triangleCount);917}918919_MTL_INLINE void MTL::AccelerationStructureTriangleGeometryDescriptor::setVertexBuffer(const MTL::Buffer* vertexBuffer)920{921    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setVertexBuffer_), vertexBuffer);922}923924_MTL_INLINE void MTL::AccelerationStructureTriangleGeometryDescriptor::setVertexBufferOffset(NS::UInteger vertexBufferOffset)925{926    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setVertexBufferOffset_), vertexBufferOffset);927}928929_MTL_INLINE void MTL::AccelerationStructureTriangleGeometryDescriptor::setVertexFormat(MTL::AttributeFormat vertexFormat)930{931    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setVertexFormat_), vertexFormat);932}933934_MTL_INLINE void MTL::AccelerationStructureTriangleGeometryDescriptor::setVertexStride(NS::UInteger vertexStride)935{936    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setVertexStride_), vertexStride);937}938939_MTL_INLINE MTL::Buffer* MTL::AccelerationStructureTriangleGeometryDescriptor::transformationMatrixBuffer() const940{941    return Object::sendMessage<MTL::Buffer*>(this, _MTL_PRIVATE_SEL(transformationMatrixBuffer));942}943944_MTL_INLINE NS::UInteger MTL::AccelerationStructureTriangleGeometryDescriptor::transformationMatrixBufferOffset() const945{946    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(transformationMatrixBufferOffset));947}948949_MTL_INLINE MTL::MatrixLayout MTL::AccelerationStructureTriangleGeometryDescriptor::transformationMatrixLayout() const950{951    return Object::sendMessage<MTL::MatrixLayout>(this, _MTL_PRIVATE_SEL(transformationMatrixLayout));952}953954_MTL_INLINE NS::UInteger MTL::AccelerationStructureTriangleGeometryDescriptor::triangleCount() const955{956    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(triangleCount));957}958959_MTL_INLINE MTL::Buffer* MTL::AccelerationStructureTriangleGeometryDescriptor::vertexBuffer() const960{961    return Object::sendMessage<MTL::Buffer*>(this, _MTL_PRIVATE_SEL(vertexBuffer));962}963964_MTL_INLINE NS::UInteger MTL::AccelerationStructureTriangleGeometryDescriptor::vertexBufferOffset() const965{966    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(vertexBufferOffset));967}968969_MTL_INLINE MTL::AttributeFormat MTL::AccelerationStructureTriangleGeometryDescriptor::vertexFormat() const970{971    return Object::sendMessage<MTL::AttributeFormat>(this, _MTL_PRIVATE_SEL(vertexFormat));972}973974_MTL_INLINE NS::UInteger MTL::AccelerationStructureTriangleGeometryDescriptor::vertexStride() const975{976    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(vertexStride));977}978979_MTL_INLINE MTL::AccelerationStructureBoundingBoxGeometryDescriptor* MTL::AccelerationStructureBoundingBoxGeometryDescriptor::alloc()980{981    return NS::Object::alloc<MTL::AccelerationStructureBoundingBoxGeometryDescriptor>(_MTL_PRIVATE_CLS(MTLAccelerationStructureBoundingBoxGeometryDescriptor));982}983984_MTL_INLINE MTL::Buffer* MTL::AccelerationStructureBoundingBoxGeometryDescriptor::boundingBoxBuffer() const985{986    return Object::sendMessage<MTL::Buffer*>(this, _MTL_PRIVATE_SEL(boundingBoxBuffer));987}988989_MTL_INLINE NS::UInteger MTL::AccelerationStructureBoundingBoxGeometryDescriptor::boundingBoxBufferOffset() const990{991    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(boundingBoxBufferOffset));992}993994_MTL_INLINE NS::UInteger MTL::AccelerationStructureBoundingBoxGeometryDescriptor::boundingBoxCount() const995{996    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(boundingBoxCount));997}998999_MTL_INLINE NS::UInteger MTL::AccelerationStructureBoundingBoxGeometryDescriptor::boundingBoxStride() const1000{1001    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(boundingBoxStride));1002}10031004_MTL_INLINE MTL::AccelerationStructureBoundingBoxGeometryDescriptor* MTL::AccelerationStructureBoundingBoxGeometryDescriptor::descriptor()1005{1006    return Object::sendMessage<MTL::AccelerationStructureBoundingBoxGeometryDescriptor*>(_MTL_PRIVATE_CLS(MTLAccelerationStructureBoundingBoxGeometryDescriptor), _MTL_PRIVATE_SEL(descriptor));1007}10081009_MTL_INLINE MTL::AccelerationStructureBoundingBoxGeometryDescriptor* MTL::AccelerationStructureBoundingBoxGeometryDescriptor::init()1010{1011    return NS::Object::init<MTL::AccelerationStructureBoundingBoxGeometryDescriptor>();1012}10131014_MTL_INLINE void MTL::AccelerationStructureBoundingBoxGeometryDescriptor::setBoundingBoxBuffer(const MTL::Buffer* boundingBoxBuffer)1015{1016    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setBoundingBoxBuffer_), boundingBoxBuffer);1017}10181019_MTL_INLINE void MTL::AccelerationStructureBoundingBoxGeometryDescriptor::setBoundingBoxBufferOffset(NS::UInteger boundingBoxBufferOffset)1020{1021    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setBoundingBoxBufferOffset_), boundingBoxBufferOffset);1022}10231024_MTL_INLINE void MTL::AccelerationStructureBoundingBoxGeometryDescriptor::setBoundingBoxCount(NS::UInteger boundingBoxCount)1025{1026    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setBoundingBoxCount_), boundingBoxCount);1027}10281029_MTL_INLINE void MTL::AccelerationStructureBoundingBoxGeometryDescriptor::setBoundingBoxStride(NS::UInteger boundingBoxStride)1030{1031    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setBoundingBoxStride_), boundingBoxStride);1032}10331034_MTL_INLINE MTL::MotionKeyframeData* MTL::MotionKeyframeData::alloc()1035{1036    return NS::Object::alloc<MTL::MotionKeyframeData>(_MTL_PRIVATE_CLS(MTLMotionKeyframeData));1037}10381039_MTL_INLINE MTL::Buffer* MTL::MotionKeyframeData::buffer() const1040{1041    return Object::sendMessage<MTL::Buffer*>(this, _MTL_PRIVATE_SEL(buffer));1042}10431044_MTL_INLINE MTL::MotionKeyframeData* MTL::MotionKeyframeData::data()1045{1046    return Object::sendMessage<MTL::MotionKeyframeData*>(_MTL_PRIVATE_CLS(MTLMotionKeyframeData), _MTL_PRIVATE_SEL(data));1047}10481049_MTL_INLINE MTL::MotionKeyframeData* MTL::MotionKeyframeData::init()1050{1051    return NS::Object::init<MTL::MotionKeyframeData>();1052}10531054_MTL_INLINE NS::UInteger MTL::MotionKeyframeData::offset() const1055{1056    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(offset));1057}10581059_MTL_INLINE void MTL::MotionKeyframeData::setBuffer(const MTL::Buffer* buffer)1060{1061    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setBuffer_), buffer);1062}10631064_MTL_INLINE void MTL::MotionKeyframeData::setOffset(NS::UInteger offset)1065{1066    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setOffset_), offset);1067}10681069_MTL_INLINE MTL::AccelerationStructureMotionTriangleGeometryDescriptor* MTL::AccelerationStructureMotionTriangleGeometryDescriptor::alloc()1070{1071    return NS::Object::alloc<MTL::AccelerationStructureMotionTriangleGeometryDescriptor>(_MTL_PRIVATE_CLS(MTLAccelerationStructureMotionTriangleGeometryDescriptor));1072}10731074_MTL_INLINE MTL::AccelerationStructureMotionTriangleGeometryDescriptor* MTL::AccelerationStructureMotionTriangleGeometryDescriptor::descriptor()1075{1076    return Object::sendMessage<MTL::AccelerationStructureMotionTriangleGeometryDescriptor*>(_MTL_PRIVATE_CLS(MTLAccelerationStructureMotionTriangleGeometryDescriptor), _MTL_PRIVATE_SEL(descriptor));1077}10781079_MTL_INLINE MTL::Buffer* MTL::AccelerationStructureMotionTriangleGeometryDescriptor::indexBuffer() const1080{1081    return Object::sendMessage<MTL::Buffer*>(this, _MTL_PRIVATE_SEL(indexBuffer));1082}10831084_MTL_INLINE NS::UInteger MTL::AccelerationStructureMotionTriangleGeometryDescriptor::indexBufferOffset() const1085{1086    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(indexBufferOffset));1087}10881089_MTL_INLINE MTL::IndexType MTL::AccelerationStructureMotionTriangleGeometryDescriptor::indexType() const1090{1091    return Object::sendMessage<MTL::IndexType>(this, _MTL_PRIVATE_SEL(indexType));1092}10931094_MTL_INLINE MTL::AccelerationStructureMotionTriangleGeometryDescriptor* MTL::AccelerationStructureMotionTriangleGeometryDescriptor::init()1095{1096    return NS::Object::init<MTL::AccelerationStructureMotionTriangleGeometryDescriptor>();1097}10981099_MTL_INLINE void MTL::AccelerationStructureMotionTriangleGeometryDescriptor::setIndexBuffer(const MTL::Buffer* indexBuffer)1100{1101    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setIndexBuffer_), indexBuffer);1102}11031104_MTL_INLINE void MTL::AccelerationStructureMotionTriangleGeometryDescriptor::setIndexBufferOffset(NS::UInteger indexBufferOffset)1105{1106    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setIndexBufferOffset_), indexBufferOffset);1107}11081109_MTL_INLINE void MTL::AccelerationStructureMotionTriangleGeometryDescriptor::setIndexType(MTL::IndexType indexType)1110{1111    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setIndexType_), indexType);1112}11131114_MTL_INLINE void MTL::AccelerationStructureMotionTriangleGeometryDescriptor::setTransformationMatrixBuffer(const MTL::Buffer* transformationMatrixBuffer)1115{1116    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setTransformationMatrixBuffer_), transformationMatrixBuffer);1117}11181119_MTL_INLINE void MTL::AccelerationStructureMotionTriangleGeometryDescriptor::setTransformationMatrixBufferOffset(NS::UInteger transformationMatrixBufferOffset)1120{1121    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setTransformationMatrixBufferOffset_), transformationMatrixBufferOffset);1122}11231124_MTL_INLINE void MTL::AccelerationStructureMotionTriangleGeometryDescriptor::setTransformationMatrixLayout(MTL::MatrixLayout transformationMatrixLayout)1125{1126    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setTransformationMatrixLayout_), transformationMatrixLayout);1127}11281129_MTL_INLINE void MTL::AccelerationStructureMotionTriangleGeometryDescriptor::setTriangleCount(NS::UInteger triangleCount)1130{1131    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setTriangleCount_), triangleCount);1132}11331134_MTL_INLINE void MTL::AccelerationStructureMotionTriangleGeometryDescriptor::setVertexBuffers(const NS::Array* vertexBuffers)1135{1136    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setVertexBuffers_), vertexBuffers);1137}11381139_MTL_INLINE void MTL::AccelerationStructureMotionTriangleGeometryDescriptor::setVertexFormat(MTL::AttributeFormat vertexFormat)1140{1141    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setVertexFormat_), vertexFormat);1142}11431144_MTL_INLINE void MTL::AccelerationStructureMotionTriangleGeometryDescriptor::setVertexStride(NS::UInteger vertexStride)1145{1146    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setVertexStride_), vertexStride);1147}11481149_MTL_INLINE MTL::Buffer* MTL::AccelerationStructureMotionTriangleGeometryDescriptor::transformationMatrixBuffer() const1150{1151    return Object::sendMessage<MTL::Buffer*>(this, _MTL_PRIVATE_SEL(transformationMatrixBuffer));1152}11531154_MTL_INLINE NS::UInteger MTL::AccelerationStructureMotionTriangleGeometryDescriptor::transformationMatrixBufferOffset() const1155{1156    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(transformationMatrixBufferOffset));1157}11581159_MTL_INLINE MTL::MatrixLayout MTL::AccelerationStructureMotionTriangleGeometryDescriptor::transformationMatrixLayout() const1160{1161    return Object::sendMessage<MTL::MatrixLayout>(this, _MTL_PRIVATE_SEL(transformationMatrixLayout));1162}11631164_MTL_INLINE NS::UInteger MTL::AccelerationStructureMotionTriangleGeometryDescriptor::triangleCount() const1165{1166    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(triangleCount));1167}11681169_MTL_INLINE NS::Array* MTL::AccelerationStructureMotionTriangleGeometryDescriptor::vertexBuffers() const1170{1171    return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(vertexBuffers));1172}11731174_MTL_INLINE MTL::AttributeFormat MTL::AccelerationStructureMotionTriangleGeometryDescriptor::vertexFormat() const1175{1176    return Object::sendMessage<MTL::AttributeFormat>(this, _MTL_PRIVATE_SEL(vertexFormat));1177}11781179_MTL_INLINE NS::UInteger MTL::AccelerationStructureMotionTriangleGeometryDescriptor::vertexStride() const1180{1181    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(vertexStride));1182}11831184_MTL_INLINE MTL::AccelerationStructureMotionBoundingBoxGeometryDescriptor* MTL::AccelerationStructureMotionBoundingBoxGeometryDescriptor::alloc()1185{1186    return NS::Object::alloc<MTL::AccelerationStructureMotionBoundingBoxGeometryDescriptor>(_MTL_PRIVATE_CLS(MTLAccelerationStructureMotionBoundingBoxGeometryDescriptor));1187}11881189_MTL_INLINE NS::Array* MTL::AccelerationStructureMotionBoundingBoxGeometryDescriptor::boundingBoxBuffers() const1190{1191    return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(boundingBoxBuffers));1192}11931194_MTL_INLINE NS::UInteger MTL::AccelerationStructureMotionBoundingBoxGeometryDescriptor::boundingBoxCount() const1195{1196    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(boundingBoxCount));1197}11981199_MTL_INLINE NS::UInteger MTL::AccelerationStructureMotionBoundingBoxGeometryDescriptor::boundingBoxStride() const1200{1201    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(boundingBoxStride));1202}12031204_MTL_INLINE MTL::AccelerationStructureMotionBoundingBoxGeometryDescriptor* MTL::AccelerationStructureMotionBoundingBoxGeometryDescriptor::descriptor()1205{1206    return Object::sendMessage<MTL::AccelerationStructureMotionBoundingBoxGeometryDescriptor*>(_MTL_PRIVATE_CLS(MTLAccelerationStructureMotionBoundingBoxGeometryDescriptor), _MTL_PRIVATE_SEL(descriptor));1207}12081209_MTL_INLINE MTL::AccelerationStructureMotionBoundingBoxGeometryDescriptor* MTL::AccelerationStructureMotionBoundingBoxGeometryDescriptor::init()1210{1211    return NS::Object::init<MTL::AccelerationStructureMotionBoundingBoxGeometryDescriptor>();1212}12131214_MTL_INLINE void MTL::AccelerationStructureMotionBoundingBoxGeometryDescriptor::setBoundingBoxBuffers(const NS::Array* boundingBoxBuffers)1215{1216    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setBoundingBoxBuffers_), boundingBoxBuffers);1217}12181219_MTL_INLINE void MTL::AccelerationStructureMotionBoundingBoxGeometryDescriptor::setBoundingBoxCount(NS::UInteger boundingBoxCount)1220{1221    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setBoundingBoxCount_), boundingBoxCount);1222}12231224_MTL_INLINE void MTL::AccelerationStructureMotionBoundingBoxGeometryDescriptor::setBoundingBoxStride(NS::UInteger boundingBoxStride)1225{1226    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setBoundingBoxStride_), boundingBoxStride);1227}12281229_MTL_INLINE MTL::AccelerationStructureCurveGeometryDescriptor* MTL::AccelerationStructureCurveGeometryDescriptor::alloc()1230{1231    return NS::Object::alloc<MTL::AccelerationStructureCurveGeometryDescriptor>(_MTL_PRIVATE_CLS(MTLAccelerationStructureCurveGeometryDescriptor));1232}12331234_MTL_INLINE MTL::Buffer* MTL::AccelerationStructureCurveGeometryDescriptor::controlPointBuffer() const1235{1236    return Object::sendMessage<MTL::Buffer*>(this, _MTL_PRIVATE_SEL(controlPointBuffer));1237}12381239_MTL_INLINE NS::UInteger MTL::AccelerationStructureCurveGeometryDescriptor::controlPointBufferOffset() const1240{1241    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(controlPointBufferOffset));1242}12431244_MTL_INLINE NS::UInteger MTL::AccelerationStructureCurveGeometryDescriptor::controlPointCount() const1245{1246    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(controlPointCount));1247}12481249_MTL_INLINE MTL::AttributeFormat MTL::AccelerationStructureCurveGeometryDescriptor::controlPointFormat() const1250{1251    return Object::sendMessage<MTL::AttributeFormat>(this, _MTL_PRIVATE_SEL(controlPointFormat));1252}12531254_MTL_INLINE NS::UInteger MTL::AccelerationStructureCurveGeometryDescriptor::controlPointStride() const1255{1256    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(controlPointStride));1257}12581259_MTL_INLINE MTL::CurveBasis MTL::AccelerationStructureCurveGeometryDescriptor::curveBasis() const1260{1261    return Object::sendMessage<MTL::CurveBasis>(this, _MTL_PRIVATE_SEL(curveBasis));1262}12631264_MTL_INLINE MTL::CurveEndCaps MTL::AccelerationStructureCurveGeometryDescriptor::curveEndCaps() const1265{1266    return Object::sendMessage<MTL::CurveEndCaps>(this, _MTL_PRIVATE_SEL(curveEndCaps));1267}12681269_MTL_INLINE MTL::CurveType MTL::AccelerationStructureCurveGeometryDescriptor::curveType() const1270{1271    return Object::sendMessage<MTL::CurveType>(this, _MTL_PRIVATE_SEL(curveType));1272}12731274_MTL_INLINE MTL::AccelerationStructureCurveGeometryDescriptor* MTL::AccelerationStructureCurveGeometryDescriptor::descriptor()1275{1276    return Object::sendMessage<MTL::AccelerationStructureCurveGeometryDescriptor*>(_MTL_PRIVATE_CLS(MTLAccelerationStructureCurveGeometryDescriptor), _MTL_PRIVATE_SEL(descriptor));1277}12781279_MTL_INLINE MTL::Buffer* MTL::AccelerationStructureCurveGeometryDescriptor::indexBuffer() const1280{1281    return Object::sendMessage<MTL::Buffer*>(this, _MTL_PRIVATE_SEL(indexBuffer));1282}12831284_MTL_INLINE NS::UInteger MTL::AccelerationStructureCurveGeometryDescriptor::indexBufferOffset() const1285{1286    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(indexBufferOffset));1287}12881289_MTL_INLINE MTL::IndexType MTL::AccelerationStructureCurveGeometryDescriptor::indexType() const1290{1291    return Object::sendMessage<MTL::IndexType>(this, _MTL_PRIVATE_SEL(indexType));1292}12931294_MTL_INLINE MTL::AccelerationStructureCurveGeometryDescriptor* MTL::AccelerationStructureCurveGeometryDescriptor::init()1295{1296    return NS::Object::init<MTL::AccelerationStructureCurveGeometryDescriptor>();1297}12981299_MTL_INLINE MTL::Buffer* MTL::AccelerationStructureCurveGeometryDescriptor::radiusBuffer() const1300{1301    return Object::sendMessage<MTL::Buffer*>(this, _MTL_PRIVATE_SEL(radiusBuffer));1302}13031304_MTL_INLINE NS::UInteger MTL::AccelerationStructureCurveGeometryDescriptor::radiusBufferOffset() const1305{1306    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(radiusBufferOffset));1307}13081309_MTL_INLINE MTL::AttributeFormat MTL::AccelerationStructureCurveGeometryDescriptor::radiusFormat() const1310{1311    return Object::sendMessage<MTL::AttributeFormat>(this, _MTL_PRIVATE_SEL(radiusFormat));1312}13131314_MTL_INLINE NS::UInteger MTL::AccelerationStructureCurveGeometryDescriptor::radiusStride() const1315{1316    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(radiusStride));1317}13181319_MTL_INLINE NS::UInteger MTL::AccelerationStructureCurveGeometryDescriptor::segmentControlPointCount() const1320{1321    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(segmentControlPointCount));1322}13231324_MTL_INLINE NS::UInteger MTL::AccelerationStructureCurveGeometryDescriptor::segmentCount() const1325{1326    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(segmentCount));1327}13281329_MTL_INLINE void MTL::AccelerationStructureCurveGeometryDescriptor::setControlPointBuffer(const MTL::Buffer* controlPointBuffer)1330{1331    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setControlPointBuffer_), controlPointBuffer);1332}13331334_MTL_INLINE void MTL::AccelerationStructureCurveGeometryDescriptor::setControlPointBufferOffset(NS::UInteger controlPointBufferOffset)1335{1336    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setControlPointBufferOffset_), controlPointBufferOffset);1337}13381339_MTL_INLINE void MTL::AccelerationStructureCurveGeometryDescriptor::setControlPointCount(NS::UInteger controlPointCount)1340{1341    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setControlPointCount_), controlPointCount);1342}13431344_MTL_INLINE void MTL::AccelerationStructureCurveGeometryDescriptor::setControlPointFormat(MTL::AttributeFormat controlPointFormat)1345{1346    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setControlPointFormat_), controlPointFormat);1347}13481349_MTL_INLINE void MTL::AccelerationStructureCurveGeometryDescriptor::setControlPointStride(NS::UInteger controlPointStride)1350{1351    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setControlPointStride_), controlPointStride);1352}13531354_MTL_INLINE void MTL::AccelerationStructureCurveGeometryDescriptor::setCurveBasis(MTL::CurveBasis curveBasis)1355{1356    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setCurveBasis_), curveBasis);1357}13581359_MTL_INLINE void MTL::AccelerationStructureCurveGeometryDescriptor::setCurveEndCaps(MTL::CurveEndCaps curveEndCaps)1360{1361    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setCurveEndCaps_), curveEndCaps);1362}13631364_MTL_INLINE void MTL::AccelerationStructureCurveGeometryDescriptor::setCurveType(MTL::CurveType curveType)1365{1366    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setCurveType_), curveType);1367}13681369_MTL_INLINE void MTL::AccelerationStructureCurveGeometryDescriptor::setIndexBuffer(const MTL::Buffer* indexBuffer)1370{1371    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setIndexBuffer_), indexBuffer);1372}13731374_MTL_INLINE void MTL::AccelerationStructureCurveGeometryDescriptor::setIndexBufferOffset(NS::UInteger indexBufferOffset)1375{1376    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setIndexBufferOffset_), indexBufferOffset);1377}13781379_MTL_INLINE void MTL::AccelerationStructureCurveGeometryDescriptor::setIndexType(MTL::IndexType indexType)1380{1381    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setIndexType_), indexType);1382}13831384_MTL_INLINE void MTL::AccelerationStructureCurveGeometryDescriptor::setRadiusBuffer(const MTL::Buffer* radiusBuffer)1385{1386    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setRadiusBuffer_), radiusBuffer);1387}13881389_MTL_INLINE void MTL::AccelerationStructureCurveGeometryDescriptor::setRadiusBufferOffset(NS::UInteger radiusBufferOffset)1390{1391    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setRadiusBufferOffset_), radiusBufferOffset);1392}13931394_MTL_INLINE void MTL::AccelerationStructureCurveGeometryDescriptor::setRadiusFormat(MTL::AttributeFormat radiusFormat)1395{1396    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setRadiusFormat_), radiusFormat);1397}13981399_MTL_INLINE void MTL::AccelerationStructureCurveGeometryDescriptor::setRadiusStride(NS::UInteger radiusStride)1400{1401    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setRadiusStride_), radiusStride);1402}14031404_MTL_INLINE void MTL::AccelerationStructureCurveGeometryDescriptor::setSegmentControlPointCount(NS::UInteger segmentControlPointCount)1405{1406    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setSegmentControlPointCount_), segmentControlPointCount);1407}14081409_MTL_INLINE void MTL::AccelerationStructureCurveGeometryDescriptor::setSegmentCount(NS::UInteger segmentCount)1410{1411    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setSegmentCount_), segmentCount);1412}14131414_MTL_INLINE MTL::AccelerationStructureMotionCurveGeometryDescriptor* MTL::AccelerationStructureMotionCurveGeometryDescriptor::alloc()1415{1416    return NS::Object::alloc<MTL::AccelerationStructureMotionCurveGeometryDescriptor>(_MTL_PRIVATE_CLS(MTLAccelerationStructureMotionCurveGeometryDescriptor));1417}14181419_MTL_INLINE NS::Array* MTL::AccelerationStructureMotionCurveGeometryDescriptor::controlPointBuffers() const1420{1421    return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(controlPointBuffers));1422}14231424_MTL_INLINE NS::UInteger MTL::AccelerationStructureMotionCurveGeometryDescriptor::controlPointCount() const1425{1426    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(controlPointCount));1427}14281429_MTL_INLINE MTL::AttributeFormat MTL::AccelerationStructureMotionCurveGeometryDescriptor::controlPointFormat() const1430{1431    return Object::sendMessage<MTL::AttributeFormat>(this, _MTL_PRIVATE_SEL(controlPointFormat));1432}14331434_MTL_INLINE NS::UInteger MTL::AccelerationStructureMotionCurveGeometryDescriptor::controlPointStride() const1435{1436    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(controlPointStride));1437}14381439_MTL_INLINE MTL::CurveBasis MTL::AccelerationStructureMotionCurveGeometryDescriptor::curveBasis() const1440{1441    return Object::sendMessage<MTL::CurveBasis>(this, _MTL_PRIVATE_SEL(curveBasis));1442}14431444_MTL_INLINE MTL::CurveEndCaps MTL::AccelerationStructureMotionCurveGeometryDescriptor::curveEndCaps() const1445{1446    return Object::sendMessage<MTL::CurveEndCaps>(this, _MTL_PRIVATE_SEL(curveEndCaps));1447}14481449_MTL_INLINE MTL::CurveType MTL::AccelerationStructureMotionCurveGeometryDescriptor::curveType() const1450{1451    return Object::sendMessage<MTL::CurveType>(this, _MTL_PRIVATE_SEL(curveType));1452}14531454_MTL_INLINE MTL::AccelerationStructureMotionCurveGeometryDescriptor* MTL::AccelerationStructureMotionCurveGeometryDescriptor::descriptor()1455{1456    return Object::sendMessage<MTL::AccelerationStructureMotionCurveGeometryDescriptor*>(_MTL_PRIVATE_CLS(MTLAccelerationStructureMotionCurveGeometryDescriptor), _MTL_PRIVATE_SEL(descriptor));1457}14581459_MTL_INLINE MTL::Buffer* MTL::AccelerationStructureMotionCurveGeometryDescriptor::indexBuffer() const1460{1461    return Object::sendMessage<MTL::Buffer*>(this, _MTL_PRIVATE_SEL(indexBuffer));1462}14631464_MTL_INLINE NS::UInteger MTL::AccelerationStructureMotionCurveGeometryDescriptor::indexBufferOffset() const1465{1466    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(indexBufferOffset));1467}14681469_MTL_INLINE MTL::IndexType MTL::AccelerationStructureMotionCurveGeometryDescriptor::indexType() const1470{1471    return Object::sendMessage<MTL::IndexType>(this, _MTL_PRIVATE_SEL(indexType));1472}14731474_MTL_INLINE MTL::AccelerationStructureMotionCurveGeometryDescriptor* MTL::AccelerationStructureMotionCurveGeometryDescriptor::init()1475{1476    return NS::Object::init<MTL::AccelerationStructureMotionCurveGeometryDescriptor>();1477}14781479_MTL_INLINE NS::Array* MTL::AccelerationStructureMotionCurveGeometryDescriptor::radiusBuffers() const1480{1481    return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(radiusBuffers));1482}14831484_MTL_INLINE MTL::AttributeFormat MTL::AccelerationStructureMotionCurveGeometryDescriptor::radiusFormat() const1485{1486    return Object::sendMessage<MTL::AttributeFormat>(this, _MTL_PRIVATE_SEL(radiusFormat));1487}14881489_MTL_INLINE NS::UInteger MTL::AccelerationStructureMotionCurveGeometryDescriptor::radiusStride() const1490{1491    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(radiusStride));1492}14931494_MTL_INLINE NS::UInteger MTL::AccelerationStructureMotionCurveGeometryDescriptor::segmentControlPointCount() const1495{1496    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(segmentControlPointCount));1497}14981499_MTL_INLINE NS::UInteger MTL::AccelerationStructureMotionCurveGeometryDescriptor::segmentCount() const1500{1501    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(segmentCount));1502}15031504_MTL_INLINE void MTL::AccelerationStructureMotionCurveGeometryDescriptor::setControlPointBuffers(const NS::Array* controlPointBuffers)1505{1506    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setControlPointBuffers_), controlPointBuffers);1507}15081509_MTL_INLINE void MTL::AccelerationStructureMotionCurveGeometryDescriptor::setControlPointCount(NS::UInteger controlPointCount)1510{1511    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setControlPointCount_), controlPointCount);1512}15131514_MTL_INLINE void MTL::AccelerationStructureMotionCurveGeometryDescriptor::setControlPointFormat(MTL::AttributeFormat controlPointFormat)1515{1516    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setControlPointFormat_), controlPointFormat);1517}15181519_MTL_INLINE void MTL::AccelerationStructureMotionCurveGeometryDescriptor::setControlPointStride(NS::UInteger controlPointStride)1520{1521    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setControlPointStride_), controlPointStride);1522}15231524_MTL_INLINE void MTL::AccelerationStructureMotionCurveGeometryDescriptor::setCurveBasis(MTL::CurveBasis curveBasis)1525{1526    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setCurveBasis_), curveBasis);1527}15281529_MTL_INLINE void MTL::AccelerationStructureMotionCurveGeometryDescriptor::setCurveEndCaps(MTL::CurveEndCaps curveEndCaps)1530{1531    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setCurveEndCaps_), curveEndCaps);1532}15331534_MTL_INLINE void MTL::AccelerationStructureMotionCurveGeometryDescriptor::setCurveType(MTL::CurveType curveType)1535{1536    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setCurveType_), curveType);1537}15381539_MTL_INLINE void MTL::AccelerationStructureMotionCurveGeometryDescriptor::setIndexBuffer(const MTL::Buffer* indexBuffer)1540{1541    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setIndexBuffer_), indexBuffer);1542}15431544_MTL_INLINE void MTL::AccelerationStructureMotionCurveGeometryDescriptor::setIndexBufferOffset(NS::UInteger indexBufferOffset)1545{1546    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setIndexBufferOffset_), indexBufferOffset);1547}15481549_MTL_INLINE void MTL::AccelerationStructureMotionCurveGeometryDescriptor::setIndexType(MTL::IndexType indexType)1550{1551    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setIndexType_), indexType);1552}15531554_MTL_INLINE void MTL::AccelerationStructureMotionCurveGeometryDescriptor::setRadiusBuffers(const NS::Array* radiusBuffers)1555{1556    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setRadiusBuffers_), radiusBuffers);1557}15581559_MTL_INLINE void MTL::AccelerationStructureMotionCurveGeometryDescriptor::setRadiusFormat(MTL::AttributeFormat radiusFormat)1560{1561    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setRadiusFormat_), radiusFormat);1562}15631564_MTL_INLINE void MTL::AccelerationStructureMotionCurveGeometryDescriptor::setRadiusStride(NS::UInteger radiusStride)1565{1566    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setRadiusStride_), radiusStride);1567}15681569_MTL_INLINE void MTL::AccelerationStructureMotionCurveGeometryDescriptor::setSegmentControlPointCount(NS::UInteger segmentControlPointCount)1570{1571    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setSegmentControlPointCount_), segmentControlPointCount);1572}15731574_MTL_INLINE void MTL::AccelerationStructureMotionCurveGeometryDescriptor::setSegmentCount(NS::UInteger segmentCount)1575{1576    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setSegmentCount_), segmentCount);1577}15781579_MTL_INLINE MTL::InstanceAccelerationStructureDescriptor* MTL::InstanceAccelerationStructureDescriptor::alloc()1580{1581    return NS::Object::alloc<MTL::InstanceAccelerationStructureDescriptor>(_MTL_PRIVATE_CLS(MTLInstanceAccelerationStructureDescriptor));1582}15831584_MTL_INLINE MTL::InstanceAccelerationStructureDescriptor* MTL::InstanceAccelerationStructureDescriptor::descriptor()1585{1586    return Object::sendMessage<MTL::InstanceAccelerationStructureDescriptor*>(_MTL_PRIVATE_CLS(MTLInstanceAccelerationStructureDescriptor), _MTL_PRIVATE_SEL(descriptor));1587}15881589_MTL_INLINE MTL::InstanceAccelerationStructureDescriptor* MTL::InstanceAccelerationStructureDescriptor::init()1590{1591    return NS::Object::init<MTL::InstanceAccelerationStructureDescriptor>();1592}15931594_MTL_INLINE NS::UInteger MTL::InstanceAccelerationStructureDescriptor::instanceCount() const1595{1596    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(instanceCount));1597}15981599_MTL_INLINE MTL::Buffer* MTL::InstanceAccelerationStructureDescriptor::instanceDescriptorBuffer() const1600{1601    return Object::sendMessage<MTL::Buffer*>(this, _MTL_PRIVATE_SEL(instanceDescriptorBuffer));1602}16031604_MTL_INLINE NS::UInteger MTL::InstanceAccelerationStructureDescriptor::instanceDescriptorBufferOffset() const1605{1606    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(instanceDescriptorBufferOffset));1607}16081609_MTL_INLINE NS::UInteger MTL::InstanceAccelerationStructureDescriptor::instanceDescriptorStride() const1610{1611    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(instanceDescriptorStride));1612}16131614_MTL_INLINE MTL::AccelerationStructureInstanceDescriptorType MTL::InstanceAccelerationStructureDescriptor::instanceDescriptorType() const1615{1616    return Object::sendMessage<MTL::AccelerationStructureInstanceDescriptorType>(this, _MTL_PRIVATE_SEL(instanceDescriptorType));1617}16181619_MTL_INLINE MTL::MatrixLayout MTL::InstanceAccelerationStructureDescriptor::instanceTransformationMatrixLayout() const1620{1621    return Object::sendMessage<MTL::MatrixLayout>(this, _MTL_PRIVATE_SEL(instanceTransformationMatrixLayout));1622}16231624_MTL_INLINE NS::Array* MTL::InstanceAccelerationStructureDescriptor::instancedAccelerationStructures() const1625{1626    return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(instancedAccelerationStructures));1627}16281629_MTL_INLINE MTL::Buffer* MTL::InstanceAccelerationStructureDescriptor::motionTransformBuffer() const1630{1631    return Object::sendMessage<MTL::Buffer*>(this, _MTL_PRIVATE_SEL(motionTransformBuffer));1632}16331634_MTL_INLINE NS::UInteger MTL::InstanceAccelerationStructureDescriptor::motionTransformBufferOffset() const1635{1636    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(motionTransformBufferOffset));1637}16381639_MTL_INLINE NS::UInteger MTL::InstanceAccelerationStructureDescriptor::motionTransformCount() const1640{1641    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(motionTransformCount));1642}16431644_MTL_INLINE NS::UInteger MTL::InstanceAccelerationStructureDescriptor::motionTransformStride() const1645{1646    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(motionTransformStride));1647}16481649_MTL_INLINE MTL::TransformType MTL::InstanceAccelerationStructureDescriptor::motionTransformType() const1650{1651    return Object::sendMessage<MTL::TransformType>(this, _MTL_PRIVATE_SEL(motionTransformType));1652}16531654_MTL_INLINE void MTL::InstanceAccelerationStructureDescriptor::setInstanceCount(NS::UInteger instanceCount)1655{1656    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setInstanceCount_), instanceCount);1657}16581659_MTL_INLINE void MTL::InstanceAccelerationStructureDescriptor::setInstanceDescriptorBuffer(const MTL::Buffer* instanceDescriptorBuffer)1660{1661    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setInstanceDescriptorBuffer_), instanceDescriptorBuffer);1662}16631664_MTL_INLINE void MTL::InstanceAccelerationStructureDescriptor::setInstanceDescriptorBufferOffset(NS::UInteger instanceDescriptorBufferOffset)1665{1666    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setInstanceDescriptorBufferOffset_), instanceDescriptorBufferOffset);1667}16681669_MTL_INLINE void MTL::InstanceAccelerationStructureDescriptor::setInstanceDescriptorStride(NS::UInteger instanceDescriptorStride)1670{1671    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setInstanceDescriptorStride_), instanceDescriptorStride);1672}16731674_MTL_INLINE void MTL::InstanceAccelerationStructureDescriptor::setInstanceDescriptorType(MTL::AccelerationStructureInstanceDescriptorType instanceDescriptorType)1675{1676    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setInstanceDescriptorType_), instanceDescriptorType);1677}16781679_MTL_INLINE void MTL::InstanceAccelerationStructureDescriptor::setInstanceTransformationMatrixLayout(MTL::MatrixLayout instanceTransformationMatrixLayout)1680{1681    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setInstanceTransformationMatrixLayout_), instanceTransformationMatrixLayout);1682}16831684_MTL_INLINE void MTL::InstanceAccelerationStructureDescriptor::setInstancedAccelerationStructures(const NS::Array* instancedAccelerationStructures)1685{1686    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setInstancedAccelerationStructures_), instancedAccelerationStructures);1687}16881689_MTL_INLINE void MTL::InstanceAccelerationStructureDescriptor::setMotionTransformBuffer(const MTL::Buffer* motionTransformBuffer)1690{1691    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMotionTransformBuffer_), motionTransformBuffer);1692}16931694_MTL_INLINE void MTL::InstanceAccelerationStructureDescriptor::setMotionTransformBufferOffset(NS::UInteger motionTransformBufferOffset)1695{1696    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMotionTransformBufferOffset_), motionTransformBufferOffset);1697}16981699_MTL_INLINE void MTL::InstanceAccelerationStructureDescriptor::setMotionTransformCount(NS::UInteger motionTransformCount)1700{1701    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMotionTransformCount_), motionTransformCount);1702}17031704_MTL_INLINE void MTL::InstanceAccelerationStructureDescriptor::setMotionTransformStride(NS::UInteger motionTransformStride)1705{1706    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMotionTransformStride_), motionTransformStride);1707}17081709_MTL_INLINE void MTL::InstanceAccelerationStructureDescriptor::setMotionTransformType(MTL::TransformType motionTransformType)1710{1711    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMotionTransformType_), motionTransformType);1712}17131714_MTL_INLINE MTL::IndirectInstanceAccelerationStructureDescriptor* MTL::IndirectInstanceAccelerationStructureDescriptor::alloc()1715{1716    return NS::Object::alloc<MTL::IndirectInstanceAccelerationStructureDescriptor>(_MTL_PRIVATE_CLS(MTLIndirectInstanceAccelerationStructureDescriptor));1717}17181719_MTL_INLINE MTL::IndirectInstanceAccelerationStructureDescriptor* MTL::IndirectInstanceAccelerationStructureDescriptor::descriptor()1720{1721    return Object::sendMessage<MTL::IndirectInstanceAccelerationStructureDescriptor*>(_MTL_PRIVATE_CLS(MTLIndirectInstanceAccelerationStructureDescriptor), _MTL_PRIVATE_SEL(descriptor));1722}17231724_MTL_INLINE MTL::IndirectInstanceAccelerationStructureDescriptor* MTL::IndirectInstanceAccelerationStructureDescriptor::init()1725{1726    return NS::Object::init<MTL::IndirectInstanceAccelerationStructureDescriptor>();1727}17281729_MTL_INLINE MTL::Buffer* MTL::IndirectInstanceAccelerationStructureDescriptor::instanceCountBuffer() const1730{1731    return Object::sendMessage<MTL::Buffer*>(this, _MTL_PRIVATE_SEL(instanceCountBuffer));1732}17331734_MTL_INLINE NS::UInteger MTL::IndirectInstanceAccelerationStructureDescriptor::instanceCountBufferOffset() const1735{1736    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(instanceCountBufferOffset));1737}17381739_MTL_INLINE MTL::Buffer* MTL::IndirectInstanceAccelerationStructureDescriptor::instanceDescriptorBuffer() const1740{1741    return Object::sendMessage<MTL::Buffer*>(this, _MTL_PRIVATE_SEL(instanceDescriptorBuffer));1742}17431744_MTL_INLINE NS::UInteger MTL::IndirectInstanceAccelerationStructureDescriptor::instanceDescriptorBufferOffset() const1745{1746    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(instanceDescriptorBufferOffset));1747}17481749_MTL_INLINE NS::UInteger MTL::IndirectInstanceAccelerationStructureDescriptor::instanceDescriptorStride() const1750{1751    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(instanceDescriptorStride));1752}17531754_MTL_INLINE MTL::AccelerationStructureInstanceDescriptorType MTL::IndirectInstanceAccelerationStructureDescriptor::instanceDescriptorType() const1755{1756    return Object::sendMessage<MTL::AccelerationStructureInstanceDescriptorType>(this, _MTL_PRIVATE_SEL(instanceDescriptorType));1757}17581759_MTL_INLINE MTL::MatrixLayout MTL::IndirectInstanceAccelerationStructureDescriptor::instanceTransformationMatrixLayout() const1760{1761    return Object::sendMessage<MTL::MatrixLayout>(this, _MTL_PRIVATE_SEL(instanceTransformationMatrixLayout));1762}17631764_MTL_INLINE NS::UInteger MTL::IndirectInstanceAccelerationStructureDescriptor::maxInstanceCount() const1765{1766    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(maxInstanceCount));1767}17681769_MTL_INLINE NS::UInteger MTL::IndirectInstanceAccelerationStructureDescriptor::maxMotionTransformCount() const1770{1771    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(maxMotionTransformCount));1772}17731774_MTL_INLINE MTL::Buffer* MTL::IndirectInstanceAccelerationStructureDescriptor::motionTransformBuffer() const1775{1776    return Object::sendMessage<MTL::Buffer*>(this, _MTL_PRIVATE_SEL(motionTransformBuffer));1777}17781779_MTL_INLINE NS::UInteger MTL::IndirectInstanceAccelerationStructureDescriptor::motionTransformBufferOffset() const1780{1781    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(motionTransformBufferOffset));1782}17831784_MTL_INLINE MTL::Buffer* MTL::IndirectInstanceAccelerationStructureDescriptor::motionTransformCountBuffer() const1785{1786    return Object::sendMessage<MTL::Buffer*>(this, _MTL_PRIVATE_SEL(motionTransformCountBuffer));1787}17881789_MTL_INLINE NS::UInteger MTL::IndirectInstanceAccelerationStructureDescriptor::motionTransformCountBufferOffset() const1790{1791    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(motionTransformCountBufferOffset));1792}17931794_MTL_INLINE NS::UInteger MTL::IndirectInstanceAccelerationStructureDescriptor::motionTransformStride() const1795{1796    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(motionTransformStride));1797}17981799_MTL_INLINE MTL::TransformType MTL::IndirectInstanceAccelerationStructureDescriptor::motionTransformType() const1800{1801    return Object::sendMessage<MTL::TransformType>(this, _MTL_PRIVATE_SEL(motionTransformType));1802}18031804_MTL_INLINE void MTL::IndirectInstanceAccelerationStructureDescriptor::setInstanceCountBuffer(const MTL::Buffer* instanceCountBuffer)1805{1806    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setInstanceCountBuffer_), instanceCountBuffer);1807}18081809_MTL_INLINE void MTL::IndirectInstanceAccelerationStructureDescriptor::setInstanceCountBufferOffset(NS::UInteger instanceCountBufferOffset)1810{1811    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setInstanceCountBufferOffset_), instanceCountBufferOffset);1812}18131814_MTL_INLINE void MTL::IndirectInstanceAccelerationStructureDescriptor::setInstanceDescriptorBuffer(const MTL::Buffer* instanceDescriptorBuffer)1815{1816    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setInstanceDescriptorBuffer_), instanceDescriptorBuffer);1817}18181819_MTL_INLINE void MTL::IndirectInstanceAccelerationStructureDescriptor::setInstanceDescriptorBufferOffset(NS::UInteger instanceDescriptorBufferOffset)1820{1821    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setInstanceDescriptorBufferOffset_), instanceDescriptorBufferOffset);1822}18231824_MTL_INLINE void MTL::IndirectInstanceAccelerationStructureDescriptor::setInstanceDescriptorStride(NS::UInteger instanceDescriptorStride)1825{1826    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setInstanceDescriptorStride_), instanceDescriptorStride);1827}18281829_MTL_INLINE void MTL::IndirectInstanceAccelerationStructureDescriptor::setInstanceDescriptorType(MTL::AccelerationStructureInstanceDescriptorType instanceDescriptorType)1830{1831    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setInstanceDescriptorType_), instanceDescriptorType);1832}18331834_MTL_INLINE void MTL::IndirectInstanceAccelerationStructureDescriptor::setInstanceTransformationMatrixLayout(MTL::MatrixLayout instanceTransformationMatrixLayout)1835{1836    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setInstanceTransformationMatrixLayout_), instanceTransformationMatrixLayout);1837}18381839_MTL_INLINE void MTL::IndirectInstanceAccelerationStructureDescriptor::setMaxInstanceCount(NS::UInteger maxInstanceCount)1840{1841    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMaxInstanceCount_), maxInstanceCount);1842}18431844_MTL_INLINE void MTL::IndirectInstanceAccelerationStructureDescriptor::setMaxMotionTransformCount(NS::UInteger maxMotionTransformCount)1845{1846    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMaxMotionTransformCount_), maxMotionTransformCount);1847}18481849_MTL_INLINE void MTL::IndirectInstanceAccelerationStructureDescriptor::setMotionTransformBuffer(const MTL::Buffer* motionTransformBuffer)1850{1851    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMotionTransformBuffer_), motionTransformBuffer);1852}18531854_MTL_INLINE void MTL::IndirectInstanceAccelerationStructureDescriptor::setMotionTransformBufferOffset(NS::UInteger motionTransformBufferOffset)1855{1856    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMotionTransformBufferOffset_), motionTransformBufferOffset);1857}18581859_MTL_INLINE void MTL::IndirectInstanceAccelerationStructureDescriptor::setMotionTransformCountBuffer(const MTL::Buffer* motionTransformCountBuffer)1860{1861    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMotionTransformCountBuffer_), motionTransformCountBuffer);1862}18631864_MTL_INLINE void MTL::IndirectInstanceAccelerationStructureDescriptor::setMotionTransformCountBufferOffset(NS::UInteger motionTransformCountBufferOffset)1865{1866    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMotionTransformCountBufferOffset_), motionTransformCountBufferOffset);1867}18681869_MTL_INLINE void MTL::IndirectInstanceAccelerationStructureDescriptor::setMotionTransformStride(NS::UInteger motionTransformStride)1870{1871    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMotionTransformStride_), motionTransformStride);1872}18731874_MTL_INLINE void MTL::IndirectInstanceAccelerationStructureDescriptor::setMotionTransformType(MTL::TransformType motionTransformType)1875{1876    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMotionTransformType_), motionTransformType);1877}18781879_MTL_INLINE MTL::ResourceID MTL::AccelerationStructure::gpuResourceID() const1880{1881    return Object::sendMessage<MTL::ResourceID>(this, _MTL_PRIVATE_SEL(gpuResourceID));1882}18831884_MTL_INLINE NS::UInteger MTL::AccelerationStructure::size() const1885{1886    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(size));1887}1888