|
@@ -3118,7 +3118,7 @@ void RasterizerSceneGLES3::_copy_screen(bool p_invalidate_color, bool p_invalida
|
|
|
|
|
|
GLenum attachments[2] = {
|
|
|
GL_COLOR_ATTACHMENT0,
|
|
|
- GL_DEPTH_STENCIL_ATTACHMENT
|
|
|
+ GL_DEPTH_ATTACHMENT
|
|
|
};
|
|
|
|
|
|
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);
|
|
|
glClearDepth(1.0f);
|
|
|
- glClear(GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
|
|
|
+ glClear(GL_DEPTH_BUFFER_BIT);
|
|
|
|
|
|
render_list.clear();
|
|
|
_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) {
|
|
|
- glClearBufferfi(GL_DEPTH_STENCIL, 0, 1.0, 0);
|
|
|
+ glClearBufferfi(GL_DEPTH, 0, 1.0, 0);
|
|
|
}
|
|
|
|
|
|
Color clear_color(0, 0, 0, 0);
|
|
@@ -5167,12 +5167,15 @@ void RasterizerSceneGLES3::initialize() {
|
|
|
|
|
|
glGenTextures(1, &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...
|
|
|
- glTexImage2D(GL_TEXTURE_2D, 0, GL_R16F, max_exposure_shrink_size, max_exposure_shrink_size, 0, GL_RED, GL_FLOAT, NULL);
|
|
|
-#else
|
|
|
- glTexImage2D(GL_TEXTURE_2D, 0, GL_R32F, max_exposure_shrink_size, max_exposure_shrink_size, 0, GL_RED, GL_FLOAT, NULL);
|
|
|
-#endif
|
|
|
+
|
|
|
+ if (storage->config.framebuffer_float_supported) {
|
|
|
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_R32F, max_exposure_shrink_size, max_exposure_shrink_size, 0, GL_RED, GL_FLOAT, NULL);
|
|
|
+ } else if (storage->config.framebuffer_half_float_supported) {
|
|
|
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_R16F, max_exposure_shrink_size, max_exposure_shrink_size, 0, GL_RED, GL_HALF_FLOAT, NULL);
|
|
|
+ } 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);
|
|
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
|
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|