MCPcopy Create free account
hub / github.com/GarageGames/Torque3D / processMaterial

Method processMaterial

Engine/source/materials/matInstance.cpp:321–396  ·  view source on GitHub ↗

---------------------------------------------------------------------------- Process stages ----------------------------------------------------------------------------

Source from the content-addressed store, hash-verified

319// Process stages
320//----------------------------------------------------------------------------
321bool MatInstance::processMaterial()
322{
323 AssertFatal( mMaterial, "MatInstance::processMaterial - Got null material!" );
324 //AssertFatal( mVertexFormat, "MatInstance::processMaterial - Got null vertex format!" );
325 if ( !mMaterial || !mVertexFormat )
326 return false;
327
328 SAFE_DELETE(mDefaultParameters);
329
330 CustomMaterial *custMat = NULL;
331
332 if( dynamic_cast<CustomMaterial*>(mMaterial) )
333 {
334 F32 pixVersion = GFX->getPixelShaderVersion();
335 custMat = static_cast<CustomMaterial*>(mMaterial);
336 if ((custMat->mVersion > pixVersion) || (custMat->mVersion == 0.0))
337 {
338 if(custMat->mFallback)
339 {
340 mMaterial = custMat->mFallback;
341 return processMaterial();
342 }
343 else
344 {
345 AssertWarn(custMat->mVersion == 0.0f, avar("Can't load CustomMaterial %s for %s, using generic FF fallback",
346 String(mMaterial->getName()).isEmpty() ? "Unknown" : mMaterial->getName(), custMat->mMapTo.c_str()));
347 mProcessedMaterial = new ProcessedFFMaterial(*mMaterial);
348 }
349 }
350 else
351 mProcessedMaterial = new ProcessedCustomMaterial(*mMaterial);
352 }
353 else if(GFX->getPixelShaderVersion() > 0.001)
354 mProcessedMaterial = getShaderMaterial();
355 else
356 mProcessedMaterial = new ProcessedFFMaterial(*mMaterial);
357
358 if (mProcessedMaterial)
359 {
360 mProcessedMaterial->addStateBlockDesc( mUserDefinedState );
361 mProcessedMaterial->setShaderMacros( mUserMacros );
362 mProcessedMaterial->setUserObject( mUserObject );
363
364 FeatureSet features( mFeatureList );
365 features.exclude( MATMGR->getExclusionFeatures() );
366
367 if (mVertexFormat->hasBlendIndices() && TSShape::smUseHardwareSkinning)
368 {
369 features.addFeature( MFT_HardwareSkinning );
370 }
371
372 if( !mProcessedMaterial->init(features, mVertexFormat, mFeaturesDelegate) )
373 {
374 Con::errorf( "Failed to initialize material '%s'", getMaterial()->getName() );
375 SAFE_DELETE( mProcessedMaterial );
376 return false;
377 }
378

Callers

nothing calls this directly

Calls 15

avarFunction · 0.85
errorfFunction · 0.85
setShaderMacrosMethod · 0.80
excludeMethod · 0.80
hasBlendIndicesMethod · 0.80
addFeatureMethod · 0.80
hasFeatureMethod · 0.80
StringClass · 0.50
getPixelShaderVersionMethod · 0.45
isEmptyMethod · 0.45
getNameMethod · 0.45
c_strMethod · 0.45

Tested by

no test coverage detected