@class SCNMTLMeshElement, NSString, SCNMTLMesh, SCNMTLRenderPipeline, SCNMTLShadable, NSMutableDictionary, NSMutableArray, NSObject, MTLRenderPassDescriptor, CAMetalLayer, SCNMTLResourceManager; @protocol MTLCommandBuffer, MTLDevice, MTLComputePipelineState, OS_dispatch_group, OS_dispatch_queue, CAMetalDrawable, MTLDepthStencilState, MTLTexture, OS_dispatch_semaphore, SCNMTLRenderContextCommandBufferStatusMonitor, MTLBlitCommandEncoder, MTLBuffer, SCNMTLRenderContextResourceManagerMonitor, MTLComputeCommandEncoder, MTLRenderCommandEncoder, MTLSamplerState, MTLCommandQueue; @interface SCNMTLRenderContext : NSObject { long long _currentFrameIndex; struct __C3DEngineStats { unsigned int x0; unsigned int x1; unsigned int x2; unsigned int x3; unsigned int x4; unsigned int x5; unsigned int x6; unsigned int x7; unsigned int x8; unsigned int x9; unsigned int x10; unsigned int x11; unsigned int x12; unsigned int x13; unsigned int x14; unsigned int x15; unsigned int x16; unsigned int x17; unsigned int x18; unsigned int x19; unsigned int x20; unsigned int x21; unsigned int x22; unsigned int x23; double x24; double x25; double x26; double x27; double x28; double x29; double x30; double x31; double x32; double x33; double x34; double x35; double x36; double x37; double x38; unsigned int x39; unsigned int x40; unsigned int x41; unsigned int x42; unsigned int x43; unsigned int x44; unsigned int x45; unsigned int x46; unsigned int x47; unsigned int x48; unsigned int x49; unsigned int x50; unsigned int x51; unsigned int x52; unsigned int x53; unsigned int x54; unsigned int x55; double x56; unsigned int x57; double x58; unsigned int x59; double x60; double x61; double x62; double x63; double x64[60]; unsigned int x65; double x66; double x67; } *__engineStats; double _superSamplingFactor; struct SCNMatrix4 { float m11; float m12; float m13; float m14; float m21; float m22; float m23; float m24; float m31; float m32; float m33; float m34; float m41; float m42; float m43; float m44; } _screenTransform; long long _sampleCount; BOOL _needSuperSampling; SCNMTLResourceManager *_resourceManager; id _device; BOOL _isValidationEnabled; int _profile; unsigned int _features; struct __C3DEngineContext { } *_engineContext; unsigned char _wantsWideGamut : 1; unsigned char _isOpaque : 1; unsigned char _disableLinearRendering : 1; unsigned char _enableARMode : 1; unsigned char _shouldDelegateARCompositing : 1; unsigned char _useFunctionConstants : 1; unsigned char _reverseZ : 1; unsigned char _forceAsyncShaderCompilation : 1; id _ownedCommandQueue; NSObject *_inFlightSemaphore; struct atomic { struct __cxx_atomic_impl> { _Atomic int __a_value; } __a_; } _pendingGPUFrameCount; id _textureTarget; CAMetalLayer *_layerTarget; id _drawable; float _targetedFrameInterval; BOOL _shouldPresentAfterMinimumDuration; BOOL _shouldPresentWithTransaction; MTLRenderPassDescriptor *_currentRenderPassDescriptor; MTLRenderPassDescriptor *_originalRenderPassDescriptor; void /* unknown type, empty encoding */ _renderSize; id _currentCommandBuffer; struct SCNMTLRenderCommandEncoder { BOOL x0; unsigned long long x1; unsigned long long x2; unsigned long long x3; unsigned long long x4; BOOL x5; BOOL x6; BOOL x7; BOOL x8; unsigned int x9; unsigned int x10; unsigned char x11; BOOL x12; BOOL x13; struct { id x0; unsigned long long x1; } x14[31]; id x15[128]; id x16[16]; struct { id x0; unsigned long long x1; } x17[31]; id x18[128]; id x19[16]; id x20; id x21; id x22; struct SCNMTLBufferPool *x23; unsigned long long x24[2]; unsigned long long x25[2]; } *_renderEncoder; id _resourceCommandBuffer; struct SCNMTLBlitCommandEncoder { id _encoder; id _commandBuffer; } _resourceBlitEncoder; struct SCNMTLComputeCommandEncoder { id _buffers[31]; unsigned long long _offsets[31]; id _textures[128]; id _samplers[16]; id _computePipelineState; id _encoder; id _commandBuffer; struct SCNMTLBufferPool *_bufferPool; unsigned int _features; unsigned long long _texturesToBind[2]; unsigned long long _buffersToBind[1]; } _resourceComputeEncoder; struct { unsigned char renderSliceIndex; unsigned char eyeCount; unsigned char renderMode; unsigned char multiVertexOutputStreamGenerator; BOOL isMainPass; BOOL isFinalTechnique; } _renderPassParameters; struct { char vertexIndex; char fragmentIndex; } _currentStreamBufferIndices; struct SCNMTLBufferPool *_volatileBufferPools[3]; void *_frameVolatileBufferPool; NSMutableArray *_volatileMeshes; NSMutableArray *_bufferPool; NSMutableArray *_usedVolatileMeshElements; NSMutableArray *_freeVolatileMeshElements; struct SCNMTLBufferPool *_constantBufferPools[3]; void *_frameConstantBufferPool; void *_frameTexturePool; id _defaultDepthStencilState; id _defaultSamplerState; struct __C3DFXMetalProgram *_background2DProgram[3]; struct __C3DFXMetalProgram *_backgroundCubeProgram[3]; struct __C3DFXMetalProgram { struct __C3DFXProgram { 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; int x1; unsigned char x2 : 1; unsigned char x3 : 1; struct __C3DFXProgramDelegate *x4; } x0; struct __CFString *x1[2]; struct __CFString *x2; struct __CFString *x3; struct __CFDictionary *x4; struct __CFSet *x5; void *x6; struct __CFDictionary *x7; void *x8; unsigned long long x9; unsigned int x10; } *_backgroundVideoProgram; struct __C3DFXMetalProgram { struct __C3DFXProgram { 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; int x1; unsigned char x2 : 1; unsigned char x3 : 1; struct __C3DFXProgramDelegate *x4; } x0; struct __CFString *x1[2]; struct __CFString *x2; struct __CFString *x3; struct __CFDictionary *x4; struct __CFSet *x5; void *x6; struct __CFDictionary *x7; void *x8; unsigned long long x9; unsigned int x10; } *_backgroundVideoAlpha0Program; struct __C3DRasterizerStates { } *_backgroundRasterizerStates; double _initialTime; NSObject *_resourceQueue; NSObject *_resourceGroup; id _shadowKernelBuffer; struct { struct __C3DFXPassInstance *passInstance; struct __C3DLightingSystem *lightingSystem; struct __C3DDynamicBatchingSystem *dynamicBatchingSystem; struct __C3DFXPass *pass; void *renderGraphPass; BOOL passRequiresLighting; struct __C3DTransformTree *transformTree; } _processingContext; unsigned int _seed; struct SCNSceneBuffer { struct float4x4 { void /* unknown type, empty encoding */ columns[4]; } viewTransform; struct float4x4 { void /* unknown type, empty encoding */ columns[4]; } inverseViewTransform; struct float4x4 { void /* unknown type, empty encoding */ columns[4]; } projectionTransform; struct float4x4 { void /* unknown type, empty encoding */ columns[4]; } viewProjectionTransform; struct float4x4 { void /* unknown type, empty encoding */ columns[4]; } viewToCubeTransform; struct float4x4 { void /* unknown type, empty encoding */ columns[4]; } lastFrameViewProjectionTransform; void /* unknown type, empty encoding */ ambientLightingColor; void /* unknown type, empty encoding */ fogColor; void /* unknown type, empty encoding */ fogParameters; void /* unknown type, empty encoding */ inverseResolution; float time; float sinTime; float cosTime; float random01; float motionBlurIntensity; float environmentIntensity; struct float4x4 { void /* unknown type, empty encoding */ columns[4]; } inverseProjectionTransform; struct float4x4 { void /* unknown type, empty encoding */ columns[4]; } inverseViewProjectionTransform; void /* unknown type, empty encoding */ nearFar; void /* unknown type, empty encoding */ viewportSize; struct float4x4 { void /* unknown type, empty encoding */ columns[4]; } inverseTransposeViewTransform; void /* unknown type, empty encoding */ clusterScale; } _frameUniforms[6]; struct { id buffer; unsigned long long offset; } _sceneUniforms; struct { id buffer; unsigned long long offset; unsigned long long size; id shadowMaps[256]; id textureMaps[256]; id samplerStates[256]; } _lightsData; struct { struct float4x4 { void /* unknown type, empty encoding */ columns[4]; } modelTransform; struct float4x4 { void /* unknown type, empty encoding */ columns[4]; } lastFrameModelTransform; struct float4x4 { void /* unknown type, empty encoding */ columns[4]; } normalTransforms[6]; struct float4x4 { void /* unknown type, empty encoding */ columns[4]; } modelViewTransforms[6]; struct float4x4 { void /* unknown type, empty encoding */ columns[4]; } modelViewProjectionTransforms[6]; struct float2x3 { void /* unknown type, empty encoding */ columns[2]; } boundingBox; struct float2x3 { void /* unknown type, empty encoding */ columns[2]; } worldBoundingBox; struct __C3DNode *instanceNode; unsigned int flags; unsigned int *probeCacheIndex; } _nodeUniforms; struct { struct { unsigned char lights[8]; } currentLightingSet; id currentShadowMaps[8]; id currentGoboMaps[8]; struct unordered_map, std::equal_to, std::allocator>> { struct __hash_table, std::__unordered_map_hasher, std::hash, std::equal_to>, std::__unordered_map_equal, std::equal_to, std::hash>, std::allocator>> { struct unique_ptr, void *> *> *[], std::__bucket_list_deallocator, void *> *> *>>> { struct __compressed_pair, void *> *> **, std::__bucket_list_deallocator, void *> *> *>>> { void **__value_; struct __bucket_list_deallocator, void *> *> *>> { struct __compressed_pair, void *> *> *>> { unsigned long long __value_; } __data_; } __value_; } __ptr_; } __bucket_list_; struct __compressed_pair, void *> *>, std::allocator, void *>>> { struct __hash_node_base, void *> *> { void *__next_; } __value_; } __p1_; struct __compressed_pair, std::hash, std::equal_to>> { unsigned long long __value_; } __p2_; struct __compressed_pair, std::equal_to, std::hash>> { float __value_; } __p3_; } __table_; } frameLightingSetDatas; unsigned long long currentLightingHashKey; struct { long long count; struct __C3DLight *lights[8]; struct __C3DLightRuntimeData *lightsData[8]; } currentLightingDesc; struct { void /* unknown type, empty encoding */ columns[4]; } currentLightingSpace; struct { void /* unknown type, empty encoding */ columns[4]; } currentLightingSpaceShadow; BOOL needLightingSpaceTransformation; struct SCNMTLClusterSystem { void /* unknown type, empty encoding */ clustersCount; void /* unknown type, empty encoding */ tileSize; void /* unknown type, empty encoding */ selectedDebugClusterIndex; SCNMTLRenderPipeline *_debugClusterTilesPipeline; SCNMTLRenderPipeline *_debugLightIndicesBufferPipeline; SCNMTLRenderPipeline *_debugClusterSlicesPipeline; struct __C3DFXMetalProgram *_debugProgram[7]; struct __C3DMesh *_debugShapes[7]; } clusterSystem; struct Info { struct { char *memory; id buffer; unsigned long long offset; } clusterBuffer; id clusterTexture; id lightIndicesTexture; void /* unknown type, empty encoding */ cellSize; void /* unknown type, empty encoding */ clusterScale; void /* unknown type, empty encoding */ cellPixelSize; void /* unknown type, empty encoding */ omniLightsRange; void /* unknown type, empty encoding */ spotLightsRange; void /* unknown type, empty encoding */ probeLightsRange; struct { char *memory; id buffer; unsigned long long offset; } lightsBuffer; unsigned int lightsBufferLightCount; id shadowTextures[8]; id iesOrGoboTextures[8]; id samplerStates[8]; id areaBuffer; unsigned long long areaBufferOffset; unsigned long long areaBufferOffsets[8]; } clusterInfo; id reflectionProbesTextureArray; } _lighting; struct Cache { struct __C3DRasterizerStates *rasterizerStates; struct __C3DMesh *mesh; SCNMTLMesh *metalMesh; struct __C3DMeshElement *meshElement; SCNMTLMeshElement *metalMeshElement; struct __C3DFXMetalProgram *program; struct __C3DMaterial *material; struct __C3DGeometry *geometry; SCNMTLShadable *metalShadable; struct __C3DEffectCommonProfile *commonProfile; struct __C3DBlendStates *blendStates; unsigned char colorBufferWriteMask; unsigned char primitiveTopologyClass; struct __C3DNode *node; unsigned long long vertexDescriptorHash; unsigned char tessellationPipelineStateHash; SCNMTLRenderPipeline *renderPipeline; } _cache; struct { unsigned long long hash; SCNMTLRenderPipeline *pipeline; } _compositeRendering[2]; SCNMTLRenderPipeline *_downSamplePipeline; struct { id backgroundTexture; id overlayTexture; id stencilDepthTexture; } _skCompositing; struct { unsigned long long pixelFormat; unsigned long long sampleCount; SCNMTLRenderPipeline *displayCubemapPipeline; SCNMTLRenderPipeline *displayTexture2DPipeline; SCNMTLRenderPipeline *displayDepth2DPipeline; SCNMTLRenderPipeline *displayDepthCubePipeline; } _debug; BOOL _showsAuthoringEnvironment; struct { BOOL collectEnabled; NSMutableDictionary *errors; } _compilationIssues; struct { unsigned int modelTransformBindingCount; unsigned int modelViewTransformBindingCount; unsigned int normalTransformBindingCount; unsigned int nodeOpacityBindingCount; } _counters; struct { unsigned long long passHash; struct __C3DMaterial *material; } _renderGraph; id _resourceManagerMonitor; id _commandBufferStatusMonitor; id _commandBufferScheduledHandlers; id _commandBufferCompletedHandlers; id _drawablePresentedHandlers; MTLRenderPassDescriptor *_clientRenderPassDescriptor; id _clientRenderCommandEncoder; id _clientCommandBuffer; unsigned long long _debugOptions; double _contentScaleFactor; id _clientCommandQueue; NSString *_generatedTexturePath; } @property (readonly) unsigned long long hash; @property (readonly) Class superclass; @property (readonly, copy) NSString *description; @property (readonly, copy) NSString *debugDescription; - (void)dealloc; - (id).cxx_construct; - (unsigned long long)depthStencilPixelFormat; - (void).cxx_destruct; - (void)writeBytes:(const void *)a0 length:(unsigned long long)a1; - (id)buffer:(int)a0 :(id)a1 :(long long *)a2 :(long long *)a3; - (unsigned long long)colorPixelFormatAtIndex:(long long)a0; - (const char *)constantData:(int)a0; - (BOOL)constantOffsetAndSize:(int)a0 :(id)a1 :(long long *)a2 :(long long *)a3; - (id)sampler:(int)a0 :(id)a1; - (id)texture:(int)a0 :(id)a1; - (void)viewports:(const void **)a0 :(long long *)a1; - (BOOL)vrrEnabled; - (void)_drawShadowMaps; - (void)_clearUnusedBindingPoints; - (void)_createResourceCommandBufferIfNeeded; - (void)_drawPBRTextures; - (void)_executeDrawCommand:(struct { struct __C3DFXMetalProgram *x0; struct __C3DMaterial *x1; struct __C3DGeometry *x2; struct __C3DNode *x3; struct __C3DMesh *x4; struct __C3DMeshElement *x5; struct { unsigned char x0[8]; } x6; struct __C3DFXPass *x7; unsigned int *x8; BOOL x9; BOOL x10; BOOL x11; BOOL x12; BOOL x13; unsigned char x14 : 3; })a0; - (void)_logLightingInformation; - (id)_newMTLBufferFromPoolWithLength:(unsigned long long)a0; - (void)_prepareMaterialTextures:(struct __C3DMaterial { } *)a0; - (void)_recycleMTLBufferToPool:(id)a0; - (void)_reduceStatsOfConstantBuffer:(id)a0; - (void)_updateProjectionMatrixForOrthographicSkyboxRenderingIfNeeded:(union C3DMatrix4x4 { float x0[16]; void /* unknown type, empty encoding */ x1[4]; struct { void /* unknown type, empty encoding */ x0[4]; } x2; } *)a0; - (float)_zFarForSkyboxRenderingProjectionMatrix:(const union C3DMatrix4x4 { float x0[16]; void /* unknown type, empty encoding */ x1[4]; struct { void /* unknown type, empty encoding */ x0[4]; } x2; } *)a0 defaultZFar:(float)a1; - (void)resetVolatileMeshElements; - (void)resetVolatileMeshes; @end