Package apple.metal

Class MTLMeshRenderPipelineDescriptor

  • All Implemented Interfaces:
    NSCopying, NSObject

    public class MTLMeshRenderPipelineDescriptor
    extends NSObject
    implements NSCopying
    MTLMeshRenderPipelineDescriptor As an alternative to a vertex + fragment shader render pipeline, this render pipeline uses a (object +) mesh + fragment shader for rendering geometry. API-Since: 16.0
    • Constructor Detail

      • MTLMeshRenderPipelineDescriptor

        protected MTLMeshRenderPipelineDescriptor​(org.moe.natj.general.Pointer peer)
    • Method Detail

      • accessInstanceVariablesDirectly

        public static boolean accessInstanceVariablesDirectly()
      • automaticallyNotifiesObserversForKey

        public static boolean automaticallyNotifiesObserversForKey​(@NotNull
                                                                   @NotNull java.lang.String key)
      • cancelPreviousPerformRequestsWithTarget

        public static void cancelPreviousPerformRequestsWithTarget​(@NotNull
                                                                   @NotNull java.lang.Object aTarget)
      • cancelPreviousPerformRequestsWithTargetSelectorObject

        public static void cancelPreviousPerformRequestsWithTargetSelectorObject​(@NotNull
                                                                                 @NotNull java.lang.Object aTarget,
                                                                                 @NotNull
                                                                                 @NotNull org.moe.natj.objc.SEL aSelector,
                                                                                 @Nullable
                                                                                 @Nullable java.lang.Object anArgument)
      • classFallbacksForKeyedArchiver

        @NotNull
        public static @NotNull NSArray<java.lang.String> classFallbacksForKeyedArchiver()
      • classForKeyedUnarchiver

        @NotNull
        public static @NotNull org.moe.natj.objc.Class classForKeyedUnarchiver()
      • copyWithZone

        @NotNull
        public @NotNull java.lang.Object copyWithZone​(@Nullable
                                                      @Nullable org.moe.natj.general.ptr.VoidPtr zone)
        Specified by:
        copyWithZone in interface NSCopying
      • debugDescription_static

        public static java.lang.String debugDescription_static()
      • depthAttachmentPixelFormat

        public long depthAttachmentPixelFormat()
        [@property] depthAttachmentPixelFormat The pixel format of the depth attachment of the render pass in which this pipeline will be used. The default value is MTLPixelFormatInvalid; indicating no depth attachment will be used.
      • description_static

        public static java.lang.String description_static()
      • fragmentBuffers

        @NotNull
        public @NotNull MTLPipelineBufferDescriptorArray fragmentBuffers()
        [@property] fragmentBuffers Provide mutability information on the buffers used by fragmentFunction. Specifying these values is optional; it may be used to optimize the shader code.
      • fragmentFunction

        @Nullable
        public @Nullable MTLFunction fragmentFunction()
        [@property] fragmentFunction Like a classical render pipeline, this fragments covered by the rasterized geometry are shaded with this function. The default value is nil. To create a pipeline, you must either set fragmentFunction to non-nil, or set rasterizationEnabled to NO.
      • hash_static

        public static long hash_static()
      • instanceMethodSignatureForSelector

        public static NSMethodSignature instanceMethodSignatureForSelector​(org.moe.natj.objc.SEL aSelector)
      • instancesRespondToSelector

        public static boolean instancesRespondToSelector​(org.moe.natj.objc.SEL aSelector)
      • isAlphaToCoverageEnabled

        public boolean isAlphaToCoverageEnabled()
        [@property] alphaToCoverageEnabled Whether the alpha value exported by the fragment shader for the first color attachment is converted to a sample mask, which is subsequently AND-ed with the fragments' sample mask The default value is NO.
      • isAlphaToOneEnabled

        public boolean isAlphaToOneEnabled()
        [@property] alphaToOneEnabled Whether the alpha value exported by the fragment shader for all color attachments is modified to 1 (after evaluating alphaToCoverage). The default value is NO.
      • isRasterizationEnabled

        public boolean isRasterizationEnabled()
        [@property] rasterizationEnabled Whether rasterization is disabled, all primitives are dropped prior to rasterization. The default value is YES.
      • isSubclassOfClass

        public static boolean isSubclassOfClass​(org.moe.natj.objc.Class aClass)
      • keyPathsForValuesAffectingValueForKey

        @NotNull
        public static @NotNull NSSet<java.lang.String> keyPathsForValuesAffectingValueForKey​(@NotNull
                                                                                             @NotNull java.lang.String key)
      • label

        @Nullable
        public @Nullable java.lang.String label()
        [@property] label A name or description provided by the application that will be displayed in debugging tools. The default value is nil.
      • maxTotalThreadgroupsPerMeshGrid

        public long maxTotalThreadgroupsPerMeshGrid()
        [@property] maxTotalThreadgroupsPerMeshGrid The maximum value of the product of vector elements that the object shader may pass to the mesh_grid_properties::set_threadgroups_per_grid built-in function. The default value is 0, which means that the value specified with the [[max_total_threadgroups_per_mesh_grid(N)]] specified on objectFunction will be used. When both the [[max_total_threadgroups_per_mesh_grid(N)]] attribute and a non-zero value are specified, both values must match. Any value specified cannot exceed the device limit as documented in the "Metal Feature Set Tables" for "Maximum threadgroups per mesh grid". Specifying this value is optional; it may be used to improve scheduling of the workload. If neither this value nor the shader attribute are used, the device's maximum supported value is used instead.
      • maxTotalThreadsPerMeshThreadgroup

        public long maxTotalThreadsPerMeshThreadgroup()
        [@property] maxTotalThreadsPerMeshThreadgroup The maximum size of the product of threadsPerMeshThreadgroup that can be used for draws with this pipeline. This information can be used by the optimizer to generate more efficient code, specifically when the specified value does not exceed the thread execution width of the underlying GPU. The default value is 0, which means that the value specified with the [[max_total_threads_per_threadgroup(N)]] specified on meshFunction will be used. When both the [[max_total_threads_per_threadgroup(N)]] attribute and a non-zero value are specified, both values must match. Any value specified cannot exceed the device limit as documented in the "Metal Feature Set Tables" for "Maximum threads per threadgroup".
      • maxTotalThreadsPerObjectThreadgroup

        public long maxTotalThreadsPerObjectThreadgroup()
        [@property] maxTotalThreadsPerObjectThreadgroup The maximum size of the product of threadsPerObjectThreadgroup that can be used for draws with this pipeline. This information can be used by the optimizer to generate more efficient code, specifically when the specified value does not exceed the thread execution width of the underlying GPU. The default value is 0, which means that the value specified with the [[max_total_threads_per_threadgroup(N)]] specified on objectFunction will be used. When both the [[max_total_threads_per_threadgroup(N)]] attribute and a non-zero value are specified, both values must match. Any value specified cannot exceed the device limit as documented in the "Metal Feature Set Tables" for "Maximum threads per threadgroup".
      • maxVertexAmplificationCount

        public long maxVertexAmplificationCount()
        [@property] maxVertexAmplificationCount The maximum value that can be passed to setVertexAmplificationCount when using this pipeline. The default value is 1. The value must be supported by the device, which can be checked with supportsVertexAmplificationCount.
      • meshBuffers

        @NotNull
        public @NotNull MTLPipelineBufferDescriptorArray meshBuffers()
        [@property] meshBuffers Provide mutability information on the buffers used by meshFunction. Specifying these values is optional; it may be used to optimize the shader code.
      • meshFunction

        @Nullable
        public @Nullable MTLFunction meshFunction()
        [@property] meshFunction Shader function responsible for exporting a chunk of geometry per threadgroup for the rasterizer. The default value is nil.
      • meshThreadgroupSizeIsMultipleOfThreadExecutionWidth

        public boolean meshThreadgroupSizeIsMultipleOfThreadExecutionWidth()
        [@property] meshThreadgroupSizeIsMultipleOfThreadExecutionWidth Set this value to YES when you will only use draws with the product of threadsPerMeshThreadgroup set to a multiple of the meshThreadExecutionWidth of the returned pipeline state. This information can be used by the optimizer to generate more efficient code. The default value is NO.
      • objectBuffers

        @NotNull
        public @NotNull MTLPipelineBufferDescriptorArray objectBuffers()
        [@property] objectBuffers Provide mutability information on the buffers used by objectFunction. Specifying these values is optional; it may be used to optimize the shader code.
      • objectFunction

        @Nullable
        public @Nullable MTLFunction objectFunction()
        [@property] objectFunction Optional shader function responsible for determining how many threadgroups of the mesh shader to run, can optionally provide payload data for the mesh stage. If this is nil, no payload data is available to the mesh function, and the draw command determines how many threadgroups of the mesh stage to run. The default value is nil.
      • objectThreadgroupSizeIsMultipleOfThreadExecutionWidth

        public boolean objectThreadgroupSizeIsMultipleOfThreadExecutionWidth()
        [@property] objectThreadgroupSizeIsMultipleOfThreadExecutionWidth Set this value to YES when you will only use draws with the product of threadsPerObjectThreadgroup set to a multiple of the objectThreadExecutionWidth of the returned pipeline state. This information can be used by the optimizer to generate more efficient code. The default value is NO.
      • payloadMemoryLength

        public long payloadMemoryLength()
        [@property] payloadMemoryLength The size, in bytes, of the buffer indicated by [[payload]] in the object and mesh shader. If this value is 0, the size of the dereferenced type declared in the object shader for the buffer is used (space for a single element is assumed for pointers). The default value is 0.
      • rasterSampleCount

        public long rasterSampleCount()
        [@property] rasterSampleCount The number of samples per fragment of the render pass in which this pipeline will be used.
      • reset

        public void reset()
        reset Restore all mesh pipeline descriptor properties to their default values.
      • resolveClassMethod

        public static boolean resolveClassMethod​(org.moe.natj.objc.SEL sel)
      • resolveInstanceMethod

        public static boolean resolveInstanceMethod​(org.moe.natj.objc.SEL sel)
      • setAlphaToCoverageEnabled

        public void setAlphaToCoverageEnabled​(boolean value)
        [@property] alphaToCoverageEnabled Whether the alpha value exported by the fragment shader for the first color attachment is converted to a sample mask, which is subsequently AND-ed with the fragments' sample mask The default value is NO.
      • setAlphaToOneEnabled

        public void setAlphaToOneEnabled​(boolean value)
        [@property] alphaToOneEnabled Whether the alpha value exported by the fragment shader for all color attachments is modified to 1 (after evaluating alphaToCoverage). The default value is NO.
      • setDepthAttachmentPixelFormat

        public void setDepthAttachmentPixelFormat​(long value)
        [@property] depthAttachmentPixelFormat The pixel format of the depth attachment of the render pass in which this pipeline will be used. The default value is MTLPixelFormatInvalid; indicating no depth attachment will be used.
      • setFragmentFunction

        public void setFragmentFunction​(@Nullable
                                        @Nullable MTLFunction value)
        [@property] fragmentFunction Like a classical render pipeline, this fragments covered by the rasterized geometry are shaded with this function. The default value is nil. To create a pipeline, you must either set fragmentFunction to non-nil, or set rasterizationEnabled to NO.
      • setLabel

        public void setLabel​(@Nullable
                             @Nullable java.lang.String value)
        [@property] label A name or description provided by the application that will be displayed in debugging tools. The default value is nil.
      • setMaxTotalThreadgroupsPerMeshGrid

        public void setMaxTotalThreadgroupsPerMeshGrid​(long value)
        [@property] maxTotalThreadgroupsPerMeshGrid The maximum value of the product of vector elements that the object shader may pass to the mesh_grid_properties::set_threadgroups_per_grid built-in function. The default value is 0, which means that the value specified with the [[max_total_threadgroups_per_mesh_grid(N)]] specified on objectFunction will be used. When both the [[max_total_threadgroups_per_mesh_grid(N)]] attribute and a non-zero value are specified, both values must match. Any value specified cannot exceed the device limit as documented in the "Metal Feature Set Tables" for "Maximum threadgroups per mesh grid". Specifying this value is optional; it may be used to improve scheduling of the workload. If neither this value nor the shader attribute are used, the device's maximum supported value is used instead.
      • setMaxTotalThreadsPerMeshThreadgroup

        public void setMaxTotalThreadsPerMeshThreadgroup​(long value)
        [@property] maxTotalThreadsPerMeshThreadgroup The maximum size of the product of threadsPerMeshThreadgroup that can be used for draws with this pipeline. This information can be used by the optimizer to generate more efficient code, specifically when the specified value does not exceed the thread execution width of the underlying GPU. The default value is 0, which means that the value specified with the [[max_total_threads_per_threadgroup(N)]] specified on meshFunction will be used. When both the [[max_total_threads_per_threadgroup(N)]] attribute and a non-zero value are specified, both values must match. Any value specified cannot exceed the device limit as documented in the "Metal Feature Set Tables" for "Maximum threads per threadgroup".
      • setMaxTotalThreadsPerObjectThreadgroup

        public void setMaxTotalThreadsPerObjectThreadgroup​(long value)
        [@property] maxTotalThreadsPerObjectThreadgroup The maximum size of the product of threadsPerObjectThreadgroup that can be used for draws with this pipeline. This information can be used by the optimizer to generate more efficient code, specifically when the specified value does not exceed the thread execution width of the underlying GPU. The default value is 0, which means that the value specified with the [[max_total_threads_per_threadgroup(N)]] specified on objectFunction will be used. When both the [[max_total_threads_per_threadgroup(N)]] attribute and a non-zero value are specified, both values must match. Any value specified cannot exceed the device limit as documented in the "Metal Feature Set Tables" for "Maximum threads per threadgroup".
      • setMaxVertexAmplificationCount

        public void setMaxVertexAmplificationCount​(long value)
        [@property] maxVertexAmplificationCount The maximum value that can be passed to setVertexAmplificationCount when using this pipeline. The default value is 1. The value must be supported by the device, which can be checked with supportsVertexAmplificationCount.
      • setMeshFunction

        public void setMeshFunction​(@Nullable
                                    @Nullable MTLFunction value)
        [@property] meshFunction Shader function responsible for exporting a chunk of geometry per threadgroup for the rasterizer. The default value is nil.
      • setMeshThreadgroupSizeIsMultipleOfThreadExecutionWidth

        public void setMeshThreadgroupSizeIsMultipleOfThreadExecutionWidth​(boolean value)
        [@property] meshThreadgroupSizeIsMultipleOfThreadExecutionWidth Set this value to YES when you will only use draws with the product of threadsPerMeshThreadgroup set to a multiple of the meshThreadExecutionWidth of the returned pipeline state. This information can be used by the optimizer to generate more efficient code. The default value is NO.
      • setObjectFunction

        public void setObjectFunction​(@Nullable
                                      @Nullable MTLFunction value)
        [@property] objectFunction Optional shader function responsible for determining how many threadgroups of the mesh shader to run, can optionally provide payload data for the mesh stage. If this is nil, no payload data is available to the mesh function, and the draw command determines how many threadgroups of the mesh stage to run. The default value is nil.
      • setObjectThreadgroupSizeIsMultipleOfThreadExecutionWidth

        public void setObjectThreadgroupSizeIsMultipleOfThreadExecutionWidth​(boolean value)
        [@property] objectThreadgroupSizeIsMultipleOfThreadExecutionWidth Set this value to YES when you will only use draws with the product of threadsPerObjectThreadgroup set to a multiple of the objectThreadExecutionWidth of the returned pipeline state. This information can be used by the optimizer to generate more efficient code. The default value is NO.
      • setPayloadMemoryLength

        public void setPayloadMemoryLength​(long value)
        [@property] payloadMemoryLength The size, in bytes, of the buffer indicated by [[payload]] in the object and mesh shader. If this value is 0, the size of the dereferenced type declared in the object shader for the buffer is used (space for a single element is assumed for pointers). The default value is 0.
      • setRasterSampleCount

        public void setRasterSampleCount​(long value)
        [@property] rasterSampleCount The number of samples per fragment of the render pass in which this pipeline will be used.
      • setRasterizationEnabled

        public void setRasterizationEnabled​(boolean value)
        [@property] rasterizationEnabled Whether rasterization is disabled, all primitives are dropped prior to rasterization. The default value is YES.
      • setStencilAttachmentPixelFormat

        public void setStencilAttachmentPixelFormat​(long value)
        [@property] stencilAttachmentPixelFormat The pixel format of the stencil attachment of the render pass in which this pipeline will be used. The default value is MTLPixelFormatInvalid; indicating no stencil attachment will be used.
      • setVersion_static

        public static void setVersion_static​(long aVersion)
      • stencilAttachmentPixelFormat

        public long stencilAttachmentPixelFormat()
        [@property] stencilAttachmentPixelFormat The pixel format of the stencil attachment of the render pass in which this pipeline will be used. The default value is MTLPixelFormatInvalid; indicating no stencil attachment will be used.
      • superclass_static

        public static org.moe.natj.objc.Class superclass_static()
      • version_static

        public static long version_static()
      • fragmentLinkedFunctions

        public MTLLinkedFunctions fragmentLinkedFunctions()
        [@property] fragmentLinkedFunctions The set of functions to be linked with the pipeline state and accessed from the fragment function.
        See Also:
        API-Since: 17.0
      • meshLinkedFunctions

        public MTLLinkedFunctions meshLinkedFunctions()
        [@property] meshLinkedFunctions The set of functions to be linked with the pipeline state and accessed from the mesh function.
        See Also:
        API-Since: 17.0
      • objectLinkedFunctions

        public MTLLinkedFunctions objectLinkedFunctions()
        [@property] objectLinkedFunctions The set of functions to be linked with the pipeline state and accessed from the object function.
        See Also:
        API-Since: 17.0
      • setFragmentLinkedFunctions

        public void setFragmentLinkedFunctions​(MTLLinkedFunctions value)
        [@property] fragmentLinkedFunctions The set of functions to be linked with the pipeline state and accessed from the fragment function.
        See Also:
        API-Since: 17.0
      • setMeshLinkedFunctions

        public void setMeshLinkedFunctions​(MTLLinkedFunctions value)
        [@property] meshLinkedFunctions The set of functions to be linked with the pipeline state and accessed from the mesh function.
        See Also:
        API-Since: 17.0
      • setObjectLinkedFunctions

        public void setObjectLinkedFunctions​(MTLLinkedFunctions value)
        [@property] objectLinkedFunctions The set of functions to be linked with the pipeline state and accessed from the object function.
        See Also:
        API-Since: 17.0
      • setSupportIndirectCommandBuffers

        public void setSupportIndirectCommandBuffers​(boolean value)
        [@property] supportIndirectCommandBuffers Whether this pipeline will support being used by commands in an indirect command buffer. The default value is NO. API-Since: 17.0
      • supportIndirectCommandBuffers

        public boolean supportIndirectCommandBuffers()
        [@property] supportIndirectCommandBuffers Whether this pipeline will support being used by commands in an indirect command buffer. The default value is NO. API-Since: 17.0
      • useStoredAccessor

        @Deprecated
        public static boolean useStoredAccessor()
        Deprecated.