void TCompiler::initializeGLPosition(TIntermNode* root) { InitializeVariables::InitVariableInfoList variables; InitializeVariables::InitVariableInfo var( "gl_Position", TType(EbtFloat, EbpUndefined, EvqPosition, 4)); variables.push_back(var); InitializeVariables initializer(variables); root->traverse(&initializer); }
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); }
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); }