GLES2 disable half-float project setting

It seems that particles (and some other features) do not work correctly on iOS in GLES2 because either many of the devices do not support half float compression, or the GL constant used to reference it from Godot is incorrect.

This PR adds a project setting in rendering/gles2/ to disable half-float compression on iOS.
This commit is contained in:
lawnjelly 2020-05-04 12:56:25 +01:00
parent 8426ed2650
commit 30a3f16e34
2 changed files with 7 additions and 3 deletions

View File

@ -5950,12 +5950,15 @@ void RasterizerStorageGLES2::initialize() {
config.support_write_depth = config.extensions.has("GL_EXT_frag_depth"); config.support_write_depth = config.extensions.has("GL_EXT_frag_depth");
#endif #endif
config.support_half_float_vertices = true;
//every platform should support this except web, iOS has issues with their support, so add option to disable
#ifdef JAVASCRIPT_ENABLED #ifdef JAVASCRIPT_ENABLED
config.support_half_float_vertices = false; config.support_half_float_vertices = false;
#else
//every other platform, be it mobile or desktop, supports this (even if not in the GLES2 spec).
config.support_half_float_vertices = true;
#endif #endif
bool disable_half_float = GLOBAL_GET("rendering/gles2/batching/disable_half_float");
if (disable_half_float) {
config.support_half_float_vertices = false;
}
config.rgtc_supported = config.extensions.has("GL_EXT_texture_compression_rgtc") || config.extensions.has("GL_ARB_texture_compression_rgtc") || config.extensions.has("EXT_texture_compression_rgtc"); config.rgtc_supported = config.extensions.has("GL_EXT_texture_compression_rgtc") || config.extensions.has("GL_ARB_texture_compression_rgtc") || config.extensions.has("EXT_texture_compression_rgtc");
config.bptc_supported = config.extensions.has("GL_ARB_texture_compression_bptc") || config.extensions.has("EXT_texture_compression_bptc"); config.bptc_supported = config.extensions.has("GL_ARB_texture_compression_bptc") || config.extensions.has("EXT_texture_compression_bptc");

View File

@ -2430,6 +2430,7 @@ VisualServer::VisualServer() {
GLOBAL_DEF("rendering/gles2/debug/flash_batching", false); GLOBAL_DEF("rendering/gles2/debug/flash_batching", false);
GLOBAL_DEF("rendering/gles2/debug/diagnose_frame", false); GLOBAL_DEF("rendering/gles2/debug/diagnose_frame", false);
GLOBAL_DEF_RST("rendering/gles2/debug/use_batching_in_editor", true); GLOBAL_DEF_RST("rendering/gles2/debug/use_batching_in_editor", true);
GLOBAL_DEF("rendering/gles2/debug/disable_half_float", false);
ProjectSettings::get_singleton()->set_custom_property_info("rendering/gles2/batching/max_join_item_commands", PropertyInfo(Variant::INT, "rendering/gles2/batching/max_join_item_commands", PROPERTY_HINT_RANGE, "0,65535")); ProjectSettings::get_singleton()->set_custom_property_info("rendering/gles2/batching/max_join_item_commands", PropertyInfo(Variant::INT, "rendering/gles2/batching/max_join_item_commands", PROPERTY_HINT_RANGE, "0,65535"));
ProjectSettings::get_singleton()->set_custom_property_info("rendering/gles2/batching/colored_vertex_format_threshold", PropertyInfo(Variant::REAL, "rendering/gles2/batching/colored_vertex_format_threshold", PROPERTY_HINT_RANGE, "0.0,1.0,0.01")); ProjectSettings::get_singleton()->set_custom_property_info("rendering/gles2/batching/colored_vertex_format_threshold", PropertyInfo(Variant::REAL, "rendering/gles2/batching/colored_vertex_format_threshold", PROPERTY_HINT_RANGE, "0.0,1.0,0.01"));