|
@@ -166,7 +166,7 @@ void RasterizerSceneGLES3::shadow_atlas_set_size(RID p_atlas, int p_size) {
|
|
|
glBindFramebuffer(GL_FRAMEBUFFER, shadow_atlas->fbo);
|
|
|
|
|
|
// Create a texture for storing the depth
|
|
|
- glActiveTexture(GL_TEXTURE0);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE0);
|
|
|
glGenTextures(1, &shadow_atlas->depth);
|
|
|
glBindTexture(GL_TEXTURE_2D, shadow_atlas->depth);
|
|
|
glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT24, shadow_atlas->size, shadow_atlas->size, 0,
|
|
@@ -525,7 +525,7 @@ void RasterizerSceneGLES3::reflection_atlas_set_size(RID p_ref_atlas, int p_size
|
|
|
GLenum type = use_float ? GL_HALF_FLOAT : GL_UNSIGNED_INT_2_10_10_10_REV;
|
|
|
|
|
|
// Create a texture for storing the color
|
|
|
- glActiveTexture(GL_TEXTURE0);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE0);
|
|
|
glGenTextures(1, &reflection_atlas->color);
|
|
|
glBindTexture(GL_TEXTURE_2D, reflection_atlas->color);
|
|
|
|
|
@@ -736,7 +736,7 @@ bool RasterizerSceneGLES3::reflection_probe_instance_postprocess_step(RID p_inst
|
|
|
}
|
|
|
|
|
|
glDisable(GL_BLEND);
|
|
|
- glActiveTexture(GL_TEXTURE0);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE0);
|
|
|
glBindTexture(GL_TEXTURE_CUBE_MAP, reflection_cubemaps[cubemap_index].cubemap);
|
|
|
glDisable(GL_CULL_FACE);
|
|
|
|
|
@@ -1152,7 +1152,7 @@ bool RasterizerSceneGLES3::_setup_material(RasterizerStorageGLES3::Material *p_m
|
|
|
state.current_main_tex = 0;
|
|
|
|
|
|
for (int i = 0; i < tc; i++) {
|
|
|
- glActiveTexture(GL_TEXTURE0 + i);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE0 + i);
|
|
|
|
|
|
GLenum target = GL_TEXTURE_2D;
|
|
|
GLuint tex = 0;
|
|
@@ -1590,12 +1590,12 @@ void RasterizerSceneGLES3::_render_geometry(RenderList::Element *e) {
|
|
|
t->render_target->used_in_frame = true;
|
|
|
}
|
|
|
|
|
|
- glActiveTexture(GL_TEXTURE0);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE0);
|
|
|
glBindTexture(t->target, t->tex_id);
|
|
|
restore_tex = true;
|
|
|
|
|
|
} else if (restore_tex) {
|
|
|
- glActiveTexture(GL_TEXTURE0);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE0);
|
|
|
glBindTexture(GL_TEXTURE_2D, state.current_main_tex);
|
|
|
restore_tex = false;
|
|
|
}
|
|
@@ -1658,7 +1658,7 @@ void RasterizerSceneGLES3::_render_geometry(RenderList::Element *e) {
|
|
|
}
|
|
|
|
|
|
if (restore_tex) {
|
|
|
- glActiveTexture(GL_TEXTURE0);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE0);
|
|
|
glBindTexture(GL_TEXTURE_2D, state.current_main_tex);
|
|
|
restore_tex = false;
|
|
|
}
|
|
@@ -1863,9 +1863,9 @@ void RasterizerSceneGLES3::_setup_light(RenderList::Element *e, const Transform
|
|
|
// a conditioned one, the fact that async compilation is enabled is enough for us to switch to the alternative
|
|
|
// arrangement of texturing units.
|
|
|
if (storage->config.async_compilation_enabled) {
|
|
|
- glActiveTexture(GL_TEXTURE0 + storage->config.max_texture_image_units - 12);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE0 + storage->config.max_texture_image_units - 12);
|
|
|
} else {
|
|
|
- glActiveTexture(GL_TEXTURE0 + storage->config.max_texture_image_units - 10);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE0 + storage->config.max_texture_image_units - 10);
|
|
|
}
|
|
|
glBindTexture(GL_TEXTURE_3D, gipi->tex_cache);
|
|
|
state.scene_shader.set_uniform(SceneShaderGLES3::GI_PROBE_XFORM1, gipi->transform_to_data * p_view_transform);
|
|
@@ -1879,9 +1879,9 @@ void RasterizerSceneGLES3::_setup_light(RenderList::Element *e, const Transform
|
|
|
GIProbeInstance *gipi2 = gi_probe_instance_owner.getptr(ridp[1]);
|
|
|
|
|
|
if (storage->config.async_compilation_enabled) {
|
|
|
- glActiveTexture(GL_TEXTURE0 + storage->config.max_texture_image_units - 13);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE0 + storage->config.max_texture_image_units - 13);
|
|
|
} else {
|
|
|
- glActiveTexture(GL_TEXTURE0 + storage->config.max_texture_image_units - 11);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE0 + storage->config.max_texture_image_units - 11);
|
|
|
}
|
|
|
glBindTexture(GL_TEXTURE_3D, gipi2->tex_cache);
|
|
|
state.scene_shader.set_uniform(SceneShaderGLES3::GI_PROBE_XFORM2, gipi2->transform_to_data * p_view_transform);
|
|
@@ -1904,10 +1904,10 @@ void RasterizerSceneGLES3::_setup_light(RenderList::Element *e, const Transform
|
|
|
|
|
|
if (lightmap && capture) {
|
|
|
if (e->instance->lightmap_slice == -1) {
|
|
|
- glActiveTexture(GL_TEXTURE0 + storage->config.max_texture_image_units - 10);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE0 + storage->config.max_texture_image_units - 10);
|
|
|
glBindTexture(GL_TEXTURE_2D, lightmap->tex_id);
|
|
|
} else {
|
|
|
- glActiveTexture(GL_TEXTURE0 + storage->config.max_texture_image_units - 11);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE0 + storage->config.max_texture_image_units - 11);
|
|
|
glBindTexture(GL_TEXTURE_2D_ARRAY, lightmap->tex_id);
|
|
|
state.scene_shader.set_uniform(SceneShaderGLES3::LIGHTMAP_LAYER, e->instance->lightmap_slice);
|
|
|
}
|
|
@@ -1952,13 +1952,13 @@ void RasterizerSceneGLES3::_render_list(RenderList::Element **p_elements, int p_
|
|
|
|
|
|
if (p_sky != nullptr) {
|
|
|
if (storage->config.use_texture_array_environment) {
|
|
|
- glActiveTexture(GL_TEXTURE0 + storage->config.max_texture_image_units - 3);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE0 + storage->config.max_texture_image_units - 3);
|
|
|
glBindTexture(GL_TEXTURE_2D_ARRAY, p_sky->radiance);
|
|
|
} else {
|
|
|
- glActiveTexture(GL_TEXTURE0 + storage->config.max_texture_image_units - 2);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE0 + storage->config.max_texture_image_units - 2);
|
|
|
glBindTexture(GL_TEXTURE_2D, p_sky->radiance);
|
|
|
}
|
|
|
- glActiveTexture(GL_TEXTURE0 + storage->config.max_texture_image_units - 7);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE0 + storage->config.max_texture_image_units - 7);
|
|
|
glBindTexture(GL_TEXTURE_2D, p_sky->irradiance);
|
|
|
state.scene_shader.set_conditional(SceneShaderGLES3::USE_RADIANCE_MAP, true);
|
|
|
state.scene_shader.set_conditional(SceneShaderGLES3::USE_RADIANCE_MAP_ARRAY, storage->config.use_texture_array_environment);
|
|
@@ -2162,7 +2162,7 @@ void RasterizerSceneGLES3::_render_list(RenderList::Element **p_elements, int p_
|
|
|
}
|
|
|
|
|
|
if (skeleton) {
|
|
|
- glActiveTexture(GL_TEXTURE0 + storage->config.max_texture_image_units - 1);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE0 + storage->config.max_texture_image_units - 1);
|
|
|
glBindTexture(GL_TEXTURE_2D, skeleton->texture);
|
|
|
}
|
|
|
}
|
|
@@ -2448,7 +2448,7 @@ void RasterizerSceneGLES3::_draw_sky(RasterizerStorageGLES3::Sky *p_sky, const C
|
|
|
RasterizerStorageGLES3::Texture *tex = storage->texture_owner.getornull(p_sky->panorama);
|
|
|
|
|
|
ERR_FAIL_COND(!tex);
|
|
|
- glActiveTexture(GL_TEXTURE0);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE0);
|
|
|
|
|
|
tex = tex->get_ptr(); //resolve for proxies
|
|
|
|
|
@@ -2658,7 +2658,7 @@ void RasterizerSceneGLES3::_setup_environment(Environment *env, const CameraMatr
|
|
|
state.ubo_data.shadow_directional_pixel_size[0] = 1.0 / directional_shadow.size;
|
|
|
state.ubo_data.shadow_directional_pixel_size[1] = 1.0 / directional_shadow.size;
|
|
|
|
|
|
- glActiveTexture(GL_TEXTURE0 + storage->config.max_texture_image_units - 5);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE0 + storage->config.max_texture_image_units - 5);
|
|
|
glBindTexture(GL_TEXTURE_2D, directional_shadow.depth);
|
|
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, GL_COMPARE_REF_TO_TEXTURE);
|
|
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_FUNC, GL_LESS);
|
|
@@ -3109,7 +3109,7 @@ void RasterizerSceneGLES3::_copy_texture_to_front_buffer(GLuint p_texture) {
|
|
|
glDepthFunc(GL_LEQUAL);
|
|
|
glColorMask(1, 1, 1, 1);
|
|
|
|
|
|
- glActiveTexture(GL_TEXTURE0);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE0);
|
|
|
glBindTexture(GL_TEXTURE_2D, p_texture);
|
|
|
|
|
|
glViewport(0, 0, storage->frame.current_rt->width * 0.5, storage->frame.current_rt->height * 0.5);
|
|
@@ -3220,7 +3220,7 @@ void RasterizerSceneGLES3::_blur_effect_buffer() {
|
|
|
state.effect_blur_shader.bind();
|
|
|
state.effect_blur_shader.set_uniform(EffectBlurShaderGLES3::PIXEL_SIZE, Vector2(1.0 / vp_w, 1.0 / vp_h));
|
|
|
state.effect_blur_shader.set_uniform(EffectBlurShaderGLES3::LOD, float(i));
|
|
|
- glActiveTexture(GL_TEXTURE0);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE0);
|
|
|
glBindTexture(GL_TEXTURE_2D, storage->frame.current_rt->effects.mip_maps[0].color); //previous level, since mipmaps[0] starts one level bigger
|
|
|
glBindFramebuffer(GL_FRAMEBUFFER, storage->frame.current_rt->effects.mip_maps[1].sizes[i].fbo);
|
|
|
_copy_screen(true);
|
|
@@ -3231,7 +3231,7 @@ void RasterizerSceneGLES3::_blur_effect_buffer() {
|
|
|
state.effect_blur_shader.bind();
|
|
|
state.effect_blur_shader.set_uniform(EffectBlurShaderGLES3::PIXEL_SIZE, Vector2(1.0 / vp_w, 1.0 / vp_h));
|
|
|
state.effect_blur_shader.set_uniform(EffectBlurShaderGLES3::LOD, float(i));
|
|
|
- glActiveTexture(GL_TEXTURE0);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE0);
|
|
|
glBindTexture(GL_TEXTURE_2D, storage->frame.current_rt->effects.mip_maps[1].color);
|
|
|
glBindFramebuffer(GL_FRAMEBUFFER, storage->frame.current_rt->effects.mip_maps[0].sizes[i + 1].fbo); //next level, since mipmaps[0] starts one level bigger
|
|
|
_copy_screen(true);
|
|
@@ -3256,7 +3256,7 @@ void RasterizerSceneGLES3::_bind_depth_texture() {
|
|
|
if (!state.bound_depth_texture) {
|
|
|
ERR_FAIL_COND(!state.prepared_depth_texture);
|
|
|
//bind depth for read
|
|
|
- glActiveTexture(GL_TEXTURE0 + storage->config.max_texture_image_units - 9);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE0 + storage->config.max_texture_image_units - 9);
|
|
|
glBindTexture(GL_TEXTURE_2D, storage->frame.current_rt->depth);
|
|
|
state.bound_depth_texture = true;
|
|
|
}
|
|
@@ -3304,7 +3304,7 @@ void RasterizerSceneGLES3::_render_mrts(Environment *env, const CameraMatrix &p_
|
|
|
ss[0] >>= 1;
|
|
|
ss[1] >>= 1;
|
|
|
|
|
|
- glActiveTexture(GL_TEXTURE0);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE0);
|
|
|
if (i == 0) {
|
|
|
glBindTexture(GL_TEXTURE_2D, storage->frame.current_rt->depth);
|
|
|
} else {
|
|
@@ -3357,11 +3357,11 @@ void RasterizerSceneGLES3::_render_mrts(Environment *env, const CameraMatrix &p_
|
|
|
state.ssao_shader.set_uniform(SsaoShaderGLES3::PROJ_SCALE, pixels_per_meter);
|
|
|
state.ssao_shader.set_uniform(SsaoShaderGLES3::BIAS, env->ssao_bias);
|
|
|
|
|
|
- glActiveTexture(GL_TEXTURE0);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE0);
|
|
|
glBindTexture(GL_TEXTURE_2D, storage->frame.current_rt->depth);
|
|
|
- glActiveTexture(GL_TEXTURE1);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE1);
|
|
|
glBindTexture(GL_TEXTURE_2D, storage->frame.current_rt->effects.ssao.linear_depth);
|
|
|
- glActiveTexture(GL_TEXTURE2);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE2);
|
|
|
glBindTexture(GL_TEXTURE_2D, storage->frame.current_rt->buffers.effect);
|
|
|
|
|
|
glBindFramebuffer(GL_FRAMEBUFFER, storage->frame.current_rt->effects.ssao.blur_fbo[0]); //copy to front first
|
|
@@ -3385,11 +3385,11 @@ void RasterizerSceneGLES3::_render_mrts(Environment *env, const CameraMatrix &p_
|
|
|
glUniform2iv(state.ssao_blur_shader.get_uniform(SsaoBlurShaderGLES3::AXIS), 1, axis);
|
|
|
glUniform2iv(state.ssao_blur_shader.get_uniform(SsaoBlurShaderGLES3::SCREEN_SIZE), 1, ss);
|
|
|
|
|
|
- glActiveTexture(GL_TEXTURE0);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE0);
|
|
|
glBindTexture(GL_TEXTURE_2D, storage->frame.current_rt->effects.ssao.blur_red[i]);
|
|
|
- glActiveTexture(GL_TEXTURE1);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE1);
|
|
|
glBindTexture(GL_TEXTURE_2D, storage->frame.current_rt->depth);
|
|
|
- glActiveTexture(GL_TEXTURE2);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE2);
|
|
|
glBindTexture(GL_TEXTURE_2D, storage->frame.current_rt->buffers.effect);
|
|
|
glBindFramebuffer(GL_FRAMEBUFFER, storage->frame.current_rt->effects.ssao.blur_fbo[1 - i]);
|
|
|
if (i == 0) {
|
|
@@ -3407,9 +3407,9 @@ void RasterizerSceneGLES3::_render_mrts(Environment *env, const CameraMatrix &p_
|
|
|
state.effect_blur_shader.set_conditional(EffectBlurShaderGLES3::SSAO_MERGE, true);
|
|
|
state.effect_blur_shader.bind();
|
|
|
state.effect_blur_shader.set_uniform(EffectBlurShaderGLES3::SSAO_COLOR, env->ssao_color);
|
|
|
- glActiveTexture(GL_TEXTURE0);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE0);
|
|
|
glBindTexture(GL_TEXTURE_2D, storage->frame.current_rt->color); //previous level, since mipmaps[0] starts one level bigger
|
|
|
- glActiveTexture(GL_TEXTURE1);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE1);
|
|
|
glBindTexture(GL_TEXTURE_2D, storage->frame.current_rt->effects.ssao.blur_red[0]); //previous level, since mipmaps[0] starts one level bigger
|
|
|
glBindFramebuffer(GL_FRAMEBUFFER, storage->frame.current_rt->effects.mip_maps[0].sizes[0].fbo); // copy to base level
|
|
|
_copy_screen(true);
|
|
@@ -3452,15 +3452,15 @@ void RasterizerSceneGLES3::_render_mrts(Environment *env, const CameraMatrix &p_
|
|
|
state.sss_shader.set_uniform(SubsurfScatteringShaderGLES3::CAMERA_Z_FAR, p_cam_projection.get_z_far());
|
|
|
state.sss_shader.set_uniform(SubsurfScatteringShaderGLES3::DIR, Vector2(1, 0));
|
|
|
|
|
|
- glActiveTexture(GL_TEXTURE0);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE0);
|
|
|
glBindTexture(GL_TEXTURE_2D, storage->frame.current_rt->effects.mip_maps[0].color);
|
|
|
|
|
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); //disable filter (fixes bugs on AMD)
|
|
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
|
|
|
|
|
- glActiveTexture(GL_TEXTURE1);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE1);
|
|
|
glBindTexture(GL_TEXTURE_2D, storage->frame.current_rt->effects.ssao.blur_red[0]);
|
|
|
- glActiveTexture(GL_TEXTURE2);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE2);
|
|
|
glBindTexture(GL_TEXTURE_2D, storage->frame.current_rt->depth);
|
|
|
//glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, GL_NONE);
|
|
|
|
|
@@ -3468,7 +3468,7 @@ void RasterizerSceneGLES3::_render_mrts(Environment *env, const CameraMatrix &p_
|
|
|
|
|
|
_copy_screen(true);
|
|
|
|
|
|
- glActiveTexture(GL_TEXTURE0);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE0);
|
|
|
glBindTexture(GL_TEXTURE_2D, storage->frame.current_rt->color);
|
|
|
state.sss_shader.set_uniform(SubsurfScatteringShaderGLES3::DIR, Vector2(0, 1));
|
|
|
glBindFramebuffer(GL_FRAMEBUFFER, storage->frame.current_rt->effects.mip_maps[0].sizes[0].fbo); // copy to base level
|
|
@@ -3507,11 +3507,11 @@ void RasterizerSceneGLES3::_render_mrts(Environment *env, const CameraMatrix &p_
|
|
|
state.ssr_shader.set_uniform(ScreenSpaceReflectionShaderGLES3::DISTANCE_FADE, env->ssr_fade_out);
|
|
|
state.ssr_shader.set_uniform(ScreenSpaceReflectionShaderGLES3::CURVE_FADE_IN, env->ssr_fade_in);
|
|
|
|
|
|
- glActiveTexture(GL_TEXTURE0);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE0);
|
|
|
glBindTexture(GL_TEXTURE_2D, storage->frame.current_rt->effects.mip_maps[0].color);
|
|
|
- glActiveTexture(GL_TEXTURE1);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE1);
|
|
|
glBindTexture(GL_TEXTURE_2D, storage->frame.current_rt->buffers.effect);
|
|
|
- glActiveTexture(GL_TEXTURE2);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE2);
|
|
|
glBindTexture(GL_TEXTURE_2D, storage->frame.current_rt->depth);
|
|
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, GL_NONE);
|
|
|
|
|
@@ -3537,10 +3537,10 @@ void RasterizerSceneGLES3::_render_mrts(Environment *env, const CameraMatrix &p_
|
|
|
state.resolve_shader.bind();
|
|
|
state.resolve_shader.set_uniform(ResolveShaderGLES3::PIXEL_SIZE, Vector2(1.0 / storage->frame.current_rt->width, 1.0 / storage->frame.current_rt->height));
|
|
|
|
|
|
- glActiveTexture(GL_TEXTURE0);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE0);
|
|
|
glBindTexture(GL_TEXTURE_2D, storage->frame.current_rt->color);
|
|
|
if (env->ssr_enabled) {
|
|
|
- glActiveTexture(GL_TEXTURE1);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE1);
|
|
|
glBindTexture(GL_TEXTURE_2D, storage->frame.current_rt->effects.mip_maps[1].color);
|
|
|
}
|
|
|
|
|
@@ -3570,7 +3570,7 @@ void RasterizerSceneGLES3::_render_mrts(Environment *env, const CameraMatrix &p_
|
|
|
}
|
|
|
|
|
|
glBindFramebuffer(GL_FRAMEBUFFER, storage->frame.current_rt->buffers.fbo);
|
|
|
- glActiveTexture(GL_TEXTURE0);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE0);
|
|
|
glBindTexture(GL_TEXTURE_2D, storage->frame.current_rt->effects.mip_maps[0].color);
|
|
|
|
|
|
_copy_screen(true);
|
|
@@ -3610,7 +3610,7 @@ void RasterizerSceneGLES3::_post_process(Environment *env, const CameraMatrix &p
|
|
|
} else {
|
|
|
glBindFramebuffer(GL_FRAMEBUFFER, storage->frame.current_rt->fbo);
|
|
|
}
|
|
|
- glActiveTexture(GL_TEXTURE0);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE0);
|
|
|
glBindTexture(GL_TEXTURE_2D, storage->frame.current_rt->effects.mip_maps[0].color);
|
|
|
storage->shaders.copy.set_conditional(CopyShaderGLES3::LINEAR_TO_SRGB, !storage->frame.current_rt->flags[RasterizerStorage::RENDER_TARGET_KEEP_3D_LINEAR]);
|
|
|
storage->shaders.copy.set_conditional(CopyShaderGLES3::V_FLIP, storage->frame.current_rt->flags[RasterizerStorage::RENDER_TARGET_VFLIP]);
|
|
@@ -3661,10 +3661,10 @@ void RasterizerSceneGLES3::_post_process(Environment *env, const CameraMatrix &p
|
|
|
state.effect_blur_shader.set_uniform(EffectBlurShaderGLES3::CAMERA_Z_NEAR, p_cam_projection.get_z_near());
|
|
|
state.effect_blur_shader.set_uniform(EffectBlurShaderGLES3::CAMERA_Z_FAR, p_cam_projection.get_z_far());
|
|
|
|
|
|
- glActiveTexture(GL_TEXTURE1);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE1);
|
|
|
glBindTexture(GL_TEXTURE_2D, storage->frame.current_rt->depth);
|
|
|
|
|
|
- glActiveTexture(GL_TEXTURE0);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE0);
|
|
|
glBindTexture(GL_TEXTURE_2D, composite_from);
|
|
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
|
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
|
@@ -3675,7 +3675,7 @@ void RasterizerSceneGLES3::_post_process(Environment *env, const CameraMatrix &p
|
|
|
|
|
|
_copy_screen(true);
|
|
|
|
|
|
- glActiveTexture(GL_TEXTURE0);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE0);
|
|
|
glBindTexture(GL_TEXTURE_2D, storage->frame.current_rt->color);
|
|
|
state.effect_blur_shader.set_uniform(EffectBlurShaderGLES3::DOF_DIR, Vector2(0, 1));
|
|
|
glBindFramebuffer(GL_FRAMEBUFFER, storage->frame.current_rt->effects.mip_maps[0].sizes[0].fbo); // copy to base level
|
|
@@ -3718,10 +3718,10 @@ void RasterizerSceneGLES3::_post_process(Environment *env, const CameraMatrix &p
|
|
|
state.effect_blur_shader.set_uniform(EffectBlurShaderGLES3::CAMERA_Z_NEAR, p_cam_projection.get_z_near());
|
|
|
state.effect_blur_shader.set_uniform(EffectBlurShaderGLES3::CAMERA_Z_FAR, p_cam_projection.get_z_far());
|
|
|
|
|
|
- glActiveTexture(GL_TEXTURE1);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE1);
|
|
|
glBindTexture(GL_TEXTURE_2D, storage->frame.current_rt->depth);
|
|
|
|
|
|
- glActiveTexture(GL_TEXTURE0);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE0);
|
|
|
glBindTexture(GL_TEXTURE_2D, composite_from);
|
|
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
|
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
|
@@ -3744,7 +3744,7 @@ void RasterizerSceneGLES3::_post_process(Environment *env, const CameraMatrix &p
|
|
|
state.effect_blur_shader.set_uniform(EffectBlurShaderGLES3::CAMERA_Z_NEAR, p_cam_projection.get_z_near());
|
|
|
state.effect_blur_shader.set_uniform(EffectBlurShaderGLES3::CAMERA_Z_FAR, p_cam_projection.get_z_far());
|
|
|
|
|
|
- glActiveTexture(GL_TEXTURE0);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE0);
|
|
|
glBindTexture(GL_TEXTURE_2D, storage->frame.current_rt->color);
|
|
|
|
|
|
glBindFramebuffer(GL_FRAMEBUFFER, storage->frame.current_rt->effects.mip_maps[0].sizes[0].fbo); // copy to base level
|
|
@@ -3756,7 +3756,7 @@ void RasterizerSceneGLES3::_post_process(Environment *env, const CameraMatrix &p
|
|
|
glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ZERO, GL_ONE);
|
|
|
|
|
|
} else {
|
|
|
- glActiveTexture(GL_TEXTURE2);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE2);
|
|
|
glBindTexture(GL_TEXTURE_2D, storage->frame.current_rt->buffers.diffuse);
|
|
|
}
|
|
|
|
|
@@ -3779,7 +3779,7 @@ void RasterizerSceneGLES3::_post_process(Environment *env, const CameraMatrix &p
|
|
|
|
|
|
if (env && (env->dof_blur_near_enabled || env->dof_blur_far_enabled)) {
|
|
|
//these needed to disable filtering, reenamble
|
|
|
- glActiveTexture(GL_TEXTURE0);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE0);
|
|
|
glBindTexture(GL_TEXTURE_2D, storage->frame.current_rt->effects.mip_maps[0].color);
|
|
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
|
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
|
|
@@ -3803,7 +3803,7 @@ void RasterizerSceneGLES3::_post_process(Environment *env, const CameraMatrix &p
|
|
|
|
|
|
glUniform2iv(state.exposure_shader.get_uniform(ExposureShaderGLES3::SOURCE_RENDER_SIZE), 1, ss);
|
|
|
glUniform2iv(state.exposure_shader.get_uniform(ExposureShaderGLES3::TARGET_SIZE), 1, ds);
|
|
|
- glActiveTexture(GL_TEXTURE0);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE0);
|
|
|
glBindTexture(GL_TEXTURE_2D, composite_from);
|
|
|
|
|
|
glBindFramebuffer(GL_FRAMEBUFFER, exposure_shrink[0].fbo);
|
|
@@ -3819,7 +3819,7 @@ void RasterizerSceneGLES3::_post_process(Environment *env, const CameraMatrix &p
|
|
|
int s_size = exposure_shrink_size / 3;
|
|
|
for (int i = 1; i < exposure_shrink.size() - 1; i++) {
|
|
|
glBindFramebuffer(GL_FRAMEBUFFER, exposure_shrink[i].fbo);
|
|
|
- glActiveTexture(GL_TEXTURE0);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE0);
|
|
|
glBindTexture(GL_TEXTURE_2D, exposure_shrink[i - 1].color);
|
|
|
|
|
|
_copy_screen();
|
|
@@ -3843,9 +3843,9 @@ void RasterizerSceneGLES3::_post_process(Environment *env, const CameraMatrix &p
|
|
|
|
|
|
glBindFramebuffer(GL_FRAMEBUFFER, exposure_shrink[exposure_shrink.size() - 1].fbo);
|
|
|
glViewport(0, 0, 1, 1);
|
|
|
- glActiveTexture(GL_TEXTURE0);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE0);
|
|
|
glBindTexture(GL_TEXTURE_2D, exposure_shrink[exposure_shrink.size() - 2].color);
|
|
|
- glActiveTexture(GL_TEXTURE1);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE1);
|
|
|
glBindTexture(GL_TEXTURE_2D, storage->frame.current_rt->exposure.color); //read from previous
|
|
|
|
|
|
state.exposure_shader.set_uniform(ExposureShaderGLES3::EXPOSURE_ADJUST, env->auto_exposure_speed * (tick_diff / 1000000.0));
|
|
@@ -3904,7 +3904,7 @@ void RasterizerSceneGLES3::_post_process(Environment *env, const CameraMatrix &p
|
|
|
state.effect_blur_shader.set_uniform(EffectBlurShaderGLES3::GLOW_STRENGTH, env->glow_strength);
|
|
|
state.effect_blur_shader.set_uniform(EffectBlurShaderGLES3::LUMINANCE_CAP, env->glow_hdr_luminance_cap);
|
|
|
|
|
|
- glActiveTexture(GL_TEXTURE0);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE0);
|
|
|
if (i == 0) {
|
|
|
glBindTexture(GL_TEXTURE_2D, composite_from);
|
|
|
|
|
@@ -3913,7 +3913,7 @@ void RasterizerSceneGLES3::_post_process(Environment *env, const CameraMatrix &p
|
|
|
state.effect_blur_shader.set_uniform(EffectBlurShaderGLES3::AUTO_EXPOSURE_GREY, env->auto_exposure_grey);
|
|
|
}
|
|
|
|
|
|
- glActiveTexture(GL_TEXTURE1);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE1);
|
|
|
glBindTexture(GL_TEXTURE_2D, storage->frame.current_rt->exposure.color);
|
|
|
|
|
|
state.effect_blur_shader.set_uniform(EffectBlurShaderGLES3::GLOW_BLOOM, env->glow_bloom);
|
|
@@ -3935,7 +3935,7 @@ void RasterizerSceneGLES3::_post_process(Environment *env, const CameraMatrix &p
|
|
|
state.effect_blur_shader.set_uniform(EffectBlurShaderGLES3::PIXEL_SIZE, Vector2(1.0 / vp_w, 1.0 / vp_h));
|
|
|
state.effect_blur_shader.set_uniform(EffectBlurShaderGLES3::LOD, float(i));
|
|
|
state.effect_blur_shader.set_uniform(EffectBlurShaderGLES3::GLOW_STRENGTH, env->glow_strength);
|
|
|
- glActiveTexture(GL_TEXTURE0);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE0);
|
|
|
glBindTexture(GL_TEXTURE_2D, storage->frame.current_rt->effects.mip_maps[1].color);
|
|
|
glBindFramebuffer(GL_FRAMEBUFFER, storage->frame.current_rt->effects.mip_maps[0].sizes[i + 1].fbo); //next level, since mipmaps[0] starts one level bigger
|
|
|
_copy_screen();
|
|
@@ -3951,7 +3951,7 @@ void RasterizerSceneGLES3::_post_process(Environment *env, const CameraMatrix &p
|
|
|
glBindFramebuffer(GL_FRAMEBUFFER, storage->frame.current_rt->fbo);
|
|
|
}
|
|
|
|
|
|
- glActiveTexture(GL_TEXTURE0);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE0);
|
|
|
glBindTexture(GL_TEXTURE_2D, composite_from);
|
|
|
if (env) {
|
|
|
state.tonemap_shader.set_conditional(TonemapShaderGLES3::USE_FILMIC_TONEMAPPER, env->tone_mapper == VS::ENV_TONE_MAPPER_FILMIC);
|
|
@@ -3997,7 +3997,7 @@ void RasterizerSceneGLES3::_post_process(Environment *env, const CameraMatrix &p
|
|
|
state.tonemap_shader.set_conditional(TonemapShaderGLES3::USE_GLOW_SCREEN, env->glow_blend_mode == VS::GLOW_BLEND_MODE_SCREEN);
|
|
|
state.tonemap_shader.set_conditional(TonemapShaderGLES3::USE_GLOW_SOFTLIGHT, env->glow_blend_mode == VS::GLOW_BLEND_MODE_SOFTLIGHT);
|
|
|
state.tonemap_shader.set_conditional(TonemapShaderGLES3::USE_GLOW_REPLACE, env->glow_blend_mode == VS::GLOW_BLEND_MODE_REPLACE);
|
|
|
- glActiveTexture(GL_TEXTURE2);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE2);
|
|
|
glBindTexture(GL_TEXTURE_2D, storage->frame.current_rt->effects.mip_maps[0].color);
|
|
|
}
|
|
|
|
|
@@ -4006,7 +4006,7 @@ void RasterizerSceneGLES3::_post_process(Environment *env, const CameraMatrix &p
|
|
|
RasterizerStorageGLES3::Texture *tex = storage->texture_owner.getornull(env->color_correction);
|
|
|
if (tex) {
|
|
|
state.tonemap_shader.set_conditional(TonemapShaderGLES3::USE_COLOR_CORRECTION, true);
|
|
|
- glActiveTexture(GL_TEXTURE3);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE3);
|
|
|
glBindTexture(tex->target, tex->tex_id);
|
|
|
}
|
|
|
}
|
|
@@ -4029,7 +4029,7 @@ void RasterizerSceneGLES3::_post_process(Environment *env, const CameraMatrix &p
|
|
|
}
|
|
|
|
|
|
if (env->auto_exposure) {
|
|
|
- glActiveTexture(GL_TEXTURE1);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE1);
|
|
|
glBindTexture(GL_TEXTURE_2D, storage->frame.current_rt->exposure.color);
|
|
|
state.tonemap_shader.set_uniform(TonemapShaderGLES3::AUTO_EXPOSURE_GREY, env->auto_exposure_grey);
|
|
|
}
|
|
@@ -4115,7 +4115,7 @@ void RasterizerSceneGLES3::render_scene(const Transform &p_cam_transform, const
|
|
|
state.scene_shader.set_conditional(SceneShaderGLES3::USE_SHADOW, use_shadows);
|
|
|
|
|
|
if (use_shadows) {
|
|
|
- glActiveTexture(GL_TEXTURE0 + storage->config.max_texture_image_units - 6);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE0 + storage->config.max_texture_image_units - 6);
|
|
|
glBindTexture(GL_TEXTURE_2D, shadow_atlas->depth);
|
|
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, GL_COMPARE_REF_TO_TEXTURE);
|
|
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_FUNC, GL_LESS);
|
|
@@ -4124,14 +4124,14 @@ void RasterizerSceneGLES3::render_scene(const Transform &p_cam_transform, const
|
|
|
} else {
|
|
|
if (storage->config.async_compilation_enabled) {
|
|
|
// Avoid GL UB message id 131222 caused by shadow samplers not properly set up in the ubershader
|
|
|
- glActiveTexture(GL_TEXTURE0 + storage->config.max_texture_image_units - 6);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE0 + storage->config.max_texture_image_units - 6);
|
|
|
glBindTexture(GL_TEXTURE_2D, storage->resources.depth_tex);
|
|
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, GL_COMPARE_REF_TO_TEXTURE);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
if (reflection_atlas && reflection_atlas->size) {
|
|
|
- glActiveTexture(GL_TEXTURE0 + storage->config.max_texture_image_units - 4);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE0 + storage->config.max_texture_image_units - 4);
|
|
|
glBindTexture(GL_TEXTURE_2D, reflection_atlas->color);
|
|
|
}
|
|
|
|
|
@@ -4385,7 +4385,7 @@ void RasterizerSceneGLES3::render_scene(const Transform &p_cam_transform, const
|
|
|
glDisable(GL_DEPTH_TEST);
|
|
|
glDisable(GL_CULL_FACE);
|
|
|
|
|
|
- glActiveTexture(GL_TEXTURE0);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE0);
|
|
|
glBindTexture(GL_TEXTURE_2D, storage->frame.current_rt->color);
|
|
|
|
|
|
storage->shaders.copy.set_conditional(CopyShaderGLES3::DISABLE_ALPHA, true);
|
|
@@ -4560,7 +4560,7 @@ void RasterizerSceneGLES3::render_scene(const Transform &p_cam_transform, const
|
|
|
}
|
|
|
|
|
|
if (storage->frame.current_rt && state.used_screen_texture && storage->frame.current_rt->buffers.active) {
|
|
|
- glActiveTexture(GL_TEXTURE0 + storage->config.max_texture_image_units - 8);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE0 + storage->config.max_texture_image_units - 8);
|
|
|
glBindTexture(GL_TEXTURE_2D, storage->frame.current_rt->effects.mip_maps[0].color);
|
|
|
}
|
|
|
|
|
@@ -4632,7 +4632,7 @@ void RasterizerSceneGLES3::render_scene(const Transform &p_cam_transform, const
|
|
|
|
|
|
//_copy_texture_to_front_buffer(shadow_atlas->depth);
|
|
|
storage->canvas->canvas_begin();
|
|
|
- glActiveTexture(GL_TEXTURE0);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE0);
|
|
|
glBindTexture(GL_TEXTURE_2D, shadow_atlas->depth);
|
|
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, GL_NONE);
|
|
|
storage->canvas->draw_generic_textured_rect(Rect2(0, 0, storage->frame.current_rt->width / 2, storage->frame.current_rt->height / 2), Rect2(0, 0, 1, 1));
|
|
@@ -4642,7 +4642,7 @@ void RasterizerSceneGLES3::render_scene(const Transform &p_cam_transform, const
|
|
|
|
|
|
//_copy_texture_to_front_buffer(shadow_atlas->depth);
|
|
|
storage->canvas->canvas_begin();
|
|
|
- glActiveTexture(GL_TEXTURE0);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE0);
|
|
|
glBindTexture(GL_TEXTURE_2D, exposure_shrink[4].color);
|
|
|
//glBindTexture(GL_TEXTURE_2D,storage->frame.current_rt->exposure.color);
|
|
|
storage->canvas->draw_generic_textured_rect(Rect2(0, 0, storage->frame.current_rt->width / 16, storage->frame.current_rt->height / 16), Rect2(0, 0, 1, 1));
|
|
@@ -4652,7 +4652,7 @@ void RasterizerSceneGLES3::render_scene(const Transform &p_cam_transform, const
|
|
|
|
|
|
//_copy_texture_to_front_buffer(shadow_atlas->depth);
|
|
|
storage->canvas->canvas_begin();
|
|
|
- glActiveTexture(GL_TEXTURE0);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE0);
|
|
|
glBindTexture(GL_TEXTURE_2D, reflection_atlas->color);
|
|
|
storage->canvas->draw_generic_textured_rect(Rect2(0, 0, storage->frame.current_rt->width / 2, storage->frame.current_rt->height / 2), Rect2(0, 0, 1, 1));
|
|
|
}
|
|
@@ -4661,7 +4661,7 @@ void RasterizerSceneGLES3::render_scene(const Transform &p_cam_transform, const
|
|
|
|
|
|
//_copy_texture_to_front_buffer(shadow_atlas->depth);
|
|
|
storage->canvas->canvas_begin();
|
|
|
- glActiveTexture(GL_TEXTURE0);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE0);
|
|
|
glBindTexture(GL_TEXTURE_2D, directional_shadow.depth);
|
|
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, GL_NONE);
|
|
|
storage->canvas->draw_generic_textured_rect(Rect2(0, 0, storage->frame.current_rt->width / 2, storage->frame.current_rt->height / 2), Rect2(0, 0, 1, 1));
|
|
@@ -4671,7 +4671,7 @@ void RasterizerSceneGLES3::render_scene(const Transform &p_cam_transform, const
|
|
|
|
|
|
//_copy_texture_to_front_buffer(shadow_atlas->depth);
|
|
|
storage->canvas->canvas_begin();
|
|
|
- glActiveTexture(GL_TEXTURE0);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE0);
|
|
|
glBindTexture(GL_TEXTURE_2D, env_radiance_tex);
|
|
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
|
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
|
@@ -4885,7 +4885,7 @@ void RasterizerSceneGLES3::render_shadow(RID p_light, RID p_shadow_atlas, int p_
|
|
|
|
|
|
if (storage->config.async_compilation_enabled) {
|
|
|
// Avoid GL UB message id 131222 caused by shadow samplers not properly set up in the ubershader
|
|
|
- glActiveTexture(GL_TEXTURE0 + storage->config.max_texture_image_units - 6);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE0 + storage->config.max_texture_image_units - 6);
|
|
|
glBindTexture(GL_TEXTURE_2D, storage->resources.depth_tex);
|
|
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, GL_COMPARE_REF_TO_TEXTURE);
|
|
|
}
|
|
@@ -4910,7 +4910,7 @@ void RasterizerSceneGLES3::render_shadow(RID p_light, RID p_shadow_atlas, int p_
|
|
|
glBindFramebuffer(GL_FRAMEBUFFER, shadow_atlas->fbo);
|
|
|
state.cube_to_dp_shader.bind();
|
|
|
|
|
|
- glActiveTexture(GL_TEXTURE0);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE0);
|
|
|
glBindTexture(GL_TEXTURE_CUBE_MAP, shadow_cubemaps[current_cubemap].cubemap);
|
|
|
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_COMPARE_MODE, GL_NONE);
|
|
|
glDisable(GL_CULL_FACE);
|
|
@@ -5102,7 +5102,7 @@ void RasterizerSceneGLES3::initialize() {
|
|
|
|
|
|
int cube_size = max_shadow_cubemap_sampler_size;
|
|
|
|
|
|
- glActiveTexture(GL_TEXTURE0);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE0);
|
|
|
|
|
|
while (cube_size >= 32) {
|
|
|
ShadowCubeMap cube;
|
|
@@ -5193,7 +5193,7 @@ void RasterizerSceneGLES3::initialize() {
|
|
|
|
|
|
int rcube_size = max_reflection_cubemap_sampler_size;
|
|
|
|
|
|
- glActiveTexture(GL_TEXTURE0);
|
|
|
+ WRAPPED_GL_ACTIVE_TEXTURE(GL_TEXTURE0);
|
|
|
|
|
|
bool use_float = true;
|
|
|
|