feat: updated engine version to 4.4-rc1
This commit is contained in:
parent
ee00efde1f
commit
21ba8e33af
5459 changed files with 1128836 additions and 198305 deletions
|
|
@ -33,6 +33,9 @@
|
|||
#include "core/config/project_settings.h"
|
||||
#include "core/io/dir_access.h"
|
||||
|
||||
#include "servers/rendering/renderer_rd/forward_clustered/render_forward_clustered.h"
|
||||
#include "servers/rendering/renderer_rd/forward_mobile/render_forward_mobile.h"
|
||||
|
||||
void RendererCompositorRD::blit_render_targets_to_screen(DisplayServer::WindowID p_screen, const BlitToScreen *p_render_targets, int p_amount) {
|
||||
Error err = RD::get_singleton()->screen_prepare_for_drawing(p_screen);
|
||||
if (err != OK) {
|
||||
|
|
@ -66,6 +69,16 @@ void RendererCompositorRD::blit_render_targets_to_screen(DisplayServer::WindowID
|
|||
RD::get_singleton()->draw_list_bind_index_array(draw_list, blit.array);
|
||||
RD::get_singleton()->draw_list_bind_uniform_set(draw_list, render_target_descriptors[rd_texture], 0);
|
||||
|
||||
// We need to invert the phone rotation.
|
||||
const int screen_rotation_degrees = -RD::get_singleton()->screen_get_pre_rotation_degrees(p_screen);
|
||||
float screen_rotation = Math::deg_to_rad((float)screen_rotation_degrees);
|
||||
|
||||
blit.push_constant.rotation_cos = Math::cos(screen_rotation);
|
||||
blit.push_constant.rotation_sin = Math::sin(screen_rotation);
|
||||
// Swap width and height when the orientation is not the native one.
|
||||
if (screen_rotation_degrees % 180 != 0) {
|
||||
SWAP(screen_size.width, screen_size.height);
|
||||
}
|
||||
blit.push_constant.src_rect[0] = p_render_targets[i].src_rect.position.x;
|
||||
blit.push_constant.src_rect[1] = p_render_targets[i].src_rect.position.y;
|
||||
blit.push_constant.src_rect[2] = p_render_targets[i].src_rect.size.width;
|
||||
|
|
@ -102,10 +115,8 @@ void RendererCompositorRD::begin_frame(double frame_step) {
|
|||
scene->set_time(time, frame_step);
|
||||
}
|
||||
|
||||
void RendererCompositorRD::end_frame(bool p_swap_buffers) {
|
||||
if (p_swap_buffers) {
|
||||
RD::get_singleton()->swap_buffers();
|
||||
}
|
||||
void RendererCompositorRD::end_frame(bool p_present) {
|
||||
RD::get_singleton()->swap_buffers(p_present);
|
||||
}
|
||||
|
||||
void RendererCompositorRD::initialize() {
|
||||
|
|
@ -123,6 +134,9 @@ void RendererCompositorRD::initialize() {
|
|||
|
||||
for (int i = 0; i < BLIT_MODE_MAX; i++) {
|
||||
blit.pipelines[i] = RD::get_singleton()->render_pipeline_create(blit.shader.version_get_shader(blit.shader_version, i), RD::get_singleton()->screen_get_framebuffer_format(DisplayServer::MAIN_WINDOW_ID), RD::INVALID_ID, RD::RENDER_PRIMITIVE_TRIANGLES, RD::PipelineRasterizationState(), RD::PipelineMultisampleState(), RD::PipelineDepthStencilState(), i == BLIT_MODE_NORMAL_ALPHA ? RenderingDevice::PipelineColorBlendState::create_blend() : RenderingDevice::PipelineColorBlendState::create_disabled(), 0);
|
||||
|
||||
// Unload shader modules to save memory.
|
||||
RD::get_singleton()->shader_destroy_modules(blit.shader.version_get_shader(blit.shader_version, i));
|
||||
}
|
||||
|
||||
//create index array for copy shader
|
||||
|
|
@ -202,18 +216,7 @@ void RendererCompositorRD::set_boot_image(const Ref<Image> &p_image, const Color
|
|||
Rect2 imgrect(0, 0, p_image->get_width(), p_image->get_height());
|
||||
Rect2 screenrect;
|
||||
if (p_scale) {
|
||||
if (window_size.width > window_size.height) {
|
||||
//scale horizontally
|
||||
screenrect.size.y = window_size.height;
|
||||
screenrect.size.x = imgrect.size.x * window_size.height / imgrect.size.y;
|
||||
screenrect.position.x = (window_size.width - screenrect.size.x) / 2;
|
||||
|
||||
} else {
|
||||
//scale vertically
|
||||
screenrect.size.x = window_size.width;
|
||||
screenrect.size.y = imgrect.size.y * window_size.width / imgrect.size.x;
|
||||
screenrect.position.y = (window_size.height - screenrect.size.y) / 2;
|
||||
}
|
||||
screenrect = OS::get_singleton()->calculate_boot_screen_rect(window_size, imgrect.size);
|
||||
} else {
|
||||
screenrect = imgrect;
|
||||
screenrect.position += ((window_size - screenrect.size) / 2.0).floor();
|
||||
|
|
@ -228,6 +231,10 @@ void RendererCompositorRD::set_boot_image(const Ref<Image> &p_image, const Color
|
|||
RD::get_singleton()->draw_list_bind_index_array(draw_list, blit.array);
|
||||
RD::get_singleton()->draw_list_bind_uniform_set(draw_list, uset, 0);
|
||||
|
||||
const int screen_rotation_degrees = -RD::get_singleton()->screen_get_pre_rotation_degrees(DisplayServer::MAIN_WINDOW_ID);
|
||||
float screen_rotation = Math::deg_to_rad((float)screen_rotation_degrees);
|
||||
blit.push_constant.rotation_cos = Math::cos(screen_rotation);
|
||||
blit.push_constant.rotation_sin = Math::sin(screen_rotation);
|
||||
blit.push_constant.src_rect[0] = 0.0;
|
||||
blit.push_constant.src_rect[1] = 0.0;
|
||||
blit.push_constant.src_rect[2] = 1.0;
|
||||
|
|
@ -250,7 +257,7 @@ void RendererCompositorRD::set_boot_image(const Ref<Image> &p_image, const Color
|
|||
|
||||
RD::get_singleton()->draw_list_end();
|
||||
|
||||
RD::get_singleton()->swap_buffers();
|
||||
RD::get_singleton()->swap_buffers(true);
|
||||
|
||||
texture_storage->texture_free(texture);
|
||||
RD::get_singleton()->free(sampler);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue