Esempio n. 1
0
void TOutputGLSLBase::writeLayoutQualifier(const TType &type)
{
    if (type.getQualifier() == EvqFragmentOut || type.getQualifier() == EvqVertexIn)
    {
        const TLayoutQualifier &layoutQualifier = type.getLayoutQualifier();
        if (layoutQualifier.location >= 0)
        {
            TInfoSinkBase &out = objSink();
            out << "layout(location = " << layoutQualifier.location << ") ";
        }
    }
}
Esempio n. 2
0
// TODO(jmadill): This is not complete.
void TOutputVulkanGLSL::writeLayoutQualifier(const TType &type)
{
    TInfoSinkBase &out                      = objSink();
    const TLayoutQualifier &layoutQualifier = type.getLayoutQualifier();
    out << "layout(";

    if (type.getQualifier() == EvqAttribute || type.getQualifier() == EvqFragmentOut ||
        type.getQualifier() == EvqVertexIn)
    {
        // TODO(jmadill): Multiple output locations.
        out << "location = "
            << "0";
    }

    if (IsImage(type.getBasicType()) && layoutQualifier.imageInternalFormat != EiifUnspecified)
    {
        ASSERT(type.getQualifier() == EvqTemporary || type.getQualifier() == EvqUniform);
        out << getImageInternalFormatString(layoutQualifier.imageInternalFormat);
    }

    out << ") ";
}