Hi all,
Last few weeks I've made nice progress in creating the base for my new (d3d11 based) engine/ framework.
With the positive remark; also thanks to all the support and help from the community (both forum and chat). So thanks! :cool:
Where possible I try to expose as less 'low tech' stuff/ implementation details from my low-level D3D11 renderer.
For example, the user can easily add, use, update, release a rendertarget or a constant buffer for example.
Now my question regards the positioning of resources, and potentially the creation of a resource manager (system).
I've thought about creating a resource manager to manage assets: textures, models, sounds, music, texts etc.
Where I do reference counting/ prevent loading the same resources again, when switching a scene/ level. Scenes/ levels will be managed by the SceneManager.
So far all good, well, at least a clear direction to follow.
But my question is, where would you/I position shaders/ my ShaderManager.
I don't believe it should be part of the low-level renderer (which I wanted to do first, so design below). I also don't think it shouldn't be 'part'/ member of the scene manager.
Because shaders are not perse scene/ level bound.
In short; where would you 'place' Shaders/ the ShaderManager?
My current thought is that the approach in the design below, will be relatively easily usable, with only the 'con' that the shaders will be stored within the low-level renderer system
(maybe have the manager in the low-level renderer, and simply use pointers to the actual shaders, stored in the resource manager/system?)
I have the same question for managing renderstates, which I believe will be linked to materials or specific rendering conditions.
Any thoughts are appreciated.