38
38
39
39
#include " core/config/project_settings.h"
40
40
#include " servers/rendering/rendering_server_default.h"
41
- #include " storage/canvas_texture_storage.h"
42
41
#include " storage/config.h"
43
42
#include " storage/material_storage.h"
43
+ #include " storage/texture_storage.h"
44
44
45
45
#ifndef GLES_OVER_GL
46
46
#define glClearDepth glClearDepthf
@@ -116,9 +116,11 @@ void RasterizerCanvasGLES3::_update_transform_to_mat4(const Transform3D &p_trans
116
116
}
117
117
118
118
void RasterizerCanvasGLES3::canvas_render_items (RID p_to_render_target, Item *p_item_list, const Color &p_modulate, Light *p_light_list, Light *p_directional_list, const Transform2D &p_canvas_transform, RS::CanvasItemTextureFilter p_default_filter, RS::CanvasItemTextureRepeat p_default_repeat, bool p_snap_2d_vertices_to_pixel, bool &r_sdf_used) {
119
- storage->frame .current_rt = nullptr ;
119
+ GLES3::TextureStorage *texture_storage = GLES3::TextureStorage::get_singleton ();
120
+
121
+ texture_storage->frame .current_rt = nullptr ;
120
122
121
- storage ->_set_current_render_target (p_to_render_target);
123
+ texture_storage ->_set_current_render_target (p_to_render_target);
122
124
123
125
Transform2D canvas_transform_inverse = p_canvas_transform.affine_inverse ();
124
126
@@ -130,7 +132,7 @@ void RasterizerCanvasGLES3::canvas_render_items(RID p_to_render_target, Item *p_
130
132
// update canvas state uniform buffer
131
133
StateBuffer state_buffer;
132
134
133
- Size2i ssize = storage ->render_target_get_size (p_to_render_target);
135
+ Size2i ssize = texture_storage ->render_target_get_size (p_to_render_target);
134
136
135
137
Transform3D screen_transform;
136
138
screen_transform.translate (-(ssize.width / 2 .0f ), -(ssize.height / 2 .0f ), 0 .0f );
@@ -149,11 +151,11 @@ void RasterizerCanvasGLES3::canvas_render_items(RID p_to_render_target, Item *p_
149
151
state_buffer.canvas_modulate [2 ] = p_modulate.b ;
150
152
state_buffer.canvas_modulate [3 ] = p_modulate.a ;
151
153
152
- Size2 render_target_size = storage ->render_target_get_size (p_to_render_target);
154
+ Size2 render_target_size = texture_storage ->render_target_get_size (p_to_render_target);
153
155
state_buffer.screen_pixel_size [0 ] = 1.0 / render_target_size.x ;
154
156
state_buffer.screen_pixel_size [1 ] = 1.0 / render_target_size.y ;
155
157
156
- state_buffer.time = storage ->frame .time ;
158
+ state_buffer.time = texture_storage ->frame .time ;
157
159
state_buffer.use_pixel_snap = p_snap_2d_vertices_to_pixel;
158
160
159
161
state_buffer.directional_light_count = 0 ; // directional_light_count;
@@ -166,7 +168,7 @@ void RasterizerCanvasGLES3::canvas_render_items(RID p_to_render_target, Item *p_
166
168
state_buffer.screen_to_sdf [0 ] = 1.0 / state_buffer.sdf_to_screen [0 ];
167
169
state_buffer.screen_to_sdf [1 ] = 1.0 / state_buffer.sdf_to_screen [1 ];
168
170
169
- Rect2 sdf_rect = storage ->render_target_get_sdf_rect (p_to_render_target);
171
+ Rect2 sdf_rect = texture_storage ->render_target_get_sdf_rect (p_to_render_target);
170
172
Rect2 sdf_tex_rect (sdf_rect.position / canvas_scale, sdf_rect.size / canvas_scale);
171
173
172
174
state_buffer.sdf_to_tex [0 ] = 1.0 / sdf_tex_rect.size .width ;
@@ -881,19 +883,21 @@ void RasterizerCanvasGLES3::update() {
881
883
}
882
884
883
885
void RasterizerCanvasGLES3::canvas_begin () {
886
+ GLES3::TextureStorage *texture_storage = GLES3::TextureStorage::get_singleton ();
887
+
884
888
state.using_transparent_rt = false ;
885
889
886
- if (storage ->frame .current_rt ) {
887
- storage-> bind_framebuffer (storage ->frame .current_rt ->fbo );
888
- state.using_transparent_rt = storage ->frame .current_rt ->flags [RendererStorage ::RENDER_TARGET_TRANSPARENT];
890
+ if (texture_storage ->frame .current_rt ) {
891
+ glBindFramebuffer (GL_FRAMEBUFFER, texture_storage ->frame .current_rt ->fbo );
892
+ state.using_transparent_rt = texture_storage ->frame .current_rt ->flags [GLES3::TextureStorage ::RENDER_TARGET_TRANSPARENT];
889
893
}
890
894
891
- if (storage ->frame .current_rt && storage ->frame .current_rt ->clear_requested ) {
892
- const Color &col = storage ->frame .current_rt ->clear_color ;
895
+ if (texture_storage ->frame .current_rt && texture_storage ->frame .current_rt ->clear_requested ) {
896
+ const Color &col = texture_storage ->frame .current_rt ->clear_color ;
893
897
glClearColor (col.r , col.g , col.b , col.a );
894
898
895
899
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
896
- storage ->frame .current_rt ->clear_requested = false ;
900
+ texture_storage ->frame .current_rt ->clear_requested = false ;
897
901
}
898
902
899
903
reset_canvas ();
@@ -934,7 +938,7 @@ void RasterizerCanvasGLES3::_bind_canvas_texture(RID p_texture, RS::CanvasItemTe
934
938
935
939
ct = t->canvas_texture ;
936
940
} else {
937
- ct = GLES3::CanvasTextureStorage ::get_singleton ()->get_canvas_texture (p_texture);
941
+ ct = GLES3::TextureStorage ::get_singleton ()->get_canvas_texture (p_texture);
938
942
}
939
943
940
944
if (!ct) {
@@ -1041,6 +1045,8 @@ void RasterizerCanvasGLES3::_set_uniforms() {
1041
1045
}
1042
1046
1043
1047
void RasterizerCanvasGLES3::reset_canvas () {
1048
+ GLES3::TextureStorage *texture_storage = GLES3::TextureStorage::get_singleton ();
1049
+
1044
1050
glDisable (GL_CULL_FACE);
1045
1051
glDisable (GL_DEPTH_TEST);
1046
1052
glDisable (GL_SCISSOR_TEST);
@@ -1049,7 +1055,7 @@ void RasterizerCanvasGLES3::reset_canvas() {
1049
1055
1050
1056
// Default to Mix.
1051
1057
glBlendEquation (GL_FUNC_ADD);
1052
- if (storage ->frame .current_rt && storage ->frame .current_rt ->flags [RendererStorage ::RENDER_TARGET_TRANSPARENT]) {
1058
+ if (texture_storage ->frame .current_rt && texture_storage ->frame .current_rt ->flags [GLES3::TextureStorage ::RENDER_TARGET_TRANSPARENT]) {
1053
1059
glBlendFuncSeparate (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
1054
1060
} else {
1055
1061
glBlendFuncSeparate (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ZERO, GL_ONE);
@@ -1255,7 +1261,7 @@ void RasterizerCanvasGLES3::_allocate_instance_data_buffer() {
1255
1261
}
1256
1262
1257
1263
void RasterizerCanvasGLES3::initialize () {
1258
- GLES3::CanvasTextureStorage *canvas_texture_storage = GLES3::CanvasTextureStorage ::get_singleton ();
1264
+ GLES3::TextureStorage *texture_storage = GLES3::TextureStorage ::get_singleton ();
1259
1265
GLES3::MaterialStorage *material_storage = GLES3::MaterialStorage::get_singleton ();
1260
1266
1261
1267
// quad buffer
@@ -1450,8 +1456,8 @@ void fragment() {
1450
1456
material_storage->material_set_shader (default_canvas_group_material, default_canvas_group_shader);
1451
1457
}
1452
1458
1453
- default_canvas_texture = canvas_texture_storage ->canvas_texture_allocate ();
1454
- canvas_texture_storage ->canvas_texture_initialize (default_canvas_texture);
1459
+ default_canvas_texture = texture_storage ->canvas_texture_allocate ();
1460
+ texture_storage ->canvas_texture_initialize (default_canvas_texture);
1455
1461
1456
1462
state.using_light = nullptr ;
1457
1463
state.using_transparent_rt = false ;
@@ -1470,13 +1476,13 @@ RasterizerCanvasGLES3::RasterizerCanvasGLES3() {
1470
1476
}
1471
1477
1472
1478
RasterizerCanvasGLES3::~RasterizerCanvasGLES3 () {
1473
- GLES3::CanvasTextureStorage *canvas_texture_storage = GLES3::CanvasTextureStorage ::get_singleton ();
1479
+ GLES3::TextureStorage *texture_storage = GLES3::TextureStorage ::get_singleton ();
1474
1480
GLES3::MaterialStorage *material_storage = GLES3::MaterialStorage::get_singleton ();
1475
1481
1476
1482
state.canvas_shader .version_free (state.canvas_shader_default_version );
1477
1483
material_storage->material_free (default_canvas_group_material);
1478
1484
material_storage->shader_free (default_canvas_group_shader);
1479
- canvas_texture_storage ->canvas_texture_free (default_canvas_texture);
1485
+ texture_storage ->canvas_texture_free (default_canvas_texture);
1480
1486
singleton = nullptr ;
1481
1487
}
1482
1488
0 commit comments