]> git.tdb.fi Git - libs/gl.git/commitdiff
Depracate the srgb parameter of Texture::image functions
authorMikko Rasa <tdb@tdb.fi>
Fri, 5 Feb 2021 22:14:12 +0000 (00:14 +0200)
committerMikko Rasa <tdb@tdb.fi>
Sat, 6 Feb 2021 13:33:33 +0000 (15:33 +0200)
Now that texture datafiles can be used to specify import settings on a
per-texture basis and the Blender exporter uses them, there's no need
for this anymore.

12 files changed:
source/resources.cpp
source/resources.h
source/texture.cpp
source/texture.h
source/texture1d.cpp
source/texture1d.h
source/texture2d.cpp
source/texture2d.h
source/texture3d.cpp
source/texture3d.h
source/texturecube.cpp
source/texturecube.h

index 8de2529fe94c861c771e25fc4121de7778890121..c28cdd07cf2d5f6a86814c44aa053ca674005e9f 100644 (file)
@@ -155,7 +155,7 @@ Texture2D *Resources::create_texture2d(const string &name)
                if(resource_manager)
                        resource_manager->set_resource_location(*tex, *this, name);
                else
-                       tex->image(image, srgb_conversion);
+                       tex->image(image);
                return tex.release();
        }
 
index 0b37449978761e4e963889623e0af15c0a848b03..6f04a26088b1a4d0768185440d1c1ef98ad9b850 100644 (file)
@@ -35,9 +35,9 @@ public:
 
        /** Enables or disables sRGB conversion.  If enabled, textures and material
        colors are converted from sRGB to linear color space when loaded. */
-       void set_srgb_conversion(bool);
+       DEPRECATED void set_srgb_conversion(bool);
 
-       bool get_srgb_conversion() const { return srgb_conversion; }
+       DEPRECATED bool get_srgb_conversion() const { return srgb_conversion; }
 
        void set_resource_manager(ResourceManager *);
 
index 24994f7c69d0022be6e78230350c8ade6ffcc393..ab5700482ce02484efb7b960df00a9b3a95a0908 100644 (file)
@@ -193,22 +193,22 @@ void Texture::set_compare_func(Predicate f)
        default_sampler.set_compare(f);
 }
 
-void Texture::load_image(const string &fn, bool srgb)
+void Texture::load_image(const string &fn, bool)
 {
-       load_image(fn, 0, srgb);
+       load_image(fn, 0U);
 }
 
-void Texture::load_image(const string &fn, unsigned lv, bool srgb)
+void Texture::load_image(const string &fn, unsigned lv)
 {
        Graphics::Image img;
        img.load_file(fn);
 
-       image(img, lv, srgb);
+       image(img, lv);
 }
 
-void Texture::image(const Graphics::Image &img, bool srgb)
+void Texture::image(const Graphics::Image &img, bool)
 {
-       image(img, 0, srgb);
+       image(img, 0U);
 }
 
 void Texture::bind_to(unsigned i) const
@@ -279,12 +279,9 @@ Texture::Loader::Loader(Texture &t, Collection &c):
 void Texture::Loader::init()
 {
        levels = 0;
-       if(Resources *res = dynamic_cast<Resources *>(coll))
-               srgb = res->get_srgb_conversion();
-       else
-               srgb = false;
 
        add("external_image", &Loader::external_image);
+       add("external_image_srgb", &Loader::external_image);
        add("filter", &Loader::filter);
        add("generate_mipmap", &Loader::generate_mipmap);
        add("image_data", &Loader::image_data);
@@ -315,6 +312,18 @@ void Texture::Loader::load_external_image(Graphics::Image &img, const std::strin
 }
 
 void Texture::Loader::external_image(const string &fn)
+{
+       obj.use_srgb_format = false;
+       external_image_common(fn);
+}
+
+void Texture::Loader::external_image_srgb(const string &fn)
+{
+       obj.use_srgb_format = true;
+       external_image_common(fn);
+}
+
+void Texture::Loader::external_image_common(const string &fn)
 {
        if(obj.manager)
                obj.manager->set_resource_location(obj, get_collection(), fn);
@@ -322,7 +331,7 @@ void Texture::Loader::external_image(const string &fn)
        {
                Graphics::Image img;
                load_external_image(img, fn);
-               obj.image(img, get_levels(), srgb);
+               obj.image(img, get_levels());
        }
 }
 
@@ -342,7 +351,7 @@ void Texture::Loader::image_data(const string &data)
        IO::Memory mem(data.data(), data.size());
        img.load_io(mem);
 
-       obj.image(img, get_levels(), srgb);
+       obj.image(img, get_levels());
 }
 
 void Texture::Loader::mag_filter(TextureFilter f)
index 6ee0b8a107754e83c7bf2d49b4fe6f68f2e11db4..c4e72031ebb174e372877dfd14972449e80d9178 100644 (file)
@@ -30,7 +30,6 @@ protected:
        {
        protected:
                unsigned levels;
-               bool srgb;
 
        public:
                Loader(Texture &);
@@ -44,6 +43,8 @@ protected:
 
        private:
                void external_image(const std::string &);
+               void external_image_srgb(const std::string &);
+               void external_image_common(const std::string &);
                void filter(TextureFilter);
                void generate_mipmap(bool);
                void image_data(const std::string &);
@@ -76,6 +77,7 @@ protected:
        PixelFormat format;
        PixelFormat storage_fmt;
        FormatSwizzle swizzle;
+       bool use_srgb_format;
        bool auto_gen_mipmap;
        Sampler default_sampler;
 
@@ -135,19 +137,16 @@ public:
        DEPRECATED void set_compare_func(Predicate);
 
        /// Loads a Graphics::Image from a file and uploads it to the texture.
-       virtual void load_image(const std::string &, bool srgb = false);
+       virtual void load_image(const std::string &, unsigned = 0);
 
-       virtual void load_image(const std::string &, unsigned, bool srgb = false);
+       DEPRECATED void load_image(const std::string &, bool srgb);
 
        /** Uploads an image to the texture.  If storage has not been defined, it
        will be set to match the image.  Otherwise the image must be compatible
-       with the defined storage.  Semantics depend on the type of texture.
+       with the defined storage.  Semantics depend on the type of texture.  */
+       virtual void image(const Graphics::Image &, unsigned = 0) = 0;
 
-       If srgb is true and storage is determined by this call, then an sRGB pixel
-       format will be used. */
-       virtual void image(const Graphics::Image &, bool srgb = false);
-
-       virtual void image(const Graphics::Image &, unsigned, bool srgb = false) = 0;
+       DEPRECATED void image(const Graphics::Image &, bool srgb);
 
        GLenum get_target() const { return target; }
        unsigned get_id() const { return id; }
index 553d4ffa8ab265f26f7d685b2c510a51bbb52286..592e4d77d81e961a8e08a617f4f78400dee43a68 100644 (file)
@@ -119,7 +119,7 @@ void Texture1D::sub_image(unsigned level, int x, unsigned wd, PixelComponents co
        sub_image(level, x, wd, data);
 }
 
-void Texture1D::image(const Graphics::Image &img, unsigned lv, bool srgb)
+void Texture1D::image(const Graphics::Image &img, unsigned lv)
 {
        if(img.get_height()!=1)
                throw incompatible_data("Texture1D::image");
@@ -127,7 +127,7 @@ void Texture1D::image(const Graphics::Image &img, unsigned lv, bool srgb)
        unsigned w = img.get_width();
        PixelFormat fmt = pixelformat_from_image(img);
        if(width==0)
-               storage(make_pixelformat(get_components(fmt), get_component_type(fmt), srgb), w, lv);
+               storage(make_pixelformat(get_components(fmt), get_component_type(fmt), use_srgb_format), w, lv);
        else if(w!=width)
                throw incompatible_data("Texture1D::image");
 
index 2b2a6b19cceec1236ee2d416d99bf08762328887..b14ff917666f88cb02fc7fbbcd5c55a8330b0075 100644 (file)
@@ -40,7 +40,7 @@ public:
        DEPRECATED void image(unsigned, PixelComponents, DataType, const void *);
        void sub_image(unsigned, int, unsigned, const void *);
        DEPRECATED void sub_image(unsigned, int, unsigned, PixelComponents, DataType, const void *);
-       virtual void image(const Graphics::Image &, unsigned, bool = false);
+       virtual void image(const Graphics::Image &, unsigned = 0);
        using Texture::image;
        unsigned get_width() const { return width; }
 
index fa92f1c97e52b3c980485827280def8e1c0057c2..cee932f7231e9fb23adcfb4ce86ba28e736dd17a 100644 (file)
@@ -18,7 +18,6 @@ class Texture2D::AsyncLoader: public Resource::AsyncLoader
 private:
        Texture2D &texture;
        IO::Seekable &io;
-       bool srgb_conversion;
        Buffer pixel_buffer;
        char *mapped_address;
        Graphics::Image image;
@@ -28,7 +27,6 @@ private:
 public:
        AsyncLoader(Texture2D &, IO::Seekable &);
 
-       void set_srgb_conversion(bool);
        virtual bool needs_sync() const;
        virtual bool process();
 };
@@ -149,18 +147,18 @@ void Texture2D::sub_image(unsigned level, int x, int y, unsigned wd, unsigned ht
        sub_image(level, x, y, wd, ht, data);
 }
 
-void Texture2D::image(const Graphics::Image &img, unsigned lv, bool srgb)
+void Texture2D::image(const Graphics::Image &img, unsigned lv)
 {
-       image(img, lv, srgb, false);
+       image(img, lv, false);
 }
 
-void Texture2D::image(const Graphics::Image &img, unsigned lv, bool srgb, bool from_buffer)
+void Texture2D::image(const Graphics::Image &img, unsigned lv, bool from_buffer)
 {
        unsigned w = img.get_width();
        unsigned h = img.get_height();
        PixelFormat fmt = pixelformat_from_image(img);
        if(width==0)
-               storage(make_pixelformat(get_components(fmt), get_component_type(fmt), srgb), w, h, lv);
+               storage(make_pixelformat(get_components(fmt), get_component_type(fmt), use_srgb_format), w, h, lv);
        else if(w!=width || h!=height || (lv && lv!=levels))
                throw incompatible_data("Texture2D::image");
 
@@ -188,11 +186,9 @@ void Texture2D::get_level_size(unsigned level, unsigned &w, unsigned &h) const
                h = 1;
 }
 
-Resource::AsyncLoader *Texture2D::load(IO::Seekable &io, const Resources *res)
+Resource::AsyncLoader *Texture2D::load(IO::Seekable &io, const Resources *)
 {
        AsyncLoader *ldr = new AsyncLoader(*this, io);
-       if(res)
-               ldr->set_srgb_conversion(res->get_srgb_conversion());
        return ldr;
 }
 
@@ -248,17 +244,11 @@ void Texture2D::Loader::storage_levels(PixelFormat fmt, unsigned w, unsigned h,
 Texture2D::AsyncLoader::AsyncLoader(Texture2D &t, IO::Seekable &i):
        texture(t),
        io(i),
-       srgb_conversion(false),
        pixel_buffer(PIXEL_UNPACK_BUFFER),
        mapped_address(0),
        phase(0)
 { }
 
-void Texture2D::AsyncLoader::set_srgb_conversion(bool c)
-{
-       srgb_conversion = c;
-}
-
 bool Texture2D::AsyncLoader::needs_sync() const
 {
        return phase%2;
@@ -299,7 +289,7 @@ bool Texture2D::AsyncLoader::process()
                        else
                                glGenTextures(1, &texture.id);
                }
-               texture.image(image, 0, srgb_conversion, true);
+               texture.image(image, 0, true);
        }
 
        ++phase;
index b7070e8f78093c1e4543b65feb4fafab0720888d..7553b6b703c944a2144e989bf605d41b9ae2295c 100644 (file)
@@ -72,16 +72,13 @@ public:
 
        /** Updates the contents of the entire texture from an image.  If storage
        has not been defined, it will be set to match the image.  Otherwise the
-       image must match the defined storage.
-
-       If srgb is true and storage is determined by this call, then an sRGB pixel
-       format will be used. */
-       virtual void image(const Graphics::Image &, unsigned lv, bool srgb = false);
+       image must match the defined storage. */
+       virtual void image(const Graphics::Image &, unsigned lv = 0);
 
        using Texture::image;
 
 private:
-       void image(const Graphics::Image &, unsigned, bool, bool);
+       void image(const Graphics::Image &, unsigned, bool);
 
 public:
        unsigned get_width() const { return width; }
index 13bb3ff41a4ce99164a7443406a3eb3f4ac0bf50..667f8c31c1ede8dfe9c1896159eaa263385738be 100644 (file)
@@ -138,7 +138,7 @@ void Texture3D::sub_image(unsigned level, int x, int y, int z, unsigned wd, unsi
        sub_image(level, x, y, z, wd, ht, dp, data);
 }
 
-void Texture3D::image(const Graphics::Image &img, unsigned lv, bool srgb)
+void Texture3D::image(const Graphics::Image &img, unsigned lv)
 {
        unsigned w = img.get_width();
        unsigned h = img.get_height();
@@ -161,7 +161,7 @@ void Texture3D::image(const Graphics::Image &img, unsigned lv, bool srgb)
 
        PixelFormat fmt = pixelformat_from_image(img);
        if(width==0)
-               storage(make_pixelformat(get_components(fmt), get_component_type(fmt), srgb), w, h, d, lv);
+               storage(make_pixelformat(get_components(fmt), get_component_type(fmt), use_srgb_format), w, h, d, lv);
        else if(w!=width || h!=height || d!=depth)
                throw incompatible_data("Texture3D::load_image");
 
index d67d03be62a1c413dd913e73e3092d1b682f7f29..1f50e056d8cb286d8e99b4c739f83e5f09c777bd 100644 (file)
@@ -72,11 +72,9 @@ public:
        /** Updates the contents of the entire texture from an image.  If storage
        has not been defined, it will be set to match the image.  In this case the
        image will be treated as a stack of square layers and its height must be
-       divisible by its width.  Otherwise the image must match the defined storage.
-
-       If srgb is true and storage is determined by this call, then an sRGB pixel
-       format will be used. */
-       virtual void image(const Graphics::Image &, unsigned, bool = false);
+       divisible by its width.  Otherwise the image must match the defined
+       storage. */
+       virtual void image(const Graphics::Image &, unsigned = 0);
 
        using Texture::image;
 
index 824ff2cc14d29743bf3e8adadd4709936a5f712d..9ea33eabc1658213c63082a6e09dd5037d3380af 100644 (file)
@@ -165,7 +165,7 @@ void TextureCube::sub_image(TextureCubeFace face, unsigned level, int x, int y,
        sub_image(face, level, x, y, wd, ht, data);
 }
 
-void TextureCube::image(TextureCubeFace face, const Graphics::Image &img, bool srgb)
+void TextureCube::image(TextureCubeFace face, const Graphics::Image &img)
 {
        unsigned w = img.get_width();
        unsigned h = img.get_height();
@@ -175,7 +175,7 @@ void TextureCube::image(TextureCubeFace face, const Graphics::Image &img, bool s
                if(w!=h)
                        throw incompatible_data("TextureCube::image");
 
-               storage(make_pixelformat(get_components(fmt), get_component_type(fmt), srgb), w);
+               storage(make_pixelformat(get_components(fmt), get_component_type(fmt), use_srgb_format), w);
        }
        else if(w!=size || h!=size)
                throw incompatible_data("TextureCube::image");
@@ -186,7 +186,12 @@ void TextureCube::image(TextureCubeFace face, const Graphics::Image &img, bool s
        image(face, 0, img.get_data());
 }
 
-void TextureCube::image(const Graphics::Image &img, unsigned lv, bool srgb)
+void TextureCube::image(TextureCubeFace face, const Graphics::Image &img, bool)
+{
+       image(face, img);
+}
+
+void TextureCube::image(const Graphics::Image &img, unsigned lv)
 {
        unsigned w = img.get_width();
        unsigned h = img.get_height();
@@ -197,7 +202,7 @@ void TextureCube::image(const Graphics::Image &img, unsigned lv, bool srgb)
 
        PixelFormat fmt = pixelformat_from_image(img);
        if(size==0)
-               storage(make_pixelformat(get_components(fmt), get_component_type(fmt), srgb), w, lv);
+               storage(make_pixelformat(get_components(fmt), get_component_type(fmt), use_srgb_format), w, lv);
        else if(w!=size || h!=size)
                throw incompatible_data("TextureCube::image");
 
@@ -301,7 +306,7 @@ void TextureCube::Loader::external_image(TextureCubeFace face, const string &fn)
        RefPtr<IO::Seekable> io = get_collection().open_raw(fn);
        img.load_io(*io);
 
-       obj.image(face, img, srgb);
+       obj.image(face, img);
 }
 
 void TextureCube::Loader::image_data(TextureCubeFace face, const string &data)
@@ -310,7 +315,7 @@ void TextureCube::Loader::image_data(TextureCubeFace face, const string &data)
        IO::Memory mem(data.data(), data.size());
        img.load_io(mem);
 
-       obj.image(face, img, srgb);
+       obj.image(face, img);
 }
 
 void TextureCube::Loader::raw_data(TextureCubeFace face, const string &data)
index 8235620025aed86d0bc050733904590c0137a186..ae305153fec6860a8f37e3128f037214f07d5e25 100644 (file)
@@ -94,9 +94,11 @@ public:
                int x, int y, unsigned w, unsigned h,
                PixelComponents comp, DataType type, const void *data);
 
-       void image(TextureCubeFace, const Graphics::Image &, bool = false);
+       void image(TextureCubeFace, const Graphics::Image &);
 
-       virtual void image(const Graphics::Image &, unsigned, bool = false);
+       DEPRECATED void image(TextureCubeFace, const Graphics::Image &, bool);
+
+       virtual void image(const Graphics::Image &, unsigned = 0);
        using Texture::image;
 
        unsigned get_size() const { return size; }