yum-mirror/VkFFT

git clone https://git.yummers.dev/yum-mirror/VkFFT

Tolmachev DmitriiMetal support in VkFFTba7001c

develop
41.1 KiB932 linesraw
1//-------------------------------------------------------------------------------------------------------------------------------------------------------------
2//
3// Metal/MTLAccelerationStructure.hpp
4//
5// Copyright 2020-2021 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 at
10//
11//     http://www.apache.org/licenses/LICENSE-2.0
12//
13// Unless required by applicable law or agreed to in writing, software
14// 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 and
17// limitations under the License.
18//
19//-------------------------------------------------------------------------------------------------------------------------------------------------------------
20
21#pragma once
22
23#include "MTLDefines.hpp"
24#include "MTLHeaderBridge.hpp"
25#include "MTLPrivate.hpp"
26
27#include <Foundation/Foundation.hpp>
28
29#include "MTLAccelerationStructure.hpp"
30#include "MTLAccelerationStructureTypes.hpp"
31#include "MTLResource.hpp"
32#include "MTLStageInputOutputDescriptor.hpp"
33
34namespace MTL
35{
36_MTL_OPTIONS(NS::UInteger, AccelerationStructureUsage) {
37    AccelerationStructureUsageNone = 0,
38    AccelerationStructureUsageRefit = 1,
39    AccelerationStructureUsagePreferFastBuild = 2,
40    AccelerationStructureUsageExtendedLimits = 4,
41};
42
43_MTL_OPTIONS(uint32_t, AccelerationStructureInstanceOptions) {
44    AccelerationStructureInstanceOptionNone = 0,
45    AccelerationStructureInstanceOptionDisableTriangleCulling = 1,
46    AccelerationStructureInstanceOptionTriangleFrontFacingWindingCounterClockwise = 2,
47    AccelerationStructureInstanceOptionOpaque = 4,
48    AccelerationStructureInstanceOptionNonOpaque = 8,
49};
50
51class AccelerationStructureDescriptor : public NS::Copying<AccelerationStructureDescriptor>
52{
53public:
54    static class AccelerationStructureDescriptor* alloc();
55
56    class AccelerationStructureDescriptor*        init();
57
58    MTL::AccelerationStructureUsage               usage() const;
59    void                                          setUsage(MTL::AccelerationStructureUsage usage);
60};
61
62class AccelerationStructureGeometryDescriptor : public NS::Copying<AccelerationStructureGeometryDescriptor>
63{
64public:
65    static class AccelerationStructureGeometryDescriptor* alloc();
66
67    class AccelerationStructureGeometryDescriptor*        init();
68
69    NS::UInteger                                          intersectionFunctionTableOffset() const;
70    void                                                  setIntersectionFunctionTableOffset(NS::UInteger intersectionFunctionTableOffset);
71
72    bool                                                  opaque() const;
73    void                                                  setOpaque(bool opaque);
74
75    bool                                                  allowDuplicateIntersectionFunctionInvocation() const;
76    void                                                  setAllowDuplicateIntersectionFunctionInvocation(bool allowDuplicateIntersectionFunctionInvocation);
77
78    NS::String*                                           label() const;
79    void                                                  setLabel(const NS::String* label);
80};
81
82_MTL_ENUM(uint32_t, MotionBorderMode) {
83    MotionBorderModeClamp = 0,
84    MotionBorderModeVanish = 1,
85};
86
87class PrimitiveAccelerationStructureDescriptor : public NS::Copying<PrimitiveAccelerationStructureDescriptor, MTL::AccelerationStructureDescriptor>
88{
89public:
90    static class PrimitiveAccelerationStructureDescriptor* alloc();
91
92    class PrimitiveAccelerationStructureDescriptor*        init();
93
94    NS::Array*                                             geometryDescriptors() const;
95    void                                                   setGeometryDescriptors(const NS::Array* geometryDescriptors);
96
97    MTL::MotionBorderMode                                  motionStartBorderMode() const;
98    void                                                   setMotionStartBorderMode(MTL::MotionBorderMode motionStartBorderMode);
99
100    MTL::MotionBorderMode                                  motionEndBorderMode() const;
101    void                                                   setMotionEndBorderMode(MTL::MotionBorderMode motionEndBorderMode);
102
103    float                                                  motionStartTime() const;
104    void                                                   setMotionStartTime(float motionStartTime);
105
106    float                                                  motionEndTime() const;
107    void                                                   setMotionEndTime(float motionEndTime);
108
109    NS::UInteger                                           motionKeyframeCount() const;
110    void                                                   setMotionKeyframeCount(NS::UInteger motionKeyframeCount);
111
112    static MTL::PrimitiveAccelerationStructureDescriptor*  descriptor();
113};
114
115class AccelerationStructureTriangleGeometryDescriptor : public NS::Copying<AccelerationStructureTriangleGeometryDescriptor, MTL::AccelerationStructureGeometryDescriptor>
116{
117public:
118    static class AccelerationStructureTriangleGeometryDescriptor* alloc();
119
120    class AccelerationStructureTriangleGeometryDescriptor*        init();
121
122    class Buffer*                                                 vertexBuffer() const;
123    void                                                          setVertexBuffer(const class Buffer* vertexBuffer);
124
125    NS::UInteger                                                  vertexBufferOffset() const;
126    void                                                          setVertexBufferOffset(NS::UInteger vertexBufferOffset);
127
128    NS::UInteger                                                  vertexStride() const;
129    void                                                          setVertexStride(NS::UInteger vertexStride);
130
131    class Buffer*                                                 indexBuffer() const;
132    void                                                          setIndexBuffer(const class Buffer* indexBuffer);
133
134    NS::UInteger                                                  indexBufferOffset() const;
135    void                                                          setIndexBufferOffset(NS::UInteger indexBufferOffset);
136
137    MTL::IndexType                                                indexType() const;
138    void                                                          setIndexType(MTL::IndexType indexType);
139
140    NS::UInteger                                                  triangleCount() const;
141    void                                                          setTriangleCount(NS::UInteger triangleCount);
142
143    static MTL::AccelerationStructureTriangleGeometryDescriptor*  descriptor();
144};
145
146class AccelerationStructureBoundingBoxGeometryDescriptor : public NS::Copying<AccelerationStructureBoundingBoxGeometryDescriptor, MTL::AccelerationStructureGeometryDescriptor>
147{
148public:
149    static class AccelerationStructureBoundingBoxGeometryDescriptor* alloc();
150
151    class AccelerationStructureBoundingBoxGeometryDescriptor*        init();
152
153    class Buffer*                                                    boundingBoxBuffer() const;
154    void                                                             setBoundingBoxBuffer(const class Buffer* boundingBoxBuffer);
155
156    NS::UInteger                                                     boundingBoxBufferOffset() const;
157    void                                                             setBoundingBoxBufferOffset(NS::UInteger boundingBoxBufferOffset);
158
159    NS::UInteger                                                     boundingBoxStride() const;
160    void                                                             setBoundingBoxStride(NS::UInteger boundingBoxStride);
161
162    NS::UInteger                                                     boundingBoxCount() const;
163    void                                                             setBoundingBoxCount(NS::UInteger boundingBoxCount);
164
165    static MTL::AccelerationStructureBoundingBoxGeometryDescriptor*  descriptor();
166};
167
168class MotionKeyframeData : public NS::Referencing<MotionKeyframeData>
169{
170public:
171    static class MotionKeyframeData* alloc();
172
173    class MotionKeyframeData*        init();
174
175    class Buffer*                    buffer() const;
176    void                             setBuffer(const class Buffer* buffer);
177
178    NS::UInteger                     offset() const;
179    void                             setOffset(NS::UInteger offset);
180
181    static MTL::MotionKeyframeData*  data();
182};
183
184class AccelerationStructureMotionTriangleGeometryDescriptor : public NS::Copying<AccelerationStructureMotionTriangleGeometryDescriptor, MTL::AccelerationStructureGeometryDescriptor>
185{
186public:
187    static class AccelerationStructureMotionTriangleGeometryDescriptor* alloc();
188
189    class AccelerationStructureMotionTriangleGeometryDescriptor*        init();
190
191    NS::Array*                                                          vertexBuffers() const;
192    void                                                                setVertexBuffers(const NS::Array* vertexBuffers);
193
194    NS::UInteger                                                        vertexStride() const;
195    void                                                                setVertexStride(NS::UInteger vertexStride);
196
197    class Buffer*                                                       indexBuffer() const;
198    void                                                                setIndexBuffer(const class Buffer* indexBuffer);
199
200    NS::UInteger                                                        indexBufferOffset() const;
201    void                                                                setIndexBufferOffset(NS::UInteger indexBufferOffset);
202
203    MTL::IndexType                                                      indexType() const;
204    void                                                                setIndexType(MTL::IndexType indexType);
205
206    NS::UInteger                                                        triangleCount() const;
207    void                                                                setTriangleCount(NS::UInteger triangleCount);
208
209    static MTL::AccelerationStructureMotionTriangleGeometryDescriptor*  descriptor();
210};
211
212class AccelerationStructureMotionBoundingBoxGeometryDescriptor : public NS::Copying<AccelerationStructureMotionBoundingBoxGeometryDescriptor, MTL::AccelerationStructureGeometryDescriptor>
213{
214public:
215    static class AccelerationStructureMotionBoundingBoxGeometryDescriptor* alloc();
216
217    class AccelerationStructureMotionBoundingBoxGeometryDescriptor*        init();
218
219    NS::Array*                                                             boundingBoxBuffers() const;
220    void                                                                   setBoundingBoxBuffers(const NS::Array* boundingBoxBuffers);
221
222    NS::UInteger                                                           boundingBoxStride() const;
223    void                                                                   setBoundingBoxStride(NS::UInteger boundingBoxStride);
224
225    NS::UInteger                                                           boundingBoxCount() const;
226    void                                                                   setBoundingBoxCount(NS::UInteger boundingBoxCount);
227
228    static MTL::AccelerationStructureMotionBoundingBoxGeometryDescriptor*  descriptor();
229};
230
231struct AccelerationStructureInstanceDescriptor
232{
233    MTL::PackedFloat4x3                       transformationMatrix;
234    MTL::AccelerationStructureInstanceOptions options;
235    uint32_t                                  mask;
236    uint32_t                                  intersectionFunctionTableOffset;
237    uint32_t                                  accelerationStructureIndex;
238} _MTL_PACKED;
239
240struct AccelerationStructureUserIDInstanceDescriptor
241{
242    MTL::PackedFloat4x3                       transformationMatrix;
243    MTL::AccelerationStructureInstanceOptions options;
244    uint32_t                                  mask;
245    uint32_t                                  intersectionFunctionTableOffset;
246    uint32_t                                  accelerationStructureIndex;
247    uint32_t                                  userID;
248} _MTL_PACKED;
249
250_MTL_ENUM(NS::UInteger, AccelerationStructureInstanceDescriptorType) {
251    AccelerationStructureInstanceDescriptorTypeDefault = 0,
252    AccelerationStructureInstanceDescriptorTypeUserID = 1,
253    AccelerationStructureInstanceDescriptorTypeMotion = 2,
254};
255
256struct AccelerationStructureMotionInstanceDescriptor
257{
258    MTL::AccelerationStructureInstanceOptions options;
259    uint32_t                                  mask;
260    uint32_t                                  intersectionFunctionTableOffset;
261    uint32_t                                  accelerationStructureIndex;
262    uint32_t                                  userID;
263    uint32_t                                  motionTransformsStartIndex;
264    uint32_t                                  motionTransformsCount;
265    MTL::MotionBorderMode                     motionStartBorderMode;
266    MTL::MotionBorderMode                     motionEndBorderMode;
267    float                                     motionStartTime;
268    float                                     motionEndTime;
269} _MTL_PACKED;
270
271class InstanceAccelerationStructureDescriptor : public NS::Copying<InstanceAccelerationStructureDescriptor, MTL::AccelerationStructureDescriptor>
272{
273public:
274    static class InstanceAccelerationStructureDescriptor* alloc();
275
276    class InstanceAccelerationStructureDescriptor*        init();
277
278    class Buffer*                                         instanceDescriptorBuffer() const;
279    void                                                  setInstanceDescriptorBuffer(const class Buffer* instanceDescriptorBuffer);
280
281    NS::UInteger                                          instanceDescriptorBufferOffset() const;
282    void                                                  setInstanceDescriptorBufferOffset(NS::UInteger instanceDescriptorBufferOffset);
283
284    NS::UInteger                                          instanceDescriptorStride() const;
285    void                                                  setInstanceDescriptorStride(NS::UInteger instanceDescriptorStride);
286
287    NS::UInteger                                          instanceCount() const;
288    void                                                  setInstanceCount(NS::UInteger instanceCount);
289
290    NS::Array*                                            instancedAccelerationStructures() const;
291    void                                                  setInstancedAccelerationStructures(const NS::Array* instancedAccelerationStructures);
292
293    MTL::AccelerationStructureInstanceDescriptorType      instanceDescriptorType() const;
294    void                                                  setInstanceDescriptorType(MTL::AccelerationStructureInstanceDescriptorType instanceDescriptorType);
295
296    class Buffer*                                         motionTransformBuffer() const;
297    void                                                  setMotionTransformBuffer(const class Buffer* motionTransformBuffer);
298
299    NS::UInteger                                          motionTransformBufferOffset() const;
300    void                                                  setMotionTransformBufferOffset(NS::UInteger motionTransformBufferOffset);
301
302    NS::UInteger                                          motionTransformCount() const;
303    void                                                  setMotionTransformCount(NS::UInteger motionTransformCount);
304
305    static MTL::InstanceAccelerationStructureDescriptor*  descriptor();
306};
307
308class AccelerationStructure : public NS::Referencing<AccelerationStructure, Resource>
309{
310public:
311    NS::UInteger size() const;
312};
313
314}
315
316// static method: alloc
317_MTL_INLINE MTL::AccelerationStructureDescriptor* MTL::AccelerationStructureDescriptor::alloc()
318{
319    return NS::Object::alloc<MTL::AccelerationStructureDescriptor>(_MTL_PRIVATE_CLS(MTLAccelerationStructureDescriptor));
320}
321
322// method: init
323_MTL_INLINE MTL::AccelerationStructureDescriptor* MTL::AccelerationStructureDescriptor::init()
324{
325    return NS::Object::init<MTL::AccelerationStructureDescriptor>();
326}
327
328// property: usage
329_MTL_INLINE MTL::AccelerationStructureUsage MTL::AccelerationStructureDescriptor::usage() const
330{
331    return Object::sendMessage<MTL::AccelerationStructureUsage>(this, _MTL_PRIVATE_SEL(usage));
332}
333
334_MTL_INLINE void MTL::AccelerationStructureDescriptor::setUsage(MTL::AccelerationStructureUsage usage)
335{
336    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setUsage_), usage);
337}
338
339// static method: alloc
340_MTL_INLINE MTL::AccelerationStructureGeometryDescriptor* MTL::AccelerationStructureGeometryDescriptor::alloc()
341{
342    return NS::Object::alloc<MTL::AccelerationStructureGeometryDescriptor>(_MTL_PRIVATE_CLS(MTLAccelerationStructureGeometryDescriptor));
343}
344
345// method: init
346_MTL_INLINE MTL::AccelerationStructureGeometryDescriptor* MTL::AccelerationStructureGeometryDescriptor::init()
347{
348    return NS::Object::init<MTL::AccelerationStructureGeometryDescriptor>();
349}
350
351// property: intersectionFunctionTableOffset
352_MTL_INLINE NS::UInteger MTL::AccelerationStructureGeometryDescriptor::intersectionFunctionTableOffset() const
353{
354    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(intersectionFunctionTableOffset));
355}
356
357_MTL_INLINE void MTL::AccelerationStructureGeometryDescriptor::setIntersectionFunctionTableOffset(NS::UInteger intersectionFunctionTableOffset)
358{
359    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setIntersectionFunctionTableOffset_), intersectionFunctionTableOffset);
360}
361
362// property: opaque
363_MTL_INLINE bool MTL::AccelerationStructureGeometryDescriptor::opaque() const
364{
365    return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(opaque));
366}
367
368_MTL_INLINE void MTL::AccelerationStructureGeometryDescriptor::setOpaque(bool opaque)
369{
370    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setOpaque_), opaque);
371}
372
373// property: allowDuplicateIntersectionFunctionInvocation
374_MTL_INLINE bool MTL::AccelerationStructureGeometryDescriptor::allowDuplicateIntersectionFunctionInvocation() const
375{
376    return Object::sendMessage<bool>(this, _MTL_PRIVATE_SEL(allowDuplicateIntersectionFunctionInvocation));
377}
378
379_MTL_INLINE void MTL::AccelerationStructureGeometryDescriptor::setAllowDuplicateIntersectionFunctionInvocation(bool allowDuplicateIntersectionFunctionInvocation)
380{
381    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setAllowDuplicateIntersectionFunctionInvocation_), allowDuplicateIntersectionFunctionInvocation);
382}
383
384// property: label
385_MTL_INLINE NS::String* MTL::AccelerationStructureGeometryDescriptor::label() const
386{
387    return Object::sendMessage<NS::String*>(this, _MTL_PRIVATE_SEL(label));
388}
389
390_MTL_INLINE void MTL::AccelerationStructureGeometryDescriptor::setLabel(const NS::String* label)
391{
392    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setLabel_), label);
393}
394
395// static method: alloc
396_MTL_INLINE MTL::PrimitiveAccelerationStructureDescriptor* MTL::PrimitiveAccelerationStructureDescriptor::alloc()
397{
398    return NS::Object::alloc<MTL::PrimitiveAccelerationStructureDescriptor>(_MTL_PRIVATE_CLS(MTLPrimitiveAccelerationStructureDescriptor));
399}
400
401// method: init
402_MTL_INLINE MTL::PrimitiveAccelerationStructureDescriptor* MTL::PrimitiveAccelerationStructureDescriptor::init()
403{
404    return NS::Object::init<MTL::PrimitiveAccelerationStructureDescriptor>();
405}
406
407// property: geometryDescriptors
408_MTL_INLINE NS::Array* MTL::PrimitiveAccelerationStructureDescriptor::geometryDescriptors() const
409{
410    return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(geometryDescriptors));
411}
412
413_MTL_INLINE void MTL::PrimitiveAccelerationStructureDescriptor::setGeometryDescriptors(const NS::Array* geometryDescriptors)
414{
415    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setGeometryDescriptors_), geometryDescriptors);
416}
417
418// property: motionStartBorderMode
419_MTL_INLINE MTL::MotionBorderMode MTL::PrimitiveAccelerationStructureDescriptor::motionStartBorderMode() const
420{
421    return Object::sendMessage<MTL::MotionBorderMode>(this, _MTL_PRIVATE_SEL(motionStartBorderMode));
422}
423
424_MTL_INLINE void MTL::PrimitiveAccelerationStructureDescriptor::setMotionStartBorderMode(MTL::MotionBorderMode motionStartBorderMode)
425{
426    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMotionStartBorderMode_), motionStartBorderMode);
427}
428
429// property: motionEndBorderMode
430_MTL_INLINE MTL::MotionBorderMode MTL::PrimitiveAccelerationStructureDescriptor::motionEndBorderMode() const
431{
432    return Object::sendMessage<MTL::MotionBorderMode>(this, _MTL_PRIVATE_SEL(motionEndBorderMode));
433}
434
435_MTL_INLINE void MTL::PrimitiveAccelerationStructureDescriptor::setMotionEndBorderMode(MTL::MotionBorderMode motionEndBorderMode)
436{
437    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMotionEndBorderMode_), motionEndBorderMode);
438}
439
440// property: motionStartTime
441_MTL_INLINE float MTL::PrimitiveAccelerationStructureDescriptor::motionStartTime() const
442{
443    return Object::sendMessage<float>(this, _MTL_PRIVATE_SEL(motionStartTime));
444}
445
446_MTL_INLINE void MTL::PrimitiveAccelerationStructureDescriptor::setMotionStartTime(float motionStartTime)
447{
448    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMotionStartTime_), motionStartTime);
449}
450
451// property: motionEndTime
452_MTL_INLINE float MTL::PrimitiveAccelerationStructureDescriptor::motionEndTime() const
453{
454    return Object::sendMessage<float>(this, _MTL_PRIVATE_SEL(motionEndTime));
455}
456
457_MTL_INLINE void MTL::PrimitiveAccelerationStructureDescriptor::setMotionEndTime(float motionEndTime)
458{
459    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMotionEndTime_), motionEndTime);
460}
461
462// property: motionKeyframeCount
463_MTL_INLINE NS::UInteger MTL::PrimitiveAccelerationStructureDescriptor::motionKeyframeCount() const
464{
465    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(motionKeyframeCount));
466}
467
468_MTL_INLINE void MTL::PrimitiveAccelerationStructureDescriptor::setMotionKeyframeCount(NS::UInteger motionKeyframeCount)
469{
470    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMotionKeyframeCount_), motionKeyframeCount);
471}
472
473// static method: descriptor
474_MTL_INLINE MTL::PrimitiveAccelerationStructureDescriptor* MTL::PrimitiveAccelerationStructureDescriptor::descriptor()
475{
476    return Object::sendMessage<MTL::PrimitiveAccelerationStructureDescriptor*>(_MTL_PRIVATE_CLS(MTLPrimitiveAccelerationStructureDescriptor), _MTL_PRIVATE_SEL(descriptor));
477}
478
479// static method: alloc
480_MTL_INLINE MTL::AccelerationStructureTriangleGeometryDescriptor* MTL::AccelerationStructureTriangleGeometryDescriptor::alloc()
481{
482    return NS::Object::alloc<MTL::AccelerationStructureTriangleGeometryDescriptor>(_MTL_PRIVATE_CLS(MTLAccelerationStructureTriangleGeometryDescriptor));
483}
484
485// method: init
486_MTL_INLINE MTL::AccelerationStructureTriangleGeometryDescriptor* MTL::AccelerationStructureTriangleGeometryDescriptor::init()
487{
488    return NS::Object::init<MTL::AccelerationStructureTriangleGeometryDescriptor>();
489}
490
491// property: vertexBuffer
492_MTL_INLINE MTL::Buffer* MTL::AccelerationStructureTriangleGeometryDescriptor::vertexBuffer() const
493{
494    return Object::sendMessage<MTL::Buffer*>(this, _MTL_PRIVATE_SEL(vertexBuffer));
495}
496
497_MTL_INLINE void MTL::AccelerationStructureTriangleGeometryDescriptor::setVertexBuffer(const MTL::Buffer* vertexBuffer)
498{
499    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setVertexBuffer_), vertexBuffer);
500}
501
502// property: vertexBufferOffset
503_MTL_INLINE NS::UInteger MTL::AccelerationStructureTriangleGeometryDescriptor::vertexBufferOffset() const
504{
505    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(vertexBufferOffset));
506}
507
508_MTL_INLINE void MTL::AccelerationStructureTriangleGeometryDescriptor::setVertexBufferOffset(NS::UInteger vertexBufferOffset)
509{
510    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setVertexBufferOffset_), vertexBufferOffset);
511}
512
513// property: vertexStride
514_MTL_INLINE NS::UInteger MTL::AccelerationStructureTriangleGeometryDescriptor::vertexStride() const
515{
516    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(vertexStride));
517}
518
519_MTL_INLINE void MTL::AccelerationStructureTriangleGeometryDescriptor::setVertexStride(NS::UInteger vertexStride)
520{
521    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setVertexStride_), vertexStride);
522}
523
524// property: indexBuffer
525_MTL_INLINE MTL::Buffer* MTL::AccelerationStructureTriangleGeometryDescriptor::indexBuffer() const
526{
527    return Object::sendMessage<MTL::Buffer*>(this, _MTL_PRIVATE_SEL(indexBuffer));
528}
529
530_MTL_INLINE void MTL::AccelerationStructureTriangleGeometryDescriptor::setIndexBuffer(const MTL::Buffer* indexBuffer)
531{
532    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setIndexBuffer_), indexBuffer);
533}
534
535// property: indexBufferOffset
536_MTL_INLINE NS::UInteger MTL::AccelerationStructureTriangleGeometryDescriptor::indexBufferOffset() const
537{
538    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(indexBufferOffset));
539}
540
541_MTL_INLINE void MTL::AccelerationStructureTriangleGeometryDescriptor::setIndexBufferOffset(NS::UInteger indexBufferOffset)
542{
543    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setIndexBufferOffset_), indexBufferOffset);
544}
545
546// property: indexType
547_MTL_INLINE MTL::IndexType MTL::AccelerationStructureTriangleGeometryDescriptor::indexType() const
548{
549    return Object::sendMessage<MTL::IndexType>(this, _MTL_PRIVATE_SEL(indexType));
550}
551
552_MTL_INLINE void MTL::AccelerationStructureTriangleGeometryDescriptor::setIndexType(MTL::IndexType indexType)
553{
554    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setIndexType_), indexType);
555}
556
557// property: triangleCount
558_MTL_INLINE NS::UInteger MTL::AccelerationStructureTriangleGeometryDescriptor::triangleCount() const
559{
560    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(triangleCount));
561}
562
563_MTL_INLINE void MTL::AccelerationStructureTriangleGeometryDescriptor::setTriangleCount(NS::UInteger triangleCount)
564{
565    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setTriangleCount_), triangleCount);
566}
567
568// static method: descriptor
569_MTL_INLINE MTL::AccelerationStructureTriangleGeometryDescriptor* MTL::AccelerationStructureTriangleGeometryDescriptor::descriptor()
570{
571    return Object::sendMessage<MTL::AccelerationStructureTriangleGeometryDescriptor*>(_MTL_PRIVATE_CLS(MTLAccelerationStructureTriangleGeometryDescriptor), _MTL_PRIVATE_SEL(descriptor));
572}
573
574// static method: alloc
575_MTL_INLINE MTL::AccelerationStructureBoundingBoxGeometryDescriptor* MTL::AccelerationStructureBoundingBoxGeometryDescriptor::alloc()
576{
577    return NS::Object::alloc<MTL::AccelerationStructureBoundingBoxGeometryDescriptor>(_MTL_PRIVATE_CLS(MTLAccelerationStructureBoundingBoxGeometryDescriptor));
578}
579
580// method: init
581_MTL_INLINE MTL::AccelerationStructureBoundingBoxGeometryDescriptor* MTL::AccelerationStructureBoundingBoxGeometryDescriptor::init()
582{
583    return NS::Object::init<MTL::AccelerationStructureBoundingBoxGeometryDescriptor>();
584}
585
586// property: boundingBoxBuffer
587_MTL_INLINE MTL::Buffer* MTL::AccelerationStructureBoundingBoxGeometryDescriptor::boundingBoxBuffer() const
588{
589    return Object::sendMessage<MTL::Buffer*>(this, _MTL_PRIVATE_SEL(boundingBoxBuffer));
590}
591
592_MTL_INLINE void MTL::AccelerationStructureBoundingBoxGeometryDescriptor::setBoundingBoxBuffer(const MTL::Buffer* boundingBoxBuffer)
593{
594    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setBoundingBoxBuffer_), boundingBoxBuffer);
595}
596
597// property: boundingBoxBufferOffset
598_MTL_INLINE NS::UInteger MTL::AccelerationStructureBoundingBoxGeometryDescriptor::boundingBoxBufferOffset() const
599{
600    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(boundingBoxBufferOffset));
601}
602
603_MTL_INLINE void MTL::AccelerationStructureBoundingBoxGeometryDescriptor::setBoundingBoxBufferOffset(NS::UInteger boundingBoxBufferOffset)
604{
605    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setBoundingBoxBufferOffset_), boundingBoxBufferOffset);
606}
607
608// property: boundingBoxStride
609_MTL_INLINE NS::UInteger MTL::AccelerationStructureBoundingBoxGeometryDescriptor::boundingBoxStride() const
610{
611    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(boundingBoxStride));
612}
613
614_MTL_INLINE void MTL::AccelerationStructureBoundingBoxGeometryDescriptor::setBoundingBoxStride(NS::UInteger boundingBoxStride)
615{
616    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setBoundingBoxStride_), boundingBoxStride);
617}
618
619// property: boundingBoxCount
620_MTL_INLINE NS::UInteger MTL::AccelerationStructureBoundingBoxGeometryDescriptor::boundingBoxCount() const
621{
622    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(boundingBoxCount));
623}
624
625_MTL_INLINE void MTL::AccelerationStructureBoundingBoxGeometryDescriptor::setBoundingBoxCount(NS::UInteger boundingBoxCount)
626{
627    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setBoundingBoxCount_), boundingBoxCount);
628}
629
630// static method: descriptor
631_MTL_INLINE MTL::AccelerationStructureBoundingBoxGeometryDescriptor* MTL::AccelerationStructureBoundingBoxGeometryDescriptor::descriptor()
632{
633    return Object::sendMessage<MTL::AccelerationStructureBoundingBoxGeometryDescriptor*>(_MTL_PRIVATE_CLS(MTLAccelerationStructureBoundingBoxGeometryDescriptor), _MTL_PRIVATE_SEL(descriptor));
634}
635
636// static method: alloc
637_MTL_INLINE MTL::MotionKeyframeData* MTL::MotionKeyframeData::alloc()
638{
639    return NS::Object::alloc<MTL::MotionKeyframeData>(_MTL_PRIVATE_CLS(MTLMotionKeyframeData));
640}
641
642// method: init
643_MTL_INLINE MTL::MotionKeyframeData* MTL::MotionKeyframeData::init()
644{
645    return NS::Object::init<MTL::MotionKeyframeData>();
646}
647
648// property: buffer
649_MTL_INLINE MTL::Buffer* MTL::MotionKeyframeData::buffer() const
650{
651    return Object::sendMessage<MTL::Buffer*>(this, _MTL_PRIVATE_SEL(buffer));
652}
653
654_MTL_INLINE void MTL::MotionKeyframeData::setBuffer(const MTL::Buffer* buffer)
655{
656    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setBuffer_), buffer);
657}
658
659// property: offset
660_MTL_INLINE NS::UInteger MTL::MotionKeyframeData::offset() const
661{
662    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(offset));
663}
664
665_MTL_INLINE void MTL::MotionKeyframeData::setOffset(NS::UInteger offset)
666{
667    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setOffset_), offset);
668}
669
670// static method: data
671_MTL_INLINE MTL::MotionKeyframeData* MTL::MotionKeyframeData::data()
672{
673    return Object::sendMessage<MTL::MotionKeyframeData*>(_MTL_PRIVATE_CLS(MTLMotionKeyframeData), _MTL_PRIVATE_SEL(data));
674}
675
676// static method: alloc
677_MTL_INLINE MTL::AccelerationStructureMotionTriangleGeometryDescriptor* MTL::AccelerationStructureMotionTriangleGeometryDescriptor::alloc()
678{
679    return NS::Object::alloc<MTL::AccelerationStructureMotionTriangleGeometryDescriptor>(_MTL_PRIVATE_CLS(MTLAccelerationStructureMotionTriangleGeometryDescriptor));
680}
681
682// method: init
683_MTL_INLINE MTL::AccelerationStructureMotionTriangleGeometryDescriptor* MTL::AccelerationStructureMotionTriangleGeometryDescriptor::init()
684{
685    return NS::Object::init<MTL::AccelerationStructureMotionTriangleGeometryDescriptor>();
686}
687
688// property: vertexBuffers
689_MTL_INLINE NS::Array* MTL::AccelerationStructureMotionTriangleGeometryDescriptor::vertexBuffers() const
690{
691    return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(vertexBuffers));
692}
693
694_MTL_INLINE void MTL::AccelerationStructureMotionTriangleGeometryDescriptor::setVertexBuffers(const NS::Array* vertexBuffers)
695{
696    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setVertexBuffers_), vertexBuffers);
697}
698
699// property: vertexStride
700_MTL_INLINE NS::UInteger MTL::AccelerationStructureMotionTriangleGeometryDescriptor::vertexStride() const
701{
702    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(vertexStride));
703}
704
705_MTL_INLINE void MTL::AccelerationStructureMotionTriangleGeometryDescriptor::setVertexStride(NS::UInteger vertexStride)
706{
707    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setVertexStride_), vertexStride);
708}
709
710// property: indexBuffer
711_MTL_INLINE MTL::Buffer* MTL::AccelerationStructureMotionTriangleGeometryDescriptor::indexBuffer() const
712{
713    return Object::sendMessage<MTL::Buffer*>(this, _MTL_PRIVATE_SEL(indexBuffer));
714}
715
716_MTL_INLINE void MTL::AccelerationStructureMotionTriangleGeometryDescriptor::setIndexBuffer(const MTL::Buffer* indexBuffer)
717{
718    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setIndexBuffer_), indexBuffer);
719}
720
721// property: indexBufferOffset
722_MTL_INLINE NS::UInteger MTL::AccelerationStructureMotionTriangleGeometryDescriptor::indexBufferOffset() const
723{
724    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(indexBufferOffset));
725}
726
727_MTL_INLINE void MTL::AccelerationStructureMotionTriangleGeometryDescriptor::setIndexBufferOffset(NS::UInteger indexBufferOffset)
728{
729    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setIndexBufferOffset_), indexBufferOffset);
730}
731
732// property: indexType
733_MTL_INLINE MTL::IndexType MTL::AccelerationStructureMotionTriangleGeometryDescriptor::indexType() const
734{
735    return Object::sendMessage<MTL::IndexType>(this, _MTL_PRIVATE_SEL(indexType));
736}
737
738_MTL_INLINE void MTL::AccelerationStructureMotionTriangleGeometryDescriptor::setIndexType(MTL::IndexType indexType)
739{
740    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setIndexType_), indexType);
741}
742
743// property: triangleCount
744_MTL_INLINE NS::UInteger MTL::AccelerationStructureMotionTriangleGeometryDescriptor::triangleCount() const
745{
746    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(triangleCount));
747}
748
749_MTL_INLINE void MTL::AccelerationStructureMotionTriangleGeometryDescriptor::setTriangleCount(NS::UInteger triangleCount)
750{
751    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setTriangleCount_), triangleCount);
752}
753
754// static method: descriptor
755_MTL_INLINE MTL::AccelerationStructureMotionTriangleGeometryDescriptor* MTL::AccelerationStructureMotionTriangleGeometryDescriptor::descriptor()
756{
757    return Object::sendMessage<MTL::AccelerationStructureMotionTriangleGeometryDescriptor*>(_MTL_PRIVATE_CLS(MTLAccelerationStructureMotionTriangleGeometryDescriptor), _MTL_PRIVATE_SEL(descriptor));
758}
759
760// static method: alloc
761_MTL_INLINE MTL::AccelerationStructureMotionBoundingBoxGeometryDescriptor* MTL::AccelerationStructureMotionBoundingBoxGeometryDescriptor::alloc()
762{
763    return NS::Object::alloc<MTL::AccelerationStructureMotionBoundingBoxGeometryDescriptor>(_MTL_PRIVATE_CLS(MTLAccelerationStructureMotionBoundingBoxGeometryDescriptor));
764}
765
766// method: init
767_MTL_INLINE MTL::AccelerationStructureMotionBoundingBoxGeometryDescriptor* MTL::AccelerationStructureMotionBoundingBoxGeometryDescriptor::init()
768{
769    return NS::Object::init<MTL::AccelerationStructureMotionBoundingBoxGeometryDescriptor>();
770}
771
772// property: boundingBoxBuffers
773_MTL_INLINE NS::Array* MTL::AccelerationStructureMotionBoundingBoxGeometryDescriptor::boundingBoxBuffers() const
774{
775    return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(boundingBoxBuffers));
776}
777
778_MTL_INLINE void MTL::AccelerationStructureMotionBoundingBoxGeometryDescriptor::setBoundingBoxBuffers(const NS::Array* boundingBoxBuffers)
779{
780    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setBoundingBoxBuffers_), boundingBoxBuffers);
781}
782
783// property: boundingBoxStride
784_MTL_INLINE NS::UInteger MTL::AccelerationStructureMotionBoundingBoxGeometryDescriptor::boundingBoxStride() const
785{
786    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(boundingBoxStride));
787}
788
789_MTL_INLINE void MTL::AccelerationStructureMotionBoundingBoxGeometryDescriptor::setBoundingBoxStride(NS::UInteger boundingBoxStride)
790{
791    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setBoundingBoxStride_), boundingBoxStride);
792}
793
794// property: boundingBoxCount
795_MTL_INLINE NS::UInteger MTL::AccelerationStructureMotionBoundingBoxGeometryDescriptor::boundingBoxCount() const
796{
797    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(boundingBoxCount));
798}
799
800_MTL_INLINE void MTL::AccelerationStructureMotionBoundingBoxGeometryDescriptor::setBoundingBoxCount(NS::UInteger boundingBoxCount)
801{
802    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setBoundingBoxCount_), boundingBoxCount);
803}
804
805// static method: descriptor
806_MTL_INLINE MTL::AccelerationStructureMotionBoundingBoxGeometryDescriptor* MTL::AccelerationStructureMotionBoundingBoxGeometryDescriptor::descriptor()
807{
808    return Object::sendMessage<MTL::AccelerationStructureMotionBoundingBoxGeometryDescriptor*>(_MTL_PRIVATE_CLS(MTLAccelerationStructureMotionBoundingBoxGeometryDescriptor), _MTL_PRIVATE_SEL(descriptor));
809}
810
811// static method: alloc
812_MTL_INLINE MTL::InstanceAccelerationStructureDescriptor* MTL::InstanceAccelerationStructureDescriptor::alloc()
813{
814    return NS::Object::alloc<MTL::InstanceAccelerationStructureDescriptor>(_MTL_PRIVATE_CLS(MTLInstanceAccelerationStructureDescriptor));
815}
816
817// method: init
818_MTL_INLINE MTL::InstanceAccelerationStructureDescriptor* MTL::InstanceAccelerationStructureDescriptor::init()
819{
820    return NS::Object::init<MTL::InstanceAccelerationStructureDescriptor>();
821}
822
823// property: instanceDescriptorBuffer
824_MTL_INLINE MTL::Buffer* MTL::InstanceAccelerationStructureDescriptor::instanceDescriptorBuffer() const
825{
826    return Object::sendMessage<MTL::Buffer*>(this, _MTL_PRIVATE_SEL(instanceDescriptorBuffer));
827}
828
829_MTL_INLINE void MTL::InstanceAccelerationStructureDescriptor::setInstanceDescriptorBuffer(const MTL::Buffer* instanceDescriptorBuffer)
830{
831    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setInstanceDescriptorBuffer_), instanceDescriptorBuffer);
832}
833
834// property: instanceDescriptorBufferOffset
835_MTL_INLINE NS::UInteger MTL::InstanceAccelerationStructureDescriptor::instanceDescriptorBufferOffset() const
836{
837    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(instanceDescriptorBufferOffset));
838}
839
840_MTL_INLINE void MTL::InstanceAccelerationStructureDescriptor::setInstanceDescriptorBufferOffset(NS::UInteger instanceDescriptorBufferOffset)
841{
842    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setInstanceDescriptorBufferOffset_), instanceDescriptorBufferOffset);
843}
844
845// property: instanceDescriptorStride
846_MTL_INLINE NS::UInteger MTL::InstanceAccelerationStructureDescriptor::instanceDescriptorStride() const
847{
848    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(instanceDescriptorStride));
849}
850
851_MTL_INLINE void MTL::InstanceAccelerationStructureDescriptor::setInstanceDescriptorStride(NS::UInteger instanceDescriptorStride)
852{
853    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setInstanceDescriptorStride_), instanceDescriptorStride);
854}
855
856// property: instanceCount
857_MTL_INLINE NS::UInteger MTL::InstanceAccelerationStructureDescriptor::instanceCount() const
858{
859    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(instanceCount));
860}
861
862_MTL_INLINE void MTL::InstanceAccelerationStructureDescriptor::setInstanceCount(NS::UInteger instanceCount)
863{
864    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setInstanceCount_), instanceCount);
865}
866
867// property: instancedAccelerationStructures
868_MTL_INLINE NS::Array* MTL::InstanceAccelerationStructureDescriptor::instancedAccelerationStructures() const
869{
870    return Object::sendMessage<NS::Array*>(this, _MTL_PRIVATE_SEL(instancedAccelerationStructures));
871}
872
873_MTL_INLINE void MTL::InstanceAccelerationStructureDescriptor::setInstancedAccelerationStructures(const NS::Array* instancedAccelerationStructures)
874{
875    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setInstancedAccelerationStructures_), instancedAccelerationStructures);
876}
877
878// property: instanceDescriptorType
879_MTL_INLINE MTL::AccelerationStructureInstanceDescriptorType MTL::InstanceAccelerationStructureDescriptor::instanceDescriptorType() const
880{
881    return Object::sendMessage<MTL::AccelerationStructureInstanceDescriptorType>(this, _MTL_PRIVATE_SEL(instanceDescriptorType));
882}
883
884_MTL_INLINE void MTL::InstanceAccelerationStructureDescriptor::setInstanceDescriptorType(MTL::AccelerationStructureInstanceDescriptorType instanceDescriptorType)
885{
886    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setInstanceDescriptorType_), instanceDescriptorType);
887}
888
889// property: motionTransformBuffer
890_MTL_INLINE MTL::Buffer* MTL::InstanceAccelerationStructureDescriptor::motionTransformBuffer() const
891{
892    return Object::sendMessage<MTL::Buffer*>(this, _MTL_PRIVATE_SEL(motionTransformBuffer));
893}
894
895_MTL_INLINE void MTL::InstanceAccelerationStructureDescriptor::setMotionTransformBuffer(const MTL::Buffer* motionTransformBuffer)
896{
897    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMotionTransformBuffer_), motionTransformBuffer);
898}
899
900// property: motionTransformBufferOffset
901_MTL_INLINE NS::UInteger MTL::InstanceAccelerationStructureDescriptor::motionTransformBufferOffset() const
902{
903    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(motionTransformBufferOffset));
904}
905
906_MTL_INLINE void MTL::InstanceAccelerationStructureDescriptor::setMotionTransformBufferOffset(NS::UInteger motionTransformBufferOffset)
907{
908    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMotionTransformBufferOffset_), motionTransformBufferOffset);
909}
910
911// property: motionTransformCount
912_MTL_INLINE NS::UInteger MTL::InstanceAccelerationStructureDescriptor::motionTransformCount() const
913{
914    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(motionTransformCount));
915}
916
917_MTL_INLINE void MTL::InstanceAccelerationStructureDescriptor::setMotionTransformCount(NS::UInteger motionTransformCount)
918{
919    Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setMotionTransformCount_), motionTransformCount);
920}
921
922// static method: descriptor
923_MTL_INLINE MTL::InstanceAccelerationStructureDescriptor* MTL::InstanceAccelerationStructureDescriptor::descriptor()
924{
925    return Object::sendMessage<MTL::InstanceAccelerationStructureDescriptor*>(_MTL_PRIVATE_CLS(MTLInstanceAccelerationStructureDescriptor), _MTL_PRIVATE_SEL(descriptor));
926}
927
928// property: size
929_MTL_INLINE NS::UInteger MTL::AccelerationStructure::size() const
930{
931    return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(size));
932}