@class NSString, SCNMTLResourceManager, SCNMTLComputePipeline; @protocol MTLBuffer; @interface SCNMTLMorphDeformer : NSObject <SCNMTLDeformer> { struct __C3DMorpher { struct __C3DEntity { struct __CFRuntimeBase { unsigned long long x0; _Atomic unsigned long long x1; } x0; void *x1; struct __CFString *x2; struct __CFString *x3; struct __CFDictionary *x4; struct __C3DScene *x5; long long x6; } x0; struct __C3DGeometry *x1; struct __C3DMorph *x2; struct __C3DMesh *x3; unsigned int x4; unsigned int x5; float *x6; unsigned int x7; unsigned int x8; } *_morpher; unsigned char _finalMeshDataKind; unsigned char _dataKindForComputeKernel; SCNMTLResourceManager *_resourceManager; BOOL _morphNormals; unsigned long long _morphKind; unsigned int _lastUpdateFrameIndex; unsigned int _lastMorpherIncrementalPassState; unsigned int _finalMeshVertexCount; unsigned int _vertexCountForComputeKernel; unsigned int _morphTargetCount; struct { float x0; unsigned int x1; unsigned int x2; unsigned long long x3; unsigned long long x4; } *_morphTargets; short _morphTargetPositionDataType; short _morphTargetNormalDataType; short _basePositionDataType; short _baseNormalDataType; id<MTLBuffer> _baseBufferForComputeKernel; id<MTLBuffer> _originalToFirstDeindexedTableBuffer; id<MTLBuffer> _deindexedToFirstDeindexedTableBuffer; id<MTLBuffer> _morphTargetsVertexBuffer; id<MTLBuffer> _morphTargetsSparseIndicesBuffer; SCNMTLComputePipeline *_incrementalInitPipeline; SCNMTLComputePipeline *_incrementalAddPipeline; SCNMTLComputePipeline *_copyBaseBufferPipeline; SCNMTLComputePipeline *_blendDensePipeline; SCNMTLComputePipeline *_blendDenseIndexedPipeline; SCNMTLComputePipeline *_blendSparsePipeline; SCNMTLComputePipeline *_splatPipeline; } @property (readonly) unsigned long long hash; @property (readonly) Class superclass; @property (readonly, copy) NSString *description; @property (readonly, copy) NSString *debugDescription; + (unsigned long long)supportedOutputs; + (unsigned long long)requiredOutputs; + (unsigned long long)requiredInputs; - (void)dealloc; - (void)createSparseIndicesBufferForMorphTarget:(struct { float x0; unsigned int x1; unsigned int x2; unsigned long long x3; unsigned long long x4; } *)a0 withSetupTarget:(struct { unsigned int x0; struct __C3DGeometry *x1; struct __C3DMeshSource *x2; struct __C3DMeshSource *x3; unsigned long long x4; } *)a1 indicesBuffer:(char *)a2 indicesBufferOffset:(unsigned long long)a3 indexSize:(unsigned long long)a4 originalToFirstDeindexedTable:(unsigned int *)a5 computeContext:(id)a6; - (void)createVertexBufferForMorphTarget:(struct { float x0; unsigned int x1; unsigned int x2; unsigned long long x3; unsigned long long x4; } *)a0 withSetupTarget:(struct { unsigned int x0; struct __C3DGeometry *x1; struct __C3DMeshSource *x2; struct __C3DMeshSource *x3; unsigned long long x4; } *)a1 vertexBuffer:(char *)a2 vertexBufferOffset:(unsigned long long)a3 indicesBuffer:(char *)a4 indicesBufferOffset:(unsigned long long)a5 indexSize:(unsigned long long)a6 originalToFirstDeindexedTable:(unsigned int *)a7 computeContext:(id)a8; - (unsigned long long)morphIncrementallyWithComputeContext:(id)a0 positions:(id)a1 normals:(id)a2; - (unsigned long long)morphSparseWithComputeContext:(id)a0 positions:(id)a1 normals:(id)a2; - (void)setupMorphTargetsWithComputeContext:(id)a0; - (unsigned long long)updateWithComputeContext:(id)a0 positions:(id)a1 normals:(id)a2 tangents:(id)a3; @end