protected override void OnAwake()
        {
            // setup loader caches and add loaders
            Loaders = new LoaderCache();
            Loaders.Textures.Add(new TextureLoader());
            Loaders.Shaders.Add(new ShaderLoader());
            Loaders.ComputeShaders.Add(new ComputeShaderLoader());

            // setup bundle loaders
            if (!Application.isEditor)
            {
                // ignore asset bundles in editor
                ComputeShaderLoader = new ComputeShaderBundleLoader();
                ShaderLoader        = new ShaderBundleLoader();
                Loaders.Shaders.Add(new AssetBundleAssetLoader <Shader> {
                    BundleLoader = ShaderLoader
                });
                Loaders.ComputeShaders.Add(new AssetBundleAssetLoader <ComputeShader>
                {
                    BundleLoader = ComputeShaderLoader
                });
            }

            // setup asset caches
            Shaders        = new FARShaderCache();
            Textures       = new FARTextureCache();
            ComputeShaders = new FARComputeShaderCache();
        }
        protected override void OnAwake()
        {
            // first setup bundle loaders
            ShaderLoader = new ShaderBundleLoader();

            // then setup loader caches and add loaders
            Loaders = new LoaderCache();
            Loaders.Shaders.Add(new AssetBundleAssetLoader <Shader> {
                BundleLoader = ShaderLoader
            });
            Loaders.Textures.Add(new TextureLoader());
            Loaders.Shaders.Add(new ShaderLoader());

            // finally, setup asset caches
            Shaders  = new FARShaderCache();
            Textures = new FARTextureCache();
        }