|
@@ -4657,7 +4657,7 @@ void RasterizerStorageGLES2::_render_target_allocate(RenderTarget *rt) {
|
|
|
glGenRenderbuffers(1, &rt->depth);
|
|
|
glBindRenderbuffer(GL_RENDERBUFFER, rt->depth);
|
|
|
|
|
|
- glRenderbufferStorage(GL_RENDERBUFFER, config.depth_internalformat, rt->width, rt->height);
|
|
|
+ glRenderbufferStorage(GL_RENDERBUFFER, config.depth_buffer_internalformat, rt->width, rt->height);
|
|
|
|
|
|
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, rt->depth);
|
|
|
}
|
|
@@ -4725,7 +4725,7 @@ void RasterizerStorageGLES2::_render_target_allocate(RenderTarget *rt) {
|
|
|
|
|
|
glGenRenderbuffers(1, &rt->multisample_depth);
|
|
|
glBindRenderbuffer(GL_RENDERBUFFER, rt->multisample_depth);
|
|
|
- glRenderbufferStorageMultisample(GL_RENDERBUFFER, msaa, config.depth_internalformat, rt->width, rt->height);
|
|
|
+ glRenderbufferStorageMultisample(GL_RENDERBUFFER, msaa, config.depth_buffer_internalformat, rt->width, rt->height);
|
|
|
|
|
|
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, rt->multisample_depth);
|
|
|
|
|
@@ -5189,7 +5189,7 @@ void RasterizerStorageGLES2::render_target_set_external_texture(RID p_render_tar
|
|
|
// create a multisample depth buffer, we're not reusing Godots because Godot's didn't get created..
|
|
|
glGenRenderbuffers(1, &rt->external.depth);
|
|
|
glBindRenderbuffer(GL_RENDERBUFFER, rt->external.depth);
|
|
|
- glRenderbufferStorageMultisample(GL_RENDERBUFFER, msaa, config.depth_internalformat, rt->width, rt->height);
|
|
|
+ glRenderbufferStorageMultisample(GL_RENDERBUFFER, msaa, config.depth_buffer_internalformat, rt->width, rt->height);
|
|
|
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, rt->external.depth);
|
|
|
}
|
|
|
|
|
@@ -5302,7 +5302,7 @@ RID RasterizerStorageGLES2::canvas_light_shadow_buffer_create(int p_width) {
|
|
|
|
|
|
glGenRenderbuffers(1, &cls->depth);
|
|
|
glBindRenderbuffer(GL_RENDERBUFFER, cls->depth);
|
|
|
- glRenderbufferStorage(GL_RENDERBUFFER, config.depth_internalformat, cls->size, cls->height);
|
|
|
+ glRenderbufferStorage(GL_RENDERBUFFER, config.depth_buffer_internalformat, cls->size, cls->height);
|
|
|
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, cls->depth);
|
|
|
|
|
|
glGenTextures(1, &cls->distance);
|
|
@@ -5783,6 +5783,8 @@ void RasterizerStorageGLES2::initialize() {
|
|
|
|
|
|
config.keep_original_textures = false;
|
|
|
config.shrink_textures_x2 = false;
|
|
|
+ config.depth_internalformat = GL_DEPTH_COMPONENT;
|
|
|
+ config.depth_type = GL_UNSIGNED_INT;
|
|
|
|
|
|
#ifdef GLES_OVER_GL
|
|
|
config.float_texture_supported = true;
|
|
@@ -5790,20 +5792,20 @@ void RasterizerStorageGLES2::initialize() {
|
|
|
config.pvrtc_supported = false;
|
|
|
config.etc1_supported = false;
|
|
|
config.support_npot_repeat_mipmap = true;
|
|
|
- config.depth_internalformat = GL_DEPTH_COMPONENT;
|
|
|
- config.depth_type = GL_UNSIGNED_INT;
|
|
|
+ config.depth_buffer_internalformat = GL_DEPTH_COMPONENT24;
|
|
|
#else
|
|
|
config.float_texture_supported = config.extensions.has("GL_ARB_texture_float") || config.extensions.has("GL_OES_texture_float");
|
|
|
config.s3tc_supported = config.extensions.has("GL_EXT_texture_compression_s3tc") || config.extensions.has("WEBGL_compressed_texture_s3tc");
|
|
|
config.etc1_supported = config.extensions.has("GL_OES_compressed_ETC1_RGB8_texture") || config.extensions.has("WEBGL_compressed_texture_etc1");
|
|
|
config.pvrtc_supported = config.extensions.has("IMG_texture_compression_pvrtc") || config.extensions.has("WEBGL_compressed_texture_pvrtc");
|
|
|
config.support_npot_repeat_mipmap = config.extensions.has("GL_OES_texture_npot");
|
|
|
- // on mobile check for 24 bit depth support
|
|
|
+
|
|
|
+ // on mobile check for 24 bit depth support for RenderBufferStorage
|
|
|
if (config.extensions.has("GL_OES_depth24")) {
|
|
|
- config.depth_internalformat = _DEPTH_COMPONENT24_OES;
|
|
|
+ config.depth_buffer_internalformat = _DEPTH_COMPONENT24_OES;
|
|
|
config.depth_type = GL_UNSIGNED_INT;
|
|
|
} else {
|
|
|
- config.depth_internalformat = GL_DEPTH_COMPONENT16;
|
|
|
+ config.depth_buffer_internalformat = GL_DEPTH_COMPONENT16;
|
|
|
config.depth_type = GL_UNSIGNED_SHORT;
|
|
|
}
|
|
|
#endif
|
|
@@ -5901,8 +5903,12 @@ void RasterizerStorageGLES2::initialize() {
|
|
|
if (status != GL_FRAMEBUFFER_COMPLETE) {
|
|
|
// If it fails, test to see if it supports a framebuffer texture using UNSIGNED_SHORT
|
|
|
// This is needed because many OSX devices don't support either UNSIGNED_INT or UNSIGNED_SHORT
|
|
|
-
|
|
|
+#ifdef GLES_OVER_GL
|
|
|
config.depth_internalformat = GL_DEPTH_COMPONENT16;
|
|
|
+#else
|
|
|
+ // OES_depth_texture extension only specifies GL_DEPTH_COMPONENT.
|
|
|
+ config.depth_internalformat = GL_DEPTH_COMPONENT;
|
|
|
+#endif
|
|
|
config.depth_type = GL_UNSIGNED_SHORT;
|
|
|
|
|
|
glGenFramebuffers(1, &fbo);
|
|
@@ -5910,7 +5916,7 @@ void RasterizerStorageGLES2::initialize() {
|
|
|
|
|
|
glGenTextures(1, &depth);
|
|
|
glBindTexture(GL_TEXTURE_2D, depth);
|
|
|
- glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT16, 32, 32, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_SHORT, NULL);
|
|
|
+ glTexImage2D(GL_TEXTURE_2D, 0, config.depth_internalformat, 32, 32, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_SHORT, NULL);
|
|
|
|
|
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
|
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|