shaderFeature.cpp
Engine/source/shaderGen/shaderFeature.cpp
Detailed Description
1 2//----------------------------------------------------------------------------- 3// Copyright (c) 2012 GarageGames, LLC 4// 5// Permission is hereby granted, free of charge, to any person obtaining a copy 6// of this software and associated documentation files (the "Software"), to 7// deal in the Software without restriction, including without limitation the 8// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 9// sell copies of the Software, and to permit persons to whom the Software is 10// furnished to do so, subject to the following conditions: 11// 12// The above copyright notice and this permission notice shall be included in 13// all copies or substantial portions of the Software. 14// 15// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 20// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 21// IN THE SOFTWARE. 22//----------------------------------------------------------------------------- 23 24#include "platform/platform.h" 25#include "shaderGen/shaderFeature.h" 26 27#include "shaderGen/langElement.h" 28#include "shaderGen/shaderOp.h" 29 30 31void ShaderFeature::addDependency( const ShaderDependency *dependsOn ) 32{ 33 for ( U32 i = 0; i < mDependencies.size(); i++ ) 34 { 35 if ( *mDependencies[i] == *dependsOn ) 36 return; 37 } 38 39 mDependencies.push_back( dependsOn ); 40} 41 42ShaderFeature::Resources ShaderFeature::getResources( const MaterialFeatureData &fd ) 43{ 44 Resources temp; 45 return temp; 46} 47 48const char* ShaderFeature::getOutputTargetVarName( OutputTarget target ) const 49{ 50 const char* targName = "col"; 51 52 switch(target) 53 { 54 case DefaultTarget: 55 targName = "col"; 56 break; 57 58 case RenderTarget1: 59 targName = "col1"; 60 break; 61 62 case RenderTarget2: 63 targName = "col2"; 64 break; 65 66 case RenderTarget3: 67 targName = "col3"; 68 break; 69 70 case RenderTarget4: 71 targName = "col4"; 72 break; 73 74 case RenderTarget5: 75 targName = "col5"; 76 break; 77 } 78 79 return targName; 80} 81 82Var* ShaderFeature::findOrCreateLocal( const char *name, 83 const char *type, 84 MultiLine *multi ) 85{ 86 Var *outVar = (Var*)LangElement::find( name ); 87 if ( !outVar ) 88 { 89 outVar = new Var; 90 outVar->setType( type ); 91 outVar->setName( name ); 92 multi->addStatement( new GenOp( " @;\r\n", new DecOp( outVar ) ) ); 93 } 94 95 return outVar; 96} 97 98void ShaderFeature::setInstancingFormat(GFXVertexFormat *format) 99{ 100 mInstancingFormat = format; 101} 102