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%
62.7 KB · 1,396 lines cpp
Raw Blame History
1//-------------------------------------------------------------------------------------------------------------------------------------------------------------2//3// Metal/MTL4AccelerationStructure.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 "MTLAccelerationStructure.hpp"25#include "MTLAccelerationStructureTypes.hpp"26#include "MTLArgument.hpp"27#include "MTLDefines.hpp"28#include "MTLHeaderBridge.hpp"29#include "MTLPrivate.hpp"30#include "MTLStageInputOutputDescriptor.hpp"3132namespace MTL433{34class AccelerationStructureBoundingBoxGeometryDescriptor;35class AccelerationStructureCurveGeometryDescriptor;36class AccelerationStructureDescriptor;37class AccelerationStructureGeometryDescriptor;38class AccelerationStructureMotionBoundingBoxGeometryDescriptor;39class AccelerationStructureMotionCurveGeometryDescriptor;40class AccelerationStructureMotionTriangleGeometryDescriptor;41class AccelerationStructureTriangleGeometryDescriptor;42class IndirectInstanceAccelerationStructureDescriptor;43class InstanceAccelerationStructureDescriptor;44class PrimitiveAccelerationStructureDescriptor;4546class AccelerationStructureDescriptor : public NS::Copying<AccelerationStructureDescriptor, MTL::AccelerationStructureDescriptor>47{48public:49    static AccelerationStructureDescriptor* alloc();5051    AccelerationStructureDescriptor*        init();52};53class AccelerationStructureGeometryDescriptor : public NS::Copying<AccelerationStructureGeometryDescriptor>54{55public:56    static AccelerationStructureGeometryDescriptor* alloc();5758    bool                                            allowDuplicateIntersectionFunctionInvocation() const;5960    AccelerationStructureGeometryDescriptor*        init();6162    NS::UInteger                                    intersectionFunctionTableOffset() const;6364    NS::String*                                     label() const;6566    bool                                            opaque() const;6768    BufferRange                                     primitiveDataBuffer() const;6970    NS::UInteger                                    primitiveDataElementSize() const;7172    NS::UInteger                                    primitiveDataStride() const;7374    void                                            setAllowDuplicateIntersectionFunctionInvocation(bool allowDuplicateIntersectionFunctionInvocation);7576    void                                            setIntersectionFunctionTableOffset(NS::UInteger intersectionFunctionTableOffset);7778    void                                            setLabel(const NS::String* label);7980    void                                            setOpaque(bool opaque);8182    void                                            setPrimitiveDataBuffer(const MTL4::BufferRange primitiveDataBuffer);8384    void                                            setPrimitiveDataElementSize(NS::UInteger primitiveDataElementSize);8586    void                                            setPrimitiveDataStride(NS::UInteger primitiveDataStride);87};88class PrimitiveAccelerationStructureDescriptor : public NS::Copying<PrimitiveAccelerationStructureDescriptor, AccelerationStructureDescriptor>89{90public:91    static PrimitiveAccelerationStructureDescriptor* alloc();9293    NS::Array*                                       geometryDescriptors() const;9495    PrimitiveAccelerationStructureDescriptor*        init();9697    MTL::MotionBorderMode                            motionEndBorderMode() const;9899    float                                            motionEndTime() const;100101    NS::UInteger                                     motionKeyframeCount() const;102103    MTL::MotionBorderMode                            motionStartBorderMode() const;104105    float                                            motionStartTime() const;106107    void                                             setGeometryDescriptors(const NS::Array* geometryDescriptors);108109    void                                             setMotionEndBorderMode(MTL::MotionBorderMode motionEndBorderMode);110111    void                                             setMotionEndTime(float motionEndTime);112113    void                                             setMotionKeyframeCount(NS::UInteger motionKeyframeCount);114115    void                                             setMotionStartBorderMode(MTL::MotionBorderMode motionStartBorderMode);116117    void                                             setMotionStartTime(float motionStartTime);118};119class AccelerationStructureTriangleGeometryDescriptor : public NS::Copying<AccelerationStructureTriangleGeometryDescriptor, AccelerationStructureGeometryDescriptor>120{121public:122    static AccelerationStructureTriangleGeometryDescriptor* alloc();123124    BufferRange                                             indexBuffer() const;125126    MTL::IndexType                                          indexType() const;127128    AccelerationStructureTriangleGeometryDescriptor*        init();129130    void                                                    setIndexBuffer(const MTL4::BufferRange indexBuffer);131132    void                                                    setIndexType(MTL::IndexType indexType);133134    void                                                    setTransformationMatrixBuffer(const MTL4::BufferRange transformationMatrixBuffer);135136    void                                                    setTransformationMatrixLayout(MTL::MatrixLayout transformationMatrixLayout);137138    void                                                    setTriangleCount(NS::UInteger triangleCount);139140    void                                                    setVertexBuffer(const MTL4::BufferRange vertexBuffer);141142    void                                                    setVertexFormat(MTL::AttributeFormat vertexFormat);143144    void                                                    setVertexStride(NS::UInteger vertexStride);145146    BufferRange                                             transformationMatrixBuffer() const;147148    MTL::MatrixLayout                                       transformationMatrixLayout() const;149150    NS::UInteger                                            triangleCount() const;151152    BufferRange                                             vertexBuffer() const;153154    MTL::AttributeFormat                                    vertexFormat() const;155156    NS::UInteger                                            vertexStride() const;157};158class AccelerationStructureBoundingBoxGeometryDescriptor : public NS::Copying<AccelerationStructureBoundingBoxGeometryDescriptor, AccelerationStructureGeometryDescriptor>159{160public:161    static AccelerationStructureBoundingBoxGeometryDescriptor* alloc();162163    BufferRange                                                boundingBoxBuffer() const;164165    NS::UInteger                                               boundingBoxCount() const;166167    NS::UInteger                                               boundingBoxStride() const;168169    AccelerationStructureBoundingBoxGeometryDescriptor*        init();170171    void                                                       setBoundingBoxBuffer(const MTL4::BufferRange boundingBoxBuffer);172173    void                                                       setBoundingBoxCount(NS::UInteger boundingBoxCount);174175    void                                                       setBoundingBoxStride(NS::UInteger boundingBoxStride);176};177class AccelerationStructureMotionTriangleGeometryDescriptor : public NS::Copying<AccelerationStructureMotionTriangleGeometryDescriptor, AccelerationStructureGeometryDescriptor>178{179public:180    static AccelerationStructureMotionTriangleGeometryDescriptor* alloc();181182    BufferRange                                                   indexBuffer() const;183184    MTL::IndexType                                                indexType() const;185186    AccelerationStructureMotionTriangleGeometryDescriptor*        init();187188    void                                                          setIndexBuffer(const MTL4::BufferRange indexBuffer);189190    void                                                          setIndexType(MTL::IndexType indexType);191192    void                                                          setTransformationMatrixBuffer(const MTL4::BufferRange transformationMatrixBuffer);193194    void                                                          setTransformationMatrixLayout(MTL::MatrixLayout transformationMatrixLayout);195196    void                                                          setTriangleCount(NS::UInteger triangleCount);197198    void                                                          setVertexBuffers(const MTL4::BufferRange vertexBuffers);199200    void                                                          setVertexFormat(MTL::AttributeFormat vertexFormat);201202    void                                                          setVertexStride(NS::UInteger vertexStride);203204    BufferRange                                                   transformationMatrixBuffer() const;205206    MTL::MatrixLayout                                             transformationMatrixLayout() const;207208    NS::UInteger                                                  triangleCount() const;209210    BufferRange                                                   vertexBuffers() const;211212    MTL::AttributeFormat                                          vertexFormat() const;213214    NS::UInteger                                                  vertexStride() const;215};216class AccelerationStructureMotionBoundingBoxGeometryDescriptor : public NS::Copying<AccelerationStructureMotionBoundingBoxGeometryDescriptor, AccelerationStructureGeometryDescriptor>217{218public:219    static AccelerationStructureMotionBoundingBoxGeometryDescriptor* alloc();220221    BufferRange                                                      boundingBoxBuffers() const;222223    NS::UInteger                                                     boundingBoxCount() const;224225    NS::UInteger                                                     boundingBoxStride() const;226227    AccelerationStructureMotionBoundingBoxGeometryDescriptor*        init();228229    void                                                             setBoundingBoxBuffers(const MTL4::BufferRange boundingBoxBuffers);230231    void                                                             setBoundingBoxCount(NS::UInteger boundingBoxCount);232233    void                                                             setBoundingBoxStride(NS::UInteger boundingBoxStride);234};235class AccelerationStructureCurveGeometryDescriptor : public NS::Copying<AccelerationStructureCurveGeometryDescriptor, AccelerationStructureGeometryDescriptor>236{237public:238    static AccelerationStructureCurveGeometryDescriptor* alloc();239240    BufferRange                                          controlPointBuffer() const;241242    NS::UInteger                                         controlPointCount() const;243244    MTL::AttributeFormat                                 controlPointFormat() const;245246    NS::UInteger                                         controlPointStride() const;247248    MTL::CurveBasis                                      curveBasis() const;249250    MTL::CurveEndCaps                                    curveEndCaps() const;251252    MTL::CurveType                                       curveType() const;253254    BufferRange                                          indexBuffer() const;255256    MTL::IndexType                                       indexType() const;257258    AccelerationStructureCurveGeometryDescriptor*        init();259260    BufferRange                                          radiusBuffer() const;261262    MTL::AttributeFormat                                 radiusFormat() const;263264    NS::UInteger                                         radiusStride() const;265266    NS::UInteger                                         segmentControlPointCount() const;267268    NS::UInteger                                         segmentCount() const;269270    void                                                 setControlPointBuffer(const MTL4::BufferRange controlPointBuffer);271272    void                                                 setControlPointCount(NS::UInteger controlPointCount);273274    void                                                 setControlPointFormat(MTL::AttributeFormat controlPointFormat);275276    void                                                 setControlPointStride(NS::UInteger controlPointStride);277278    void                                                 setCurveBasis(MTL::CurveBasis curveBasis);279280    void                                                 setCurveEndCaps(MTL::CurveEndCaps curveEndCaps);281282    void                                                 setCurveType(MTL::CurveType curveType);283284    void                                                 setIndexBuffer(const MTL4::BufferRange indexBuffer);285286    void                                                 setIndexType(MTL::IndexType indexType);287288    void                                                 setRadiusBuffer(const MTL4::BufferRange radiusBuffer);289290    void                                                 setRadiusFormat(MTL::AttributeFormat radiusFormat);291292    void                                                 setRadiusStride(NS::UInteger radiusStride);293294    void                                                 setSegmentControlPointCount(NS::UInteger segmentControlPointCount);295296    void                                                 setSegmentCount(NS::UInteger segmentCount);297};298class AccelerationStructureMotionCurveGeometryDescriptor : public NS::Copying<AccelerationStructureMotionCurveGeometryDescriptor, AccelerationStructureGeometryDescriptor>299{300public:301    static AccelerationStructureMotionCurveGeometryDescriptor* alloc();302303    BufferRange                                                controlPointBuffers() const;304305    NS::UInteger                                               controlPointCount() const;306307    MTL::AttributeFormat                                       controlPointFormat() const;308309    NS::UInteger                                               controlPointStride() const;310311    MTL::CurveBasis                                            curveBasis() const;312313    MTL::CurveEndCaps                                          curveEndCaps() const;314315    MTL::CurveType                                             curveType() const;316317    BufferRange                                                indexBuffer() const;318319    MTL::IndexType                                             indexType() const;320321    AccelerationStructureMotionCurveGeometryDescriptor*        init();322323    BufferRange                                                radiusBuffers() const;324325    MTL::AttributeFormat                                       radiusFormat() const;326327    NS::UInteger                                               radiusStride() const;328329    NS::UInteger                                               segmentControlPointCount() const;330331    NS::UInteger                                               segmentCount() const;332333    void                                                       setControlPointBuffers(const MTL4::BufferRange controlPointBuffers);334335    void                                                       setControlPointCount(NS::UInteger controlPointCount);336337    void                                                       setControlPointFormat(MTL::AttributeFormat controlPointFormat);338339    void                                                       setControlPointStride(NS::UInteger controlPointStride);340341    void                                                       setCurveBasis(MTL::CurveBasis curveBasis);342343    void                                                       setCurveEndCaps(MTL::CurveEndCaps curveEndCaps);344345    void                                                       setCurveType(MTL::CurveType curveType);346347    void                                                       setIndexBuffer(const MTL4::BufferRange indexBuffer);348349    void                                                       setIndexType(MTL::IndexType indexType);350351    void                                                       setRadiusBuffers(const MTL4::BufferRange radiusBuffers);352353    void                                                       setRadiusFormat(MTL::AttributeFormat radiusFormat);354355    void                                                       setRadiusStride(NS::UInteger radiusStride);356357    void                                                       setSegmentControlPointCount(NS::UInteger segmentControlPointCount);358359    void                                                       setSegmentCount(NS::UInteger segmentCount);360};361class InstanceAccelerationStructureDescriptor : public NS::Copying<InstanceAccelerationStructureDescriptor, AccelerationStructureDescriptor>362{363public:364    static InstanceAccelerationStructureDescriptor*  alloc();365366    InstanceAccelerationStructureDescriptor*         init();367368    NS::UInteger                                     instanceCount() const;369370    BufferRange                                      instanceDescriptorBuffer() const;371372    NS::UInteger                                     instanceDescriptorStride() const;373374    MTL::AccelerationStructureInstanceDescriptorType instanceDescriptorType() const;375376    MTL::MatrixLayout                                instanceTransformationMatrixLayout() const;377378    BufferRange                                      motionTransformBuffer() const;379380    NS::UInteger                                     motionTransformCount() const;381382    NS::UInteger                                     motionTransformStride() const;383384    MTL::TransformType                               motionTransformType() const;385386    void                                             setInstanceCount(NS::UInteger instanceCount);387388    void                                             setInstanceDescriptorBuffer(const MTL4::BufferRange instanceDescriptorBuffer);389390    void                                             setInstanceDescriptorStride(NS::UInteger instanceDescriptorStride);391392    void                                             setInstanceDescriptorType(MTL::AccelerationStructureInstanceDescriptorType instanceDescriptorType);393394    void                                             setInstanceTransformationMatrixLayout(MTL::MatrixLayout instanceTransformationMatrixLayout);395396    void                                             setMotionTransformBuffer(const MTL4::BufferRange motionTransformBuffer);397398    void                                             setMotionTransformCount(NS::UInteger motionTransformCount);399400    void                                             setMotionTransformStride(NS::UInteger motionTransformStride);401402    void                                             setMotionTransformType(MTL::TransformType motionTransformType);403};404class IndirectInstanceAccelerationStructureDescriptor : public NS::Copying<IndirectInstanceAccelerationStructureDescriptor, AccelerationStructureDescriptor>405{406public:407    static IndirectInstanceAccelerationStructureDescriptor* alloc();408409    IndirectInstanceAccelerationStructureDescriptor*        init();410411    BufferRange                                             instanceCountBuffer() const;412413    BufferRange                                             instanceDescriptorBuffer() const;414415    NS::UInteger                                            instanceDescriptorStride() const;416417    MTL::AccelerationStructureInstanceDescriptorType        instanceDescriptorType() const;418419    MTL::MatrixLayout                                       instanceTransformationMatrixLayout() const;420421    NS::UInteger                                            maxInstanceCount() const;422423    NS::UInteger                                            maxMotionTransformCount() const;424425    BufferRange                                             motionTransformBuffer() const;426427    BufferRange                                             motionTransformCountBuffer() const;428429    NS::UInteger                                            motionTransformStride() const;430431    MTL::TransformType                                      motionTransformType() const;432433    void                                                    setInstanceCountBuffer(const MTL4::BufferRange instanceCountBuffer);434435    void                                                    setInstanceDescriptorBuffer(const MTL4::BufferRange instanceDescriptorBuffer);436437    void                                                    setInstanceDescriptorStride(NS::UInteger instanceDescriptorStride);438439    void                                                    setInstanceDescriptorType(MTL::AccelerationStructureInstanceDescriptorType instanceDescriptorType);440441    void                                                    setInstanceTransformationMatrixLayout(MTL::MatrixLayout instanceTransformationMatrixLayout);442443    void                                                    setMaxInstanceCount(NS::UInteger maxInstanceCount);444445    void                                                    setMaxMotionTransformCount(NS::UInteger maxMotionTransformCount);446447    void                                                    setMotionTransformBuffer(const MTL4::BufferRange motionTransformBuffer);448449    void                                                    setMotionTransformCountBuffer(const MTL4::BufferRange motionTransformCountBuffer);450451    void                                                    setMotionTransformStride(NS::UInteger motionTransformStride);452453    void                                                    setMotionTransformType(MTL::TransformType motionTransformType);454};455456}457_MTL_INLINE MTL4::AccelerationStructureDescriptor* MTL4::AccelerationStructureDescriptor::alloc()458{459    return NS::Object::alloc<MTL4::AccelerationStructureDescriptor>(_MTL_PRIVATE_CLS(MTL4AccelerationStructureDescriptor));460}461462_MTL_INLINE MTL4::AccelerationStructureDescriptor* MTL4::AccelerationStructureDescriptor::init()463{464    return NS::Object::init<MTL4::AccelerationStructureDescriptor>();465}466467_MTL_INLINE MTL4::AccelerationStructureGeometryDescriptor* MTL4::AccelerationStructureGeometryDescriptor::alloc()468{469    return NS::Object::alloc<MTL4::AccelerationStructureGeometryDescriptor>(_MTL_PRIVATE_CLS(MTL4AccelerationStructureGeometryDescriptor));470}471472_MTL_INLINE bool MTL4::AccelerationStructureGeometryDescriptor::allowDuplicateIntersectionFunctionInvocation() const473{474    return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(allowDuplicateIntersectionFunctionInvocation));475}476477_MTL_INLINE MTL4::AccelerationStructureGeometryDescriptor* MTL4::AccelerationStructureGeometryDescriptor::init()478{479    return NS::Object::init<MTL4::AccelerationStructureGeometryDescriptor>();480}481482_MTL_INLINE NS::UInteger MTL4::AccelerationStructureGeometryDescriptor::intersectionFunctionTableOffset() const483{484    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(intersectionFunctionTableOffset));485}486487_MTL_INLINE NS::String* MTL4::AccelerationStructureGeometryDescriptor::label() const488{489    return Object::sendMessage<NS::String*>(this, _MTL_PRIVATE_SEL(label));490}491492_MTL_INLINE bool MTL4::AccelerationStructureGeometryDescriptor::opaque() const493{494    return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(opaque));495}496497_MTL_INLINE MTL4::BufferRange MTL4::AccelerationStructureGeometryDescriptor::primitiveDataBuffer() const498{499    return Object::sendMessage<MTL4::BufferRange>(this, _MTL_PRIVATE_SEL(primitiveDataBuffer));500}501502_MTL_INLINE NS::UInteger MTL4::AccelerationStructureGeometryDescriptor::primitiveDataElementSize() const503{504    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(primitiveDataElementSize));505}506507_MTL_INLINE NS::UInteger MTL4::AccelerationStructureGeometryDescriptor::primitiveDataStride() const508{509    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(primitiveDataStride));510}511512_MTL_INLINE void MTL4::AccelerationStructureGeometryDescriptor::setAllowDuplicateIntersectionFunctionInvocation(bool allowDuplicateIntersectionFunctionInvocation)513{514    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setAllowDuplicateIntersectionFunctionInvocation_), allowDuplicateIntersectionFunctionInvocation);515}516517_MTL_INLINE void MTL4::AccelerationStructureGeometryDescriptor::setIntersectionFunctionTableOffset(NS::UInteger intersectionFunctionTableOffset)518{519    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setIntersectionFunctionTableOffset_), intersectionFunctionTableOffset);520}521522_MTL_INLINE void MTL4::AccelerationStructureGeometryDescriptor::setLabel(const NS::String* label)523{524    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setLabel_), label);525}526527_MTL_INLINE void MTL4::AccelerationStructureGeometryDescriptor::setOpaque(bool opaque)528{529    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setOpaque_), opaque);530}531532_MTL_INLINE void MTL4::AccelerationStructureGeometryDescriptor::setPrimitiveDataBuffer(const MTL4::BufferRange primitiveDataBuffer)533{534    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setPrimitiveDataBuffer_), primitiveDataBuffer);535}536537_MTL_INLINE void MTL4::AccelerationStructureGeometryDescriptor::setPrimitiveDataElementSize(NS::UInteger primitiveDataElementSize)538{539    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setPrimitiveDataElementSize_), primitiveDataElementSize);540}541542_MTL_INLINE void MTL4::AccelerationStructureGeometryDescriptor::setPrimitiveDataStride(NS::UInteger primitiveDataStride)543{544    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setPrimitiveDataStride_), primitiveDataStride);545}546547_MTL_INLINE MTL4::PrimitiveAccelerationStructureDescriptor* MTL4::PrimitiveAccelerationStructureDescriptor::alloc()548{549    return NS::Object::alloc<MTL4::PrimitiveAccelerationStructureDescriptor>(_MTL_PRIVATE_CLS(MTL4PrimitiveAccelerationStructureDescriptor));550}551552_MTL_INLINE NS::Array* MTL4::PrimitiveAccelerationStructureDescriptor::geometryDescriptors() const553{554    return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(geometryDescriptors));555}556557_MTL_INLINE MTL4::PrimitiveAccelerationStructureDescriptor* MTL4::PrimitiveAccelerationStructureDescriptor::init()558{559    return NS::Object::init<MTL4::PrimitiveAccelerationStructureDescriptor>();560}561562_MTL_INLINE MTL::MotionBorderMode MTL4::PrimitiveAccelerationStructureDescriptor::motionEndBorderMode() const563{564    return Object::sendMessage<MTL::MotionBorderMode>(this, _MTL_PRIVATE_SEL(motionEndBorderMode));565}566567_MTL_INLINE float MTL4::PrimitiveAccelerationStructureDescriptor::motionEndTime() const568{569    return Object::sendMessage<float>(this, _MTL_PRIVATE_SEL(motionEndTime));570}571572_MTL_INLINE NS::UInteger MTL4::PrimitiveAccelerationStructureDescriptor::motionKeyframeCount() const573{574    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(motionKeyframeCount));575}576577_MTL_INLINE MTL::MotionBorderMode MTL4::PrimitiveAccelerationStructureDescriptor::motionStartBorderMode() const578{579    return Object::sendMessage<MTL::MotionBorderMode>(this, _MTL_PRIVATE_SEL(motionStartBorderMode));580}581582_MTL_INLINE float MTL4::PrimitiveAccelerationStructureDescriptor::motionStartTime() const583{584    return Object::sendMessage<float>(this, _MTL_PRIVATE_SEL(motionStartTime));585}586587_MTL_INLINE void MTL4::PrimitiveAccelerationStructureDescriptor::setGeometryDescriptors(const NS::Array* geometryDescriptors)588{589    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setGeometryDescriptors_), geometryDescriptors);590}591592_MTL_INLINE void MTL4::PrimitiveAccelerationStructureDescriptor::setMotionEndBorderMode(MTL::MotionBorderMode motionEndBorderMode)593{594    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMotionEndBorderMode_), motionEndBorderMode);595}596597_MTL_INLINE void MTL4::PrimitiveAccelerationStructureDescriptor::setMotionEndTime(float motionEndTime)598{599    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMotionEndTime_), motionEndTime);600}601602_MTL_INLINE void MTL4::PrimitiveAccelerationStructureDescriptor::setMotionKeyframeCount(NS::UInteger motionKeyframeCount)603{604    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMotionKeyframeCount_), motionKeyframeCount);605}606607_MTL_INLINE void MTL4::PrimitiveAccelerationStructureDescriptor::setMotionStartBorderMode(MTL::MotionBorderMode motionStartBorderMode)608{609    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMotionStartBorderMode_), motionStartBorderMode);610}611612_MTL_INLINE void MTL4::PrimitiveAccelerationStructureDescriptor::setMotionStartTime(float motionStartTime)613{614    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMotionStartTime_), motionStartTime);615}616617_MTL_INLINE MTL4::AccelerationStructureTriangleGeometryDescriptor* MTL4::AccelerationStructureTriangleGeometryDescriptor::alloc()618{619    return NS::Object::alloc<MTL4::AccelerationStructureTriangleGeometryDescriptor>(_MTL_PRIVATE_CLS(MTL4AccelerationStructureTriangleGeometryDescriptor));620}621622_MTL_INLINE MTL4::BufferRange MTL4::AccelerationStructureTriangleGeometryDescriptor::indexBuffer() const623{624    return Object::sendMessage<MTL4::BufferRange>(this, _MTL_PRIVATE_SEL(indexBuffer));625}626627_MTL_INLINE MTL::IndexType MTL4::AccelerationStructureTriangleGeometryDescriptor::indexType() const628{629    return Object::sendMessage<MTL::IndexType>(this, _MTL_PRIVATE_SEL(indexType));630}631632_MTL_INLINE MTL4::AccelerationStructureTriangleGeometryDescriptor* MTL4::AccelerationStructureTriangleGeometryDescriptor::init()633{634    return NS::Object::init<MTL4::AccelerationStructureTriangleGeometryDescriptor>();635}636637_MTL_INLINE void MTL4::AccelerationStructureTriangleGeometryDescriptor::setIndexBuffer(const MTL4::BufferRange indexBuffer)638{639    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setIndexBuffer_), indexBuffer);640}641642_MTL_INLINE void MTL4::AccelerationStructureTriangleGeometryDescriptor::setIndexType(MTL::IndexType indexType)643{644    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setIndexType_), indexType);645}646647_MTL_INLINE void MTL4::AccelerationStructureTriangleGeometryDescriptor::setTransformationMatrixBuffer(const MTL4::BufferRange transformationMatrixBuffer)648{649    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setTransformationMatrixBuffer_), transformationMatrixBuffer);650}651652_MTL_INLINE void MTL4::AccelerationStructureTriangleGeometryDescriptor::setTransformationMatrixLayout(MTL::MatrixLayout transformationMatrixLayout)653{654    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setTransformationMatrixLayout_), transformationMatrixLayout);655}656657_MTL_INLINE void MTL4::AccelerationStructureTriangleGeometryDescriptor::setTriangleCount(NS::UInteger triangleCount)658{659    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setTriangleCount_), triangleCount);660}661662_MTL_INLINE void MTL4::AccelerationStructureTriangleGeometryDescriptor::setVertexBuffer(const MTL4::BufferRange vertexBuffer)663{664    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setVertexBuffer_), vertexBuffer);665}666667_MTL_INLINE void MTL4::AccelerationStructureTriangleGeometryDescriptor::setVertexFormat(MTL::AttributeFormat vertexFormat)668{669    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setVertexFormat_), vertexFormat);670}671672_MTL_INLINE void MTL4::AccelerationStructureTriangleGeometryDescriptor::setVertexStride(NS::UInteger vertexStride)673{674    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setVertexStride_), vertexStride);675}676677_MTL_INLINE MTL4::BufferRange MTL4::AccelerationStructureTriangleGeometryDescriptor::transformationMatrixBuffer() const678{679    return Object::sendMessage<MTL4::BufferRange>(this, _MTL_PRIVATE_SEL(transformationMatrixBuffer));680}681682_MTL_INLINE MTL::MatrixLayout MTL4::AccelerationStructureTriangleGeometryDescriptor::transformationMatrixLayout() const683{684    return Object::sendMessage<MTL::MatrixLayout>(this, _MTL_PRIVATE_SEL(transformationMatrixLayout));685}686687_MTL_INLINE NS::UInteger MTL4::AccelerationStructureTriangleGeometryDescriptor::triangleCount() const688{689    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(triangleCount));690}691692_MTL_INLINE MTL4::BufferRange MTL4::AccelerationStructureTriangleGeometryDescriptor::vertexBuffer() const693{694    return Object::sendMessage<MTL4::BufferRange>(this, _MTL_PRIVATE_SEL(vertexBuffer));695}696697_MTL_INLINE MTL::AttributeFormat MTL4::AccelerationStructureTriangleGeometryDescriptor::vertexFormat() const698{699    return Object::sendMessage<MTL::AttributeFormat>(this, _MTL_PRIVATE_SEL(vertexFormat));700}701702_MTL_INLINE NS::UInteger MTL4::AccelerationStructureTriangleGeometryDescriptor::vertexStride() const703{704    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(vertexStride));705}706707_MTL_INLINE MTL4::AccelerationStructureBoundingBoxGeometryDescriptor* MTL4::AccelerationStructureBoundingBoxGeometryDescriptor::alloc()708{709    return NS::Object::alloc<MTL4::AccelerationStructureBoundingBoxGeometryDescriptor>(_MTL_PRIVATE_CLS(MTL4AccelerationStructureBoundingBoxGeometryDescriptor));710}711712_MTL_INLINE MTL4::BufferRange MTL4::AccelerationStructureBoundingBoxGeometryDescriptor::boundingBoxBuffer() const713{714    return Object::sendMessage<MTL4::BufferRange>(this, _MTL_PRIVATE_SEL(boundingBoxBuffer));715}716717_MTL_INLINE NS::UInteger MTL4::AccelerationStructureBoundingBoxGeometryDescriptor::boundingBoxCount() const718{719    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(boundingBoxCount));720}721722_MTL_INLINE NS::UInteger MTL4::AccelerationStructureBoundingBoxGeometryDescriptor::boundingBoxStride() const723{724    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(boundingBoxStride));725}726727_MTL_INLINE MTL4::AccelerationStructureBoundingBoxGeometryDescriptor* MTL4::AccelerationStructureBoundingBoxGeometryDescriptor::init()728{729    return NS::Object::init<MTL4::AccelerationStructureBoundingBoxGeometryDescriptor>();730}731732_MTL_INLINE void MTL4::AccelerationStructureBoundingBoxGeometryDescriptor::setBoundingBoxBuffer(const MTL4::BufferRange boundingBoxBuffer)733{734    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setBoundingBoxBuffer_), boundingBoxBuffer);735}736737_MTL_INLINE void MTL4::AccelerationStructureBoundingBoxGeometryDescriptor::setBoundingBoxCount(NS::UInteger boundingBoxCount)738{739    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setBoundingBoxCount_), boundingBoxCount);740}741742_MTL_INLINE void MTL4::AccelerationStructureBoundingBoxGeometryDescriptor::setBoundingBoxStride(NS::UInteger boundingBoxStride)743{744    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setBoundingBoxStride_), boundingBoxStride);745}746747_MTL_INLINE MTL4::AccelerationStructureMotionTriangleGeometryDescriptor* MTL4::AccelerationStructureMotionTriangleGeometryDescriptor::alloc()748{749    return NS::Object::alloc<MTL4::AccelerationStructureMotionTriangleGeometryDescriptor>(_MTL_PRIVATE_CLS(MTL4AccelerationStructureMotionTriangleGeometryDescriptor));750}751752_MTL_INLINE MTL4::BufferRange MTL4::AccelerationStructureMotionTriangleGeometryDescriptor::indexBuffer() const753{754    return Object::sendMessage<MTL4::BufferRange>(this, _MTL_PRIVATE_SEL(indexBuffer));755}756757_MTL_INLINE MTL::IndexType MTL4::AccelerationStructureMotionTriangleGeometryDescriptor::indexType() const758{759    return Object::sendMessage<MTL::IndexType>(this, _MTL_PRIVATE_SEL(indexType));760}761762_MTL_INLINE MTL4::AccelerationStructureMotionTriangleGeometryDescriptor* MTL4::AccelerationStructureMotionTriangleGeometryDescriptor::init()763{764    return NS::Object::init<MTL4::AccelerationStructureMotionTriangleGeometryDescriptor>();765}766767_MTL_INLINE void MTL4::AccelerationStructureMotionTriangleGeometryDescriptor::setIndexBuffer(const MTL4::BufferRange indexBuffer)768{769    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setIndexBuffer_), indexBuffer);770}771772_MTL_INLINE void MTL4::AccelerationStructureMotionTriangleGeometryDescriptor::setIndexType(MTL::IndexType indexType)773{774    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setIndexType_), indexType);775}776777_MTL_INLINE void MTL4::AccelerationStructureMotionTriangleGeometryDescriptor::setTransformationMatrixBuffer(const MTL4::BufferRange transformationMatrixBuffer)778{779    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setTransformationMatrixBuffer_), transformationMatrixBuffer);780}781782_MTL_INLINE void MTL4::AccelerationStructureMotionTriangleGeometryDescriptor::setTransformationMatrixLayout(MTL::MatrixLayout transformationMatrixLayout)783{784    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setTransformationMatrixLayout_), transformationMatrixLayout);785}786787_MTL_INLINE void MTL4::AccelerationStructureMotionTriangleGeometryDescriptor::setTriangleCount(NS::UInteger triangleCount)788{789    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setTriangleCount_), triangleCount);790}791792_MTL_INLINE void MTL4::AccelerationStructureMotionTriangleGeometryDescriptor::setVertexBuffers(const MTL4::BufferRange vertexBuffers)793{794    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setVertexBuffers_), vertexBuffers);795}796797_MTL_INLINE void MTL4::AccelerationStructureMotionTriangleGeometryDescriptor::setVertexFormat(MTL::AttributeFormat vertexFormat)798{799    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setVertexFormat_), vertexFormat);800}801802_MTL_INLINE void MTL4::AccelerationStructureMotionTriangleGeometryDescriptor::setVertexStride(NS::UInteger vertexStride)803{804    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setVertexStride_), vertexStride);805}806807_MTL_INLINE MTL4::BufferRange MTL4::AccelerationStructureMotionTriangleGeometryDescriptor::transformationMatrixBuffer() const808{809    return Object::sendMessage<MTL4::BufferRange>(this, _MTL_PRIVATE_SEL(transformationMatrixBuffer));810}811812_MTL_INLINE MTL::MatrixLayout MTL4::AccelerationStructureMotionTriangleGeometryDescriptor::transformationMatrixLayout() const813{814    return Object::sendMessage<MTL::MatrixLayout>(this, _MTL_PRIVATE_SEL(transformationMatrixLayout));815}816817_MTL_INLINE NS::UInteger MTL4::AccelerationStructureMotionTriangleGeometryDescriptor::triangleCount() const818{819    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(triangleCount));820}821822_MTL_INLINE MTL4::BufferRange MTL4::AccelerationStructureMotionTriangleGeometryDescriptor::vertexBuffers() const823{824    return Object::sendMessage<MTL4::BufferRange>(this, _MTL_PRIVATE_SEL(vertexBuffers));825}826827_MTL_INLINE MTL::AttributeFormat MTL4::AccelerationStructureMotionTriangleGeometryDescriptor::vertexFormat() const828{829    return Object::sendMessage<MTL::AttributeFormat>(this, _MTL_PRIVATE_SEL(vertexFormat));830}831832_MTL_INLINE NS::UInteger MTL4::AccelerationStructureMotionTriangleGeometryDescriptor::vertexStride() const833{834    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(vertexStride));835}836837_MTL_INLINE MTL4::AccelerationStructureMotionBoundingBoxGeometryDescriptor* MTL4::AccelerationStructureMotionBoundingBoxGeometryDescriptor::alloc()838{839    return NS::Object::alloc<MTL4::AccelerationStructureMotionBoundingBoxGeometryDescriptor>(_MTL_PRIVATE_CLS(MTL4AccelerationStructureMotionBoundingBoxGeometryDescriptor));840}841842_MTL_INLINE MTL4::BufferRange MTL4::AccelerationStructureMotionBoundingBoxGeometryDescriptor::boundingBoxBuffers() const843{844    return Object::sendMessage<MTL4::BufferRange>(this, _MTL_PRIVATE_SEL(boundingBoxBuffers));845}846847_MTL_INLINE NS::UInteger MTL4::AccelerationStructureMotionBoundingBoxGeometryDescriptor::boundingBoxCount() const848{849    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(boundingBoxCount));850}851852_MTL_INLINE NS::UInteger MTL4::AccelerationStructureMotionBoundingBoxGeometryDescriptor::boundingBoxStride() const853{854    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(boundingBoxStride));855}856857_MTL_INLINE MTL4::AccelerationStructureMotionBoundingBoxGeometryDescriptor* MTL4::AccelerationStructureMotionBoundingBoxGeometryDescriptor::init()858{859    return NS::Object::init<MTL4::AccelerationStructureMotionBoundingBoxGeometryDescriptor>();860}861862_MTL_INLINE void MTL4::AccelerationStructureMotionBoundingBoxGeometryDescriptor::setBoundingBoxBuffers(const MTL4::BufferRange boundingBoxBuffers)863{864    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setBoundingBoxBuffers_), boundingBoxBuffers);865}866867_MTL_INLINE void MTL4::AccelerationStructureMotionBoundingBoxGeometryDescriptor::setBoundingBoxCount(NS::UInteger boundingBoxCount)868{869    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setBoundingBoxCount_), boundingBoxCount);870}871872_MTL_INLINE void MTL4::AccelerationStructureMotionBoundingBoxGeometryDescriptor::setBoundingBoxStride(NS::UInteger boundingBoxStride)873{874    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setBoundingBoxStride_), boundingBoxStride);875}876877_MTL_INLINE MTL4::AccelerationStructureCurveGeometryDescriptor* MTL4::AccelerationStructureCurveGeometryDescriptor::alloc()878{879    return NS::Object::alloc<MTL4::AccelerationStructureCurveGeometryDescriptor>(_MTL_PRIVATE_CLS(MTL4AccelerationStructureCurveGeometryDescriptor));880}881882_MTL_INLINE MTL4::BufferRange MTL4::AccelerationStructureCurveGeometryDescriptor::controlPointBuffer() const883{884    return Object::sendMessage<MTL4::BufferRange>(this, _MTL_PRIVATE_SEL(controlPointBuffer));885}886887_MTL_INLINE NS::UInteger MTL4::AccelerationStructureCurveGeometryDescriptor::controlPointCount() const888{889    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(controlPointCount));890}891892_MTL_INLINE MTL::AttributeFormat MTL4::AccelerationStructureCurveGeometryDescriptor::controlPointFormat() const893{894    return Object::sendMessage<MTL::AttributeFormat>(this, _MTL_PRIVATE_SEL(controlPointFormat));895}896897_MTL_INLINE NS::UInteger MTL4::AccelerationStructureCurveGeometryDescriptor::controlPointStride() const898{899    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(controlPointStride));900}901902_MTL_INLINE MTL::CurveBasis MTL4::AccelerationStructureCurveGeometryDescriptor::curveBasis() const903{904    return Object::sendMessage<MTL::CurveBasis>(this, _MTL_PRIVATE_SEL(curveBasis));905}906907_MTL_INLINE MTL::CurveEndCaps MTL4::AccelerationStructureCurveGeometryDescriptor::curveEndCaps() const908{909    return Object::sendMessage<MTL::CurveEndCaps>(this, _MTL_PRIVATE_SEL(curveEndCaps));910}911912_MTL_INLINE MTL::CurveType MTL4::AccelerationStructureCurveGeometryDescriptor::curveType() const913{914    return Object::sendMessage<MTL::CurveType>(this, _MTL_PRIVATE_SEL(curveType));915}916917_MTL_INLINE MTL4::BufferRange MTL4::AccelerationStructureCurveGeometryDescriptor::indexBuffer() const918{919    return Object::sendMessage<MTL4::BufferRange>(this, _MTL_PRIVATE_SEL(indexBuffer));920}921922_MTL_INLINE MTL::IndexType MTL4::AccelerationStructureCurveGeometryDescriptor::indexType() const923{924    return Object::sendMessage<MTL::IndexType>(this, _MTL_PRIVATE_SEL(indexType));925}926927_MTL_INLINE MTL4::AccelerationStructureCurveGeometryDescriptor* MTL4::AccelerationStructureCurveGeometryDescriptor::init()928{929    return NS::Object::init<MTL4::AccelerationStructureCurveGeometryDescriptor>();930}931932_MTL_INLINE MTL4::BufferRange MTL4::AccelerationStructureCurveGeometryDescriptor::radiusBuffer() const933{934    return Object::sendMessage<MTL4::BufferRange>(this, _MTL_PRIVATE_SEL(radiusBuffer));935}936937_MTL_INLINE MTL::AttributeFormat MTL4::AccelerationStructureCurveGeometryDescriptor::radiusFormat() const938{939    return Object::sendMessage<MTL::AttributeFormat>(this, _MTL_PRIVATE_SEL(radiusFormat));940}941942_MTL_INLINE NS::UInteger MTL4::AccelerationStructureCurveGeometryDescriptor::radiusStride() const943{944    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(radiusStride));945}946947_MTL_INLINE NS::UInteger MTL4::AccelerationStructureCurveGeometryDescriptor::segmentControlPointCount() const948{949    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(segmentControlPointCount));950}951952_MTL_INLINE NS::UInteger MTL4::AccelerationStructureCurveGeometryDescriptor::segmentCount() const953{954    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(segmentCount));955}956957_MTL_INLINE void MTL4::AccelerationStructureCurveGeometryDescriptor::setControlPointBuffer(const MTL4::BufferRange controlPointBuffer)958{959    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setControlPointBuffer_), controlPointBuffer);960}961962_MTL_INLINE void MTL4::AccelerationStructureCurveGeometryDescriptor::setControlPointCount(NS::UInteger controlPointCount)963{964    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setControlPointCount_), controlPointCount);965}966967_MTL_INLINE void MTL4::AccelerationStructureCurveGeometryDescriptor::setControlPointFormat(MTL::AttributeFormat controlPointFormat)968{969    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setControlPointFormat_), controlPointFormat);970}971972_MTL_INLINE void MTL4::AccelerationStructureCurveGeometryDescriptor::setControlPointStride(NS::UInteger controlPointStride)973{974    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setControlPointStride_), controlPointStride);975}976977_MTL_INLINE void MTL4::AccelerationStructureCurveGeometryDescriptor::setCurveBasis(MTL::CurveBasis curveBasis)978{979    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setCurveBasis_), curveBasis);980}981982_MTL_INLINE void MTL4::AccelerationStructureCurveGeometryDescriptor::setCurveEndCaps(MTL::CurveEndCaps curveEndCaps)983{984    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setCurveEndCaps_), curveEndCaps);985}986987_MTL_INLINE void MTL4::AccelerationStructureCurveGeometryDescriptor::setCurveType(MTL::CurveType curveType)988{989    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setCurveType_), curveType);990}991992_MTL_INLINE void MTL4::AccelerationStructureCurveGeometryDescriptor::setIndexBuffer(const MTL4::BufferRange indexBuffer)993{994    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setIndexBuffer_), indexBuffer);995}996997_MTL_INLINE void MTL4::AccelerationStructureCurveGeometryDescriptor::setIndexType(MTL::IndexType indexType)998{999    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setIndexType_), indexType);1000}10011002_MTL_INLINE void MTL4::AccelerationStructureCurveGeometryDescriptor::setRadiusBuffer(const MTL4::BufferRange radiusBuffer)1003{1004    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setRadiusBuffer_), radiusBuffer);1005}10061007_MTL_INLINE void MTL4::AccelerationStructureCurveGeometryDescriptor::setRadiusFormat(MTL::AttributeFormat radiusFormat)1008{1009    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setRadiusFormat_), radiusFormat);1010}10111012_MTL_INLINE void MTL4::AccelerationStructureCurveGeometryDescriptor::setRadiusStride(NS::UInteger radiusStride)1013{1014    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setRadiusStride_), radiusStride);1015}10161017_MTL_INLINE void MTL4::AccelerationStructureCurveGeometryDescriptor::setSegmentControlPointCount(NS::UInteger segmentControlPointCount)1018{1019    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setSegmentControlPointCount_), segmentControlPointCount);1020}10211022_MTL_INLINE void MTL4::AccelerationStructureCurveGeometryDescriptor::setSegmentCount(NS::UInteger segmentCount)1023{1024    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setSegmentCount_), segmentCount);1025}10261027_MTL_INLINE MTL4::AccelerationStructureMotionCurveGeometryDescriptor* MTL4::AccelerationStructureMotionCurveGeometryDescriptor::alloc()1028{1029    return NS::Object::alloc<MTL4::AccelerationStructureMotionCurveGeometryDescriptor>(_MTL_PRIVATE_CLS(MTL4AccelerationStructureMotionCurveGeometryDescriptor));1030}10311032_MTL_INLINE MTL4::BufferRange MTL4::AccelerationStructureMotionCurveGeometryDescriptor::controlPointBuffers() const1033{1034    return Object::sendMessage<MTL4::BufferRange>(this, _MTL_PRIVATE_SEL(controlPointBuffers));1035}10361037_MTL_INLINE NS::UInteger MTL4::AccelerationStructureMotionCurveGeometryDescriptor::controlPointCount() const1038{1039    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(controlPointCount));1040}10411042_MTL_INLINE MTL::AttributeFormat MTL4::AccelerationStructureMotionCurveGeometryDescriptor::controlPointFormat() const1043{1044    return Object::sendMessage<MTL::AttributeFormat>(this, _MTL_PRIVATE_SEL(controlPointFormat));1045}10461047_MTL_INLINE NS::UInteger MTL4::AccelerationStructureMotionCurveGeometryDescriptor::controlPointStride() const1048{1049    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(controlPointStride));1050}10511052_MTL_INLINE MTL::CurveBasis MTL4::AccelerationStructureMotionCurveGeometryDescriptor::curveBasis() const1053{1054    return Object::sendMessage<MTL::CurveBasis>(this, _MTL_PRIVATE_SEL(curveBasis));1055}10561057_MTL_INLINE MTL::CurveEndCaps MTL4::AccelerationStructureMotionCurveGeometryDescriptor::curveEndCaps() const1058{1059    return Object::sendMessage<MTL::CurveEndCaps>(this, _MTL_PRIVATE_SEL(curveEndCaps));1060}10611062_MTL_INLINE MTL::CurveType MTL4::AccelerationStructureMotionCurveGeometryDescriptor::curveType() const1063{1064    return Object::sendMessage<MTL::CurveType>(this, _MTL_PRIVATE_SEL(curveType));1065}10661067_MTL_INLINE MTL4::BufferRange MTL4::AccelerationStructureMotionCurveGeometryDescriptor::indexBuffer() const1068{1069    return Object::sendMessage<MTL4::BufferRange>(this, _MTL_PRIVATE_SEL(indexBuffer));1070}10711072_MTL_INLINE MTL::IndexType MTL4::AccelerationStructureMotionCurveGeometryDescriptor::indexType() const1073{1074    return Object::sendMessage<MTL::IndexType>(this, _MTL_PRIVATE_SEL(indexType));1075}10761077_MTL_INLINE MTL4::AccelerationStructureMotionCurveGeometryDescriptor* MTL4::AccelerationStructureMotionCurveGeometryDescriptor::init()1078{1079    return NS::Object::init<MTL4::AccelerationStructureMotionCurveGeometryDescriptor>();1080}10811082_MTL_INLINE MTL4::BufferRange MTL4::AccelerationStructureMotionCurveGeometryDescriptor::radiusBuffers() const1083{1084    return Object::sendMessage<MTL4::BufferRange>(this, _MTL_PRIVATE_SEL(radiusBuffers));1085}10861087_MTL_INLINE MTL::AttributeFormat MTL4::AccelerationStructureMotionCurveGeometryDescriptor::radiusFormat() const1088{1089    return Object::sendMessage<MTL::AttributeFormat>(this, _MTL_PRIVATE_SEL(radiusFormat));1090}10911092_MTL_INLINE NS::UInteger MTL4::AccelerationStructureMotionCurveGeometryDescriptor::radiusStride() const1093{1094    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(radiusStride));1095}10961097_MTL_INLINE NS::UInteger MTL4::AccelerationStructureMotionCurveGeometryDescriptor::segmentControlPointCount() const1098{1099    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(segmentControlPointCount));1100}11011102_MTL_INLINE NS::UInteger MTL4::AccelerationStructureMotionCurveGeometryDescriptor::segmentCount() const1103{1104    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(segmentCount));1105}11061107_MTL_INLINE void MTL4::AccelerationStructureMotionCurveGeometryDescriptor::setControlPointBuffers(const MTL4::BufferRange controlPointBuffers)1108{1109    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setControlPointBuffers_), controlPointBuffers);1110}11111112_MTL_INLINE void MTL4::AccelerationStructureMotionCurveGeometryDescriptor::setControlPointCount(NS::UInteger controlPointCount)1113{1114    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setControlPointCount_), controlPointCount);1115}11161117_MTL_INLINE void MTL4::AccelerationStructureMotionCurveGeometryDescriptor::setControlPointFormat(MTL::AttributeFormat controlPointFormat)1118{1119    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setControlPointFormat_), controlPointFormat);1120}11211122_MTL_INLINE void MTL4::AccelerationStructureMotionCurveGeometryDescriptor::setControlPointStride(NS::UInteger controlPointStride)1123{1124    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setControlPointStride_), controlPointStride);1125}11261127_MTL_INLINE void MTL4::AccelerationStructureMotionCurveGeometryDescriptor::setCurveBasis(MTL::CurveBasis curveBasis)1128{1129    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setCurveBasis_), curveBasis);1130}11311132_MTL_INLINE void MTL4::AccelerationStructureMotionCurveGeometryDescriptor::setCurveEndCaps(MTL::CurveEndCaps curveEndCaps)1133{1134    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setCurveEndCaps_), curveEndCaps);1135}11361137_MTL_INLINE void MTL4::AccelerationStructureMotionCurveGeometryDescriptor::setCurveType(MTL::CurveType curveType)1138{1139    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setCurveType_), curveType);1140}11411142_MTL_INLINE void MTL4::AccelerationStructureMotionCurveGeometryDescriptor::setIndexBuffer(const MTL4::BufferRange indexBuffer)1143{1144    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setIndexBuffer_), indexBuffer);1145}11461147_MTL_INLINE void MTL4::AccelerationStructureMotionCurveGeometryDescriptor::setIndexType(MTL::IndexType indexType)1148{1149    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setIndexType_), indexType);1150}11511152_MTL_INLINE void MTL4::AccelerationStructureMotionCurveGeometryDescriptor::setRadiusBuffers(const MTL4::BufferRange radiusBuffers)1153{1154    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setRadiusBuffers_), radiusBuffers);1155}11561157_MTL_INLINE void MTL4::AccelerationStructureMotionCurveGeometryDescriptor::setRadiusFormat(MTL::AttributeFormat radiusFormat)1158{1159    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setRadiusFormat_), radiusFormat);1160}11611162_MTL_INLINE void MTL4::AccelerationStructureMotionCurveGeometryDescriptor::setRadiusStride(NS::UInteger radiusStride)1163{1164    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setRadiusStride_), radiusStride);1165}11661167_MTL_INLINE void MTL4::AccelerationStructureMotionCurveGeometryDescriptor::setSegmentControlPointCount(NS::UInteger segmentControlPointCount)1168{1169    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setSegmentControlPointCount_), segmentControlPointCount);1170}11711172_MTL_INLINE void MTL4::AccelerationStructureMotionCurveGeometryDescriptor::setSegmentCount(NS::UInteger segmentCount)1173{1174    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setSegmentCount_), segmentCount);1175}11761177_MTL_INLINE MTL4::InstanceAccelerationStructureDescriptor* MTL4::InstanceAccelerationStructureDescriptor::alloc()1178{1179    return NS::Object::alloc<MTL4::InstanceAccelerationStructureDescriptor>(_MTL_PRIVATE_CLS(MTL4InstanceAccelerationStructureDescriptor));1180}11811182_MTL_INLINE MTL4::InstanceAccelerationStructureDescriptor* MTL4::InstanceAccelerationStructureDescriptor::init()1183{1184    return NS::Object::init<MTL4::InstanceAccelerationStructureDescriptor>();1185}11861187_MTL_INLINE NS::UInteger MTL4::InstanceAccelerationStructureDescriptor::instanceCount() const1188{1189    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(instanceCount));1190}11911192_MTL_INLINE MTL4::BufferRange MTL4::InstanceAccelerationStructureDescriptor::instanceDescriptorBuffer() const1193{1194    return Object::sendMessage<MTL4::BufferRange>(this, _MTL_PRIVATE_SEL(instanceDescriptorBuffer));1195}11961197_MTL_INLINE NS::UInteger MTL4::InstanceAccelerationStructureDescriptor::instanceDescriptorStride() const1198{1199    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(instanceDescriptorStride));1200}12011202_MTL_INLINE MTL::AccelerationStructureInstanceDescriptorType MTL4::InstanceAccelerationStructureDescriptor::instanceDescriptorType() const1203{1204    return Object::sendMessage<MTL::AccelerationStructureInstanceDescriptorType>(this, _MTL_PRIVATE_SEL(instanceDescriptorType));1205}12061207_MTL_INLINE MTL::MatrixLayout MTL4::InstanceAccelerationStructureDescriptor::instanceTransformationMatrixLayout() const1208{1209    return Object::sendMessage<MTL::MatrixLayout>(this, _MTL_PRIVATE_SEL(instanceTransformationMatrixLayout));1210}12111212_MTL_INLINE MTL4::BufferRange MTL4::InstanceAccelerationStructureDescriptor::motionTransformBuffer() const1213{1214    return Object::sendMessage<MTL4::BufferRange>(this, _MTL_PRIVATE_SEL(motionTransformBuffer));1215}12161217_MTL_INLINE NS::UInteger MTL4::InstanceAccelerationStructureDescriptor::motionTransformCount() const1218{1219    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(motionTransformCount));1220}12211222_MTL_INLINE NS::UInteger MTL4::InstanceAccelerationStructureDescriptor::motionTransformStride() const1223{1224    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(motionTransformStride));1225}12261227_MTL_INLINE MTL::TransformType MTL4::InstanceAccelerationStructureDescriptor::motionTransformType() const1228{1229    return Object::sendMessage<MTL::TransformType>(this, _MTL_PRIVATE_SEL(motionTransformType));1230}12311232_MTL_INLINE void MTL4::InstanceAccelerationStructureDescriptor::setInstanceCount(NS::UInteger instanceCount)1233{1234    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setInstanceCount_), instanceCount);1235}12361237_MTL_INLINE void MTL4::InstanceAccelerationStructureDescriptor::setInstanceDescriptorBuffer(const MTL4::BufferRange instanceDescriptorBuffer)1238{1239    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setInstanceDescriptorBuffer_), instanceDescriptorBuffer);1240}12411242_MTL_INLINE void MTL4::InstanceAccelerationStructureDescriptor::setInstanceDescriptorStride(NS::UInteger instanceDescriptorStride)1243{1244    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setInstanceDescriptorStride_), instanceDescriptorStride);1245}12461247_MTL_INLINE void MTL4::InstanceAccelerationStructureDescriptor::setInstanceDescriptorType(MTL::AccelerationStructureInstanceDescriptorType instanceDescriptorType)1248{1249    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setInstanceDescriptorType_), instanceDescriptorType);1250}12511252_MTL_INLINE void MTL4::InstanceAccelerationStructureDescriptor::setInstanceTransformationMatrixLayout(MTL::MatrixLayout instanceTransformationMatrixLayout)1253{1254    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setInstanceTransformationMatrixLayout_), instanceTransformationMatrixLayout);1255}12561257_MTL_INLINE void MTL4::InstanceAccelerationStructureDescriptor::setMotionTransformBuffer(const MTL4::BufferRange motionTransformBuffer)1258{1259    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMotionTransformBuffer_), motionTransformBuffer);1260}12611262_MTL_INLINE void MTL4::InstanceAccelerationStructureDescriptor::setMotionTransformCount(NS::UInteger motionTransformCount)1263{1264    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMotionTransformCount_), motionTransformCount);1265}12661267_MTL_INLINE void MTL4::InstanceAccelerationStructureDescriptor::setMotionTransformStride(NS::UInteger motionTransformStride)1268{1269    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMotionTransformStride_), motionTransformStride);1270}12711272_MTL_INLINE void MTL4::InstanceAccelerationStructureDescriptor::setMotionTransformType(MTL::TransformType motionTransformType)1273{1274    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMotionTransformType_), motionTransformType);1275}12761277_MTL_INLINE MTL4::IndirectInstanceAccelerationStructureDescriptor* MTL4::IndirectInstanceAccelerationStructureDescriptor::alloc()1278{1279    return NS::Object::alloc<MTL4::IndirectInstanceAccelerationStructureDescriptor>(_MTL_PRIVATE_CLS(MTL4IndirectInstanceAccelerationStructureDescriptor));1280}12811282_MTL_INLINE MTL4::IndirectInstanceAccelerationStructureDescriptor* MTL4::IndirectInstanceAccelerationStructureDescriptor::init()1283{1284    return NS::Object::init<MTL4::IndirectInstanceAccelerationStructureDescriptor>();1285}12861287_MTL_INLINE MTL4::BufferRange MTL4::IndirectInstanceAccelerationStructureDescriptor::instanceCountBuffer() const1288{1289    return Object::sendMessage<MTL4::BufferRange>(this, _MTL_PRIVATE_SEL(instanceCountBuffer));1290}12911292_MTL_INLINE MTL4::BufferRange MTL4::IndirectInstanceAccelerationStructureDescriptor::instanceDescriptorBuffer() const1293{1294    return Object::sendMessage<MTL4::BufferRange>(this, _MTL_PRIVATE_SEL(instanceDescriptorBuffer));1295}12961297_MTL_INLINE NS::UInteger MTL4::IndirectInstanceAccelerationStructureDescriptor::instanceDescriptorStride() const1298{1299    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(instanceDescriptorStride));1300}13011302_MTL_INLINE MTL::AccelerationStructureInstanceDescriptorType MTL4::IndirectInstanceAccelerationStructureDescriptor::instanceDescriptorType() const1303{1304    return Object::sendMessage<MTL::AccelerationStructureInstanceDescriptorType>(this, _MTL_PRIVATE_SEL(instanceDescriptorType));1305}13061307_MTL_INLINE MTL::MatrixLayout MTL4::IndirectInstanceAccelerationStructureDescriptor::instanceTransformationMatrixLayout() const1308{1309    return Object::sendMessage<MTL::MatrixLayout>(this, _MTL_PRIVATE_SEL(instanceTransformationMatrixLayout));1310}13111312_MTL_INLINE NS::UInteger MTL4::IndirectInstanceAccelerationStructureDescriptor::maxInstanceCount() const1313{1314    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(maxInstanceCount));1315}13161317_MTL_INLINE NS::UInteger MTL4::IndirectInstanceAccelerationStructureDescriptor::maxMotionTransformCount() const1318{1319    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(maxMotionTransformCount));1320}13211322_MTL_INLINE MTL4::BufferRange MTL4::IndirectInstanceAccelerationStructureDescriptor::motionTransformBuffer() const1323{1324    return Object::sendMessage<MTL4::BufferRange>(this, _MTL_PRIVATE_SEL(motionTransformBuffer));1325}13261327_MTL_INLINE MTL4::BufferRange MTL4::IndirectInstanceAccelerationStructureDescriptor::motionTransformCountBuffer() const1328{1329    return Object::sendMessage<MTL4::BufferRange>(this, _MTL_PRIVATE_SEL(motionTransformCountBuffer));1330}13311332_MTL_INLINE NS::UInteger MTL4::IndirectInstanceAccelerationStructureDescriptor::motionTransformStride() const1333{1334    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(motionTransformStride));1335}13361337_MTL_INLINE MTL::TransformType MTL4::IndirectInstanceAccelerationStructureDescriptor::motionTransformType() const1338{1339    return Object::sendMessage<MTL::TransformType>(this, _MTL_PRIVATE_SEL(motionTransformType));1340}13411342_MTL_INLINE void MTL4::IndirectInstanceAccelerationStructureDescriptor::setInstanceCountBuffer(const MTL4::BufferRange instanceCountBuffer)1343{1344    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setInstanceCountBuffer_), instanceCountBuffer);1345}13461347_MTL_INLINE void MTL4::IndirectInstanceAccelerationStructureDescriptor::setInstanceDescriptorBuffer(const MTL4::BufferRange instanceDescriptorBuffer)1348{1349    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setInstanceDescriptorBuffer_), instanceDescriptorBuffer);1350}13511352_MTL_INLINE void MTL4::IndirectInstanceAccelerationStructureDescriptor::setInstanceDescriptorStride(NS::UInteger instanceDescriptorStride)1353{1354    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setInstanceDescriptorStride_), instanceDescriptorStride);1355}13561357_MTL_INLINE void MTL4::IndirectInstanceAccelerationStructureDescriptor::setInstanceDescriptorType(MTL::AccelerationStructureInstanceDescriptorType instanceDescriptorType)1358{1359    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setInstanceDescriptorType_), instanceDescriptorType);1360}13611362_MTL_INLINE void MTL4::IndirectInstanceAccelerationStructureDescriptor::setInstanceTransformationMatrixLayout(MTL::MatrixLayout instanceTransformationMatrixLayout)1363{1364    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setInstanceTransformationMatrixLayout_), instanceTransformationMatrixLayout);1365}13661367_MTL_INLINE void MTL4::IndirectInstanceAccelerationStructureDescriptor::setMaxInstanceCount(NS::UInteger maxInstanceCount)1368{1369    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMaxInstanceCount_), maxInstanceCount);1370}13711372_MTL_INLINE void MTL4::IndirectInstanceAccelerationStructureDescriptor::setMaxMotionTransformCount(NS::UInteger maxMotionTransformCount)1373{1374    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMaxMotionTransformCount_), maxMotionTransformCount);1375}13761377_MTL_INLINE void MTL4::IndirectInstanceAccelerationStructureDescriptor::setMotionTransformBuffer(const MTL4::BufferRange motionTransformBuffer)1378{1379    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMotionTransformBuffer_), motionTransformBuffer);1380}13811382_MTL_INLINE void MTL4::IndirectInstanceAccelerationStructureDescriptor::setMotionTransformCountBuffer(const MTL4::BufferRange motionTransformCountBuffer)1383{1384    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMotionTransformCountBuffer_), motionTransformCountBuffer);1385}13861387_MTL_INLINE void MTL4::IndirectInstanceAccelerationStructureDescriptor::setMotionTransformStride(NS::UInteger motionTransformStride)1388{1389    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMotionTransformStride_), motionTransformStride);1390}13911392_MTL_INLINE void MTL4::IndirectInstanceAccelerationStructureDescriptor::setMotionTransformType(MTL::TransformType motionTransformType)1393{1394    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMotionTransformType_), motionTransformType);1395}1396