Example #1
0
void TCompiler::initializeVaryingsWithoutStaticUse(TIntermNode* root)
{
    InitializeVariables::InitVariableInfoList variables;
    for (size_t ii = 0; ii < varyings.size(); ++ii)
    {
        const TVariableInfo& varying = varyings[ii];
        if (varying.staticUse)
            continue;
        unsigned char primarySize = 1, secondarySize = 1;
        switch (varying.type)
        {
          case SH_FLOAT:
            break;
          case SH_FLOAT_VEC2:
            primarySize = 2;
            break;
          case SH_FLOAT_VEC3:
            primarySize = 3;
            break;
          case SH_FLOAT_VEC4:
            primarySize = 4;
            break;
          case SH_FLOAT_MAT2:
            primarySize = 2;
            secondarySize = 2;
            break;
          case SH_FLOAT_MAT3:
            primarySize = 3;
            secondarySize = 3;
            break;
          case SH_FLOAT_MAT4:
            primarySize = 4;
            secondarySize = 4;
            break;
          default:
            ASSERT(false);
        }
        TType type(EbtFloat, EbpUndefined, EvqVaryingOut, primarySize, secondarySize, varying.isArray);
        TString name = varying.name.c_str();
        if (varying.isArray)
        {
            type.setArraySize(varying.size);
            name = name.substr(0, name.find_first_of('['));
        }

        InitializeVariables::InitVariableInfo var(name, type);
        variables.push_back(var);
    }
    InitializeVariables initializer(variables);
    root->traverse(&initializer);
}
Example #2
0
 TString Trim(const TString& strInp, TString symbols) {
     size_t startpos = 0;
     size_t endpos = strInp.size();
     bool meatFound = false;
     for (auto iter = strInp.begin(); iter != strInp.end(); ++iter) {
         if (symbols.find_first_of(*iter) != TString::npos) {
             if (!meatFound) {
                 startpos++;
             } else {
                 endpos--;
             }
         } else {
             meatFound = true;
             endpos = strInp.size();
         }
     }
     return strInp.substr(startpos, endpos);
 }
Example #3
0
void TCompiler::initializeVaryingsWithoutStaticUse(TIntermNode* root)
{
    InitializeVariables::InitVariableInfoList variables;
    for (size_t ii = 0; ii < varyings.size(); ++ii)
    {
        const sh::Varying& varying = varyings[ii];
        if (varying.staticUse)
            continue;
        unsigned char primarySize = static_cast<unsigned char>(gl::VariableColumnCount(varying.type));
        unsigned char secondarySize = static_cast<unsigned char>(gl::VariableRowCount(varying.type));
        TType type(EbtFloat, EbpUndefined, EvqVaryingOut, primarySize, secondarySize, varying.isArray());
        TString name = varying.name.c_str();
        if (varying.isArray())
        {
            type.setArraySize(varying.arraySize);
            name = name.substr(0, name.find_first_of('['));
        }

        InitializeVariables::InitVariableInfo var(name, type);
        variables.push_back(var);
    }
    InitializeVariables initializer(variables);
    root->traverse(&initializer);
}