diff --git a/panda/src/gobj/texture.cxx b/panda/src/gobj/texture.cxx index b686a520c2..ba7acf7303 100644 --- a/panda/src/gobj/texture.cxx +++ b/panda/src/gobj/texture.cxx @@ -432,6 +432,13 @@ estimate_texture_memory() const { case Texture::F_rgb12: bpp = 6; break; + + case Texture::F_rgba16: + bpp = 8; + break; + case Texture::F_rgba32: + bpp = 16; + break; } size_t bytes = pixels * bpp; @@ -1360,6 +1367,12 @@ write(ostream &out, int indent_level) const { case F_rgbm: out << "rgbm"; break; + case F_rgba32: + out << "rgba32"; + break; + case F_rgba16: + out << "rgba16"; + break; case F_rgba12: out << "rgba12"; break; @@ -1514,6 +1527,8 @@ set_format(Texture::Format format) { case F_rgba5: case F_rgba8: case F_rgba12: + case F_rgba16: + case F_rgba32: _num_components = 4; break; } @@ -2435,6 +2450,8 @@ has_alpha(Format format) { case F_rgba5: case F_rgba8: case F_rgba12: + case F_rgba16: + case F_rgba32: case F_luminance_alpha: case F_luminance_alphamask: return true; diff --git a/panda/src/gobj/texture.h b/panda/src/gobj/texture.h index de8f2b3081..65ef9941de 100644 --- a/panda/src/gobj/texture.h +++ b/panda/src/gobj/texture.h @@ -103,7 +103,10 @@ PUBLISHED: F_luminance, F_luminance_alpha, // 8 bits luminance, 8 bits alpha - F_luminance_alphamask // 8 bits luminance, only needs 1 bit of alpha + F_luminance_alphamask, // 8 bits luminance, only needs 1 bit of alpha + + F_rgba16, // 16 bits per R,G,B,A channel + F_rgba32, // 32 bits per R,G,B,A channel }; enum FilterType { @@ -345,10 +348,11 @@ PUBLISHED: static bool is_mipmap(FilterType type); -public: INLINE bool get_match_framebuffer_format() const; INLINE void set_match_framebuffer_format(bool flag); +public: + TextureContext *prepare_now(PreparedGraphicsObjects *prepared_objects, GraphicsStateGuardianBase *gsg); void texture_uploaded();