Support for R16I and R16UI

This commit is contained in:
tobspr 2016-04-30 12:12:21 +02:00
parent dac2bfc7b9
commit b2ebd78d81
3 changed files with 30 additions and 0 deletions

View File

@ -8334,6 +8334,7 @@ get_external_image_format(Texture *tex) const {
case Texture::F_blue:
case Texture::F_r8i:
case Texture::F_r16:
case Texture::F_r16i:
case Texture::F_r32:
case Texture::F_r32i:
return GL_COMPRESSED_RED;
@ -8539,6 +8540,7 @@ get_external_image_format(Texture *tex) const {
#ifndef OPENGLES_1
case Texture::F_r8i:
case Texture::F_r16i:
case Texture::F_r32i:
return GL_RED_INTEGER;
case Texture::F_rg8i:
@ -8596,6 +8598,7 @@ get_internal_image_format(Texture *tex, bool force_sized) const {
case Texture::F_rg8i:
case Texture::F_rgb8i:
case Texture::F_rgba8i:
case Texture::F_r16i:
case Texture::F_r32i:
case Texture::F_r11_g11_b10:
case Texture::F_rgb9_e5:
@ -9072,6 +9075,12 @@ get_internal_image_format(Texture *tex, bool force_sized) const {
} else {
return GL_R16_SNORM;
}
case Texture::F_r16i:
if (Texture::is_unsigned(tex->get_component_type())) {
return GL_R16UI;
} else {
return GL_R16I;
}
case Texture::F_rg16:
if (tex->get_component_type() == Texture::T_float) {
return GL_RG16F;
@ -12662,6 +12671,16 @@ do_extract_texture_data(CLP(TextureContext) *gtc) {
type = Texture::T_unsigned_byte;
format = Texture::F_rgba8i;
break;
case GL_R16I:
type = Texture::T_short;
format = Texture::F_r16i;
break;
case GL_R16UI:
type = Texture::T_unsigned_short;
format = Texture::F_r16i;
break;
#endif
#ifndef OPENGLES_1

View File

@ -514,6 +514,7 @@ estimate_texture_memory() const {
break;
case Texture::F_r16:
case Texture::F_r16i:
case Texture::F_rg8i:
bpp = 2;
break;
@ -1532,6 +1533,10 @@ write(ostream &out, int indent_level) const {
case F_r16:
out << "r16";
break;
case F_r16i:
out << "r16i";
break;
case F_rg16:
out << "rg16";
break;
@ -1950,6 +1955,8 @@ format_format(Format format) {
return "rgba32";
case F_r16:
return "r16";
case F_r16i:
return "r16i";
case F_rg16:
return "rg16";
case F_rgb16:
@ -2049,6 +2056,8 @@ string_format(const string &str) {
return F_rgba32;
} else if (cmp_nocase(str, "r16") == 0 || cmp_nocase(str, "red16") == 0) {
return F_r16;
} else if (cmp_nocase(str, "r16i") == 0) {
return F_r16i;
} else if (cmp_nocase(str, "rg16") == 0 || cmp_nocase(str, "r16g16") == 0) {
return F_rg16;
} else if (cmp_nocase(str, "rgb16") == 0 || cmp_nocase(str, "r16g16b16") == 0) {
@ -5745,6 +5754,7 @@ do_set_format(CData *cdata, Texture::Format format) {
case F_alpha:
case F_luminance:
case F_r16:
case F_r16i:
case F_sluminance:
case F_r32i:
case F_r32:

View File

@ -159,6 +159,7 @@ PUBLISHED:
F_rgb10_a2,
F_rg,
F_r16i
};
// Deprecated. See SamplerState.FilterType.