Skip to content

Commit

Permalink
Merge pull request #26943 from akien-mga/gles2-unsupported-float-types
Browse files Browse the repository at this point in the history
GLES2: Convert unsupported float texture types to 8-bit types
  • Loading branch information
akien-mga authored Mar 12, 2019
2 parents 291c281 + ac48334 commit fa416b3
Showing 1 changed file with 47 additions and 28 deletions.
75 changes: 47 additions & 28 deletions drivers/gles2/rasterizer_storage_gles2.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -120,9 +120,13 @@ Ref<Image> RasterizerStorageGLES2::_get_gl_image_and_format(const Ref<Image> &p_

} break;
case Image::FORMAT_RG8: {

ERR_EXPLAIN("RG texture not supported");
ERR_FAIL_V(image);
ERR_PRINT("RG texture not supported, converting to RGB8.");
if (image.is_valid())
image->convert(Image::FORMAT_RGB8);
r_real_format = Image::FORMAT_RGB8;
r_gl_internal_format = GL_RGB;
r_gl_format = GL_RGB;
r_gl_type = GL_UNSIGNED_BYTE;

} break;
case Image::FORMAT_RGB8: {
Expand Down Expand Up @@ -155,42 +159,57 @@ Ref<Image> RasterizerStorageGLES2::_get_gl_image_and_format(const Ref<Image> &p_
} break;
case Image::FORMAT_RF: {
if (!config.float_texture_supported) {
ERR_EXPLAIN("R float texture not supported");
ERR_FAIL_V(image);
ERR_PRINT("R float texture not supported, converting to RGB8.");
if (image.is_valid())
image->convert(Image::FORMAT_RGB8);
r_real_format = Image::FORMAT_RGB8;
r_gl_internal_format = GL_RGB;
r_gl_format = GL_RGB;
r_gl_type = GL_UNSIGNED_BYTE;
} else {
r_gl_internal_format = GL_ALPHA;
r_gl_format = GL_ALPHA;
r_gl_type = GL_FLOAT;
}

r_gl_internal_format = GL_ALPHA;
r_gl_format = GL_ALPHA;
r_gl_type = GL_FLOAT;
} break;
case Image::FORMAT_RGF: {
ERR_EXPLAIN("RG float texture not supported");
ERR_FAIL_V(image);

ERR_PRINT("RG float texture not supported, converting to RGB8.");
if (image.is_valid())
image->convert(Image::FORMAT_RGB8);
r_real_format = Image::FORMAT_RGB8;
r_gl_internal_format = GL_RGB;
r_gl_format = GL_RGB;
r_gl_type = GL_UNSIGNED_BYTE;
} break;
case Image::FORMAT_RGBF: {
if (!config.float_texture_supported) {

ERR_EXPLAIN("RGB float texture not supported");
ERR_FAIL_V(image);
ERR_PRINT("RGB float texture not supported, converting to RGB8.");
if (image.is_valid())
image->convert(Image::FORMAT_RGB8);
r_real_format = Image::FORMAT_RGB8;
r_gl_internal_format = GL_RGB;
r_gl_format = GL_RGB;
r_gl_type = GL_UNSIGNED_BYTE;
} else {
r_gl_internal_format = GL_RGB;
r_gl_format = GL_RGB;
r_gl_type = GL_FLOAT;
}

r_gl_internal_format = GL_RGB;
r_gl_format = GL_RGB;
r_gl_type = GL_FLOAT;

} break;
case Image::FORMAT_RGBAF: {
if (!config.float_texture_supported) {

ERR_EXPLAIN("RGBA float texture not supported");
ERR_FAIL_V(image);
ERR_PRINT("RGBA float texture not supported, converting to RGBA8.");
if (image.is_valid())
image->convert(Image::FORMAT_RGBA8);
r_real_format = Image::FORMAT_RGBA8;
r_gl_internal_format = GL_RGBA;
r_gl_format = GL_RGBA;
r_gl_type = GL_UNSIGNED_BYTE;
} else {
r_gl_internal_format = GL_RGBA;
r_gl_format = GL_RGBA;
r_gl_type = GL_FLOAT;
}

r_gl_internal_format = GL_RGBA;
r_gl_format = GL_RGBA;
r_gl_type = GL_FLOAT;

} break;
case Image::FORMAT_RH: {
need_decompress = true;
Expand Down

0 comments on commit fa416b3

Please sign in to comment.