|
Cogs.Core
|
Material manager handling loading and processing of Material resources. More...
#include <MaterialManager.h>
Public Member Functions | |
| MaterialManager (Context *context) | |
| Constructs a MaterialManager in the given context. | |
| ~MaterialManager () | |
| Destructs the MaterialManager. | |
| void | clear () override |
| Override clear to do nothing as we let loaded materials persists through clears. | |
| void | releaseAll () |
| Clear out all materials, done as part of shutdown process. | |
| void | initializeDefaultMaterial () |
| Initializes the MaterialManager, setting up the default material. | |
| MaterialHandle | getDefaultMaterial () |
| Get the default material. | |
| MaterialHandle | getMaterial (const StringView &name) |
| MaterialHandle | loadMaterial (const StringView &fileName, MaterialLoadFlags materialLoadFlags=MaterialLoadFlags::None, ResourceId resourceId=NoResourceId) |
| Loads a Material from the given fileName. | |
| void | handleLoad (MaterialLoadInfo *loadInfo) override |
| Overridden to handle loading of Material resources. | |
| void | handleReload (ResourceHandleBase handle) override |
| bool | setupMaterial (Material *material) |
| EffectHandle | loadMaterialVariant (Material *material, const MaterialInstance *materialInstance, const MeshStreamsLayout *streamsLayout, const EnginePermutation *permutation, const RenderPassOptions &passOptions, const ClipShapeType clipShape) |
| ActivationResult | handleActivation (MaterialHandle handle, Material *resource) override |
| Overridden to handle activation of Materials, updating the resource in the renderer. | |
| void | handleDeletion (Material *resource) override |
| Overridden to handle material deletion, removing the resource from the renderer. | |
Public Member Functions inherited from Cogs::Core::ResourceManager< Material, MaterialLoadInfo > | |
| ResourceManager (Context *context, Collections::ElementOffset capacity=1024) | |
| Constructs a resource manager with the given context. | |
| ~ResourceManager () override | |
| Destructs a resource manager, provided for destruction via base pointer. | |
| void | clear () override |
| Clear the resource manager, cleaning up resources held by member handles. | |
| void | clearSwapping () override |
| Clear the swap queue, ensuring indirect resource references are released. | |
| ResourceHandle | create () |
| Create a new resource. | |
| ResourceHandle | release (ResourceId resourceId) |
| ResourceHandle | loadResource (MaterialLoadInfo *loadInfo) |
| ResourceProxy | createLocked () |
| Creates a new resource, but returns a ResourceProxy for thread safe editing instead of a handle to the actual resource. | |
| ResourceProxy | lock (const ResourceHandle &handle) |
| Takes the handle given and returns a resource proxy to edit the contents of the held resource safely on other threads than the main thread. | |
| void | unlockProxy (const ResourceHandle &handle, const ResourceHandle &proxy) |
| Unlock the given resource proxy. | |
| ResourceHandle | generateHandle (ResourceBase *resource) |
| Generate a handle to the given resource. | |
| virtual void | handleLoad (MaterialLoadInfo *) |
| Handler for resource loading. | |
| virtual void | handleFailedLoad (const MaterialLoadInfo *) |
| Handler for failed resource loads using the given loadInfo. | |
| virtual ActivationResult | handleActivation (ResourceHandle, Material *) |
| Handler for activation of resources. | |
| virtual void | handleDeletion (Material *) |
| Handler for deletion of resources. | |
| Material * | get (const ResourceHandleBase &handle) |
| Resolve the given handle to a resource. | |
| void | processSwapping () override |
| Process queued swap operations, exchanging resource contents of the destination resources by those indicated in the operation data. | |
| ResourceHandle | getHandle (const ResourceId id) const |
| Get a resource handle to the resource with the given id. | |
| void | registerLoader (IResourceLoader< Material, MaterialLoadInfo > *loader) |
| Register a resource loader capable of handling resources of the template type. | |
| void | destroyLoadInfoInternal (ResourceLoadInfoBase *loadInfo) override |
| MaterialLoadInfo * | createLoadInfo () |
Public Member Functions inherited from Cogs::Core::ResourceManagerBase | |
| ResourceManagerBase (Context *context) | |
| void | initialize () override |
| void | clear () override |
| void | reportLeaks (std::string_view typeName) |
| std::string | getReport () |
| Return a string with current resource usage. | |
| bool | checkPreloaded (ResourceLoadInfoBase *loadInfo) |
| ResourceHandleBase | releaseInternal (ResourceId resourceId) |
| Releases a resourceId -> ResourceHandle mapping. | |
| ResourceHandleBase | loadResourceInternal (ResourceLoadInfoBase *loadInfo) |
| Load a resource using the given loadInfo. | |
| void | processLoading () final |
| Process loading resources. | |
| void | setProcessed (ResourceLoadInfoBase *loadInfo, bool swapping=false) |
| Signal the resource being loaded as done loading and ready for activation etc. | |
| void | activateResources () final |
| virtual void | processDeletion () override |
| Process resources pending deallocation. | |
| void | fillDeletionQueue (std::vector< ResourceBase * > &deletion) |
| void | destroyLocked (ResourceBase *resource) |
| void | safeDestroy (ResourceBase *resource) |
| ResourceId | getNextResourceId () override |
| Get the next unique resource id. | |
| void | resourceChanged (ResourceBase *resource) override |
| void | resourceDeleted (ResourceBase *resource) override |
| void | setResourceId (ResourceBase *resource, ResourceId id) override |
| Assign the given id to a previously created resource. | |
| void | queueResource (ResourceLoadInfoBase *loadInfo) |
| Re-queue the given loadInfo to defer loading to the next time the processLoading() phase is performed. | |
| virtual void | handleLoadInternal (ResourceLoadInfoBase *loadInfo)=0 |
| virtual ActivationResult | handleActivationInternal (ResourceHandleBase r, ResourceBase *resource)=0 |
| virtual void | handleDeletionInternal (ResourceBase *resource)=0 |
| virtual void | handleFailedLoadInternal (ResourceLoadInfoBase *loadInfo)=0 |
| virtual void | destroyLoadInfoInternal (ResourceLoadInfoBase *loadInfo)=0 |
| virtual bool | shouldAutoReload () const |
| virtual bool | shouldMergeBySource () const |
| virtual void | handleReload (ResourceHandleBase) |
| std::vector< ResourceBase * > | getAllocatedResources () const |
| ResourceHandleBase | getOrCreate (ResourceId id) |
| ResourceHandleBase | getByName (std::string_view name) const |
| ResourceHandleBase | getBySource (std::string_view source) const |
| ResourceHandleBase | createResource () |
| virtual ResourceBase * | createInternal ()=0 |
| virtual void | destroyInternal (ResourceBase *resource)=0 |
| virtual void | destroyInternalLocked (ResourceBase *resource)=0 |
| ResourceHandleBase | generateHandle (ResourceBase *resource) |
| void | clearUpdated () |
| virtual int | getUpdateQuota () const |
| size_t | updatedResourceCount () |
| size_t | orphanedResourceCount () |
| size_t | allocatedResourceCount () |
| virtual void | initialize ()=0 |
| virtual void | clear ()=0 |
| virtual void | clearSwapping ()=0 |
| virtual void | processLoading ()=0 |
| virtual void | processSwapping ()=0 |
| virtual void | activateResources ()=0 |
| virtual void | processDeletion ()=0 |
| virtual void | resourceChanged (ResourceBase *resource)=0 |
| virtual void | resourceDeleted (ResourceBase *resource)=0 |
| virtual ResourceId | getNextResourceId ()=0 |
| virtual void | setResourceId (ResourceBase *resource, ResourceId id)=0 |
Public Attributes | |
| MaterialHandle | materialBase |
| MaterialDefinition | materialBaseDefinition |
| std::unordered_map< std::string, MaterialHandle > | materials |
| std::unique_ptr< MaterialDefinitionManager > | materialDefinitionManager |
Additional Inherited Members | |
Public Types inherited from Cogs::Core::ResourceManager< Material, MaterialLoadInfo > | |
| using | ResourceHandle = ResourceHandle_t< Material > |
| Type of handle used to hold resources. | |
| using | ResourceProxy = ResourceProxy< Material, ResourceManager > |
| Type of resource proxy objects, specialized on the type of resource. | |
Protected Member Functions inherited from Cogs::Core::ResourceManager< Material, MaterialLoadInfo > | |
| Material * | createInternal () override |
| void | destroyInternal (ResourceBase *resource) override |
| void | handleLoadInternal (ResourceLoadInfoBase *loadInfo) override |
| ActivationResult | handleActivationInternal (ResourceHandleBase r, ResourceBase *resource) override |
| void | handleDeletionInternal (ResourceBase *resource) override |
| void | handleFailedLoadInternal (ResourceLoadInfoBase *loadInfo) override |
| IResourceLoader< Material, MaterialLoadInfo > * | findLoader (const MaterialLoadInfo *loadInfo) |
| Find a loader capable of loading the resource given by loadInfo. | |
Protected Member Functions inherited from Cogs::Core::ResourceManagerBase | |
| ResourceHandleBase | getResourceHandle (ResourceId id) const |
| Get existing resource handle. | |
| bool | isValidResource (ResourceId id) const |
| Check if resource handle points to. | |
| virtual void | postProcessLoading () |
| Hook for resource managers to run code at the tail of processLoading. | |
Protected Attributes inherited from Cogs::Core::ResourceManager< Material, MaterialLoadInfo > | |
| Mutex | swapMutex |
| Collections::Pool< Material > | resources |
| std::vector< IResourceLoader< Material, MaterialLoadInfo > * > | loaders |
| std::deque< SwapOperation > | swapQueue |
| ResourceHandle | defaultResource |
Protected Attributes inherited from Cogs::Core::ResourceManagerBase | |
| std::unique_ptr< ResourceManagerBaseStorage > | storage |
| Context * | context = nullptr |
| ResourceTypes | resourceType = ResourceTypes::Unknown |
Material manager handling loading and processing of Material resources.
Definition at line 39 of file MaterialManager.h.
|
inline |
Constructs a MaterialManager in the given context.
Definition at line 43 of file MaterialManager.h.
| Cogs::Core::MaterialManager::~MaterialManager | ( | ) |
Destructs the MaterialManager.
Definition at line 55 of file MaterialManager.cpp.
References Cogs::Core::ResourceManager< ResourceType, LoadInfoType >::clear().
|
inlineoverridevirtual |
Override clear to do nothing as we let loaded materials persists through clears.
Implements Cogs::Core::IResourceManager.
Definition at line 54 of file MaterialManager.h.
| Cogs::Core::MaterialHandle Cogs::Core::MaterialManager::getDefaultMaterial | ( | ) |
Get the default material.
Definition at line 88 of file MaterialManager.cpp.
Referenced by Cogs::Core::DefaultMaterial::initialize().
| Cogs::Core::MaterialHandle Cogs::Core::MaterialManager::getMaterial | ( | const StringView & | name | ) |
Definition at line 93 of file MaterialManager.cpp.
|
overridevirtual |
Overridden to handle activation of Materials, updating the resource in the renderer.
Reimplemented from Cogs::Core::ResourceManager< Material, MaterialLoadInfo >.
Definition at line 1028 of file MaterialManager.cpp.
|
overridevirtual |
Overridden to handle material deletion, removing the resource from the renderer.
Reimplemented from Cogs::Core::ResourceManager< Material, MaterialLoadInfo >.
Definition at line 1033 of file MaterialManager.cpp.
|
overridevirtual |
Overridden to handle loading of Material resources.
Reimplemented from Cogs::Core::ResourceManager< Material, MaterialLoadInfo >.
Definition at line 133 of file MaterialManager.cpp.
References Cogs::Core::ResourceLoadInfoBase::handle, and Cogs::Core::ResourceLoadInfoBase::resourcePath.
|
overridevirtual |
Reimplemented from Cogs::Core::ResourceManagerBase.
Definition at line 163 of file MaterialManager.cpp.
| void Cogs::Core::MaterialManager::initializeDefaultMaterial | ( | ) |
Initializes the MaterialManager, setting up the default material.
Definition at line 70 of file MaterialManager.cpp.
References Cogs::Core::DefaultMaterial::initialize().
| Cogs::Core::MaterialHandle Cogs::Core::MaterialManager::loadMaterial | ( | const StringView & | fileName, |
| MaterialLoadFlags | materialLoadFlags = MaterialLoadFlags::None, |
||
| ResourceId | resourceId = NoResourceId |
||
| ) |
Loads a Material from the given fileName.
| fileName | File to load material definition from. |
Definition at line 102 of file MaterialManager.cpp.
References Cogs::Core::ResourceLoadInfoBase::loadFlags, Cogs::Core::ResourceLoadInfoBase::resourceId, and Cogs::Core::ResourceLoadInfoBase::resourcePath.
| Cogs::Core::EffectHandle Cogs::Core::MaterialManager::loadMaterialVariant | ( | Material * | material, |
| const MaterialInstance * | materialInstance, | ||
| const MeshStreamsLayout * | streamsLayout, | ||
| const EnginePermutation * | permutation, | ||
| const RenderPassOptions & | passOptions, | ||
| const ClipShapeType | clipShape | ||
| ) |
Build effect for a material variant with a given permutation/variant/streamlayout combo.
Definition at line 828 of file MaterialManager.cpp.
References Cogs::Core::Cube, Cogs::Core::EffectDefinition::definitions, Cogs::VertexFormat::elements, Cogs::Core::InvertedCube, Cogs::Core::Effect::material, Cogs::Core::EffectDefinition::name, Cogs::Core::ResourceHandle_t< Effect >::NoHandle, Cogs::Core::None, Cogs::Core::MeshStreamsLayout::numStreams, Cogs::OpenGLES30, Cogs::Core::MaterialInstance::permutationIndex, Cogs::Core::EffectDefinition::streamsLayout, Cogs::Core::MaterialInstance::variantSelectors, Cogs::Core::MeshStreamsLayout::vertexFormats, and Cogs::WebGPU.
Referenced by Cogs::Core::Material::getEffect().
| void Cogs::Core::MaterialManager::releaseAll | ( | ) |
Clear out all materials, done as part of shutdown process.
Definition at line 63 of file MaterialManager.cpp.
References Cogs::Core::ResourceManager< ResourceType, LoadInfoType >::clear().
| bool Cogs::Core::MaterialManager::setupMaterial | ( | Material * | material | ) |
Definition at line 177 of file MaterialManager.cpp.
| MaterialHandle Cogs::Core::MaterialManager::materialBase |
Definition at line 101 of file MaterialManager.h.
| MaterialDefinition Cogs::Core::MaterialManager::materialBaseDefinition |
Definition at line 102 of file MaterialManager.h.
| std::unique_ptr<MaterialDefinitionManager> Cogs::Core::MaterialManager::materialDefinitionManager |
Definition at line 106 of file MaterialManager.h.
| std::unordered_map<std::string, MaterialHandle> Cogs::Core::MaterialManager::materials |
Definition at line 104 of file MaterialManager.h.