public class MPSSVGFDenoiser extends NSObject
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];
id
NSObject.Function_instanceMethodForSelector_ret, NSObject.Function_methodForSelector_ret| Modifier | Constructor and Description |
|---|---|
protected |
MPSSVGFDenoiser(org.moe.natj.general.Pointer peer) |
| Modifier and Type | Method and Description |
|---|---|
static boolean |
accessInstanceVariablesDirectly() |
static MPSSVGFDenoiser |
alloc() |
static MPSSVGFDenoiser |
allocWithZone(org.moe.natj.general.ptr.VoidPtr zone) |
static boolean |
automaticallyNotifiesObserversForKey(java.lang.String key) |
long |
bilateralFilterIterations()
The number of bilateral filter iterations to run.
|
static void |
cancelPreviousPerformRequestsWithTarget(java.lang.Object aTarget) |
static void |
cancelPreviousPerformRequestsWithTargetSelectorObject(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.Class |
classForKeyedUnarchiver() |
void |
clearTemporalHistory()
Clear the temporal history.
|
static java.lang.String |
debugDescription_static() |
static java.lang.String |
description_static() |
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
|
MTLTexture |
encodeToCommandBufferSourceTextureMotionVectorTextureDepthNormalTexturePreviousDepthNormalTexture(MTLCommandBuffer commandBuffer,
MTLTexture sourceTexture,
MTLTexture motionVectorTexture,
MTLTexture depthNormalTexture,
MTLTexture previousDepthNormalTexture)
Encode denoising kernels to a command buffer
|
static long |
hash_static() |
MPSSVGFDenoiser |
init() |
MPSSVGFDenoiser |
initWithDevice(MTLDevice device)
Initialize the MPSSVGFDenoiser object
|
MPSSVGFDenoiser |
initWithSVGFTextureAllocator(MPSSVGF svgf,
MPSSVGFTextureAllocator textureAllocator)
Initialize the MPSSVGFDenoiser object
|
static NSObject.Function_instanceMethodForSelector_ret |
instanceMethodForSelector(org.moe.natj.objc.SEL aSelector) |
static NSMethodSignature |
instanceMethodSignatureForSelector(org.moe.natj.objc.SEL aSelector) |
static boolean |
instancesRespondToSelector(org.moe.natj.objc.SEL aSelector) |
static boolean |
isSubclassOfClass(org.moe.natj.objc.Class aClass) |
static NSSet<java.lang.String> |
keyPathsForValuesAffectingValueForKey(java.lang.String key) |
static MPSSVGFDenoiser |
new_objc() |
void |
releaseTemporaryTextures()
Return any temporary textures to the texture allocator.
|
static boolean |
resolveClassMethod(org.moe.natj.objc.SEL sel) |
static boolean |
resolveInstanceMethod(org.moe.natj.objc.SEL sel) |
void |
setBilateralFilterIterations(long value)
The number of bilateral filter iterations to run.
|
static void |
setVersion_static(long aVersion) |
static org.moe.natj.objc.Class |
superclass_static() |
MPSSVGF |
svgf()
The underlying MPSSVGF kernels object which will be used for denoising.
|
MPSSVGFTextureAllocator |
textureAllocator()
The object which will be used to allocate intermediate and output textures.
|
static long |
version_static() |
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, willChangeValuesAtIndexesForKeypublic static boolean accessInstanceVariablesDirectly()
public static MPSSVGFDenoiser alloc()
public static MPSSVGFDenoiser allocWithZone(org.moe.natj.general.ptr.VoidPtr zone)
public static boolean automaticallyNotifiesObserversForKey(java.lang.String key)
public long bilateralFilterIterations()
public static void cancelPreviousPerformRequestsWithTarget(java.lang.Object aTarget)
public static void cancelPreviousPerformRequestsWithTargetSelectorObject(java.lang.Object aTarget,
org.moe.natj.objc.SEL aSelector,
java.lang.Object anArgument)
public static NSArray<java.lang.String> classFallbacksForKeyedArchiver()
public static org.moe.natj.objc.Class classForKeyedUnarchiver()
public void clearTemporalHistory()
public static java.lang.String debugDescription_static()
public static java.lang.String description_static()
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)
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.
public MTLTexture encodeToCommandBufferSourceTextureMotionVectorTextureDepthNormalTexturePreviousDepthNormalTexture(MTLCommandBuffer commandBuffer, MTLTexture sourceTexture, MTLTexture motionVectorTexture, MTLTexture depthNormalTexture, MTLTexture previousDepthNormalTexture)
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.
public static long hash_static()
public MPSSVGFDenoiser init()
public MPSSVGFDenoiser initWithDevice(MTLDevice device)
[@parameter] device The Metal device to use for denoising
public MPSSVGFDenoiser initWithSVGFTextureAllocator(MPSSVGF svgf, MPSSVGFTextureAllocator textureAllocator)
[@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.
public static NSObject.Function_instanceMethodForSelector_ret instanceMethodForSelector(org.moe.natj.objc.SEL aSelector)
public static NSMethodSignature instanceMethodSignatureForSelector(org.moe.natj.objc.SEL aSelector)
public static boolean instancesRespondToSelector(org.moe.natj.objc.SEL aSelector)
public static boolean isSubclassOfClass(org.moe.natj.objc.Class aClass)
public static NSSet<java.lang.String> keyPathsForValuesAffectingValueForKey(java.lang.String key)
public static MPSSVGFDenoiser new_objc()
public void releaseTemporaryTextures()
public static boolean resolveClassMethod(org.moe.natj.objc.SEL sel)
public static boolean resolveInstanceMethod(org.moe.natj.objc.SEL sel)
public void setBilateralFilterIterations(long value)
public static void setVersion_static(long aVersion)
public static org.moe.natj.objc.Class superclass_static()
public MPSSVGF svgf()
public MPSSVGFTextureAllocator textureAllocator()
public static long version_static()