|
@@ -1022,8 +1022,7 @@ void RendererCanvasRenderRD::light_update_shadow(RID p_rid, int p_shadow_index,
|
|
|
|
|
|
cl->shadow.z_far = p_far;
|
|
cl->shadow.z_far = p_far;
|
|
cl->shadow.y_offset = float(p_shadow_index * 2 + 1) / float(state.max_lights_per_render * 2);
|
|
cl->shadow.y_offset = float(p_shadow_index * 2 + 1) / float(state.max_lights_per_render * 2);
|
|
- Vector<Color> cc;
|
|
|
|
- cc.push_back(Color(p_far, p_far, p_far, 1.0));
|
|
|
|
|
|
+ Color cc = Color(p_far, p_far, p_far, 1.0);
|
|
|
|
|
|
// First, do a culling pass and record what occluders need to be drawn for this light.
|
|
// First, do a culling pass and record what occluders need to be drawn for this light.
|
|
static thread_local LocalVector<OccluderPolygon *> occluders;
|
|
static thread_local LocalVector<OccluderPolygon *> occluders;
|
|
@@ -1076,7 +1075,7 @@ void RendererCanvasRenderRD::light_update_shadow(RID p_rid, int p_shadow_index,
|
|
}
|
|
}
|
|
|
|
|
|
Rect2i rect(0, p_shadow_index * 2, state.shadow_texture_size, 2);
|
|
Rect2i rect(0, p_shadow_index * 2, state.shadow_texture_size, 2);
|
|
- RD::DrawListID draw_list = RD::get_singleton()->draw_list_begin(state.shadow_fb, RD::DRAW_CLEAR_ALL, cc, 1.0f, 0, rect);
|
|
|
|
|
|
+ RD::DrawListID draw_list = RD::get_singleton()->draw_list_begin(state.shadow_fb, RD::DRAW_CLEAR_ALL, VectorView(&cc, 1), 1.0f, 0, rect);
|
|
|
|
|
|
if (state.shadow_occluder_buffer.is_valid()) {
|
|
if (state.shadow_occluder_buffer.is_valid()) {
|
|
RD::get_singleton()->draw_list_bind_render_pipeline(draw_list, shadow_render.render_pipelines[SHADOW_RENDER_MODE_POSITIONAL_SHADOW]);
|
|
RD::get_singleton()->draw_list_bind_render_pipeline(draw_list, shadow_render.render_pipelines[SHADOW_RENDER_MODE_POSITIONAL_SHADOW]);
|
|
@@ -2220,7 +2219,7 @@ void RendererCanvasRenderRD::_render_batch_items(RenderTarget p_to_render_target
|
|
RID framebuffer;
|
|
RID framebuffer;
|
|
RID fb_uniform_set;
|
|
RID fb_uniform_set;
|
|
bool clear = false;
|
|
bool clear = false;
|
|
- Vector<Color> clear_colors;
|
|
|
|
|
|
+ Color clear_color;
|
|
|
|
|
|
if (p_to_backbuffer) {
|
|
if (p_to_backbuffer) {
|
|
framebuffer = texture_storage->render_target_get_rd_backbuffer_framebuffer(p_to_render_target.render_target);
|
|
framebuffer = texture_storage->render_target_get_rd_backbuffer_framebuffer(p_to_render_target.render_target);
|
|
@@ -2231,7 +2230,7 @@ void RendererCanvasRenderRD::_render_batch_items(RenderTarget p_to_render_target
|
|
|
|
|
|
if (texture_storage->render_target_is_clear_requested(p_to_render_target.render_target)) {
|
|
if (texture_storage->render_target_is_clear_requested(p_to_render_target.render_target)) {
|
|
clear = true;
|
|
clear = true;
|
|
- clear_colors.push_back(texture_storage->render_target_get_clear_request_color(p_to_render_target.render_target));
|
|
|
|
|
|
+ clear_color = texture_storage->render_target_get_clear_request_color(p_to_render_target.render_target);
|
|
texture_storage->render_target_disable_clear_request(p_to_render_target.render_target);
|
|
texture_storage->render_target_disable_clear_request(p_to_render_target.render_target);
|
|
}
|
|
}
|
|
// TODO: Obtain from framebuffer format eventually when this is implemented.
|
|
// TODO: Obtain from framebuffer format eventually when this is implemented.
|
|
@@ -2244,7 +2243,7 @@ void RendererCanvasRenderRD::_render_batch_items(RenderTarget p_to_render_target
|
|
|
|
|
|
RD::FramebufferFormatID fb_format = RD::get_singleton()->framebuffer_get_format(framebuffer);
|
|
RD::FramebufferFormatID fb_format = RD::get_singleton()->framebuffer_get_format(framebuffer);
|
|
|
|
|
|
- RD::DrawListID draw_list = RD::get_singleton()->draw_list_begin(framebuffer, clear ? RD::DRAW_CLEAR_COLOR_0 : RD::DRAW_DEFAULT_ALL, clear_colors, 1.0f, 0, Rect2(), RDD::BreadcrumbMarker::UI_PASS);
|
|
|
|
|
|
+ RD::DrawListID draw_list = RD::get_singleton()->draw_list_begin(framebuffer, clear ? RD::DRAW_CLEAR_COLOR_0 : RD::DRAW_DEFAULT_ALL, clear_color, 1.0f, 0, Rect2(), RDD::BreadcrumbMarker::UI_PASS);
|
|
|
|
|
|
RD::get_singleton()->draw_list_bind_uniform_set(draw_list, fb_uniform_set, BASE_UNIFORM_SET);
|
|
RD::get_singleton()->draw_list_bind_uniform_set(draw_list, fb_uniform_set, BASE_UNIFORM_SET);
|
|
RD::get_singleton()->draw_list_bind_uniform_set(draw_list, state.default_transforms_uniform_set, TRANSFORMS_UNIFORM_SET);
|
|
RD::get_singleton()->draw_list_bind_uniform_set(draw_list, state.default_transforms_uniform_set, TRANSFORMS_UNIFORM_SET);
|