Package apple.metalperformanceshaders
Class MPSSVGFDenoiser
- java.lang.Object
-
- org.moe.natj.general.NativeObject
-
- org.moe.natj.objc.ObjCObject
-
- apple.NSObject
-
- apple.metalperformanceshaders.MPSSVGFDenoiser
-
- All Implemented Interfaces:
NSObject
public class MPSSVGFDenoiser extends NSObject
A convenience object which uses an MPSSVGF object to manage the denoising process The MPSSVGF object can also be used directly to customize the denoising process. This object keeps track of auxilary textures used by the MPSSVGF object, manages a temporal history, and encodes the entire denoising process into a command buffer. To use this class, first create and customize an MPSSVGF object. This object allows you to tweak various aspect of the denoising process such as temporal reprojection and bilateral blur settings. Then create a texture allocator object which will allocate temporary textures during denoising. This can either be an object conforming to the MPSSVGFTextureAllocator protocol or an instance of the MPSSVGFDefaultTextureAllocator class. Next, create an MPSSVGFDenoiser object. To perform denoising, assign inputs textures to the denoiser object's properties and call encodeToCommandBuffer:. Finally, read the output from the destinationTexture property. Note that this class can denoise up to two independent textures simultaneously, e.g. specular and diffuse, direct and indirect lighting, shadows and AO, etc. [@code] MPSSVGF *svgf = [[MPSSVGF alloc] initWithDevice:device]; // configure svgf properties MPSSVGFDefaultTextureAllocator *allocator = [[MPSSVGFDefaultTextureAllocator alloc] initWithDevice:device]; MPSSVGFDenoiser *denoiser = [[MPSSVGFDenoiser alloc] initWithSVGF:svgf textureAllocator:allocator]; // configure denoiser properties denoiser.sourceTexture = noisyTexture; denoiser.depthNormalTexture = depthNormalTexture; denoiser.previousDepthNormalTexture = depthNormalTextureFromPreviousFrame; denoiser.motionVectorTexture = motionVectorTexture; [denoiser encodeToCommandBuffer:commandBuffer]; idcleanTexture = denoiser.destinationTexture; [@endcode]
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class apple.NSObject
NSObject.Function_instanceMethodForSelector_ret, NSObject.Function_methodForSelector_ret
-
-
Constructor Summary
Constructors Modifier Constructor Description protectedMPSSVGFDenoiser(org.moe.natj.general.Pointer peer)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static booleanaccessInstanceVariablesDirectly()static MPSSVGFDenoiseralloc()static java.lang.ObjectallocWithZone(org.moe.natj.general.ptr.VoidPtr zone)static booleanautomaticallyNotifiesObserversForKey(java.lang.String key)longbilateralFilterIterations()The number of bilateral filter iterations to run.static voidcancelPreviousPerformRequestsWithTarget(java.lang.Object aTarget)static voidcancelPreviousPerformRequestsWithTargetSelectorObject(java.lang.Object aTarget, org.moe.natj.objc.SEL aSelector, java.lang.Object anArgument)static NSArray<java.lang.String>classFallbacksForKeyedArchiver()static org.moe.natj.objc.ClassclassForKeyedUnarchiver()voidclearTemporalHistory()Clear the temporal history.static java.lang.StringdebugDescription_static()static java.lang.Stringdescription_static()voidencodeToCommandBufferSourceTextureDestinationTextureSourceTexture2DestinationTexture2MotionVectorTextureDepthNormalTexturePreviousDepthNormalTexture(MTLCommandBuffer commandBuffer, MTLTexture sourceTexture, org.moe.natj.general.ptr.Ptr<org.moe.natj.objc.ObjCObject> destinationTexture, MTLTexture sourceTexture2, org.moe.natj.general.ptr.Ptr<org.moe.natj.objc.ObjCObject> destinationTexture2, MTLTexture motionVectorTexture, MTLTexture depthNormalTexture, MTLTexture previousDepthNormalTexture)Encode denoising kernels to a command buffer Simultaneously removes noise from the source texture and optional second source texture, using the additional data in the motion vector, depth/normal, and previous depth/normal textures.MTLTextureencodeToCommandBufferSourceTextureMotionVectorTextureDepthNormalTexturePreviousDepthNormalTexture(MTLCommandBuffer commandBuffer, MTLTexture sourceTexture, MTLTexture motionVectorTexture, MTLTexture depthNormalTexture, MTLTexture previousDepthNormalTexture)Encode denoising kernels to a command buffer Removes noise from the source texture, using the additional data in the motion vector, depth/normal, and previous depth/normal textures.static longhash_static()MPSSVGFDenoiserinit()MPSSVGFDenoiserinitWithDevice(MTLDevice device)Initialize the MPSSVGFDenoiser object [@parameter] device The Metal device to use for denoisingMPSSVGFDenoiserinitWithSVGFTextureAllocator(MPSSVGF svgf, MPSSVGFTextureAllocator textureAllocator)Initialize the MPSSVGFDenoiser object [@parameter] svgf MPSSVGF kernels to use for denoising.static NSObject.Function_instanceMethodForSelector_retinstanceMethodForSelector(org.moe.natj.objc.SEL aSelector)static NSMethodSignatureinstanceMethodSignatureForSelector(org.moe.natj.objc.SEL aSelector)static booleaninstancesRespondToSelector(org.moe.natj.objc.SEL aSelector)static booleanisSubclassOfClass(org.moe.natj.objc.Class aClass)static NSSet<java.lang.String>keyPathsForValuesAffectingValueForKey(java.lang.String key)static java.lang.Objectnew_objc()voidreleaseTemporaryTextures()Return any temporary textures to the texture allocator.static booleanresolveClassMethod(org.moe.natj.objc.SEL sel)static booleanresolveInstanceMethod(org.moe.natj.objc.SEL sel)voidsetBilateralFilterIterations(long value)The number of bilateral filter iterations to run.static voidsetVersion_static(long aVersion)static org.moe.natj.objc.Classsuperclass_static()MPSSVGFsvgf()The underlying MPSSVGF kernels object which will be used for denoising.MPSSVGFTextureAllocatortextureAllocator()The object which will be used to allocate intermediate and output textures.static longversion_static()-
Methods inherited from class apple.NSObject
accessibilityActivate, accessibilityActivationPoint, accessibilityAssistiveTechnologyFocusedIdentifiers, accessibilityAttributedHint, accessibilityAttributedLabel, accessibilityAttributedUserInputLabels, accessibilityAttributedValue, accessibilityContainerType, accessibilityCustomActions, accessibilityCustomRotors, accessibilityDecrement, accessibilityDragSourceDescriptors, accessibilityDropPointDescriptors, accessibilityElementAtIndex, accessibilityElementCount, accessibilityElementDidBecomeFocused, accessibilityElementDidLoseFocus, accessibilityElementIsFocused, accessibilityElements, accessibilityElementsHidden, accessibilityFrame, accessibilityHint, accessibilityIncrement, accessibilityLabel, accessibilityLanguage, accessibilityNavigationStyle, accessibilityPath, accessibilityPerformEscape, accessibilityPerformMagicTap, accessibilityRespondsToUserInteraction, accessibilityScroll, accessibilityTextualContext, accessibilityTraits, accessibilityUserInputLabels, accessibilityValue, accessibilityViewIsModal, addObserverForKeyPathOptionsContext, attemptRecoveryFromErrorOptionIndex, attemptRecoveryFromErrorOptionIndexDelegateDidRecoverSelectorContextInfo, autoContentAccessingProxy, awakeAfterUsingCoder, awakeFromNib, class_objc, classForCoder, classForKeyedArchiver, copy, dealloc, debugDescription, description, dictionaryWithValuesForKeys, didChangeValueForKey, didChangeValueForKeyWithSetMutationUsingObjects, didChangeValuesAtIndexesForKey, doesNotRecognizeSelector, fileManagerShouldProceedAfterError, fileManagerWillProcessPath, finalize_objc, forwardingTargetForSelector, forwardInvocation, hash, indexOfAccessibilityElement, isAccessibilityElement, isEqual, isKindOfClass, isMemberOfClass, isProxy, methodForSelector, methodSignatureForSelector, mutableArrayValueForKey, mutableArrayValueForKeyPath, mutableCopy, mutableOrderedSetValueForKey, mutableOrderedSetValueForKeyPath, mutableSetValueForKey, mutableSetValueForKeyPath, observationInfo, observeValueForKeyPathOfObjectChangeContext, performSelector, performSelectorInBackgroundWithObject, performSelectorOnMainThreadWithObjectWaitUntilDone, performSelectorOnMainThreadWithObjectWaitUntilDoneModes, performSelectorOnThreadWithObjectWaitUntilDone, performSelectorOnThreadWithObjectWaitUntilDoneModes, performSelectorWithObject, performSelectorWithObjectAfterDelay, performSelectorWithObjectAfterDelayInModes, performSelectorWithObjectWithObject, prepareForInterfaceBuilder, provideImageDataBytesPerRowOrigin_Size_UserInfo, removeObserverForKeyPath, removeObserverForKeyPathContext, replacementObjectForCoder, replacementObjectForKeyedArchiver, respondsToSelector, self, setAccessibilityActivationPoint, setAccessibilityAttributedHint, setAccessibilityAttributedLabel, setAccessibilityAttributedUserInputLabels, setAccessibilityAttributedValue, setAccessibilityContainerType, setAccessibilityCustomActions, setAccessibilityCustomRotors, setAccessibilityDragSourceDescriptors, setAccessibilityDropPointDescriptors, setAccessibilityElements, setAccessibilityElementsHidden, setAccessibilityFrame, setAccessibilityHint, setAccessibilityLabel, setAccessibilityLanguage, setAccessibilityNavigationStyle, setAccessibilityPath, setAccessibilityRespondsToUserInteraction, setAccessibilityTextualContext, setAccessibilityTraits, setAccessibilityUserInputLabels, setAccessibilityValue, setAccessibilityViewIsModal, setIsAccessibilityElement, setNilValueForKey, setObservationInfo, setShouldGroupAccessibilityChildren, setValueForKey, setValueForKeyPath, setValueForUndefinedKey, setValuesForKeysWithDictionary, shouldGroupAccessibilityChildren, superclass, validateValueForKeyError, validateValueForKeyPathError, valueForKey, valueForKeyPath, valueForUndefinedKey, willChangeValueForKey, willChangeValueForKeyWithSetMutationUsingObjects, willChangeValuesAtIndexesForKey
-
-
-
-
Method Detail
-
accessInstanceVariablesDirectly
public static boolean accessInstanceVariablesDirectly()
-
alloc
public static MPSSVGFDenoiser alloc()
-
allocWithZone
public static java.lang.Object allocWithZone(org.moe.natj.general.ptr.VoidPtr zone)
-
automaticallyNotifiesObserversForKey
public static boolean automaticallyNotifiesObserversForKey(java.lang.String key)
-
bilateralFilterIterations
public long bilateralFilterIterations()
The number of bilateral filter iterations to run. More iterations will improve quality at the cost of performance. Defaults to 5. Must be at least 1.
-
cancelPreviousPerformRequestsWithTarget
public static void cancelPreviousPerformRequestsWithTarget(java.lang.Object aTarget)
-
cancelPreviousPerformRequestsWithTargetSelectorObject
public static void cancelPreviousPerformRequestsWithTargetSelectorObject(java.lang.Object aTarget, org.moe.natj.objc.SEL aSelector, java.lang.Object anArgument)
-
classFallbacksForKeyedArchiver
public static NSArray<java.lang.String> classFallbacksForKeyedArchiver()
-
classForKeyedUnarchiver
public static org.moe.natj.objc.Class classForKeyedUnarchiver()
-
clearTemporalHistory
public void clearTemporalHistory()
Clear the temporal history. Reprojection and temporal accumulation will restart on the next call to encodeToCommandBuffer:
-
debugDescription_static
public static java.lang.String debugDescription_static()
-
description_static
public static java.lang.String description_static()
-
encodeToCommandBufferSourceTextureDestinationTextureSourceTexture2DestinationTexture2MotionVectorTextureDepthNormalTexturePreviousDepthNormalTexture
public void encodeToCommandBufferSourceTextureDestinationTextureSourceTexture2DestinationTexture2MotionVectorTextureDepthNormalTexturePreviousDepthNormalTexture(MTLCommandBuffer commandBuffer, MTLTexture sourceTexture, org.moe.natj.general.ptr.Ptr<org.moe.natj.objc.ObjCObject> destinationTexture, MTLTexture sourceTexture2, org.moe.natj.general.ptr.Ptr<org.moe.natj.objc.ObjCObject> destinationTexture2, MTLTexture motionVectorTexture, MTLTexture depthNormalTexture, MTLTexture previousDepthNormalTexture)
Encode denoising kernels to a command buffer Simultaneously removes noise from the source texture and optional second source texture, using the additional data in the motion vector, depth/normal, and previous depth/normal textures. Returns the result through the destination texture pointers. The depth/normal texture should be provided as the previous depth/normal texture for the next call to this method. This method will also update an internally managed temporal history to aid the denoising process. To reset this history, call the clearTemporalHistory method. This method will allocate and return several textures from and to the texture allocator the MPSSVGFDenoiser was initialized with. The number of iterations of the bilateral filter is controlled by the bilateralFilterIterations property. Larger numbers of iterations will improve the quality but reduce performance. To configure other parameters of the denoising process, modify the properties of the MPSSVGF object the MPSSVGFDenoiser was initialized with. [@parameter] commandBuffer Command buffer to encode into [@parameter] sourceTexture Source image to denoiser [@parameter] destinationTexture Denoised output image [@parameter] sourceTexture2 Optional second source image to denoise [@parameter] destinationTexture2 Denoised second output image, if there is a second source image [@parameter] motionVectorTexture Motion vector texture describing how much each texel has moved, in texels, since the previous frame. See the MPSSVGF object for more details. [@parameter] depthNormalTexture Texture containing linear depth in the X component and signed normals in the YZW components. See the MPSSVGF object for more details. [@parameter] previousDepthNormalTexture Depth/normal texture from the previous frame. See the MPSSVGF object for more details.
-
encodeToCommandBufferSourceTextureMotionVectorTextureDepthNormalTexturePreviousDepthNormalTexture
public MTLTexture encodeToCommandBufferSourceTextureMotionVectorTextureDepthNormalTexturePreviousDepthNormalTexture(MTLCommandBuffer commandBuffer, MTLTexture sourceTexture, MTLTexture motionVectorTexture, MTLTexture depthNormalTexture, MTLTexture previousDepthNormalTexture)
Encode denoising kernels to a command buffer Removes noise from the source texture, using the additional data in the motion vector, depth/normal, and previous depth/normal textures. Returns the resulting texture. The depth/normal texture should be provided as the previous depth/normal texture for the next call to this method. This method will also update an internally managed temporal history to aid the denoising process. To reset this history, call the clearTemporalHistory method. This method will allocate and return several textures from and to the texture allocator the MPSSVGFDenoiser was initialized with. The number of iterations of the bilateral filter is controlled by the bilateralFilterIterations property. Larger numbers of iterations will improve the quality but reduce performance. To configure other parameters of the denoising process, modify the properties of the MPSSVGF object the MPSSVGFDenoiser was initialized with. [@parameter] commandBuffer Command buffer to encode into [@parameter] sourceTexture Source image to denoiser [@parameter] motionVectorTexture Motion vector texture describing how much each texel has moved, in texels, since the previous frame. See the MPSSVGF object for more details. [@parameter] depthNormalTexture Texture containing linear depth in the X component and signed normals in the YZW components. See the MPSSVGF object for more details. [@parameter] previousDepthNormalTexture Depth/normal texture from the previous frame. See the MPSSVGF object for more details.
-
hash_static
public static long hash_static()
-
init
public MPSSVGFDenoiser init()
-
initWithDevice
public MPSSVGFDenoiser initWithDevice(MTLDevice device)
Initialize the MPSSVGFDenoiser object [@parameter] device The Metal device to use for denoising
-
initWithSVGFTextureAllocator
public MPSSVGFDenoiser initWithSVGFTextureAllocator(MPSSVGF svgf, MPSSVGFTextureAllocator textureAllocator)
Initialize the MPSSVGFDenoiser object [@parameter] svgf MPSSVGF kernels to use for denoising. This object can be used to configure temporal reprojection, bilateral blur settings, etc. [@parameter] textureAllocator An object conforming to the MPSSVGFTextureAllocator protocol. This object will be used to allocate temporary intermediate and output textures. This can be a custom object or an instance of the MPSSVGFDefaultTextureAllocator class.
-
instanceMethodForSelector
public static NSObject.Function_instanceMethodForSelector_ret instanceMethodForSelector(org.moe.natj.objc.SEL aSelector)
-
instanceMethodSignatureForSelector
public static NSMethodSignature instanceMethodSignatureForSelector(org.moe.natj.objc.SEL aSelector)
-
instancesRespondToSelector
public static boolean instancesRespondToSelector(org.moe.natj.objc.SEL aSelector)
-
isSubclassOfClass
public static boolean isSubclassOfClass(org.moe.natj.objc.Class aClass)
-
keyPathsForValuesAffectingValueForKey
public static NSSet<java.lang.String> keyPathsForValuesAffectingValueForKey(java.lang.String key)
-
new_objc
public static java.lang.Object new_objc()
-
releaseTemporaryTextures
public void releaseTemporaryTextures()
Return any temporary textures to the texture allocator. Also clears the temporal history. This should be called before resizing the source texture(s).
-
resolveClassMethod
public static boolean resolveClassMethod(org.moe.natj.objc.SEL sel)
-
resolveInstanceMethod
public static boolean resolveInstanceMethod(org.moe.natj.objc.SEL sel)
-
setBilateralFilterIterations
public void setBilateralFilterIterations(long value)
The number of bilateral filter iterations to run. More iterations will improve quality at the cost of performance. Defaults to 5. Must be at least 1.
-
setVersion_static
public static void setVersion_static(long aVersion)
-
superclass_static
public static org.moe.natj.objc.Class superclass_static()
-
svgf
public MPSSVGF svgf()
The underlying MPSSVGF kernels object which will be used for denoising. Use this object to customize the denoising process.
-
textureAllocator
public MPSSVGFTextureAllocator textureAllocator()
The object which will be used to allocate intermediate and output textures.
-
version_static
public static long version_static()
-
-