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

Method processMaterial

Engine/source/materials/matInstance.cpp:323–395  ·  view source on GitHub ↗

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

Source from the content-addressed store, hash-verified

321// Process stages
322//----------------------------------------------------------------------------
323bool MatInstance::processMaterial()
324{
325 AssertFatal( mMaterial, "MatInstance::processMaterial - Got null material!" );
326 //AssertFatal( mVertexFormat, "MatInstance::processMaterial - Got null vertex format!" );
327 if ( !mMaterial || !mVertexFormat )
328 return false;
329
330 SAFE_DELETE(mDefaultParameters);
331
332 CustomMaterial *custMat = NULL;
333
334 if( dynamic_cast<CustomMaterial*>(mMaterial) )
335 {
336 F32 pixVersion = GFX->getPixelShaderVersion();
337 custMat = static_cast<CustomMaterial*>(mMaterial);
338 if ((custMat->mVersion > pixVersion) || (custMat->mVersion == 0.0))
339 {
340 if(custMat->mFallback)
341 {
342 mMaterial = custMat->mFallback;
343 return processMaterial();
344 }
345 else
346 {
347 AssertWarn(custMat->mVersion == 0.0f, avar("Can't load CustomMaterial %s for %s, using generic FF fallback",
348 String(mMaterial->getName()).isEmpty() ? "Unknown" : mMaterial->getName(), custMat->mMapTo.c_str()));
349 }
350 }
351 else
352 mProcessedMaterial = new ProcessedCustomMaterial(*mMaterial);
353 }
354 else
355 mProcessedMaterial = getShaderMaterial();
356
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
379 mDefaultParameters = new MatInstParameters(mProcessedMaterial->getDefaultMaterialParameters());
380 mActiveParameters = mDefaultParameters;

Callers

nothing calls this directly

Calls 15

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

Tested by

no test coverage detected