void ShaderGen::_printFeatureList(Stream &stream) { mPrinter->printLine(stream, "// Features:"); const FeatureSet &features = mFeatureData.features; for( U32 i=0; i < features.getCount(); i++ ) { S32 index; const FeatureType &type = features.getAt( i, &index ); ShaderFeature* feature = FEATUREMGR->getByType( type ); if ( feature ) { String line; if ( index > -1 ) line = String::ToString( "// %s %d", feature->getName().c_str(), index ); else line = String::ToString( "// %s", feature->getName().c_str() ); mPrinter->printLine( stream, line ); } } mPrinter->printLine(stream, ""); }
void ShaderGen::_processPixFeatures( Vector<GFXShaderMacro> ¯os, bool macrosOnly ) { const FeatureSet &features = mFeatureData.features; for( U32 i=0; i < features.getCount(); i++ ) { S32 index; const FeatureType &type = features.getAt( i, &index ); ShaderFeature* feature = FEATUREMGR->getByType( type ); if ( feature ) { feature->setProcessIndex( index ); feature->processPixMacros( macros, mFeatureData ); if ( macrosOnly ) continue; feature->mInstancingFormat = &mInstancingFormat; feature->processPix( mComponents, mFeatureData ); String line; if ( index > -1 ) line = String::ToString( " // %s %d\r\n", feature->getName().c_str(), index ); else line = String::ToString( " // %s\r\n", feature->getName().c_str() ); mOutput->addStatement( new GenOp( line ) ); if ( feature->getOutput() ) mOutput->addStatement( feature->getOutput() ); feature->reset(); mOutput->addStatement( new GenOp( " \r\n" ) ); } } ShaderConnector *connect = dynamic_cast<ShaderConnector *>( mComponents[C_CONNECTOR] ); connect->sortVars(); }