//----------------------------------------------------------------------- void HLSLProgramWriter::writeUniformParameter(std::ostream& os, UniformParameterPtr parameter) { bool isHlsl4 = Ogre::RTShader::ShaderGenerator::getSingletonPtr()->IsHlsl4(); GpuConstantType paramType = parameter->getType(); if (isHlsl4 && paramType >= GCT_SAMPLER1D && paramType <= GCT_SAMPLERCUBE) os<<mGpuConstTypeMapV4[paramType]; else os<<mGpuConstTypeMap[paramType]; os << "\t" << parameter->getName(); if (parameter->isArray() == true) { os << "[" << parameter->getSize() << "]"; } if (parameter->isSampler()) { if (isHlsl4) os << " : register(t" << parameter->getIndex() << ")"; else os << " : register(s" << parameter->getIndex() << ")"; } else if (parameter->getType() == GCT_SAMPLER_STATE) { os << " : register(s" << parameter->getIndex() << ")"; } }
//----------------------------------------------------------------------- void HLSLProgramWriter::writeUniformParameter(std::ostream& os, UniformParameterPtr parameter) { os << mGpuConstTypeMap[parameter->getType()]; os << "\t"; os << parameter->getName(); if (parameter->isSampler()) { os << " : register(s" << parameter->getIndex() << ")"; } }
//----------------------------------------------------------------------- void CGProgramWriter::writeUniformParameter(std::ostream& os, UniformParameterPtr parameter) { os << mGpuConstTypeMap[parameter->getType()]; os << "\t"; os << parameter->getName(); if (parameter->isArray() == true) { os << "[" << parameter->getSize() << "]"; } if (parameter->isSampler()) { os << " : register(s" << parameter->getIndex() << ")"; } }
//----------------------------------------------------------------------------- void GLSLESProgramProcessor::bindTextureSamplers(Program* pCpuProgram, GpuProgramPtr pGpuProgram) { GpuProgramParametersSharedPtr pGpuParams = pGpuProgram->getDefaultParameters(); const UniformParameterList& progParams = pCpuProgram->getParameters(); UniformParameterConstIterator itParams; // Bind the samplers. for (itParams = progParams.begin(); itParams != progParams.end(); ++itParams) { const UniformParameterPtr pCurParam = *itParams; if (pCurParam->isSampler()) { pGpuParams->setNamedConstant(pCurParam->getName(), pCurParam->getIndex()); } } }
//----------------------------------------------------------------------------- void GLSLESProgramProcessor::bindTextureSamplers(Program* pCpuProgram, GpuProgramPtr pGpuProgram) { GpuProgramParametersSharedPtr pGpuParams = pGpuProgram->getDefaultParameters(); const UniformParameterList& progParams = pCpuProgram->getParameters(); UniformParameterConstIterator itParams; // Bind the samplers. for (itParams = progParams.begin(); itParams != progParams.end(); ++itParams) { const UniformParameterPtr pCurParam = *itParams; if (pCurParam->isSampler()) { // The optimizer may remove some unnecessary parameters, so we should ignore them pGpuParams->setIgnoreMissingParams(true); pGpuParams->setNamedConstant(pCurParam->getName(), pCurParam->getIndex()); } } }