#include <msp/fs/utils.h>
#include "animation.h"
#include "armature.h"
+#include "backend.h"
#include "basicmaterial.h"
#include "camera.h"
#include "directionallight.h"
Resources *Resources::global_resources = 0;
Resources::Resources(bool set_as_global):
- srgb_conversion(false),
resource_manager(0)
{
add_type<Animation>().suffix(".anim").keyword("animation");
return builtins;
}
-void Resources::set_srgb_conversion(bool c)
-{
- srgb_conversion = c;
-}
-
void Resources::set_resource_manager(ResourceManager *m)
{
resource_manager = m;
Mesh *Resources::create_mesh(const string &name)
{
- if(!resource_manager)
+ if(!resource_manager || name[0]=='_')
return 0;
if(RefPtr<IO::Seekable> io = open_raw(name))
Texture *Resources::create_texture(const string &name)
{
+ bool managed = (resource_manager && name[0]!='_');
+
string ext = FS::extpart(name);
if(ext==".tex")
- return create_generic<Texture, GenericResourceLoader<Texture>>(name);
+ {
+ if(managed)
+ return create_generic<Texture, GenericResourceLoader<Texture>>(name);
+ else
+ return create_generic<Texture>(name);
+ }
if(RefPtr<IO::Seekable> io = open_raw(name))
{
// Verify that the image is loadable
Graphics::Image image;
- if(!resource_manager)
+ if(!managed)
image.load_io(*io);
tex = new Texture2D;
- tex->set_manager(resource_manager);
- if(resource_manager)
+ if(managed)
+ {
+ tex->set_manager(resource_manager);
resource_manager->set_resource_location(*tex, *this, name);
+ }
else
tex->image(image);
{
if(ext==".glsl")
{
- RefPtr<GlslModule> module = new GlslModule;
+ RefPtr<Module> module;
+ if(get_backend_api()==VULKAN)
+ module = new SpirVModule;
+ else
+ module = new GlslModule;
module->load_source(*io, this, name);
return module.release();
}