TString QualifiedStructNameString(const TStructure &structure, bool useHLSLRowMajorPacking, bool useStd140Packing) { if (structure.symbolType() == SymbolType::Empty) { return ""; } TString prefix = ""; // Structs packed with row-major matrices in HLSL are prefixed with "rm" // GLSL column-major maps to HLSL row-major, and the converse is true if (useStd140Packing) { prefix += "std_"; } if (useHLSLRowMajorPacking) { prefix += "rm_"; } return prefix + StructNameString(structure); }
TString DecorateField(const ImmutableString &string, const TStructure &structure) { if (structure.symbolType() != SymbolType::BuiltIn) { return Decorate(string); } return TString(string.data()); }
TString StructNameString(const TStructure &structure) { if (structure.symbolType() == SymbolType::Empty) { return ""; } // For structures at global scope we use a consistent // translation so that we can link between shader stages. if (structure.atGlobalScope()) { return Decorate(structure.name()); } return "ss" + str(structure.uniqueId().get()) + "_" + TString(structure.name().data()); }