Remove all references to stencil, fixes problems on iOS.
This commit is contained in:
parent
4f72ff4f1c
commit
d6a88bbc30
|
@ -3118,7 +3118,7 @@ void RasterizerSceneGLES3::_copy_screen(bool p_invalidate_color, bool p_invalida
|
||||||
|
|
||||||
GLenum attachments[2] = {
|
GLenum attachments[2] = {
|
||||||
GL_COLOR_ATTACHMENT0,
|
GL_COLOR_ATTACHMENT0,
|
||||||
GL_DEPTH_STENCIL_ATTACHMENT
|
GL_DEPTH_ATTACHMENT
|
||||||
};
|
};
|
||||||
|
|
||||||
glInvalidateFramebuffer(GL_FRAMEBUFFER, p_invalidate_depth ? 2 : 1, attachments);
|
glInvalidateFramebuffer(GL_FRAMEBUFFER, p_invalidate_depth ? 2 : 1, attachments);
|
||||||
|
@ -4163,7 +4163,7 @@ void RasterizerSceneGLES3::render_scene(const Transform &p_cam_transform, const
|
||||||
|
|
||||||
glColorMask(0, 0, 0, 0);
|
glColorMask(0, 0, 0, 0);
|
||||||
glClearDepth(1.0f);
|
glClearDepth(1.0f);
|
||||||
glClear(GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
|
glClear(GL_DEPTH_BUFFER_BIT);
|
||||||
|
|
||||||
render_list.clear();
|
render_list.clear();
|
||||||
_fill_render_list(p_cull_result, p_cull_count, true, false);
|
_fill_render_list(p_cull_result, p_cull_count, true, false);
|
||||||
|
@ -4288,7 +4288,7 @@ void RasterizerSceneGLES3::render_scene(const Transform &p_cam_transform, const
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!fb_cleared) {
|
if (!fb_cleared) {
|
||||||
glClearBufferfi(GL_DEPTH_STENCIL, 0, 1.0, 0);
|
glClearBufferfi(GL_DEPTH, 0, 1.0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
Color clear_color(0, 0, 0, 0);
|
Color clear_color(0, 0, 0, 0);
|
||||||
|
@ -5167,12 +5167,15 @@ void RasterizerSceneGLES3::initialize() {
|
||||||
|
|
||||||
glGenTextures(1, &e.color);
|
glGenTextures(1, &e.color);
|
||||||
glBindTexture(GL_TEXTURE_2D, e.color);
|
glBindTexture(GL_TEXTURE_2D, e.color);
|
||||||
#ifdef IPHONE_ENABLED
|
|
||||||
///@TODO ugly hack to get around iOS not supporting 32bit single channel floating point textures...
|
if (storage->config.framebuffer_float_supported) {
|
||||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_R16F, max_exposure_shrink_size, max_exposure_shrink_size, 0, GL_RED, GL_FLOAT, NULL);
|
glTexImage2D(GL_TEXTURE_2D, 0, GL_R32F, max_exposure_shrink_size, max_exposure_shrink_size, 0, GL_RED, GL_FLOAT, NULL);
|
||||||
#else
|
} else if (storage->config.framebuffer_half_float_supported) {
|
||||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_R32F, max_exposure_shrink_size, max_exposure_shrink_size, 0, GL_RED, GL_FLOAT, NULL);
|
glTexImage2D(GL_TEXTURE_2D, 0, GL_R16F, max_exposure_shrink_size, max_exposure_shrink_size, 0, GL_RED, GL_HALF_FLOAT, NULL);
|
||||||
#endif
|
} else {
|
||||||
|
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB10_A2, max_exposure_shrink_size, max_exposure_shrink_size, 0, GL_RED, GL_UNSIGNED_INT_2_10_10_10_REV, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, e.color, 0);
|
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, e.color, 0);
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||||
|
|
|
@ -101,6 +101,10 @@
|
||||||
#define _EXT_COMPRESSED_RGB_BPTC_SIGNED_FLOAT 0x8E8E
|
#define _EXT_COMPRESSED_RGB_BPTC_SIGNED_FLOAT 0x8E8E
|
||||||
#define _EXT_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT 0x8E8F
|
#define _EXT_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT 0x8E8F
|
||||||
|
|
||||||
|
#ifndef GLES_OVER_GL
|
||||||
|
#define glClearDepth glClearDepthf
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef __EMSCRIPTEN__
|
#ifdef __EMSCRIPTEN__
|
||||||
#include <emscripten/emscripten.h>
|
#include <emscripten/emscripten.h>
|
||||||
|
|
||||||
|
@ -6836,8 +6840,9 @@ void RasterizerStorageGLES3::_render_target_allocate(RenderTarget *rt) {
|
||||||
|
|
||||||
glGenTextures(1, &rt->depth);
|
glGenTextures(1, &rt->depth);
|
||||||
glBindTexture(GL_TEXTURE_2D, rt->depth);
|
glBindTexture(GL_TEXTURE_2D, rt->depth);
|
||||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH24_STENCIL8, rt->width, rt->height, 0,
|
glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT24, rt->width, rt->height, 0,
|
||||||
GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, NULL);
|
GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, NULL);
|
||||||
|
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
||||||
|
@ -6904,9 +6909,9 @@ void RasterizerStorageGLES3::_render_target_allocate(RenderTarget *rt) {
|
||||||
glGenRenderbuffers(1, &rt->buffers.depth);
|
glGenRenderbuffers(1, &rt->buffers.depth);
|
||||||
glBindRenderbuffer(GL_RENDERBUFFER, rt->buffers.depth);
|
glBindRenderbuffer(GL_RENDERBUFFER, rt->buffers.depth);
|
||||||
if (msaa == 0)
|
if (msaa == 0)
|
||||||
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH24_STENCIL8, rt->width, rt->height);
|
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT24, rt->width, rt->height);
|
||||||
else
|
else
|
||||||
glRenderbufferStorageMultisample(GL_RENDERBUFFER, msaa, GL_DEPTH24_STENCIL8, rt->width, rt->height);
|
glRenderbufferStorageMultisample(GL_RENDERBUFFER, msaa, GL_DEPTH_COMPONENT24, rt->width, rt->height);
|
||||||
|
|
||||||
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, rt->buffers.depth);
|
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, rt->buffers.depth);
|
||||||
|
|
||||||
|
@ -7146,7 +7151,8 @@ void RasterizerStorageGLES3::_render_target_allocate(RenderTarget *rt) {
|
||||||
glViewport(0, 0, rt->effects.mip_maps[i].sizes[j].width, rt->effects.mip_maps[i].sizes[j].height);
|
glViewport(0, 0, rt->effects.mip_maps[i].sizes[j].width, rt->effects.mip_maps[i].sizes[j].height);
|
||||||
glClearBufferfv(GL_COLOR, 0, zero);
|
glClearBufferfv(GL_COLOR, 0, zero);
|
||||||
if (used_depth) {
|
if (used_depth) {
|
||||||
glClearBufferfi(GL_DEPTH_STENCIL, 0, 1.0, 0);
|
glClearDepth(1.0);
|
||||||
|
glClear(GL_DEPTH_BUFFER_BIT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue