diff options
-rw-r--r-- | doc/classes/Control.xml | 1 | ||||
-rw-r--r-- | doc/classes/Node2D.xml | 1 | ||||
-rw-r--r-- | doc/classes/Node3D.xml | 1 | ||||
-rw-r--r-- | drivers/gles3/rasterizer_gles3.cpp | 16 | ||||
-rw-r--r-- | drivers/gles3/rasterizer_gles3.h | 2 | ||||
-rw-r--r-- | drivers/gles3/shaders/sky.glsl | 10 | ||||
-rw-r--r-- | modules/gdscript/tests/scripts/runtime/features/const_class_reference.gd | 16 | ||||
-rw-r--r-- | modules/gdscript/tests/scripts/runtime/features/const_class_reference.out | 1 | ||||
-rw-r--r-- | modules/gdscript/tests/scripts/runtime/features/const_class_reference_external.notest.gd | 2 | ||||
-rw-r--r-- | modules/gltf/editor/editor_scene_importer_fbx.cpp | 2 |
10 files changed, 37 insertions, 15 deletions
diff --git a/doc/classes/Control.xml b/doc/classes/Control.xml index f45ddf2738..5693876194 100644 --- a/doc/classes/Control.xml +++ b/doc/classes/Control.xml @@ -1001,6 +1001,7 @@ </member> <member name="rotation" type="float" setter="set_rotation" getter="get_rotation" default="0.0"> The node's rotation around its pivot, in radians. See [member pivot_offset] to change the pivot's position. + [b]Note:[/b] This property is edited in the inspector in degrees. If you want to use degrees in a script, use [member rotation_degrees]. </member> <member name="rotation_degrees" type="float" setter="set_rotation_degrees" getter="get_rotation_degrees"> Helper property to access [member rotation] in degrees instead of radians. diff --git a/doc/classes/Node2D.xml b/doc/classes/Node2D.xml index 9d224f09b1..3b2c52c5bf 100644 --- a/doc/classes/Node2D.xml +++ b/doc/classes/Node2D.xml @@ -116,6 +116,7 @@ </member> <member name="rotation" type="float" setter="set_rotation" getter="get_rotation" default="0.0"> Rotation in radians, relative to the node's parent. + [b]Note:[/b] This property is edited in the inspector in degrees. If you want to use degrees in a script, use [member rotation_degrees]. </member> <member name="rotation_degrees" type="float" setter="set_rotation_degrees" getter="get_rotation_degrees"> Helper property to access [member rotation] in degrees instead of radians. diff --git a/doc/classes/Node3D.xml b/doc/classes/Node3D.xml index c199c1aae6..61e5c44251 100644 --- a/doc/classes/Node3D.xml +++ b/doc/classes/Node3D.xml @@ -289,6 +289,7 @@ <member name="rotation" type="Vector3" setter="set_rotation" getter="get_rotation" default="Vector3(0, 0, 0)"> Rotation part of the local transformation in radians, specified in terms of Euler angles. The angles construct a rotaton in the order specified by the [member rotation_order] property. [b]Note:[/b] In the mathematical sense, rotation is a matrix and not a vector. The three Euler angles, which are the three independent parameters of the Euler-angle parametrization of the rotation matrix, are stored in a [Vector3] data structure not because the rotation is a vector, but only because [Vector3] exists as a convenient data-structure to store 3 floating-point numbers. Therefore, applying affine operations on the rotation "vector" is not meaningful. + [b]Note:[/b] This property is edited in the inspector in degrees. If you want to use degrees in a script, use [member rotation_degrees]. </member> <member name="rotation_degrees" type="Vector3" setter="set_rotation_degrees" getter="get_rotation_degrees"> Helper property to access [member rotation] in degrees instead of radians. diff --git a/drivers/gles3/rasterizer_gles3.cpp b/drivers/gles3/rasterizer_gles3.cpp index 600aa908cc..a9ec48fcd5 100644 --- a/drivers/gles3/rasterizer_gles3.cpp +++ b/drivers/gles3/rasterizer_gles3.cpp @@ -281,7 +281,7 @@ void RasterizerGLES3::prepare_for_blitting_render_targets() { utils->capture_timestamps_end(); } -void RasterizerGLES3::_blit_render_target_to_screen(RID p_render_target, DisplayServer::WindowID p_screen, const Rect2 &p_screen_rect, uint32_t p_layer) { +void RasterizerGLES3::_blit_render_target_to_screen(RID p_render_target, DisplayServer::WindowID p_screen, const Rect2 &p_screen_rect, uint32_t p_layer, bool p_first) { GLES3::RenderTarget *rt = GLES3::TextureStorage::get_singleton()->get_render_target(p_render_target); ERR_FAIL_COND(!rt); @@ -307,12 +307,14 @@ void RasterizerGLES3::_blit_render_target_to_screen(RID p_render_target, Display glReadBuffer(GL_COLOR_ATTACHMENT0); glBindFramebuffer(GL_DRAW_FRAMEBUFFER, GLES3::TextureStorage::system_fbo); - if (p_screen_rect.position != Vector2()) { - // Viewport doesn't cover entire window so clear window to black before blitting. + if (p_first) { Size2i win_size = DisplayServer::get_singleton()->window_get_size(); - glViewport(0, 0, win_size.width, win_size.height); - glClearColor(0.0, 0.0, 0.0, 1.0); - glClear(GL_COLOR_BUFFER_BIT); + if (p_screen_rect.position != Vector2() || p_screen_rect.size != rt->size) { + // Viewport doesn't cover entire window so clear window to black before blitting. + glViewport(0, 0, win_size.width, win_size.height); + glClearColor(0.0, 0.0, 0.0, 1.0); + glClear(GL_COLOR_BUFFER_BIT); + } } Vector2i screen_rect_end = p_screen_rect.get_end(); @@ -334,7 +336,7 @@ void RasterizerGLES3::blit_render_targets_to_screen(DisplayServer::WindowID p_sc RID rid_rt = blit.render_target; Rect2 dst_rect = blit.dst_rect; - _blit_render_target_to_screen(rid_rt, p_screen, dst_rect, blit.multi_view.use_layer ? blit.multi_view.layer : 0); + _blit_render_target_to_screen(rid_rt, p_screen, dst_rect, blit.multi_view.use_layer ? blit.multi_view.layer : 0, i == 0); } } diff --git a/drivers/gles3/rasterizer_gles3.h b/drivers/gles3/rasterizer_gles3.h index 446c6af338..0ba84ce412 100644 --- a/drivers/gles3/rasterizer_gles3.h +++ b/drivers/gles3/rasterizer_gles3.h @@ -68,7 +68,7 @@ protected: RasterizerCanvasGLES3 *canvas = nullptr; RasterizerSceneGLES3 *scene = nullptr; - void _blit_render_target_to_screen(RID p_render_target, DisplayServer::WindowID p_screen, const Rect2 &p_screen_rect, uint32_t p_layer); + void _blit_render_target_to_screen(RID p_render_target, DisplayServer::WindowID p_screen, const Rect2 &p_screen_rect, uint32_t p_layer, bool p_first = true); public: RendererUtilities *get_utilities() { return utilities; } diff --git a/drivers/gles3/shaders/sky.glsl b/drivers/gles3/shaders/sky.glsl index e59bca8b07..2455ffb8e2 100644 --- a/drivers/gles3/shaders/sky.glsl +++ b/drivers/gles3/shaders/sky.glsl @@ -21,12 +21,13 @@ out vec2 uv_interp; /* clang-format on */ void main() { - uv_interp = vertex_attrib; #ifdef USE_INVERTED_Y - gl_Position = vec4(uv_interp, 1.0, 1.0); + uv_interp = vertex_attrib; #else - gl_Position = vec4(uv_interp.x, uv_interp.y * -1.0, 1.0, 1.0); + // We're doing clockwise culling so flip the order + uv_interp = vec2(vertex_attrib.x, vertex_attrib.y * -1.0); #endif + gl_Position = vec4(uv_interp, 1.0, 1.0); } /* clang-format off */ @@ -145,9 +146,6 @@ void main() { cube_normal.x = (uv_interp.x + projection.x) / projection.y; cube_normal.y = (-uv_interp.y - projection.z) / projection.w; #endif -#ifndef USE_INVERTED_Y - cube_normal.y *= -1.0; -#endif cube_normal = mat3(orientation) * cube_normal; cube_normal = normalize(cube_normal); diff --git a/modules/gdscript/tests/scripts/runtime/features/const_class_reference.gd b/modules/gdscript/tests/scripts/runtime/features/const_class_reference.gd new file mode 100644 index 0000000000..c7553769da --- /dev/null +++ b/modules/gdscript/tests/scripts/runtime/features/const_class_reference.gd @@ -0,0 +1,16 @@ +# https://github.com/godotengine/godot/issues/61636 + +const External := preload("const_class_reference_external.notest.gd") + +class Class1: + class Class2: + pass + +const Class1Alias = Class1 +const Class1Class2Alias = Class1.Class2 + +const ExternalAlias = External +const ExternalClassAlias = External.Class + +func test(): + pass diff --git a/modules/gdscript/tests/scripts/runtime/features/const_class_reference.out b/modules/gdscript/tests/scripts/runtime/features/const_class_reference.out new file mode 100644 index 0000000000..d73c5eb7cd --- /dev/null +++ b/modules/gdscript/tests/scripts/runtime/features/const_class_reference.out @@ -0,0 +1 @@ +GDTEST_OK diff --git a/modules/gdscript/tests/scripts/runtime/features/const_class_reference_external.notest.gd b/modules/gdscript/tests/scripts/runtime/features/const_class_reference_external.notest.gd new file mode 100644 index 0000000000..050e8a0960 --- /dev/null +++ b/modules/gdscript/tests/scripts/runtime/features/const_class_reference_external.notest.gd @@ -0,0 +1,2 @@ +class Class: + pass diff --git a/modules/gltf/editor/editor_scene_importer_fbx.cpp b/modules/gltf/editor/editor_scene_importer_fbx.cpp index f8f458fcc7..5e7a8f4e69 100644 --- a/modules/gltf/editor/editor_scene_importer_fbx.cpp +++ b/modules/gltf/editor/editor_scene_importer_fbx.cpp @@ -93,7 +93,7 @@ Node *EditorSceneFormatImporterFBX::import_scene(const String &p_path, uint32_t Ref<GLTFState> state; state.instantiate(); print_verbose(vformat("glTF path: %s", sink)); - Error err = gltf->append_from_file(sink, state, p_flags); + Error err = gltf->append_from_file(sink, state, p_flags, p_path.get_base_dir()); if (err != OK) { if (r_err) { *r_err = FAILED; |