[GLES2] fix canvas_item sampler allocation
This commit is contained in:
parent
d1497b720e
commit
da876907fd
|
@ -152,7 +152,7 @@ RasterizerStorageGLES2::Texture *RasterizerCanvasGLES2::_bind_canvas_texture(con
|
|||
state.current_tex = RID();
|
||||
state.current_tex_ptr = NULL;
|
||||
|
||||
glActiveTexture(GL_TEXTURE0);
|
||||
glActiveTexture(GL_TEXTURE0 + storage->config.max_texture_image_units - 1);
|
||||
glBindTexture(GL_TEXTURE_2D, storage->resources.white_tex);
|
||||
|
||||
} else {
|
||||
|
@ -167,7 +167,7 @@ RasterizerStorageGLES2::Texture *RasterizerCanvasGLES2::_bind_canvas_texture(con
|
|||
texture->render_target->used_in_frame = true;
|
||||
}
|
||||
|
||||
glActiveTexture(GL_TEXTURE0);
|
||||
glActiveTexture(GL_TEXTURE0 + storage->config.max_texture_image_units - 1);
|
||||
glBindTexture(GL_TEXTURE_2D, texture->tex_id);
|
||||
|
||||
state.current_tex = p_texture;
|
||||
|
@ -179,7 +179,7 @@ RasterizerStorageGLES2::Texture *RasterizerCanvasGLES2::_bind_canvas_texture(con
|
|||
state.current_tex = RID();
|
||||
state.current_tex_ptr = NULL;
|
||||
|
||||
glActiveTexture(GL_TEXTURE0);
|
||||
glActiveTexture(GL_TEXTURE0 + storage->config.max_texture_image_units - 1);
|
||||
glBindTexture(GL_TEXTURE_2D, storage->resources.white_tex);
|
||||
}
|
||||
|
||||
|
@ -889,7 +889,7 @@ void RasterizerCanvasGLES2::canvas_render_items(Item *p_item_list, int p_z, cons
|
|||
|
||||
for (int i = 0; i < tc; i++) {
|
||||
|
||||
glActiveTexture(GL_TEXTURE2 + i);
|
||||
glActiveTexture(GL_TEXTURE0 + i);
|
||||
|
||||
RasterizerStorageGLES2::Texture *t = storage->texture_owner.getornull(textures[i].second);
|
||||
|
||||
|
@ -1027,8 +1027,8 @@ void RasterizerCanvasGLES2::reset_canvas() {
|
|||
// keeping this for now as there's nothing else that uses texture unit 2
|
||||
// TODO ^
|
||||
if (storage->frame.current_rt) {
|
||||
glActiveTexture(GL_TEXTURE0 + 2);
|
||||
glBindTexture(GL_TEXTURE_2D, storage->frame.current_rt->copy_screen_effect.color);
|
||||
// glActiveTexture(GL_TEXTURE0 + 2);
|
||||
// glBindTexture(GL_TEXTURE_2D, storage->frame.current_rt->copy_screen_effect.color);
|
||||
}
|
||||
|
||||
glBindBuffer(GL_ARRAY_BUFFER, 0);
|
||||
|
|
|
@ -327,7 +327,7 @@ void RasterizerGLES2::set_boot_image(const Ref<Image> &p_image, const Color &p_c
|
|||
screenrect.position += ((Size2(window_w, window_h) - screenrect.size) / 2.0).floor();
|
||||
|
||||
RasterizerStorageGLES2::Texture *t = storage->texture_owner.get(texture);
|
||||
glActiveTexture(GL_TEXTURE0);
|
||||
glActiveTexture(GL_TEXTURE0 + storage->config.max_texture_image_units - 1);
|
||||
glBindTexture(GL_TEXTURE_2D, t->tex_id);
|
||||
canvas->draw_generic_textured_rect(screenrect, Rect2(0, 0, 1, 1));
|
||||
glBindTexture(GL_TEXTURE_2D, 0);
|
||||
|
@ -354,7 +354,7 @@ void RasterizerGLES2::blit_render_target_to_screen(RID p_render_target, const Re
|
|||
canvas->canvas_begin();
|
||||
glDisable(GL_BLEND);
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, RasterizerStorageGLES2::system_fbo);
|
||||
glActiveTexture(GL_TEXTURE0);
|
||||
glActiveTexture(GL_TEXTURE0 + storage->config.max_texture_image_units - 1);
|
||||
glBindTexture(GL_TEXTURE_2D, rt->color);
|
||||
|
||||
// TODO normals
|
||||
|
|
|
@ -1303,6 +1303,10 @@ void RasterizerStorageGLES2::shader_get_param_list(RID p_shader, List<PropertyIn
|
|||
pi.hint = PROPERTY_HINT_RESOURCE_TYPE;
|
||||
pi.hint_string = "CubeMap";
|
||||
} break;
|
||||
|
||||
default: {
|
||||
|
||||
} break;
|
||||
}
|
||||
|
||||
p_param_list->push_back(pi);
|
||||
|
|
|
@ -967,19 +967,7 @@ void ShaderGLES2::use_material(void *p_material) {
|
|||
value.second.write[15].real = 1;
|
||||
} break;
|
||||
|
||||
case ShaderLanguage::TYPE_SAMPLER2D: {
|
||||
|
||||
} break;
|
||||
|
||||
case ShaderLanguage::TYPE_ISAMPLER2D: {
|
||||
|
||||
} break;
|
||||
|
||||
case ShaderLanguage::TYPE_USAMPLER2D: {
|
||||
|
||||
} break;
|
||||
|
||||
case ShaderLanguage::TYPE_SAMPLERCUBE: {
|
||||
default: {
|
||||
|
||||
} break;
|
||||
}
|
||||
|
|
|
@ -96,9 +96,9 @@ precision mediump float;
|
|||
precision mediump int;
|
||||
#endif
|
||||
|
||||
uniform sampler2D color_texture; // texunit:0
|
||||
uniform sampler2D color_texture; // texunit:-1
|
||||
uniform highp vec2 color_texpixel_size;
|
||||
uniform mediump sampler2D normal_texture; // texunit:1
|
||||
uniform mediump sampler2D normal_texture; // texunit:-2
|
||||
|
||||
varying mediump vec2 uv_interp;
|
||||
varying mediump vec4 color_interp;
|
||||
|
@ -109,7 +109,7 @@ uniform vec4 final_modulate;
|
|||
|
||||
#ifdef SCREEN_TEXTURE_USED
|
||||
|
||||
uniform sampler2D screen_texture; // texunit:2
|
||||
uniform sampler2D screen_texture; // texunit:-3
|
||||
|
||||
#endif
|
||||
|
||||
|
|
Loading…
Reference in New Issue