Skip to content

MPSRayIntersector macOS xcode13.0 beta1

Sebastien Pouliot edited this page Jun 7, 2021 · 1 revision

#MPSRayIntersector.framework

diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/MetalPerformanceShaders.framework/Frameworks/MPSRayIntersector.framework/Headers/MPSRayIntersector.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/MetalPerformanceShaders.framework/Frameworks/MPSRayIntersector.framework/Headers/MPSRayIntersector.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/MetalPerformanceShaders.framework/Frameworks/MPSRayIntersector.framework/Headers/MPSRayIntersector.h	2021-03-16 13:55:57.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/MetalPerformanceShaders.framework/Frameworks/MPSRayIntersector.framework/Headers/MPSRayIntersector.h	2021-06-02 11:05:53.000000000 -0400
@@ -168,6 +168,26 @@
      * @brief Use the DistancePrimitiveIndexInstanceIndexCoordinates struct type
      */
     MPSIntersectionDataTypeDistancePrimitiveIndexInstanceIndexCoordinates = 4,
+
+    /**
+     * @brief Use the MPSIntersectionDistancePrimitiveIndexBufferIndex struct type
+     */
+    MPSIntersectionDataTypeDistancePrimitiveIndexBufferIndex MPS_ENUM_AVAILABLE_STARTING(macos(12.0), ios(15.0), macCatalyst(15.0), tvos(15.0)) = 5,
+
+    /**
+     * @brief Use the MPSIntersectionDistancePrimitiveIndexBufferIndexCoordinates struct type
+     */
+    MPSIntersectionDataTypeDistancePrimitiveIndexBufferIndexCoordinates MPS_ENUM_AVAILABLE_STARTING(macos(12.0), ios(15.0), macCatalyst(15.0), tvos(15.0)) = 6,
+
+    /**
+     * @brief Use the DistancePrimitiveIndexBufferIndexInstanceIndex struct type
+     */
+    MPSIntersectionDataTypeDistancePrimitiveIndexBufferIndexInstanceIndex MPS_ENUM_AVAILABLE_STARTING(macos(12.0), ios(15.0), macCatalyst(15.0), tvos(15.0)) = 7,
+
+    /**
+     * @brief Use the DistancePrimitiveIndexBufferIndexInstanceIndexCoordinates struct type
+     */
+    MPSIntersectionDataTypeDistancePrimitiveIndexBufferIndexInstanceIndexCoordinates MPS_ENUM_AVAILABLE_STARTING(macos(12.0), ios(15.0), macCatalyst(15.0), tvos(15.0)) = 8,
 } MPS_ENUM_AVAILABLE_STARTING(macos(10.14), ios(12.0), macCatalyst(13.0), tvos(12.0));
 
 /**
diff -ruN /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/MetalPerformanceShaders.framework/Frameworks/MPSRayIntersector.framework/Headers/MPSRayIntersectorTypes.h /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/MetalPerformanceShaders.framework/Frameworks/MPSRayIntersector.framework/Headers/MPSRayIntersectorTypes.h
--- /Applications/Xcode_12.5.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/MetalPerformanceShaders.framework/Frameworks/MPSRayIntersector.framework/Headers/MPSRayIntersectorTypes.h	2021-03-16 08:40:45.000000000 -0400
+++ /Applications/Xcode_13.0.0-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/MetalPerformanceShaders.framework/Frameworks/MPSRayIntersector.framework/Headers/MPSRayIntersectorTypes.h	2021-05-22 04:26:41.000000000 -0400
@@ -248,6 +248,36 @@
 } MPSIntersectionDistancePrimitiveIndex;
 
 /**
+ * @brief Intersection result which contains the distance from the ray origin to the
+ * intersection point, the index of the intersected primitive, and the polygon buffer
+ * index of the intersected primitive.
+ *
+ * @discussion This type is available from the Metal Shading Language by including the
+ * MetalPerformanceShaders/MetalPerformanceShaders.h header.
+ */
+typedef struct {
+    /**
+     * @brief Distance from the ray origin to the intersection point along the ray direction
+     * vector such that intersection = ray.origin + ray.direction * distance. Is negative if
+     * there is no intersection. If the intersection type is MPSIntersectionTypeAny, is
+     * a positive value for a hit or a negative value for a miss.
+     */
+    float distance;
+
+    /**
+     * @brief Index of the intersected primitive. Undefined if the ray does not intersect
+     * a primitive or if the intersection type is MPSIntersectionTypeAny.
+     */
+    unsigned int primitiveIndex;
+
+    /**
+     * @brief Buffer index of the intersected primitive. Undefined if the ray does not
+     * intersect a primitive or if the intersection type is MPSIntersectionTypeAny.
+     */
+    unsigned int bufferIndex;
+} MPSIntersectionDistancePrimitiveIndexBufferIndex;
+
+/**
  * @brief Intersection result which contains the distance from the ray origin to the intersection
  * point, the index of the intersected primitive, and the two dimensional parameterization of
  * the intersection point.
@@ -313,6 +343,76 @@
 
 /**
  * @brief Intersection result which contains the distance from the ray origin to the intersection
+ * point, the index of the intersected primitive, the polygon buffer index of the intersected
+ * primitive, and the two dimensional parameterization of the intersection point.
+ *
+ * @discussion This type is available from the Metal Shading Language by including the
+ * MetalPerformanceShaders/MetalPerformanceShaders.h header.
+ */
+typedef struct {
+    /**
+     * @brief Distance from the ray origin to the intersection point along the ray direction
+     * vector such that intersection = ray.origin + ray.direction * distance. Is negative if
+     * there is no intersection. If the intersection type is MPSIntersectionTypeAny, is
+     * a positive value for a hit or a negative value for a miss.
+     */
+    float distance;
+
+    /**
+     * @brief Index of the intersected primitive. Undefined if the ray does not intersect
+     * a primitive or if the intersection type is MPSIntersectionTypeAny.
+     */
+    unsigned int primitiveIndex;
+
+    /**
+     * @brief Buffer index of the intersected primitive. Undefined if the ray does not
+     * intersect a primitive or if the intersection type is MPSIntersectionTypeAny.
+     */
+    unsigned int bufferIndex;
+
+    /**
+     * @brief A two dimensional coordinate representing the intersection point according to the
+     * primitive's parameterization.
+     *
+     * For triangle primitives, these are the first two barycentric coordinates U and V of the
+     * intersection point. The third coordinate W = 1 - U - V. If the triangle has vertices v0, v1,
+     * and v2, the position of the intersection point (and other per-vertex attributes) can be
+     * interpolated as follows:
+     *
+     *     @code
+     *     float3 v_interpolated = U * v0 + V * v1 + W * v2;
+     *     @endcode
+     *
+     * Quadrilateral primitives are treated as two triangles internally. If the quadrilateral has
+     * vertices v0, v1, v2, and v3, the two triangles will have vertices v0, v1, v2 and v0, v2, v3.
+     * The coordinates will still be the first two barycentric coordinates of the intersected
+     * triangle, but they will be subtracted from one for the second triangle. In that case, the
+     * third coordinate W = 1 - U - V will be less than zero. This can be used to interpolate per-
+     * vertex attributes as follows:
+     *
+     *     @code
+     *     float W = 1 - U - V;
+     *     float3 v_interpolated;
+     *
+     *     if (W < 0.0f) {
+     *         U = 1 - U;
+     *         V = 1 - V;
+     *         W = 1 - U - V;
+     *         v_interpolated = U * v0 + V * v2 + W * v3;
+     *     }
+     *     else {
+     *         v_interpolated = U * v0 + V * v1 + W * v2;
+     *     }
+     *     @endcode
+     *
+     * This value is undefined if the ray does not intersect a primitive or if the intersection
+     * type is MPSIntersectionTypeAny.
+     */
+    vector_float2 coordinates;
+} MPSIntersectionDistancePrimitiveIndexBufferIndexCoordinates;
+
+/**
+ * @brief Intersection result which contains the distance from the ray origin to the intersection
  * point, the index of the intersected primitive, and the index of the intersected instance.
  *
  * @discussion This type is available from the Metal Shading Language by including the
@@ -343,6 +443,43 @@
 
 /**
  * @brief Intersection result which contains the distance from the ray origin to the intersection
+ * point, the index of the intersected primitive, the polygon buffer index of the intersected
+ * primitive, and the index of the intersected instance.
+ *
+ * @discussion This type is available from the Metal Shading Language by including the
+ * MetalPerformanceShaders/MetalPerformanceShaders.h header.
+ */
+typedef struct {
+    /**
+     * @brief Distance from the ray origin to the intersection point along the ray direction
+     * vector such that intersection = ray.origin + ray.direction * distance. Is negative if
+     * there is no intersection. If the intersection type is MPSIntersectionTypeAny, is
+     * a positive value for a hit or a negative value for a miss.
+     */
+    float distance;
+
+    /**
+     * @brief Index of the intersected primitive. Undefined if the ray does not intersect
+     * a primitive or if the intersection type is MPSIntersectionTypeAny.
+     */
+    unsigned int primitiveIndex;
+
+    /**
+     * @brief Buffer index of the intersected primitive. Undefined if the ray does not
+     * intersect a primitive or if the intersection type is MPSIntersectionTypeAny.
+     */
+    unsigned int bufferIndex;
+
+    /**
+     * @brief Index of the intersected instance. Undefined if the ray does not intersect a
+     * primitive, if the acceleration structure is not an instance acceleration structure,
+     * or if the intersection type is MPSIntersectionTypeAny.
+     */
+    unsigned int instanceIndex;
+} MPSIntersectionDistancePrimitiveIndexBufferIndexInstanceIndex;
+
+/**
+ * @brief Intersection result which contains the distance from the ray origin to the intersection
  * point, the index of the intersected primitive, the index of the intersected instance, and the
  * two dimensional parameterization of the intersection point.
  *
@@ -412,4 +549,82 @@
     vector_float2 coordinates;
 } MPSIntersectionDistancePrimitiveIndexInstanceIndexCoordinates;
 
+/**
+ * @brief Intersection result which contains the distance from the ray origin to the intersection
+ * point, the index of the intersected primitive, the polygon buffer index of the intersected
+ * primitive, the index of the intersected instance, and the two dimensional parameterization of
+ * the intersection point.
+ *
+ * @discussion This type is available from the Metal Shading Language by including the
+ * MetalPerformanceShaders/MetalPerformanceShaders.h header.
+ */
+typedef struct {
+    /**
+     * @brief Distance from the ray origin to the intersection point along the ray direction
+     * vector such that intersection = ray.origin + ray.direction * distance. Is negative if
+     * there is no intersection. If the intersection type is MPSIntersectionTypeAny, is
+     * a positive value for a hit or a negative value for a miss.
+     */
+    float distance;
+
+    /**
+     * @brief Index of the intersected primitive. Undefined if the ray does not intersect
+     * a primitive or if the intersection type is MPSIntersectionTypeAny.
+     */
+    unsigned int primitiveIndex;
+
+    /**
+     * @brief Buffer index of the intersected primitive. Undefined if the ray does not
+     * intersect a primitive or if the intersection type is MPSIntersectionTypeAny.
+     */
+    unsigned int bufferIndex;
+
+    /**
+     * @brief Index of the intersected instance. Undefined if the ray does not intersect a
+     * primitive, if the acceleration structure is not an instance acceleration structure,
+     * or if the intersection type is MPSIntersectionTypeAny.
+     */
+    unsigned int instanceIndex;
+
+    /**
+     * @brief A two dimensional coordinate representing the intersection point according to the
+     * primitive's parameterization.
+     *
+     * For triangle primitives, these are the first two barycentric coordinates U and V of the
+     * intersection point. The third coordinate W = 1 - U - V. If the triangle has vertices v0, v1,
+     * and v2, the position of the intersection point (and other per-vertex attributes) can be
+     * interpolated as follows:
+     *
+     *     @code
+     *     float3 v_interpolated = U * v0 + V * v1 + W * v2;
+     *     @endcode
+     *
+     * Quadrilateral primitives are treated as two triangles internally. If the quadrilateral has
+     * vertices v0, v1, v2, and v3, the two triangles will have vertices v0, v1, v2 and v0, v2, v3.
+     * The coordinates will still be the first two barycentric coordinates of the intersected
+     * triangle, but they will be subtracted from one for the second triangle. In that case, the
+     * third coordinate W = 1 - U - V will be less than zero. This can be used to interpolate per-
+     * vertex attributes as follows:
+     *
+     *     @code
+     *     float W = 1 - U - V;
+     *     float3 v_interpolated;
+     *
+     *     if (W < 0.0f) {
+     *         U = 1 - U;
+     *         V = 1 - V;
+     *         W = 1 - U - V;
+     *         v_interpolated = U * v0 + V * v2 + W * v3;
+     *     }
+     *     else {
+     *         v_interpolated = U * v0 + V * v1 + W * v2;
+     *     }
+     *     @endcode
+     *
+     * This value is undefined if the ray does not intersect a primitive or if the intersection
+     * type is MPSIntersectionTypeAny.
+     */
+    vector_float2 coordinates;
+} MPSIntersectionDistancePrimitiveIndexBufferIndexInstanceIndexCoordinates;
+
 #endif
Clone this wiki locally