1use core::ffi::*;
4use core::ptr::NonNull;
5use objc2::__framework_prelude::*;
6use objc2_foundation::*;
7
8use crate::*;
9
10#[repr(transparent)]
15#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
16pub struct MTLAccelerationStructureRefitOptions(pub NSUInteger);
17bitflags::bitflags! {
18 impl MTLAccelerationStructureRefitOptions: NSUInteger {
19#[doc(alias = "MTLAccelerationStructureRefitOptionVertexData")]
23 const VertexData = 1<<0;
24#[doc(alias = "MTLAccelerationStructureRefitOptionPerPrimitiveData")]
28 const PerPrimitiveData = 1<<1;
29 }
30}
31
32unsafe impl Encode for MTLAccelerationStructureRefitOptions {
33 const ENCODING: Encoding = NSUInteger::ENCODING;
34}
35
36unsafe impl RefEncode for MTLAccelerationStructureRefitOptions {
37 const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
38}
39
40#[repr(transparent)]
43#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
44pub struct MTLAccelerationStructureUsage(pub NSUInteger);
45bitflags::bitflags! {
46 impl MTLAccelerationStructureUsage: NSUInteger {
47#[doc(alias = "MTLAccelerationStructureUsageNone")]
49 const None = 0;
50#[doc(alias = "MTLAccelerationStructureUsageRefit")]
53 const Refit = 1<<0;
54#[doc(alias = "MTLAccelerationStructureUsagePreferFastBuild")]
57 const PreferFastBuild = 1<<1;
58#[doc(alias = "MTLAccelerationStructureUsageExtendedLimits")]
61 const ExtendedLimits = 1<<2;
62#[doc(alias = "MTLAccelerationStructureUsagePreferFastIntersection")]
64 const PreferFastIntersection = 1<<4;
65#[doc(alias = "MTLAccelerationStructureUsageMinimizeMemory")]
68 const MinimizeMemory = 1<<5;
69 }
70}
71
72unsafe impl Encode for MTLAccelerationStructureUsage {
73 const ENCODING: Encoding = NSUInteger::ENCODING;
74}
75
76unsafe impl RefEncode for MTLAccelerationStructureUsage {
77 const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
78}
79
80#[repr(transparent)]
83#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
84pub struct MTLAccelerationStructureInstanceOptions(pub u32);
85bitflags::bitflags! {
86 impl MTLAccelerationStructureInstanceOptions: u32 {
87#[doc(alias = "MTLAccelerationStructureInstanceOptionNone")]
89 const None = 0;
90#[doc(alias = "MTLAccelerationStructureInstanceOptionDisableTriangleCulling")]
92 const DisableTriangleCulling = 1<<0;
93#[doc(alias = "MTLAccelerationStructureInstanceOptionTriangleFrontFacingWindingCounterClockwise")]
97 const TriangleFrontFacingWindingCounterClockwise = 1<<1;
98#[doc(alias = "MTLAccelerationStructureInstanceOptionOpaque")]
100 const Opaque = 1<<2;
101#[doc(alias = "MTLAccelerationStructureInstanceOptionNonOpaque")]
103 const NonOpaque = 1<<3;
104 }
105}
106
107unsafe impl Encode for MTLAccelerationStructureInstanceOptions {
108 const ENCODING: Encoding = u32::ENCODING;
109}
110
111unsafe impl RefEncode for MTLAccelerationStructureInstanceOptions {
112 const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
113}
114
115#[repr(transparent)]
118#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
119pub struct MTLMatrixLayout(pub NSInteger);
120impl MTLMatrixLayout {
121 #[doc(alias = "MTLMatrixLayoutColumnMajor")]
123 pub const ColumnMajor: Self = Self(0);
124 #[doc(alias = "MTLMatrixLayoutRowMajor")]
126 pub const RowMajor: Self = Self(1);
127}
128
129unsafe impl Encode for MTLMatrixLayout {
130 const ENCODING: Encoding = NSInteger::ENCODING;
131}
132
133unsafe impl RefEncode for MTLMatrixLayout {
134 const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
135}
136
137extern_class!(
138 #[unsafe(super(NSObject))]
143 #[derive(Debug, PartialEq, Eq, Hash)]
144 pub struct MTLAccelerationStructureDescriptor;
145);
146
147extern_conformance!(
148 unsafe impl NSCopying for MTLAccelerationStructureDescriptor {}
149);
150
151unsafe impl CopyingHelper for MTLAccelerationStructureDescriptor {
152 type Result = Self;
153}
154
155extern_conformance!(
156 unsafe impl NSObjectProtocol for MTLAccelerationStructureDescriptor {}
157);
158
159impl MTLAccelerationStructureDescriptor {
160 extern_methods!(
161 #[unsafe(method(usage))]
162 #[unsafe(method_family = none)]
163 pub fn usage(&self) -> MTLAccelerationStructureUsage;
164
165 #[unsafe(method(setUsage:))]
167 #[unsafe(method_family = none)]
168 pub fn setUsage(&self, usage: MTLAccelerationStructureUsage);
169 );
170}
171
172impl MTLAccelerationStructureDescriptor {
174 extern_methods!(
175 #[unsafe(method(init))]
176 #[unsafe(method_family = init)]
177 pub fn init(this: Allocated<Self>) -> Retained<Self>;
178
179 #[unsafe(method(new))]
180 #[unsafe(method_family = new)]
181 pub fn new() -> Retained<Self>;
182 );
183}
184
185impl DefaultRetained for MTLAccelerationStructureDescriptor {
186 #[inline]
187 fn default_retained() -> Retained<Self> {
188 Self::new()
189 }
190}
191
192extern_class!(
193 #[unsafe(super(NSObject))]
198 #[derive(Debug, PartialEq, Eq, Hash)]
199 pub struct MTLAccelerationStructureGeometryDescriptor;
200);
201
202extern_conformance!(
203 unsafe impl NSCopying for MTLAccelerationStructureGeometryDescriptor {}
204);
205
206unsafe impl CopyingHelper for MTLAccelerationStructureGeometryDescriptor {
207 type Result = Self;
208}
209
210extern_conformance!(
211 unsafe impl NSObjectProtocol for MTLAccelerationStructureGeometryDescriptor {}
212);
213
214impl MTLAccelerationStructureGeometryDescriptor {
215 extern_methods!(
216 #[unsafe(method(intersectionFunctionTableOffset))]
217 #[unsafe(method_family = none)]
218 pub fn intersectionFunctionTableOffset(&self) -> NSUInteger;
219
220 #[unsafe(method(setIntersectionFunctionTableOffset:))]
222 #[unsafe(method_family = none)]
223 pub fn setIntersectionFunctionTableOffset(
224 &self,
225 intersection_function_table_offset: NSUInteger,
226 );
227
228 #[unsafe(method(opaque))]
230 #[unsafe(method_family = none)]
231 pub fn opaque(&self) -> bool;
232
233 #[unsafe(method(setOpaque:))]
235 #[unsafe(method_family = none)]
236 pub fn setOpaque(&self, opaque: bool);
237
238 #[unsafe(method(allowDuplicateIntersectionFunctionInvocation))]
241 #[unsafe(method_family = none)]
242 pub fn allowDuplicateIntersectionFunctionInvocation(&self) -> bool;
243
244 #[unsafe(method(setAllowDuplicateIntersectionFunctionInvocation:))]
246 #[unsafe(method_family = none)]
247 pub fn setAllowDuplicateIntersectionFunctionInvocation(
248 &self,
249 allow_duplicate_intersection_function_invocation: bool,
250 );
251
252 #[unsafe(method(label))]
254 #[unsafe(method_family = none)]
255 pub fn label(&self) -> Option<Retained<NSString>>;
256
257 #[unsafe(method(setLabel:))]
261 #[unsafe(method_family = none)]
262 pub fn setLabel(&self, label: Option<&NSString>);
263
264 #[cfg(all(
265 feature = "MTLAllocation",
266 feature = "MTLBuffer",
267 feature = "MTLResource"
268 ))]
269 #[unsafe(method(primitiveDataBuffer))]
271 #[unsafe(method_family = none)]
272 pub fn primitiveDataBuffer(&self) -> Option<Retained<ProtocolObject<dyn MTLBuffer>>>;
273
274 #[cfg(all(
275 feature = "MTLAllocation",
276 feature = "MTLBuffer",
277 feature = "MTLResource"
278 ))]
279 #[unsafe(method(setPrimitiveDataBuffer:))]
281 #[unsafe(method_family = none)]
282 pub fn setPrimitiveDataBuffer(
283 &self,
284 primitive_data_buffer: Option<&ProtocolObject<dyn MTLBuffer>>,
285 );
286
287 #[unsafe(method(primitiveDataBufferOffset))]
289 #[unsafe(method_family = none)]
290 pub fn primitiveDataBufferOffset(&self) -> NSUInteger;
291
292 #[unsafe(method(setPrimitiveDataBufferOffset:))]
298 #[unsafe(method_family = none)]
299 pub unsafe fn setPrimitiveDataBufferOffset(&self, primitive_data_buffer_offset: NSUInteger);
300
301 #[unsafe(method(primitiveDataStride))]
304 #[unsafe(method_family = none)]
305 pub fn primitiveDataStride(&self) -> NSUInteger;
306
307 #[unsafe(method(setPrimitiveDataStride:))]
309 #[unsafe(method_family = none)]
310 pub fn setPrimitiveDataStride(&self, primitive_data_stride: NSUInteger);
311
312 #[unsafe(method(primitiveDataElementSize))]
315 #[unsafe(method_family = none)]
316 pub fn primitiveDataElementSize(&self) -> NSUInteger;
317
318 #[unsafe(method(setPrimitiveDataElementSize:))]
320 #[unsafe(method_family = none)]
321 pub fn setPrimitiveDataElementSize(&self, primitive_data_element_size: NSUInteger);
322 );
323}
324
325impl MTLAccelerationStructureGeometryDescriptor {
327 extern_methods!(
328 #[unsafe(method(init))]
329 #[unsafe(method_family = init)]
330 pub fn init(this: Allocated<Self>) -> Retained<Self>;
331
332 #[unsafe(method(new))]
333 #[unsafe(method_family = new)]
334 pub fn new() -> Retained<Self>;
335 );
336}
337
338impl DefaultRetained for MTLAccelerationStructureGeometryDescriptor {
339 #[inline]
340 fn default_retained() -> Retained<Self> {
341 Self::new()
342 }
343}
344
345#[repr(transparent)]
351#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
352pub struct MTLMotionBorderMode(pub u32);
353impl MTLMotionBorderMode {
354 #[doc(alias = "MTLMotionBorderModeClamp")]
356 pub const Clamp: Self = Self(0);
357 #[doc(alias = "MTLMotionBorderModeVanish")]
359 pub const Vanish: Self = Self(1);
360}
361
362unsafe impl Encode for MTLMotionBorderMode {
363 const ENCODING: Encoding = u32::ENCODING;
364}
365
366unsafe impl RefEncode for MTLMotionBorderMode {
367 const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
368}
369
370extern_class!(
371 #[unsafe(super(MTLAccelerationStructureDescriptor, NSObject))]
375 #[derive(Debug, PartialEq, Eq, Hash)]
376 pub struct MTLPrimitiveAccelerationStructureDescriptor;
377);
378
379extern_conformance!(
380 unsafe impl NSCopying for MTLPrimitiveAccelerationStructureDescriptor {}
381);
382
383unsafe impl CopyingHelper for MTLPrimitiveAccelerationStructureDescriptor {
384 type Result = Self;
385}
386
387extern_conformance!(
388 unsafe impl NSObjectProtocol for MTLPrimitiveAccelerationStructureDescriptor {}
389);
390
391impl MTLPrimitiveAccelerationStructureDescriptor {
392 extern_methods!(
393 #[unsafe(method(geometryDescriptors))]
396 #[unsafe(method_family = none)]
397 pub fn geometryDescriptors(
398 &self,
399 ) -> Option<Retained<NSArray<MTLAccelerationStructureGeometryDescriptor>>>;
400
401 #[unsafe(method(setGeometryDescriptors:))]
403 #[unsafe(method_family = none)]
404 pub fn setGeometryDescriptors(
405 &self,
406 geometry_descriptors: Option<&NSArray<MTLAccelerationStructureGeometryDescriptor>>,
407 );
408
409 #[unsafe(method(motionStartBorderMode))]
412 #[unsafe(method_family = none)]
413 pub fn motionStartBorderMode(&self) -> MTLMotionBorderMode;
414
415 #[unsafe(method(setMotionStartBorderMode:))]
417 #[unsafe(method_family = none)]
418 pub fn setMotionStartBorderMode(&self, motion_start_border_mode: MTLMotionBorderMode);
419
420 #[unsafe(method(motionEndBorderMode))]
423 #[unsafe(method_family = none)]
424 pub fn motionEndBorderMode(&self) -> MTLMotionBorderMode;
425
426 #[unsafe(method(setMotionEndBorderMode:))]
428 #[unsafe(method_family = none)]
429 pub fn setMotionEndBorderMode(&self, motion_end_border_mode: MTLMotionBorderMode);
430
431 #[unsafe(method(motionStartTime))]
433 #[unsafe(method_family = none)]
434 pub fn motionStartTime(&self) -> c_float;
435
436 #[unsafe(method(setMotionStartTime:))]
438 #[unsafe(method_family = none)]
439 pub fn setMotionStartTime(&self, motion_start_time: c_float);
440
441 #[unsafe(method(motionEndTime))]
443 #[unsafe(method_family = none)]
444 pub fn motionEndTime(&self) -> c_float;
445
446 #[unsafe(method(setMotionEndTime:))]
448 #[unsafe(method_family = none)]
449 pub fn setMotionEndTime(&self, motion_end_time: c_float);
450
451 #[unsafe(method(motionKeyframeCount))]
453 #[unsafe(method_family = none)]
454 pub fn motionKeyframeCount(&self) -> NSUInteger;
455
456 #[unsafe(method(setMotionKeyframeCount:))]
462 #[unsafe(method_family = none)]
463 pub unsafe fn setMotionKeyframeCount(&self, motion_keyframe_count: NSUInteger);
464
465 #[unsafe(method(descriptor))]
466 #[unsafe(method_family = none)]
467 pub fn descriptor() -> Retained<Self>;
468 );
469}
470
471impl MTLPrimitiveAccelerationStructureDescriptor {
473 extern_methods!(
474 #[unsafe(method(init))]
475 #[unsafe(method_family = init)]
476 pub fn init(this: Allocated<Self>) -> Retained<Self>;
477
478 #[unsafe(method(new))]
479 #[unsafe(method_family = new)]
480 pub fn new() -> Retained<Self>;
481 );
482}
483
484impl DefaultRetained for MTLPrimitiveAccelerationStructureDescriptor {
485 #[inline]
486 fn default_retained() -> Retained<Self> {
487 Self::new()
488 }
489}
490
491extern_class!(
492 #[unsafe(super(MTLAccelerationStructureGeometryDescriptor, NSObject))]
496 #[derive(Debug, PartialEq, Eq, Hash)]
497 pub struct MTLAccelerationStructureTriangleGeometryDescriptor;
498);
499
500extern_conformance!(
501 unsafe impl NSCopying for MTLAccelerationStructureTriangleGeometryDescriptor {}
502);
503
504unsafe impl CopyingHelper for MTLAccelerationStructureTriangleGeometryDescriptor {
505 type Result = Self;
506}
507
508extern_conformance!(
509 unsafe impl NSObjectProtocol for MTLAccelerationStructureTriangleGeometryDescriptor {}
510);
511
512impl MTLAccelerationStructureTriangleGeometryDescriptor {
513 extern_methods!(
514 #[cfg(all(
515 feature = "MTLAllocation",
516 feature = "MTLBuffer",
517 feature = "MTLResource"
518 ))]
519 #[unsafe(method(vertexBuffer))]
522 #[unsafe(method_family = none)]
523 pub fn vertexBuffer(&self) -> Option<Retained<ProtocolObject<dyn MTLBuffer>>>;
524
525 #[cfg(all(
526 feature = "MTLAllocation",
527 feature = "MTLBuffer",
528 feature = "MTLResource"
529 ))]
530 #[unsafe(method(setVertexBuffer:))]
532 #[unsafe(method_family = none)]
533 pub fn setVertexBuffer(&self, vertex_buffer: Option<&ProtocolObject<dyn MTLBuffer>>);
534
535 #[unsafe(method(vertexBufferOffset))]
538 #[unsafe(method_family = none)]
539 pub fn vertexBufferOffset(&self) -> NSUInteger;
540
541 #[unsafe(method(setVertexBufferOffset:))]
547 #[unsafe(method_family = none)]
548 pub unsafe fn setVertexBufferOffset(&self, vertex_buffer_offset: NSUInteger);
549
550 #[cfg(feature = "MTLStageInputOutputDescriptor")]
551 #[unsafe(method(vertexFormat))]
554 #[unsafe(method_family = none)]
555 pub fn vertexFormat(&self) -> MTLAttributeFormat;
556
557 #[cfg(feature = "MTLStageInputOutputDescriptor")]
558 #[unsafe(method(setVertexFormat:))]
560 #[unsafe(method_family = none)]
561 pub fn setVertexFormat(&self, vertex_format: MTLAttributeFormat);
562
563 #[unsafe(method(vertexStride))]
566 #[unsafe(method_family = none)]
567 pub fn vertexStride(&self) -> NSUInteger;
568
569 #[unsafe(method(setVertexStride:))]
571 #[unsafe(method_family = none)]
572 pub fn setVertexStride(&self, vertex_stride: NSUInteger);
573
574 #[cfg(all(
575 feature = "MTLAllocation",
576 feature = "MTLBuffer",
577 feature = "MTLResource"
578 ))]
579 #[unsafe(method(indexBuffer))]
581 #[unsafe(method_family = none)]
582 pub fn indexBuffer(&self) -> Option<Retained<ProtocolObject<dyn MTLBuffer>>>;
583
584 #[cfg(all(
585 feature = "MTLAllocation",
586 feature = "MTLBuffer",
587 feature = "MTLResource"
588 ))]
589 #[unsafe(method(setIndexBuffer:))]
591 #[unsafe(method_family = none)]
592 pub fn setIndexBuffer(&self, index_buffer: Option<&ProtocolObject<dyn MTLBuffer>>);
593
594 #[unsafe(method(indexBufferOffset))]
597 #[unsafe(method_family = none)]
598 pub fn indexBufferOffset(&self) -> NSUInteger;
599
600 #[unsafe(method(setIndexBufferOffset:))]
606 #[unsafe(method_family = none)]
607 pub unsafe fn setIndexBufferOffset(&self, index_buffer_offset: NSUInteger);
608
609 #[cfg(feature = "MTLArgument")]
610 #[unsafe(method(indexType))]
612 #[unsafe(method_family = none)]
613 pub fn indexType(&self) -> MTLIndexType;
614
615 #[cfg(feature = "MTLArgument")]
616 #[unsafe(method(setIndexType:))]
618 #[unsafe(method_family = none)]
619 pub fn setIndexType(&self, index_type: MTLIndexType);
620
621 #[unsafe(method(triangleCount))]
623 #[unsafe(method_family = none)]
624 pub fn triangleCount(&self) -> NSUInteger;
625
626 #[unsafe(method(setTriangleCount:))]
628 #[unsafe(method_family = none)]
629 pub fn setTriangleCount(&self, triangle_count: NSUInteger);
630
631 #[cfg(all(
632 feature = "MTLAllocation",
633 feature = "MTLBuffer",
634 feature = "MTLResource"
635 ))]
636 #[unsafe(method(transformationMatrixBuffer))]
639 #[unsafe(method_family = none)]
640 pub fn transformationMatrixBuffer(&self)
641 -> Option<Retained<ProtocolObject<dyn MTLBuffer>>>;
642
643 #[cfg(all(
644 feature = "MTLAllocation",
645 feature = "MTLBuffer",
646 feature = "MTLResource"
647 ))]
648 #[unsafe(method(setTransformationMatrixBuffer:))]
656 #[unsafe(method_family = none)]
657 pub unsafe fn setTransformationMatrixBuffer(
658 &self,
659 transformation_matrix_buffer: Option<&ProtocolObject<dyn MTLBuffer>>,
660 );
661
662 #[unsafe(method(transformationMatrixBufferOffset))]
664 #[unsafe(method_family = none)]
665 pub fn transformationMatrixBufferOffset(&self) -> NSUInteger;
666
667 #[unsafe(method(setTransformationMatrixBufferOffset:))]
673 #[unsafe(method_family = none)]
674 pub unsafe fn setTransformationMatrixBufferOffset(
675 &self,
676 transformation_matrix_buffer_offset: NSUInteger,
677 );
678
679 #[unsafe(method(transformationMatrixLayout))]
682 #[unsafe(method_family = none)]
683 pub fn transformationMatrixLayout(&self) -> MTLMatrixLayout;
684
685 #[unsafe(method(setTransformationMatrixLayout:))]
687 #[unsafe(method_family = none)]
688 pub fn setTransformationMatrixLayout(&self, transformation_matrix_layout: MTLMatrixLayout);
689
690 #[unsafe(method(descriptor))]
691 #[unsafe(method_family = none)]
692 pub fn descriptor() -> Retained<Self>;
693 );
694}
695
696impl MTLAccelerationStructureTriangleGeometryDescriptor {
698 extern_methods!(
699 #[unsafe(method(init))]
700 #[unsafe(method_family = init)]
701 pub fn init(this: Allocated<Self>) -> Retained<Self>;
702
703 #[unsafe(method(new))]
704 #[unsafe(method_family = new)]
705 pub fn new() -> Retained<Self>;
706 );
707}
708
709impl DefaultRetained for MTLAccelerationStructureTriangleGeometryDescriptor {
710 #[inline]
711 fn default_retained() -> Retained<Self> {
712 Self::new()
713 }
714}
715
716extern_class!(
717 #[unsafe(super(MTLAccelerationStructureGeometryDescriptor, NSObject))]
721 #[derive(Debug, PartialEq, Eq, Hash)]
722 pub struct MTLAccelerationStructureBoundingBoxGeometryDescriptor;
723);
724
725extern_conformance!(
726 unsafe impl NSCopying for MTLAccelerationStructureBoundingBoxGeometryDescriptor {}
727);
728
729unsafe impl CopyingHelper for MTLAccelerationStructureBoundingBoxGeometryDescriptor {
730 type Result = Self;
731}
732
733extern_conformance!(
734 unsafe impl NSObjectProtocol for MTLAccelerationStructureBoundingBoxGeometryDescriptor {}
735);
736
737impl MTLAccelerationStructureBoundingBoxGeometryDescriptor {
738 extern_methods!(
739 #[cfg(all(
740 feature = "MTLAllocation",
741 feature = "MTLBuffer",
742 feature = "MTLResource"
743 ))]
744 #[unsafe(method(boundingBoxBuffer))]
746 #[unsafe(method_family = none)]
747 pub fn boundingBoxBuffer(&self) -> Option<Retained<ProtocolObject<dyn MTLBuffer>>>;
748
749 #[cfg(all(
750 feature = "MTLAllocation",
751 feature = "MTLBuffer",
752 feature = "MTLResource"
753 ))]
754 #[unsafe(method(setBoundingBoxBuffer:))]
756 #[unsafe(method_family = none)]
757 pub fn setBoundingBoxBuffer(
758 &self,
759 bounding_box_buffer: Option<&ProtocolObject<dyn MTLBuffer>>,
760 );
761
762 #[unsafe(method(boundingBoxBufferOffset))]
765 #[unsafe(method_family = none)]
766 pub fn boundingBoxBufferOffset(&self) -> NSUInteger;
767
768 #[unsafe(method(setBoundingBoxBufferOffset:))]
774 #[unsafe(method_family = none)]
775 pub unsafe fn setBoundingBoxBufferOffset(&self, bounding_box_buffer_offset: NSUInteger);
776
777 #[unsafe(method(boundingBoxStride))]
780 #[unsafe(method_family = none)]
781 pub fn boundingBoxStride(&self) -> NSUInteger;
782
783 #[unsafe(method(setBoundingBoxStride:))]
789 #[unsafe(method_family = none)]
790 pub unsafe fn setBoundingBoxStride(&self, bounding_box_stride: NSUInteger);
791
792 #[unsafe(method(boundingBoxCount))]
794 #[unsafe(method_family = none)]
795 pub fn boundingBoxCount(&self) -> NSUInteger;
796
797 #[unsafe(method(setBoundingBoxCount:))]
799 #[unsafe(method_family = none)]
800 pub fn setBoundingBoxCount(&self, bounding_box_count: NSUInteger);
801
802 #[unsafe(method(descriptor))]
803 #[unsafe(method_family = none)]
804 pub fn descriptor() -> Retained<Self>;
805 );
806}
807
808impl MTLAccelerationStructureBoundingBoxGeometryDescriptor {
810 extern_methods!(
811 #[unsafe(method(init))]
812 #[unsafe(method_family = init)]
813 pub fn init(this: Allocated<Self>) -> Retained<Self>;
814
815 #[unsafe(method(new))]
816 #[unsafe(method_family = new)]
817 pub fn new() -> Retained<Self>;
818 );
819}
820
821impl DefaultRetained for MTLAccelerationStructureBoundingBoxGeometryDescriptor {
822 #[inline]
823 fn default_retained() -> Retained<Self> {
824 Self::new()
825 }
826}
827
828extern_class!(
829 #[unsafe(super(NSObject))]
833 #[derive(Debug, PartialEq, Eq, Hash)]
834 pub struct MTLMotionKeyframeData;
835);
836
837extern_conformance!(
838 unsafe impl NSObjectProtocol for MTLMotionKeyframeData {}
839);
840
841impl MTLMotionKeyframeData {
842 extern_methods!(
843 #[cfg(all(
844 feature = "MTLAllocation",
845 feature = "MTLBuffer",
846 feature = "MTLResource"
847 ))]
848 #[unsafe(method(buffer))]
850 #[unsafe(method_family = none)]
851 pub fn buffer(&self) -> Option<Retained<ProtocolObject<dyn MTLBuffer>>>;
852
853 #[cfg(all(
854 feature = "MTLAllocation",
855 feature = "MTLBuffer",
856 feature = "MTLResource"
857 ))]
858 #[unsafe(method(setBuffer:))]
866 #[unsafe(method_family = none)]
867 pub unsafe fn setBuffer(&self, buffer: Option<&ProtocolObject<dyn MTLBuffer>>);
868
869 #[unsafe(method(offset))]
871 #[unsafe(method_family = none)]
872 pub fn offset(&self) -> NSUInteger;
873
874 #[unsafe(method(setOffset:))]
880 #[unsafe(method_family = none)]
881 pub unsafe fn setOffset(&self, offset: NSUInteger);
882
883 #[unsafe(method(data))]
884 #[unsafe(method_family = none)]
885 pub fn data() -> Retained<Self>;
886 );
887}
888
889impl MTLMotionKeyframeData {
891 extern_methods!(
892 #[unsafe(method(init))]
893 #[unsafe(method_family = init)]
894 pub fn init(this: Allocated<Self>) -> Retained<Self>;
895
896 #[unsafe(method(new))]
897 #[unsafe(method_family = new)]
898 pub fn new() -> Retained<Self>;
899 );
900}
901
902impl DefaultRetained for MTLMotionKeyframeData {
903 #[inline]
904 fn default_retained() -> Retained<Self> {
905 Self::new()
906 }
907}
908
909extern_class!(
910 #[unsafe(super(MTLAccelerationStructureGeometryDescriptor, NSObject))]
914 #[derive(Debug, PartialEq, Eq, Hash)]
915 pub struct MTLAccelerationStructureMotionTriangleGeometryDescriptor;
916);
917
918extern_conformance!(
919 unsafe impl NSCopying for MTLAccelerationStructureMotionTriangleGeometryDescriptor {}
920);
921
922unsafe impl CopyingHelper for MTLAccelerationStructureMotionTriangleGeometryDescriptor {
923 type Result = Self;
924}
925
926extern_conformance!(
927 unsafe impl NSObjectProtocol for MTLAccelerationStructureMotionTriangleGeometryDescriptor {}
928);
929
930impl MTLAccelerationStructureMotionTriangleGeometryDescriptor {
931 extern_methods!(
932 #[unsafe(method(vertexBuffers))]
934 #[unsafe(method_family = none)]
935 pub fn vertexBuffers(&self) -> Retained<NSArray<MTLMotionKeyframeData>>;
936
937 #[unsafe(method(setVertexBuffers:))]
941 #[unsafe(method_family = none)]
942 pub fn setVertexBuffers(&self, vertex_buffers: &NSArray<MTLMotionKeyframeData>);
943
944 #[cfg(feature = "MTLStageInputOutputDescriptor")]
945 #[unsafe(method(vertexFormat))]
948 #[unsafe(method_family = none)]
949 pub fn vertexFormat(&self) -> MTLAttributeFormat;
950
951 #[cfg(feature = "MTLStageInputOutputDescriptor")]
952 #[unsafe(method(setVertexFormat:))]
954 #[unsafe(method_family = none)]
955 pub fn setVertexFormat(&self, vertex_format: MTLAttributeFormat);
956
957 #[unsafe(method(vertexStride))]
960 #[unsafe(method_family = none)]
961 pub fn vertexStride(&self) -> NSUInteger;
962
963 #[unsafe(method(setVertexStride:))]
969 #[unsafe(method_family = none)]
970 pub unsafe fn setVertexStride(&self, vertex_stride: NSUInteger);
971
972 #[cfg(all(
973 feature = "MTLAllocation",
974 feature = "MTLBuffer",
975 feature = "MTLResource"
976 ))]
977 #[unsafe(method(indexBuffer))]
979 #[unsafe(method_family = none)]
980 pub fn indexBuffer(&self) -> Option<Retained<ProtocolObject<dyn MTLBuffer>>>;
981
982 #[cfg(all(
983 feature = "MTLAllocation",
984 feature = "MTLBuffer",
985 feature = "MTLResource"
986 ))]
987 #[unsafe(method(setIndexBuffer:))]
995 #[unsafe(method_family = none)]
996 pub unsafe fn setIndexBuffer(&self, index_buffer: Option<&ProtocolObject<dyn MTLBuffer>>);
997
998 #[unsafe(method(indexBufferOffset))]
1001 #[unsafe(method_family = none)]
1002 pub fn indexBufferOffset(&self) -> NSUInteger;
1003
1004 #[unsafe(method(setIndexBufferOffset:))]
1010 #[unsafe(method_family = none)]
1011 pub unsafe fn setIndexBufferOffset(&self, index_buffer_offset: NSUInteger);
1012
1013 #[cfg(feature = "MTLArgument")]
1014 #[unsafe(method(indexType))]
1016 #[unsafe(method_family = none)]
1017 pub fn indexType(&self) -> MTLIndexType;
1018
1019 #[cfg(feature = "MTLArgument")]
1020 #[unsafe(method(setIndexType:))]
1022 #[unsafe(method_family = none)]
1023 pub fn setIndexType(&self, index_type: MTLIndexType);
1024
1025 #[unsafe(method(triangleCount))]
1027 #[unsafe(method_family = none)]
1028 pub fn triangleCount(&self) -> NSUInteger;
1029
1030 #[unsafe(method(setTriangleCount:))]
1036 #[unsafe(method_family = none)]
1037 pub unsafe fn setTriangleCount(&self, triangle_count: NSUInteger);
1038
1039 #[cfg(all(
1040 feature = "MTLAllocation",
1041 feature = "MTLBuffer",
1042 feature = "MTLResource"
1043 ))]
1044 #[unsafe(method(transformationMatrixBuffer))]
1048 #[unsafe(method_family = none)]
1049 pub fn transformationMatrixBuffer(&self)
1050 -> Option<Retained<ProtocolObject<dyn MTLBuffer>>>;
1051
1052 #[cfg(all(
1053 feature = "MTLAllocation",
1054 feature = "MTLBuffer",
1055 feature = "MTLResource"
1056 ))]
1057 #[unsafe(method(setTransformationMatrixBuffer:))]
1065 #[unsafe(method_family = none)]
1066 pub unsafe fn setTransformationMatrixBuffer(
1067 &self,
1068 transformation_matrix_buffer: Option<&ProtocolObject<dyn MTLBuffer>>,
1069 );
1070
1071 #[unsafe(method(transformationMatrixBufferOffset))]
1073 #[unsafe(method_family = none)]
1074 pub fn transformationMatrixBufferOffset(&self) -> NSUInteger;
1075
1076 #[unsafe(method(setTransformationMatrixBufferOffset:))]
1082 #[unsafe(method_family = none)]
1083 pub unsafe fn setTransformationMatrixBufferOffset(
1084 &self,
1085 transformation_matrix_buffer_offset: NSUInteger,
1086 );
1087
1088 #[unsafe(method(transformationMatrixLayout))]
1091 #[unsafe(method_family = none)]
1092 pub fn transformationMatrixLayout(&self) -> MTLMatrixLayout;
1093
1094 #[unsafe(method(setTransformationMatrixLayout:))]
1096 #[unsafe(method_family = none)]
1097 pub fn setTransformationMatrixLayout(&self, transformation_matrix_layout: MTLMatrixLayout);
1098
1099 #[unsafe(method(descriptor))]
1100 #[unsafe(method_family = none)]
1101 pub fn descriptor() -> Retained<Self>;
1102 );
1103}
1104
1105impl MTLAccelerationStructureMotionTriangleGeometryDescriptor {
1107 extern_methods!(
1108 #[unsafe(method(init))]
1109 #[unsafe(method_family = init)]
1110 pub fn init(this: Allocated<Self>) -> Retained<Self>;
1111
1112 #[unsafe(method(new))]
1113 #[unsafe(method_family = new)]
1114 pub fn new() -> Retained<Self>;
1115 );
1116}
1117
1118impl DefaultRetained for MTLAccelerationStructureMotionTriangleGeometryDescriptor {
1119 #[inline]
1120 fn default_retained() -> Retained<Self> {
1121 Self::new()
1122 }
1123}
1124
1125extern_class!(
1126 #[unsafe(super(MTLAccelerationStructureGeometryDescriptor, NSObject))]
1130 #[derive(Debug, PartialEq, Eq, Hash)]
1131 pub struct MTLAccelerationStructureMotionBoundingBoxGeometryDescriptor;
1132);
1133
1134extern_conformance!(
1135 unsafe impl NSCopying for MTLAccelerationStructureMotionBoundingBoxGeometryDescriptor {}
1136);
1137
1138unsafe impl CopyingHelper for MTLAccelerationStructureMotionBoundingBoxGeometryDescriptor {
1139 type Result = Self;
1140}
1141
1142extern_conformance!(
1143 unsafe impl NSObjectProtocol for MTLAccelerationStructureMotionBoundingBoxGeometryDescriptor {}
1144);
1145
1146impl MTLAccelerationStructureMotionBoundingBoxGeometryDescriptor {
1147 extern_methods!(
1148 #[unsafe(method(boundingBoxBuffers))]
1150 #[unsafe(method_family = none)]
1151 pub fn boundingBoxBuffers(&self) -> Retained<NSArray<MTLMotionKeyframeData>>;
1152
1153 #[unsafe(method(setBoundingBoxBuffers:))]
1157 #[unsafe(method_family = none)]
1158 pub fn setBoundingBoxBuffers(&self, bounding_box_buffers: &NSArray<MTLMotionKeyframeData>);
1159
1160 #[unsafe(method(boundingBoxStride))]
1163 #[unsafe(method_family = none)]
1164 pub fn boundingBoxStride(&self) -> NSUInteger;
1165
1166 #[unsafe(method(setBoundingBoxStride:))]
1172 #[unsafe(method_family = none)]
1173 pub unsafe fn setBoundingBoxStride(&self, bounding_box_stride: NSUInteger);
1174
1175 #[unsafe(method(boundingBoxCount))]
1177 #[unsafe(method_family = none)]
1178 pub fn boundingBoxCount(&self) -> NSUInteger;
1179
1180 #[unsafe(method(setBoundingBoxCount:))]
1186 #[unsafe(method_family = none)]
1187 pub unsafe fn setBoundingBoxCount(&self, bounding_box_count: NSUInteger);
1188
1189 #[unsafe(method(descriptor))]
1190 #[unsafe(method_family = none)]
1191 pub fn descriptor() -> Retained<Self>;
1192 );
1193}
1194
1195impl MTLAccelerationStructureMotionBoundingBoxGeometryDescriptor {
1197 extern_methods!(
1198 #[unsafe(method(init))]
1199 #[unsafe(method_family = init)]
1200 pub fn init(this: Allocated<Self>) -> Retained<Self>;
1201
1202 #[unsafe(method(new))]
1203 #[unsafe(method_family = new)]
1204 pub fn new() -> Retained<Self>;
1205 );
1206}
1207
1208impl DefaultRetained for MTLAccelerationStructureMotionBoundingBoxGeometryDescriptor {
1209 #[inline]
1210 fn default_retained() -> Retained<Self> {
1211 Self::new()
1212 }
1213}
1214
1215#[repr(transparent)]
1220#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
1221pub struct MTLCurveType(pub NSInteger);
1222impl MTLCurveType {
1223 #[doc(alias = "MTLCurveTypeRound")]
1228 pub const Round: Self = Self(0);
1229 #[doc(alias = "MTLCurveTypeFlat")]
1234 pub const Flat: Self = Self(1);
1235}
1236
1237unsafe impl Encode for MTLCurveType {
1238 const ENCODING: Encoding = NSInteger::ENCODING;
1239}
1240
1241unsafe impl RefEncode for MTLCurveType {
1242 const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
1243}
1244
1245#[repr(transparent)]
1250#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
1251pub struct MTLCurveBasis(pub NSInteger);
1252impl MTLCurveBasis {
1253 #[doc(alias = "MTLCurveBasisBSpline")]
1260 pub const BSpline: Self = Self(0);
1261 #[doc(alias = "MTLCurveBasisCatmullRom")]
1277 pub const CatmullRom: Self = Self(1);
1278 #[doc(alias = "MTLCurveBasisLinear")]
1281 pub const Linear: Self = Self(2);
1282 #[doc(alias = "MTLCurveBasisBezier")]
1284 pub const Bezier: Self = Self(3);
1285}
1286
1287unsafe impl Encode for MTLCurveBasis {
1288 const ENCODING: Encoding = NSInteger::ENCODING;
1289}
1290
1291unsafe impl RefEncode for MTLCurveBasis {
1292 const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
1293}
1294
1295#[repr(transparent)]
1301#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
1302pub struct MTLCurveEndCaps(pub NSInteger);
1303impl MTLCurveEndCaps {
1304 #[doc(alias = "MTLCurveEndCapsNone")]
1306 pub const None: Self = Self(0);
1307 #[doc(alias = "MTLCurveEndCapsDisk")]
1309 pub const Disk: Self = Self(1);
1310 #[doc(alias = "MTLCurveEndCapsSphere")]
1312 pub const Sphere: Self = Self(2);
1313}
1314
1315unsafe impl Encode for MTLCurveEndCaps {
1316 const ENCODING: Encoding = NSInteger::ENCODING;
1317}
1318
1319unsafe impl RefEncode for MTLCurveEndCaps {
1320 const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
1321}
1322
1323extern_class!(
1324 #[unsafe(super(MTLAccelerationStructureGeometryDescriptor, NSObject))]
1329 #[derive(Debug, PartialEq, Eq, Hash)]
1330 pub struct MTLAccelerationStructureCurveGeometryDescriptor;
1331);
1332
1333extern_conformance!(
1334 unsafe impl NSCopying for MTLAccelerationStructureCurveGeometryDescriptor {}
1335);
1336
1337unsafe impl CopyingHelper for MTLAccelerationStructureCurveGeometryDescriptor {
1338 type Result = Self;
1339}
1340
1341extern_conformance!(
1342 unsafe impl NSObjectProtocol for MTLAccelerationStructureCurveGeometryDescriptor {}
1343);
1344
1345impl MTLAccelerationStructureCurveGeometryDescriptor {
1346 extern_methods!(
1347 #[cfg(all(
1348 feature = "MTLAllocation",
1349 feature = "MTLBuffer",
1350 feature = "MTLResource"
1351 ))]
1352 #[unsafe(method(controlPointBuffer))]
1356 #[unsafe(method_family = none)]
1357 pub fn controlPointBuffer(&self) -> Option<Retained<ProtocolObject<dyn MTLBuffer>>>;
1358
1359 #[cfg(all(
1360 feature = "MTLAllocation",
1361 feature = "MTLBuffer",
1362 feature = "MTLResource"
1363 ))]
1364 #[unsafe(method(setControlPointBuffer:))]
1372 #[unsafe(method_family = none)]
1373 pub unsafe fn setControlPointBuffer(
1374 &self,
1375 control_point_buffer: Option<&ProtocolObject<dyn MTLBuffer>>,
1376 );
1377
1378 #[unsafe(method(controlPointBufferOffset))]
1382 #[unsafe(method_family = none)]
1383 pub fn controlPointBufferOffset(&self) -> NSUInteger;
1384
1385 #[unsafe(method(setControlPointBufferOffset:))]
1391 #[unsafe(method_family = none)]
1392 pub unsafe fn setControlPointBufferOffset(&self, control_point_buffer_offset: NSUInteger);
1393
1394 #[unsafe(method(controlPointCount))]
1396 #[unsafe(method_family = none)]
1397 pub fn controlPointCount(&self) -> NSUInteger;
1398
1399 #[unsafe(method(setControlPointCount:))]
1405 #[unsafe(method_family = none)]
1406 pub unsafe fn setControlPointCount(&self, control_point_count: NSUInteger);
1407
1408 #[unsafe(method(controlPointStride))]
1413 #[unsafe(method_family = none)]
1414 pub fn controlPointStride(&self) -> NSUInteger;
1415
1416 #[unsafe(method(setControlPointStride:))]
1422 #[unsafe(method_family = none)]
1423 pub unsafe fn setControlPointStride(&self, control_point_stride: NSUInteger);
1424
1425 #[cfg(feature = "MTLStageInputOutputDescriptor")]
1426 #[unsafe(method(controlPointFormat))]
1429 #[unsafe(method_family = none)]
1430 pub fn controlPointFormat(&self) -> MTLAttributeFormat;
1431
1432 #[cfg(feature = "MTLStageInputOutputDescriptor")]
1433 #[unsafe(method(setControlPointFormat:))]
1435 #[unsafe(method_family = none)]
1436 pub fn setControlPointFormat(&self, control_point_format: MTLAttributeFormat);
1437
1438 #[cfg(all(
1439 feature = "MTLAllocation",
1440 feature = "MTLBuffer",
1441 feature = "MTLResource"
1442 ))]
1443 #[unsafe(method(radiusBuffer))]
1448 #[unsafe(method_family = none)]
1449 pub fn radiusBuffer(&self) -> Option<Retained<ProtocolObject<dyn MTLBuffer>>>;
1450
1451 #[cfg(all(
1452 feature = "MTLAllocation",
1453 feature = "MTLBuffer",
1454 feature = "MTLResource"
1455 ))]
1456 #[unsafe(method(setRadiusBuffer:))]
1464 #[unsafe(method_family = none)]
1465 pub unsafe fn setRadiusBuffer(&self, radius_buffer: Option<&ProtocolObject<dyn MTLBuffer>>);
1466
1467 #[unsafe(method(radiusBufferOffset))]
1470 #[unsafe(method_family = none)]
1471 pub fn radiusBufferOffset(&self) -> NSUInteger;
1472
1473 #[unsafe(method(setRadiusBufferOffset:))]
1479 #[unsafe(method_family = none)]
1480 pub unsafe fn setRadiusBufferOffset(&self, radius_buffer_offset: NSUInteger);
1481
1482 #[cfg(feature = "MTLStageInputOutputDescriptor")]
1483 #[unsafe(method(radiusFormat))]
1486 #[unsafe(method_family = none)]
1487 pub fn radiusFormat(&self) -> MTLAttributeFormat;
1488
1489 #[cfg(feature = "MTLStageInputOutputDescriptor")]
1490 #[unsafe(method(setRadiusFormat:))]
1492 #[unsafe(method_family = none)]
1493 pub fn setRadiusFormat(&self, radius_format: MTLAttributeFormat);
1494
1495 #[unsafe(method(radiusStride))]
1499 #[unsafe(method_family = none)]
1500 pub fn radiusStride(&self) -> NSUInteger;
1501
1502 #[unsafe(method(setRadiusStride:))]
1508 #[unsafe(method_family = none)]
1509 pub unsafe fn setRadiusStride(&self, radius_stride: NSUInteger);
1510
1511 #[cfg(all(
1512 feature = "MTLAllocation",
1513 feature = "MTLBuffer",
1514 feature = "MTLResource"
1515 ))]
1516 #[unsafe(method(indexBuffer))]
1519 #[unsafe(method_family = none)]
1520 pub fn indexBuffer(&self) -> Option<Retained<ProtocolObject<dyn MTLBuffer>>>;
1521
1522 #[cfg(all(
1523 feature = "MTLAllocation",
1524 feature = "MTLBuffer",
1525 feature = "MTLResource"
1526 ))]
1527 #[unsafe(method(setIndexBuffer:))]
1535 #[unsafe(method_family = none)]
1536 pub unsafe fn setIndexBuffer(&self, index_buffer: Option<&ProtocolObject<dyn MTLBuffer>>);
1537
1538 #[unsafe(method(indexBufferOffset))]
1542 #[unsafe(method_family = none)]
1543 pub fn indexBufferOffset(&self) -> NSUInteger;
1544
1545 #[unsafe(method(setIndexBufferOffset:))]
1551 #[unsafe(method_family = none)]
1552 pub unsafe fn setIndexBufferOffset(&self, index_buffer_offset: NSUInteger);
1553
1554 #[cfg(feature = "MTLArgument")]
1555 #[unsafe(method(indexType))]
1557 #[unsafe(method_family = none)]
1558 pub fn indexType(&self) -> MTLIndexType;
1559
1560 #[cfg(feature = "MTLArgument")]
1561 #[unsafe(method(setIndexType:))]
1563 #[unsafe(method_family = none)]
1564 pub fn setIndexType(&self, index_type: MTLIndexType);
1565
1566 #[unsafe(method(segmentCount))]
1568 #[unsafe(method_family = none)]
1569 pub fn segmentCount(&self) -> NSUInteger;
1570
1571 #[unsafe(method(setSegmentCount:))]
1577 #[unsafe(method_family = none)]
1578 pub unsafe fn setSegmentCount(&self, segment_count: NSUInteger);
1579
1580 #[unsafe(method(segmentControlPointCount))]
1582 #[unsafe(method_family = none)]
1583 pub fn segmentControlPointCount(&self) -> NSUInteger;
1584
1585 #[unsafe(method(setSegmentControlPointCount:))]
1591 #[unsafe(method_family = none)]
1592 pub unsafe fn setSegmentControlPointCount(&self, segment_control_point_count: NSUInteger);
1593
1594 #[unsafe(method(curveType))]
1596 #[unsafe(method_family = none)]
1597 pub fn curveType(&self) -> MTLCurveType;
1598
1599 #[unsafe(method(setCurveType:))]
1601 #[unsafe(method_family = none)]
1602 pub fn setCurveType(&self, curve_type: MTLCurveType);
1603
1604 #[unsafe(method(curveBasis))]
1606 #[unsafe(method_family = none)]
1607 pub fn curveBasis(&self) -> MTLCurveBasis;
1608
1609 #[unsafe(method(setCurveBasis:))]
1611 #[unsafe(method_family = none)]
1612 pub fn setCurveBasis(&self, curve_basis: MTLCurveBasis);
1613
1614 #[unsafe(method(curveEndCaps))]
1616 #[unsafe(method_family = none)]
1617 pub fn curveEndCaps(&self) -> MTLCurveEndCaps;
1618
1619 #[unsafe(method(setCurveEndCaps:))]
1621 #[unsafe(method_family = none)]
1622 pub fn setCurveEndCaps(&self, curve_end_caps: MTLCurveEndCaps);
1623
1624 #[unsafe(method(descriptor))]
1625 #[unsafe(method_family = none)]
1626 pub fn descriptor() -> Retained<Self>;
1627 );
1628}
1629
1630impl MTLAccelerationStructureCurveGeometryDescriptor {
1632 extern_methods!(
1633 #[unsafe(method(init))]
1634 #[unsafe(method_family = init)]
1635 pub fn init(this: Allocated<Self>) -> Retained<Self>;
1636
1637 #[unsafe(method(new))]
1638 #[unsafe(method_family = new)]
1639 pub fn new() -> Retained<Self>;
1640 );
1641}
1642
1643impl DefaultRetained for MTLAccelerationStructureCurveGeometryDescriptor {
1644 #[inline]
1645 fn default_retained() -> Retained<Self> {
1646 Self::new()
1647 }
1648}
1649
1650extern_class!(
1651 #[unsafe(super(MTLAccelerationStructureGeometryDescriptor, NSObject))]
1656 #[derive(Debug, PartialEq, Eq, Hash)]
1657 pub struct MTLAccelerationStructureMotionCurveGeometryDescriptor;
1658);
1659
1660extern_conformance!(
1661 unsafe impl NSCopying for MTLAccelerationStructureMotionCurveGeometryDescriptor {}
1662);
1663
1664unsafe impl CopyingHelper for MTLAccelerationStructureMotionCurveGeometryDescriptor {
1665 type Result = Self;
1666}
1667
1668extern_conformance!(
1669 unsafe impl NSObjectProtocol for MTLAccelerationStructureMotionCurveGeometryDescriptor {}
1670);
1671
1672impl MTLAccelerationStructureMotionCurveGeometryDescriptor {
1673 extern_methods!(
1674 #[unsafe(method(controlPointBuffers))]
1681 #[unsafe(method_family = none)]
1682 pub fn controlPointBuffers(&self) -> Retained<NSArray<MTLMotionKeyframeData>>;
1683
1684 #[unsafe(method(setControlPointBuffers:))]
1688 #[unsafe(method_family = none)]
1689 pub fn setControlPointBuffers(
1690 &self,
1691 control_point_buffers: &NSArray<MTLMotionKeyframeData>,
1692 );
1693
1694 #[unsafe(method(controlPointCount))]
1696 #[unsafe(method_family = none)]
1697 pub fn controlPointCount(&self) -> NSUInteger;
1698
1699 #[unsafe(method(setControlPointCount:))]
1705 #[unsafe(method_family = none)]
1706 pub unsafe fn setControlPointCount(&self, control_point_count: NSUInteger);
1707
1708 #[unsafe(method(controlPointStride))]
1713 #[unsafe(method_family = none)]
1714 pub fn controlPointStride(&self) -> NSUInteger;
1715
1716 #[unsafe(method(setControlPointStride:))]
1722 #[unsafe(method_family = none)]
1723 pub unsafe fn setControlPointStride(&self, control_point_stride: NSUInteger);
1724
1725 #[cfg(feature = "MTLStageInputOutputDescriptor")]
1726 #[unsafe(method(controlPointFormat))]
1729 #[unsafe(method_family = none)]
1730 pub fn controlPointFormat(&self) -> MTLAttributeFormat;
1731
1732 #[cfg(feature = "MTLStageInputOutputDescriptor")]
1733 #[unsafe(method(setControlPointFormat:))]
1735 #[unsafe(method_family = none)]
1736 pub fn setControlPointFormat(&self, control_point_format: MTLAttributeFormat);
1737
1738 #[unsafe(method(radiusBuffers))]
1745 #[unsafe(method_family = none)]
1746 pub fn radiusBuffers(&self) -> Retained<NSArray<MTLMotionKeyframeData>>;
1747
1748 #[unsafe(method(setRadiusBuffers:))]
1752 #[unsafe(method_family = none)]
1753 pub fn setRadiusBuffers(&self, radius_buffers: &NSArray<MTLMotionKeyframeData>);
1754
1755 #[cfg(feature = "MTLStageInputOutputDescriptor")]
1756 #[unsafe(method(radiusFormat))]
1759 #[unsafe(method_family = none)]
1760 pub fn radiusFormat(&self) -> MTLAttributeFormat;
1761
1762 #[cfg(feature = "MTLStageInputOutputDescriptor")]
1763 #[unsafe(method(setRadiusFormat:))]
1765 #[unsafe(method_family = none)]
1766 pub fn setRadiusFormat(&self, radius_format: MTLAttributeFormat);
1767
1768 #[unsafe(method(radiusStride))]
1771 #[unsafe(method_family = none)]
1772 pub fn radiusStride(&self) -> NSUInteger;
1773
1774 #[unsafe(method(setRadiusStride:))]
1780 #[unsafe(method_family = none)]
1781 pub unsafe fn setRadiusStride(&self, radius_stride: NSUInteger);
1782
1783 #[cfg(all(
1784 feature = "MTLAllocation",
1785 feature = "MTLBuffer",
1786 feature = "MTLResource"
1787 ))]
1788 #[unsafe(method(indexBuffer))]
1791 #[unsafe(method_family = none)]
1792 pub fn indexBuffer(&self) -> Option<Retained<ProtocolObject<dyn MTLBuffer>>>;
1793
1794 #[cfg(all(
1795 feature = "MTLAllocation",
1796 feature = "MTLBuffer",
1797 feature = "MTLResource"
1798 ))]
1799 #[unsafe(method(setIndexBuffer:))]
1807 #[unsafe(method_family = none)]
1808 pub unsafe fn setIndexBuffer(&self, index_buffer: Option<&ProtocolObject<dyn MTLBuffer>>);
1809
1810 #[unsafe(method(indexBufferOffset))]
1814 #[unsafe(method_family = none)]
1815 pub fn indexBufferOffset(&self) -> NSUInteger;
1816
1817 #[unsafe(method(setIndexBufferOffset:))]
1823 #[unsafe(method_family = none)]
1824 pub unsafe fn setIndexBufferOffset(&self, index_buffer_offset: NSUInteger);
1825
1826 #[cfg(feature = "MTLArgument")]
1827 #[unsafe(method(indexType))]
1829 #[unsafe(method_family = none)]
1830 pub fn indexType(&self) -> MTLIndexType;
1831
1832 #[cfg(feature = "MTLArgument")]
1833 #[unsafe(method(setIndexType:))]
1835 #[unsafe(method_family = none)]
1836 pub fn setIndexType(&self, index_type: MTLIndexType);
1837
1838 #[unsafe(method(segmentCount))]
1840 #[unsafe(method_family = none)]
1841 pub fn segmentCount(&self) -> NSUInteger;
1842
1843 #[unsafe(method(setSegmentCount:))]
1849 #[unsafe(method_family = none)]
1850 pub unsafe fn setSegmentCount(&self, segment_count: NSUInteger);
1851
1852 #[unsafe(method(segmentControlPointCount))]
1854 #[unsafe(method_family = none)]
1855 pub fn segmentControlPointCount(&self) -> NSUInteger;
1856
1857 #[unsafe(method(setSegmentControlPointCount:))]
1863 #[unsafe(method_family = none)]
1864 pub unsafe fn setSegmentControlPointCount(&self, segment_control_point_count: NSUInteger);
1865
1866 #[unsafe(method(curveType))]
1868 #[unsafe(method_family = none)]
1869 pub fn curveType(&self) -> MTLCurveType;
1870
1871 #[unsafe(method(setCurveType:))]
1873 #[unsafe(method_family = none)]
1874 pub fn setCurveType(&self, curve_type: MTLCurveType);
1875
1876 #[unsafe(method(curveBasis))]
1878 #[unsafe(method_family = none)]
1879 pub fn curveBasis(&self) -> MTLCurveBasis;
1880
1881 #[unsafe(method(setCurveBasis:))]
1883 #[unsafe(method_family = none)]
1884 pub fn setCurveBasis(&self, curve_basis: MTLCurveBasis);
1885
1886 #[unsafe(method(curveEndCaps))]
1888 #[unsafe(method_family = none)]
1889 pub fn curveEndCaps(&self) -> MTLCurveEndCaps;
1890
1891 #[unsafe(method(setCurveEndCaps:))]
1893 #[unsafe(method_family = none)]
1894 pub fn setCurveEndCaps(&self, curve_end_caps: MTLCurveEndCaps);
1895
1896 #[unsafe(method(descriptor))]
1897 #[unsafe(method_family = none)]
1898 pub fn descriptor() -> Retained<Self>;
1899 );
1900}
1901
1902impl MTLAccelerationStructureMotionCurveGeometryDescriptor {
1904 extern_methods!(
1905 #[unsafe(method(init))]
1906 #[unsafe(method_family = init)]
1907 pub fn init(this: Allocated<Self>) -> Retained<Self>;
1908
1909 #[unsafe(method(new))]
1910 #[unsafe(method_family = new)]
1911 pub fn new() -> Retained<Self>;
1912 );
1913}
1914
1915impl DefaultRetained for MTLAccelerationStructureMotionCurveGeometryDescriptor {
1916 #[inline]
1917 fn default_retained() -> Retained<Self> {
1918 Self::new()
1919 }
1920}
1921
1922#[cfg(feature = "MTLAccelerationStructureTypes")]
1924#[repr(C)]
1925#[derive(Clone, Copy, Debug, PartialEq)]
1926pub struct MTLAccelerationStructureInstanceDescriptor {
1927 pub transformationMatrix: MTLPackedFloat4x3,
1929 pub options: MTLAccelerationStructureInstanceOptions,
1931 pub mask: u32,
1933 pub intersectionFunctionTableOffset: u32,
1935 pub accelerationStructureIndex: u32,
1937}
1938
1939#[cfg(feature = "MTLAccelerationStructureTypes")]
1940unsafe impl Encode for MTLAccelerationStructureInstanceDescriptor {
1941 const ENCODING: Encoding = Encoding::Struct(
1942 "?",
1943 &[
1944 <MTLPackedFloat4x3>::ENCODING,
1945 <MTLAccelerationStructureInstanceOptions>::ENCODING,
1946 <u32>::ENCODING,
1947 <u32>::ENCODING,
1948 <u32>::ENCODING,
1949 ],
1950 );
1951}
1952
1953#[cfg(feature = "MTLAccelerationStructureTypes")]
1954unsafe impl RefEncode for MTLAccelerationStructureInstanceDescriptor {
1955 const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
1956}
1957
1958#[cfg(feature = "MTLAccelerationStructureTypes")]
1960#[repr(C)]
1961#[derive(Clone, Copy, Debug, PartialEq)]
1962pub struct MTLAccelerationStructureUserIDInstanceDescriptor {
1963 pub transformationMatrix: MTLPackedFloat4x3,
1965 pub options: MTLAccelerationStructureInstanceOptions,
1967 pub mask: u32,
1969 pub intersectionFunctionTableOffset: u32,
1971 pub accelerationStructureIndex: u32,
1973 pub userID: u32,
1976}
1977
1978#[cfg(feature = "MTLAccelerationStructureTypes")]
1979unsafe impl Encode for MTLAccelerationStructureUserIDInstanceDescriptor {
1980 const ENCODING: Encoding = Encoding::Struct(
1981 "?",
1982 &[
1983 <MTLPackedFloat4x3>::ENCODING,
1984 <MTLAccelerationStructureInstanceOptions>::ENCODING,
1985 <u32>::ENCODING,
1986 <u32>::ENCODING,
1987 <u32>::ENCODING,
1988 <u32>::ENCODING,
1989 ],
1990 );
1991}
1992
1993#[cfg(feature = "MTLAccelerationStructureTypes")]
1994unsafe impl RefEncode for MTLAccelerationStructureUserIDInstanceDescriptor {
1995 const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
1996}
1997
1998#[repr(transparent)]
2001#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
2002pub struct MTLAccelerationStructureInstanceDescriptorType(pub NSUInteger);
2003impl MTLAccelerationStructureInstanceDescriptorType {
2004 #[doc(alias = "MTLAccelerationStructureInstanceDescriptorTypeDefault")]
2006 pub const Default: Self = Self(0);
2007 #[doc(alias = "MTLAccelerationStructureInstanceDescriptorTypeUserID")]
2009 pub const UserID: Self = Self(1);
2010 #[doc(alias = "MTLAccelerationStructureInstanceDescriptorTypeMotion")]
2012 pub const Motion: Self = Self(2);
2013 #[doc(alias = "MTLAccelerationStructureInstanceDescriptorTypeIndirect")]
2015 pub const Indirect: Self = Self(3);
2016 #[doc(alias = "MTLAccelerationStructureInstanceDescriptorTypeIndirectMotion")]
2018 pub const IndirectMotion: Self = Self(4);
2019}
2020
2021unsafe impl Encode for MTLAccelerationStructureInstanceDescriptorType {
2022 const ENCODING: Encoding = NSUInteger::ENCODING;
2023}
2024
2025unsafe impl RefEncode for MTLAccelerationStructureInstanceDescriptorType {
2026 const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
2027}
2028
2029#[repr(C)]
2031#[derive(Clone, Copy, Debug, PartialEq)]
2032pub struct MTLAccelerationStructureMotionInstanceDescriptor {
2033 pub options: MTLAccelerationStructureInstanceOptions,
2035 pub mask: u32,
2037 pub intersectionFunctionTableOffset: u32,
2039 pub accelerationStructureIndex: u32,
2041 pub userID: u32,
2044 pub motionTransformsStartIndex: u32,
2048 pub motionTransformsCount: u32,
2051 pub motionStartBorderMode: MTLMotionBorderMode,
2054 pub motionEndBorderMode: MTLMotionBorderMode,
2057 pub motionStartTime: c_float,
2059 pub motionEndTime: c_float,
2061}
2062
2063unsafe impl Encode for MTLAccelerationStructureMotionInstanceDescriptor {
2064 const ENCODING: Encoding = Encoding::Struct(
2065 "?",
2066 &[
2067 <MTLAccelerationStructureInstanceOptions>::ENCODING,
2068 <u32>::ENCODING,
2069 <u32>::ENCODING,
2070 <u32>::ENCODING,
2071 <u32>::ENCODING,
2072 <u32>::ENCODING,
2073 <u32>::ENCODING,
2074 <MTLMotionBorderMode>::ENCODING,
2075 <MTLMotionBorderMode>::ENCODING,
2076 <c_float>::ENCODING,
2077 <c_float>::ENCODING,
2078 ],
2079 );
2080}
2081
2082unsafe impl RefEncode for MTLAccelerationStructureMotionInstanceDescriptor {
2083 const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
2084}
2085
2086#[cfg(all(feature = "MTLAccelerationStructureTypes", feature = "MTLTypes"))]
2088#[repr(C)]
2089#[derive(Clone, Copy, Debug, PartialEq)]
2090pub struct MTLIndirectAccelerationStructureInstanceDescriptor {
2091 pub transformationMatrix: MTLPackedFloat4x3,
2093 pub options: MTLAccelerationStructureInstanceOptions,
2095 pub mask: u32,
2097 pub intersectionFunctionTableOffset: u32,
2099 pub userID: u32,
2102 pub accelerationStructureID: MTLResourceID,
2104}
2105
2106#[cfg(all(feature = "MTLAccelerationStructureTypes", feature = "MTLTypes"))]
2107unsafe impl Encode for MTLIndirectAccelerationStructureInstanceDescriptor {
2108 const ENCODING: Encoding = Encoding::Struct(
2109 "?",
2110 &[
2111 <MTLPackedFloat4x3>::ENCODING,
2112 <MTLAccelerationStructureInstanceOptions>::ENCODING,
2113 <u32>::ENCODING,
2114 <u32>::ENCODING,
2115 <u32>::ENCODING,
2116 <MTLResourceID>::ENCODING,
2117 ],
2118 );
2119}
2120
2121#[cfg(all(feature = "MTLAccelerationStructureTypes", feature = "MTLTypes"))]
2122unsafe impl RefEncode for MTLIndirectAccelerationStructureInstanceDescriptor {
2123 const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
2124}
2125
2126#[cfg(feature = "MTLTypes")]
2128#[repr(C)]
2129#[derive(Clone, Copy, Debug, PartialEq)]
2130pub struct MTLIndirectAccelerationStructureMotionInstanceDescriptor {
2131 pub options: MTLAccelerationStructureInstanceOptions,
2133 pub mask: u32,
2135 pub intersectionFunctionTableOffset: u32,
2137 pub userID: u32,
2140 pub accelerationStructureID: MTLResourceID,
2142 pub motionTransformsStartIndex: u32,
2146 pub motionTransformsCount: u32,
2149 pub motionStartBorderMode: MTLMotionBorderMode,
2152 pub motionEndBorderMode: MTLMotionBorderMode,
2155 pub motionStartTime: c_float,
2157 pub motionEndTime: c_float,
2159}
2160
2161#[cfg(feature = "MTLTypes")]
2162unsafe impl Encode for MTLIndirectAccelerationStructureMotionInstanceDescriptor {
2163 const ENCODING: Encoding = Encoding::Struct(
2164 "?",
2165 &[
2166 <MTLAccelerationStructureInstanceOptions>::ENCODING,
2167 <u32>::ENCODING,
2168 <u32>::ENCODING,
2169 <u32>::ENCODING,
2170 <MTLResourceID>::ENCODING,
2171 <u32>::ENCODING,
2172 <u32>::ENCODING,
2173 <MTLMotionBorderMode>::ENCODING,
2174 <MTLMotionBorderMode>::ENCODING,
2175 <c_float>::ENCODING,
2176 <c_float>::ENCODING,
2177 ],
2178 );
2179}
2180
2181#[cfg(feature = "MTLTypes")]
2182unsafe impl RefEncode for MTLIndirectAccelerationStructureMotionInstanceDescriptor {
2183 const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
2184}
2185
2186#[repr(transparent)]
2189#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
2190pub struct MTLTransformType(pub NSInteger);
2191impl MTLTransformType {
2192 #[doc(alias = "MTLTransformTypePackedFloat4x3")]
2195 pub const PackedFloat4x3: Self = Self(0);
2196 #[doc(alias = "MTLTransformTypeComponent")]
2200 pub const Component: Self = Self(1);
2201}
2202
2203unsafe impl Encode for MTLTransformType {
2204 const ENCODING: Encoding = NSInteger::ENCODING;
2205}
2206
2207unsafe impl RefEncode for MTLTransformType {
2208 const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
2209}
2210
2211extern_class!(
2212 #[unsafe(super(MTLAccelerationStructureDescriptor, NSObject))]
2216 #[derive(Debug, PartialEq, Eq, Hash)]
2217 pub struct MTLInstanceAccelerationStructureDescriptor;
2218);
2219
2220extern_conformance!(
2221 unsafe impl NSCopying for MTLInstanceAccelerationStructureDescriptor {}
2222);
2223
2224unsafe impl CopyingHelper for MTLInstanceAccelerationStructureDescriptor {
2225 type Result = Self;
2226}
2227
2228extern_conformance!(
2229 unsafe impl NSObjectProtocol for MTLInstanceAccelerationStructureDescriptor {}
2230);
2231
2232impl MTLInstanceAccelerationStructureDescriptor {
2233 extern_methods!(
2234 #[cfg(all(
2235 feature = "MTLAllocation",
2236 feature = "MTLBuffer",
2237 feature = "MTLResource"
2238 ))]
2239 #[unsafe(method(instanceDescriptorBuffer))]
2241 #[unsafe(method_family = none)]
2242 pub fn instanceDescriptorBuffer(&self) -> Option<Retained<ProtocolObject<dyn MTLBuffer>>>;
2243
2244 #[cfg(all(
2245 feature = "MTLAllocation",
2246 feature = "MTLBuffer",
2247 feature = "MTLResource"
2248 ))]
2249 #[unsafe(method(setInstanceDescriptorBuffer:))]
2251 #[unsafe(method_family = none)]
2252 pub fn setInstanceDescriptorBuffer(
2253 &self,
2254 instance_descriptor_buffer: Option<&ProtocolObject<dyn MTLBuffer>>,
2255 );
2256
2257 #[unsafe(method(instanceDescriptorBufferOffset))]
2260 #[unsafe(method_family = none)]
2261 pub fn instanceDescriptorBufferOffset(&self) -> NSUInteger;
2262
2263 #[unsafe(method(setInstanceDescriptorBufferOffset:))]
2269 #[unsafe(method_family = none)]
2270 pub unsafe fn setInstanceDescriptorBufferOffset(
2271 &self,
2272 instance_descriptor_buffer_offset: NSUInteger,
2273 );
2274
2275 #[unsafe(method(instanceDescriptorStride))]
2279 #[unsafe(method_family = none)]
2280 pub fn instanceDescriptorStride(&self) -> NSUInteger;
2281
2282 #[unsafe(method(setInstanceDescriptorStride:))]
2288 #[unsafe(method_family = none)]
2289 pub unsafe fn setInstanceDescriptorStride(&self, instance_descriptor_stride: NSUInteger);
2290
2291 #[unsafe(method(instanceCount))]
2293 #[unsafe(method_family = none)]
2294 pub fn instanceCount(&self) -> NSUInteger;
2295
2296 #[unsafe(method(setInstanceCount:))]
2298 #[unsafe(method_family = none)]
2299 pub fn setInstanceCount(&self, instance_count: NSUInteger);
2300
2301 #[cfg(all(feature = "MTLAllocation", feature = "MTLResource"))]
2302 #[unsafe(method(instancedAccelerationStructures))]
2304 #[unsafe(method_family = none)]
2305 pub fn instancedAccelerationStructures(
2306 &self,
2307 ) -> Option<Retained<NSArray<ProtocolObject<dyn MTLAccelerationStructure>>>>;
2308
2309 #[cfg(all(feature = "MTLAllocation", feature = "MTLResource"))]
2310 #[unsafe(method(setInstancedAccelerationStructures:))]
2312 #[unsafe(method_family = none)]
2313 pub fn setInstancedAccelerationStructures(
2314 &self,
2315 instanced_acceleration_structures: Option<
2316 &NSArray<ProtocolObject<dyn MTLAccelerationStructure>>,
2317 >,
2318 );
2319
2320 #[unsafe(method(instanceDescriptorType))]
2323 #[unsafe(method_family = none)]
2324 pub fn instanceDescriptorType(&self) -> MTLAccelerationStructureInstanceDescriptorType;
2325
2326 #[unsafe(method(setInstanceDescriptorType:))]
2328 #[unsafe(method_family = none)]
2329 pub fn setInstanceDescriptorType(
2330 &self,
2331 instance_descriptor_type: MTLAccelerationStructureInstanceDescriptorType,
2332 );
2333
2334 #[cfg(all(
2335 feature = "MTLAllocation",
2336 feature = "MTLBuffer",
2337 feature = "MTLResource"
2338 ))]
2339 #[unsafe(method(motionTransformBuffer))]
2341 #[unsafe(method_family = none)]
2342 pub fn motionTransformBuffer(&self) -> Option<Retained<ProtocolObject<dyn MTLBuffer>>>;
2343
2344 #[cfg(all(
2345 feature = "MTLAllocation",
2346 feature = "MTLBuffer",
2347 feature = "MTLResource"
2348 ))]
2349 #[unsafe(method(setMotionTransformBuffer:))]
2357 #[unsafe(method_family = none)]
2358 pub unsafe fn setMotionTransformBuffer(
2359 &self,
2360 motion_transform_buffer: Option<&ProtocolObject<dyn MTLBuffer>>,
2361 );
2362
2363 #[unsafe(method(motionTransformBufferOffset))]
2366 #[unsafe(method_family = none)]
2367 pub fn motionTransformBufferOffset(&self) -> NSUInteger;
2368
2369 #[unsafe(method(setMotionTransformBufferOffset:))]
2375 #[unsafe(method_family = none)]
2376 pub unsafe fn setMotionTransformBufferOffset(
2377 &self,
2378 motion_transform_buffer_offset: NSUInteger,
2379 );
2380
2381 #[unsafe(method(motionTransformCount))]
2383 #[unsafe(method_family = none)]
2384 pub fn motionTransformCount(&self) -> NSUInteger;
2385
2386 #[unsafe(method(setMotionTransformCount:))]
2392 #[unsafe(method_family = none)]
2393 pub unsafe fn setMotionTransformCount(&self, motion_transform_count: NSUInteger);
2394
2395 #[unsafe(method(instanceTransformationMatrixLayout))]
2399 #[unsafe(method_family = none)]
2400 pub fn instanceTransformationMatrixLayout(&self) -> MTLMatrixLayout;
2401
2402 #[unsafe(method(setInstanceTransformationMatrixLayout:))]
2404 #[unsafe(method_family = none)]
2405 pub fn setInstanceTransformationMatrixLayout(
2406 &self,
2407 instance_transformation_matrix_layout: MTLMatrixLayout,
2408 );
2409
2410 #[unsafe(method(motionTransformType))]
2412 #[unsafe(method_family = none)]
2413 pub fn motionTransformType(&self) -> MTLTransformType;
2414
2415 #[unsafe(method(setMotionTransformType:))]
2417 #[unsafe(method_family = none)]
2418 pub fn setMotionTransformType(&self, motion_transform_type: MTLTransformType);
2419
2420 #[unsafe(method(motionTransformStride))]
2423 #[unsafe(method_family = none)]
2424 pub fn motionTransformStride(&self) -> NSUInteger;
2425
2426 #[unsafe(method(setMotionTransformStride:))]
2432 #[unsafe(method_family = none)]
2433 pub unsafe fn setMotionTransformStride(&self, motion_transform_stride: NSUInteger);
2434
2435 #[unsafe(method(descriptor))]
2436 #[unsafe(method_family = none)]
2437 pub fn descriptor() -> Retained<Self>;
2438 );
2439}
2440
2441impl MTLInstanceAccelerationStructureDescriptor {
2443 extern_methods!(
2444 #[unsafe(method(init))]
2445 #[unsafe(method_family = init)]
2446 pub fn init(this: Allocated<Self>) -> Retained<Self>;
2447
2448 #[unsafe(method(new))]
2449 #[unsafe(method_family = new)]
2450 pub fn new() -> Retained<Self>;
2451 );
2452}
2453
2454impl DefaultRetained for MTLInstanceAccelerationStructureDescriptor {
2455 #[inline]
2456 fn default_retained() -> Retained<Self> {
2457 Self::new()
2458 }
2459}
2460
2461extern_class!(
2462 #[unsafe(super(MTLAccelerationStructureDescriptor, NSObject))]
2466 #[derive(Debug, PartialEq, Eq, Hash)]
2467 pub struct MTLIndirectInstanceAccelerationStructureDescriptor;
2468);
2469
2470extern_conformance!(
2471 unsafe impl NSCopying for MTLIndirectInstanceAccelerationStructureDescriptor {}
2472);
2473
2474unsafe impl CopyingHelper for MTLIndirectInstanceAccelerationStructureDescriptor {
2475 type Result = Self;
2476}
2477
2478extern_conformance!(
2479 unsafe impl NSObjectProtocol for MTLIndirectInstanceAccelerationStructureDescriptor {}
2480);
2481
2482impl MTLIndirectInstanceAccelerationStructureDescriptor {
2483 extern_methods!(
2484 #[cfg(all(
2485 feature = "MTLAllocation",
2486 feature = "MTLBuffer",
2487 feature = "MTLResource"
2488 ))]
2489 #[unsafe(method(instanceDescriptorBuffer))]
2491 #[unsafe(method_family = none)]
2492 pub fn instanceDescriptorBuffer(&self) -> Option<Retained<ProtocolObject<dyn MTLBuffer>>>;
2493
2494 #[cfg(all(
2495 feature = "MTLAllocation",
2496 feature = "MTLBuffer",
2497 feature = "MTLResource"
2498 ))]
2499 #[unsafe(method(setInstanceDescriptorBuffer:))]
2507 #[unsafe(method_family = none)]
2508 pub unsafe fn setInstanceDescriptorBuffer(
2509 &self,
2510 instance_descriptor_buffer: Option<&ProtocolObject<dyn MTLBuffer>>,
2511 );
2512
2513 #[unsafe(method(instanceDescriptorBufferOffset))]
2516 #[unsafe(method_family = none)]
2517 pub fn instanceDescriptorBufferOffset(&self) -> NSUInteger;
2518
2519 #[unsafe(method(setInstanceDescriptorBufferOffset:))]
2525 #[unsafe(method_family = none)]
2526 pub unsafe fn setInstanceDescriptorBufferOffset(
2527 &self,
2528 instance_descriptor_buffer_offset: NSUInteger,
2529 );
2530
2531 #[unsafe(method(instanceDescriptorStride))]
2535 #[unsafe(method_family = none)]
2536 pub fn instanceDescriptorStride(&self) -> NSUInteger;
2537
2538 #[unsafe(method(setInstanceDescriptorStride:))]
2544 #[unsafe(method_family = none)]
2545 pub unsafe fn setInstanceDescriptorStride(&self, instance_descriptor_stride: NSUInteger);
2546
2547 #[unsafe(method(maxInstanceCount))]
2549 #[unsafe(method_family = none)]
2550 pub fn maxInstanceCount(&self) -> NSUInteger;
2551
2552 #[unsafe(method(setMaxInstanceCount:))]
2558 #[unsafe(method_family = none)]
2559 pub unsafe fn setMaxInstanceCount(&self, max_instance_count: NSUInteger);
2560
2561 #[cfg(all(
2562 feature = "MTLAllocation",
2563 feature = "MTLBuffer",
2564 feature = "MTLResource"
2565 ))]
2566 #[unsafe(method(instanceCountBuffer))]
2569 #[unsafe(method_family = none)]
2570 pub fn instanceCountBuffer(&self) -> Option<Retained<ProtocolObject<dyn MTLBuffer>>>;
2571
2572 #[cfg(all(
2573 feature = "MTLAllocation",
2574 feature = "MTLBuffer",
2575 feature = "MTLResource"
2576 ))]
2577 #[unsafe(method(setInstanceCountBuffer:))]
2585 #[unsafe(method_family = none)]
2586 pub unsafe fn setInstanceCountBuffer(
2587 &self,
2588 instance_count_buffer: Option<&ProtocolObject<dyn MTLBuffer>>,
2589 );
2590
2591 #[unsafe(method(instanceCountBufferOffset))]
2594 #[unsafe(method_family = none)]
2595 pub fn instanceCountBufferOffset(&self) -> NSUInteger;
2596
2597 #[unsafe(method(setInstanceCountBufferOffset:))]
2603 #[unsafe(method_family = none)]
2604 pub unsafe fn setInstanceCountBufferOffset(&self, instance_count_buffer_offset: NSUInteger);
2605
2606 #[unsafe(method(instanceDescriptorType))]
2611 #[unsafe(method_family = none)]
2612 pub fn instanceDescriptorType(&self) -> MTLAccelerationStructureInstanceDescriptorType;
2613
2614 #[unsafe(method(setInstanceDescriptorType:))]
2616 #[unsafe(method_family = none)]
2617 pub fn setInstanceDescriptorType(
2618 &self,
2619 instance_descriptor_type: MTLAccelerationStructureInstanceDescriptorType,
2620 );
2621
2622 #[cfg(all(
2623 feature = "MTLAllocation",
2624 feature = "MTLBuffer",
2625 feature = "MTLResource"
2626 ))]
2627 #[unsafe(method(motionTransformBuffer))]
2629 #[unsafe(method_family = none)]
2630 pub fn motionTransformBuffer(&self) -> Option<Retained<ProtocolObject<dyn MTLBuffer>>>;
2631
2632 #[cfg(all(
2633 feature = "MTLAllocation",
2634 feature = "MTLBuffer",
2635 feature = "MTLResource"
2636 ))]
2637 #[unsafe(method(setMotionTransformBuffer:))]
2645 #[unsafe(method_family = none)]
2646 pub unsafe fn setMotionTransformBuffer(
2647 &self,
2648 motion_transform_buffer: Option<&ProtocolObject<dyn MTLBuffer>>,
2649 );
2650
2651 #[unsafe(method(motionTransformBufferOffset))]
2654 #[unsafe(method_family = none)]
2655 pub fn motionTransformBufferOffset(&self) -> NSUInteger;
2656
2657 #[unsafe(method(setMotionTransformBufferOffset:))]
2663 #[unsafe(method_family = none)]
2664 pub unsafe fn setMotionTransformBufferOffset(
2665 &self,
2666 motion_transform_buffer_offset: NSUInteger,
2667 );
2668
2669 #[unsafe(method(maxMotionTransformCount))]
2671 #[unsafe(method_family = none)]
2672 pub fn maxMotionTransformCount(&self) -> NSUInteger;
2673
2674 #[unsafe(method(setMaxMotionTransformCount:))]
2680 #[unsafe(method_family = none)]
2681 pub unsafe fn setMaxMotionTransformCount(&self, max_motion_transform_count: NSUInteger);
2682
2683 #[cfg(all(
2684 feature = "MTLAllocation",
2685 feature = "MTLBuffer",
2686 feature = "MTLResource"
2687 ))]
2688 #[unsafe(method(motionTransformCountBuffer))]
2691 #[unsafe(method_family = none)]
2692 pub fn motionTransformCountBuffer(&self)
2693 -> Option<Retained<ProtocolObject<dyn MTLBuffer>>>;
2694
2695 #[cfg(all(
2696 feature = "MTLAllocation",
2697 feature = "MTLBuffer",
2698 feature = "MTLResource"
2699 ))]
2700 #[unsafe(method(setMotionTransformCountBuffer:))]
2708 #[unsafe(method_family = none)]
2709 pub unsafe fn setMotionTransformCountBuffer(
2710 &self,
2711 motion_transform_count_buffer: Option<&ProtocolObject<dyn MTLBuffer>>,
2712 );
2713
2714 #[unsafe(method(motionTransformCountBufferOffset))]
2717 #[unsafe(method_family = none)]
2718 pub fn motionTransformCountBufferOffset(&self) -> NSUInteger;
2719
2720 #[unsafe(method(setMotionTransformCountBufferOffset:))]
2726 #[unsafe(method_family = none)]
2727 pub unsafe fn setMotionTransformCountBufferOffset(
2728 &self,
2729 motion_transform_count_buffer_offset: NSUInteger,
2730 );
2731
2732 #[unsafe(method(instanceTransformationMatrixLayout))]
2736 #[unsafe(method_family = none)]
2737 pub fn instanceTransformationMatrixLayout(&self) -> MTLMatrixLayout;
2738
2739 #[unsafe(method(setInstanceTransformationMatrixLayout:))]
2741 #[unsafe(method_family = none)]
2742 pub fn setInstanceTransformationMatrixLayout(
2743 &self,
2744 instance_transformation_matrix_layout: MTLMatrixLayout,
2745 );
2746
2747 #[unsafe(method(motionTransformType))]
2749 #[unsafe(method_family = none)]
2750 pub fn motionTransformType(&self) -> MTLTransformType;
2751
2752 #[unsafe(method(setMotionTransformType:))]
2754 #[unsafe(method_family = none)]
2755 pub fn setMotionTransformType(&self, motion_transform_type: MTLTransformType);
2756
2757 #[unsafe(method(motionTransformStride))]
2760 #[unsafe(method_family = none)]
2761 pub fn motionTransformStride(&self) -> NSUInteger;
2762
2763 #[unsafe(method(setMotionTransformStride:))]
2769 #[unsafe(method_family = none)]
2770 pub unsafe fn setMotionTransformStride(&self, motion_transform_stride: NSUInteger);
2771
2772 #[unsafe(method(descriptor))]
2773 #[unsafe(method_family = none)]
2774 pub fn descriptor() -> Retained<Self>;
2775 );
2776}
2777
2778impl MTLIndirectInstanceAccelerationStructureDescriptor {
2780 extern_methods!(
2781 #[unsafe(method(init))]
2782 #[unsafe(method_family = init)]
2783 pub fn init(this: Allocated<Self>) -> Retained<Self>;
2784
2785 #[unsafe(method(new))]
2786 #[unsafe(method_family = new)]
2787 pub fn new() -> Retained<Self>;
2788 );
2789}
2790
2791impl DefaultRetained for MTLIndirectInstanceAccelerationStructureDescriptor {
2792 #[inline]
2793 fn default_retained() -> Retained<Self> {
2794 Self::new()
2795 }
2796}
2797
2798extern_protocol!(
2799 #[cfg(all(feature = "MTLAllocation", feature = "MTLResource"))]
2801 pub unsafe trait MTLAccelerationStructure: MTLResource {
2802 #[unsafe(method(size))]
2803 #[unsafe(method_family = none)]
2804 fn size(&self) -> NSUInteger;
2805
2806 #[cfg(feature = "MTLTypes")]
2807 #[unsafe(method(gpuResourceID))]
2809 #[unsafe(method_family = none)]
2810 fn gpuResourceID(&self) -> MTLResourceID;
2811 }
2812);