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%
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