void TerrainNormalMapFeatHLSL::processVert( Vector<ShaderComponent*> &componentList, const MaterialFeatureData &fd ) { // We only need to process normals during the prepass. if ( !fd.features.hasFeature( MFT_PrePassConditioner ) ) return; MultiLine *meta = new MultiLine; // Make sure the world to tangent transform // is created and available for the pixel shader. getOutViewToTangent( componentList, meta, fd ); output = meta; }
void DeferredBumpFeatHLSL::processVert( Vector<ShaderComponent*> &componentList, const MaterialFeatureData &fd ) { if( fd.features[MFT_PrePassConditioner] ) { // There is an output conditioner active, so we need to supply a transform // to the pixel shader. MultiLine *meta = new MultiLine; // We need the view to tangent space transform in the pixel shader. getOutViewToTangent( componentList, meta, fd ); // Make sure there are texcoords if( !fd.features[MFT_Parallax] && !fd.features[MFT_DiffuseMap] ) { const bool useTexAnim = fd.features[MFT_TexAnim]; getOutTexCoord( "texCoord", "float2", true, useTexAnim, meta, componentList ); if ( fd.features.hasFeature( MFT_DetailNormalMap ) ) addOutDetailTexCoord( componentList, meta, useTexAnim ); } output = meta; } else if ( fd.materialFeatures[MFT_NormalsOut] || fd.features[MFT_ForwardShading] || //start jc fd.features[MFT_IsObjectSpaceNormals] || // end jc !fd.features[MFT_RTLighting] ) { Parent::processVert( componentList, fd ); return; } else { output = NULL; } }