@class NSString, NSSet, NSMutableDictionary, NSMutableString, TSCH3DOrderedDictionary, NSMutableArray, NSMutableSet, TSCH3DVersion; @interface TSCH3DShaderProgram : NSObject { NSMutableDictionary *_links; NSMutableArray *_declarationSection; NSMutableArray *_temporarySection; NSMutableArray *_statementSection; NSMutableArray *_resolutionSection; NSMutableArray *_outcomeSection; NSMutableArray *_conclusionSection; NSMutableArray *_sections[6]; NSMutableArray *_functions; NSMutableSet *_functionNames; NSMutableString *_accumulator; BOOL _isLinked; NSString *_vertex; NSString *_fragment; TSCH3DOrderedDictionary *_typeDeclarations; NSMutableDictionary *_linkedInputVariables; } @property (retain, nonatomic) NSMutableArray *sortedLinks; @property (retain, nonatomic) NSMutableDictionary *variableToVertexAttributeLocation; @property (readonly, nonatomic) NSString *vertex; @property (readonly, nonatomic) NSString *fragment; @property (readonly, nonatomic) TSCH3DVersion *version; @property (readonly, nonatomic) unsigned long long attributeBindingsCount; @property (readonly, nonatomic) unsigned long long textureBindingsCount; @property (copy, nonatomic) NSSet *variablesWithBackingResources; @property (copy, nonatomic) NSSet *interleavedAttributeVariables; - (id)init; - (void)link; - (void).cxx_destruct; - (id)initWithVersion:(id)a0; - (void)addResolution:(id)a0; - (void)addDeclaration:(id)a0; - (void)addFragmentStatement:(id)a0 statement:(id)a1; - (void)addFragmentTemporary:(id)a0 statement:(id)a1; - (void)addVertexDeclarationWithFormat:(id)a0; - (id)p_boundSamplerArgumentDeclarationForLinkedVariable:(id)a0 bufferIndex:(unsigned long long)a1; - (void)p_generateMetalVertexAttributes; - (id)usedNameForVariable:(id)a0 type:(struct TSCH3DShaderType { unsigned long long x0; })a1 scope:(struct TSCH3DShaderVariableScopeType { unsigned long long x0; })a2; - (void)addDeclaration:(id)a0 space:(id)a1 statement:(id)a2; - (void)addFragmentStatementWithFormat:(id)a0; - (void)addFragmentTemporaryWithFormat:(id)a0; - (void)addVertexDeclaration:(id)a0 statement:(id)a1; - (BOOL)isMetal; - (id)p_boundTextureArgumentDeclarationForLinkedVariable:(id)a0 bufferIndex:(unsigned long long)a1; - (id)p_generateType:(struct TSCH3DShaderType { unsigned long long x0; })a0; - (void)accumulateSection:(id)a0 intoArray:(id)a1; - (void)addAttributeVariable:(id)a0; - (void)addConclusion:(id)a0; - (void)addConclusion:(id)a0 space:(id)a1 statement:(id)a2; - (void)addConclusion:(id)a0 space:(id)a1 type:(struct TSCH3DShaderType { unsigned long long x0; })a2 format:(id)a3 arguments:(char *)a4; - (void)addConclusion:(id)a0 statement:(id)a1; - (void)addConclusion:(id)a0 type:(struct TSCH3DShaderType { unsigned long long x0; })a1; - (void)addConclusion:(id)a0 type:(struct TSCH3DShaderType { unsigned long long x0; })a1 statement:(id)a2; - (void)addConclusionWithSpace:(id)a0 statement:(id)a1; - (void)addDeclaration:(id)a0 space:(id)a1 type:(struct TSCH3DShaderType { unsigned long long x0; })a2 format:(id)a3 arguments:(char *)a4; - (void)addDeclaration:(id)a0 statement:(id)a1; - (void)addDeclaration:(id)a0 type:(struct TSCH3DShaderType { unsigned long long x0; })a1; - (void)addDeclaration:(id)a0 type:(struct TSCH3DShaderType { unsigned long long x0; })a1 statement:(id)a2; - (void)addDeclarationWithSpace:(id)a0 statement:(id)a1; - (void)addFragmentConclusion:(id)a0; - (void)addFragmentConclusion:(id)a0 space:(id)a1 statement:(id)a2; - (void)addFragmentConclusion:(id)a0 statement:(id)a1; - (void)addFragmentConclusionWithFormat:(id)a0; - (void)addFragmentDeclaration:(id)a0; - (void)addFragmentDeclaration:(id)a0 space:(id)a1 statement:(id)a2; - (void)addFragmentDeclaration:(id)a0 statement:(id)a1; - (void)addFragmentDeclarationWithFormat:(id)a0; - (void)addFragmentOutcome:(id)a0; - (void)addFragmentOutcome:(id)a0 space:(id)a1 statement:(id)a2; - (void)addFragmentOutcome:(id)a0 statement:(id)a1; - (void)addFragmentOutcomeWithFormat:(id)a0; - (void)addFragmentResolution:(id)a0; - (void)addFragmentResolution:(id)a0 space:(id)a1 statement:(id)a2; - (void)addFragmentResolution:(id)a0 statement:(id)a1; - (void)addFragmentResolutionWithFormat:(id)a0; - (void)addFragmentStatement:(id)a0; - (void)addFragmentStatement:(id)a0 space:(id)a1 statement:(id)a2; - (void)addFragmentTemporary:(id)a0; - (void)addFragmentTemporary:(id)a0 space:(id)a1 statement:(id)a2; - (void)addFunctionString:(id)a0 name:(id)a1; - (void)addOutcome:(id)a0; - (void)addOutcome:(id)a0 space:(id)a1 statement:(id)a2; - (void)addOutcome:(id)a0 space:(id)a1 type:(struct TSCH3DShaderType { unsigned long long x0; })a2 format:(id)a3 arguments:(char *)a4; - (void)addOutcome:(id)a0 statement:(id)a1; - (void)addOutcome:(id)a0 type:(struct TSCH3DShaderType { unsigned long long x0; })a1; - (void)addOutcome:(id)a0 type:(struct TSCH3DShaderType { unsigned long long x0; })a1 statement:(id)a2; - (void)addOutcomeWithSpace:(id)a0 statement:(id)a1; - (void)addResolution:(id)a0 space:(id)a1 statement:(id)a2; - (void)addResolution:(id)a0 space:(id)a1 type:(struct TSCH3DShaderType { unsigned long long x0; })a2 format:(id)a3 arguments:(char *)a4; - (void)addResolution:(id)a0 statement:(id)a1; - (void)addResolution:(id)a0 type:(struct TSCH3DShaderType { unsigned long long x0; })a1; - (void)addResolution:(id)a0 type:(struct TSCH3DShaderType { unsigned long long x0; })a1 statement:(id)a2; - (void)addResolutionWithSpace:(id)a0 statement:(id)a1; - (void)addStatement:(id)a0; - (void)addStatement:(id)a0 space:(id)a1 statement:(id)a2; - (void)addStatement:(id)a0 space:(id)a1 type:(struct TSCH3DShaderType { unsigned long long x0; })a2 format:(id)a3 arguments:(char *)a4; - (void)addStatement:(id)a0 statement:(id)a1; - (void)addStatement:(id)a0 type:(struct TSCH3DShaderType { unsigned long long x0; })a1; - (void)addStatement:(id)a0 type:(struct TSCH3DShaderType { unsigned long long x0; })a1 statement:(id)a2; - (void)addStatementWithSpace:(id)a0 statement:(id)a1; - (void)addTemporary:(id)a0; - (void)addTemporary:(id)a0 space:(id)a1 statement:(id)a2; - (void)addTemporary:(id)a0 space:(id)a1 type:(struct TSCH3DShaderType { unsigned long long x0; })a2 format:(id)a3 arguments:(char *)a4; - (void)addTemporary:(id)a0 statement:(id)a1; - (void)addTemporary:(id)a0 type:(struct TSCH3DShaderType { unsigned long long x0; })a1; - (void)addTemporary:(id)a0 type:(struct TSCH3DShaderType { unsigned long long x0; })a1 statement:(id)a2; - (void)addTemporaryWithSpace:(id)a0 statement:(id)a1; - (void)addToSection:(id)a0 statement:(id)a1 type:(struct TSCH3DShaderType { unsigned long long x0; })a2; - (void)addToSection:(id)a0 variable:(id)a1 space:(id)a2 type:(struct TSCH3DShaderType { unsigned long long x0; })a3 format:(id)a4 arguments:(char *)a5; - (void)addUniformVariable:(id)a0; - (void)addVertexConclusion:(id)a0; - (void)addVertexConclusion:(id)a0 space:(id)a1 statement:(id)a2; - (void)addVertexConclusion:(id)a0 statement:(id)a1; - (void)addVertexConclusionWithFormat:(id)a0; - (void)addVertexDeclaration:(id)a0; - (void)addVertexDeclaration:(id)a0 space:(id)a1 statement:(id)a2; - (void)addVertexOutcome:(id)a0; - (void)addVertexOutcome:(id)a0 space:(id)a1 statement:(id)a2; - (void)addVertexOutcome:(id)a0 statement:(id)a1; - (void)addVertexOutcomeWithFormat:(id)a0; - (void)addVertexResolution:(id)a0; - (void)addVertexResolution:(id)a0 space:(id)a1 statement:(id)a2; - (void)addVertexResolution:(id)a0 statement:(id)a1; - (void)addVertexResolutionWithFormat:(id)a0; - (void)addVertexStatement:(id)a0; - (void)addVertexStatement:(id)a0 space:(id)a1 statement:(id)a2; - (void)addVertexStatement:(id)a0 statement:(id)a1; - (void)addVertexStatementWithFormat:(id)a0; - (void)addVertexTemporary:(id)a0; - (void)addVertexTemporary:(id)a0 space:(id)a1 statement:(id)a2; - (void)addVertexTemporary:(id)a0 statement:(id)a1; - (void)addVertexTemporaryWithFormat:(id)a0; - (void)assignVariable:(id)a0 statement:(id)a1 substitutes:(id)a2 type:(struct TSCH3DShaderType { unsigned long long x0; })a3 toSection:(int)a4; - (void)declareType:(id)a0 name:(id)a1; - (id)existingLinkageOfVariable:(id)a0; - (long long)fragmentUniformBufferIndex; - (BOOL)hasFunction:(id)a0; - (id)interleavedLinkedVertexAttributeVariables; - (BOOL)isSamplerVariable:(id)a0; - (id)linkageOfVariable:(id)a0; - (id)linkedInputVariablesForType:(struct TSCH3DShaderType { unsigned long long x0; })a0 scope:(struct TSCH3DShaderVariableScopeType { unsigned long long x0; })a1; - (id)linkedTextureVariables; - (id)linkedUniformVariablesForType:(struct TSCH3DShaderType { unsigned long long x0; })a0 isTexture:(BOOL)a1; - (id)linkedVertexAttributeVariables; - (void)p_addCompatibilityFunctions; - (void)p_addToSection:(id)a0 variable:(id)a1 space:(id)a2 type:(struct TSCH3DShaderType { unsigned long long x0; })a3 format:(id)a4 substitutes:(id)a5; - (id)p_boundArgumentDeclarationForLinkedVariable:(id)a0 variableType:(id)a1 variableName:(id)a2 bindingType:(id)a3 bufferIndex:(unsigned long long)a4; - (id)p_boundBufferArgumentDeclarationForLinkedVariable:(id)a0 variableType:(id)a1 variableName:(id)a2 bufferIndex:(unsigned long long)a3; - (unsigned long long)p_countOfAttributeBindingsForType:(struct TSCH3DShaderType { unsigned long long x0; })a0; - (unsigned long long)p_fragmentAttributeBindingsCount; - (void)p_generateFunctions; - (void)p_generateGlobalsForType:(struct TSCH3DShaderType { unsigned long long x0; })a0; - (void)p_generateMetalFragmentGlobals; - (void)p_generateMetalFragmentInputs; - (void)p_generateMetalFragmentTextureVariable; - (void)p_generateMetalVertexGlobals; - (void)p_generateMetalVertexInputs; - (void)p_generatePreprocessorDefinitionsForType:(struct TSCH3DShaderType { unsigned long long x0; })a0; - (void)p_generateSection:(id)a0 type:(struct TSCH3DShaderType { unsigned long long x0; })a1; - (void)p_generateType:(struct TSCH3DShaderType { unsigned long long x0; })a0 globalType:(struct TSCH3DShaderVariableScopeType { unsigned long long x0; })a1 storageQualifier:(id)a2; - (void)p_generateTypeDeclarations; - (unsigned long long)p_metalVertexBufferCount; - (id)p_metalVertexInputLines; - (unsigned long long)p_vertexAttributeBindingsCount; - (unsigned long long)processSection:(id)a0 accumulate:(id)a1 conclusions:(id)a2; - (struct pair { BOOL x0; id x1; })resultLinkageOfVariable:(id)a0; - (long long)uniformBufferIndexForType:(struct TSCH3DShaderType { unsigned long long x0; })a0; - (struct TSCH3DShaderType { unsigned long long x0; })uniformLinkageFor:(id)a0; - (id)uniformVariablesForType:(struct TSCH3DShaderType { unsigned long long x0; })a0; - (id)usedAttributeNameForVariable:(id)a0; - (id)usedUniformNameForVariable:(id)a0; - (unsigned long long)vertexAttributeLocationForVariable:(id)a0; - (long long)vertexUniformBufferIndex; @end