public static ShaderOp GenerateOutputBlockStruct(FrontEndTranslator translator, ShaderType shaderType, ShaderInterfaceSet interfaceSet, ShaderBlock declarationBlock, ShaderBlock decorationsBlock) { var instanceOp = GenerateOutputStruct(translator, shaderType, interfaceSet, declarationBlock, decorationsBlock); if (instanceOp == null) { return(null); } var instanceType = instanceOp.mResultType.GetDereferenceType(); Decorations.AddDecorationBlock(translator, instanceType, decorationsBlock); return(instanceOp); }
public static ShaderOp GenerateInputStruct(FrontEndTranslator translator, ShaderType shaderType, ShaderInterfaceSet interfaceSet, ShaderBlock declarationBlock, ShaderBlock decorationsBlock) { if (interfaceSet.Fields.Count == 0) { return(null); } var typeName = shaderType.mMeta.TypeName.CloneAsAppended("_Inputs"); var instanceName = "In"; var instanceOp = EntryPointGenerationShared.GenerateInterfaceStructAndOp(translator, interfaceSet.Fields, typeName, instanceName, StorageClass.Input); var instanceType = instanceOp.mResultType.GetDereferenceType(); Decorations.AddDecorationBlock(translator, instanceType, decorationsBlock); Decorations.AddDecorationLocation(translator, instanceOp, 0, decorationsBlock); declarationBlock.mLocalVariables.Add(instanceOp); return(instanceOp); }