# Gaia Sky 3.3.0-RC1 ## Code Refactoring - the largest change in this version is by far the refactoring of the internal model from an object-oriented inheritance hierarchy to an entity component system (ECS). - abstract attitude loading system, remove Gaia class, use heliotropic satellite. - add `I18nFormatter` to reformat i18n files. - remove old date formatting infrastructure (desktop, html, mobile) in favor of a direct approach. - remove useless number formatting infrastructure. ## Features - recompute UI scale at startup when starting with default config file. - add back-buffer scale controls to UI. - add back-buffer scale API call. - add repository to `-v` information. - rename fisheye post-processing effect and shader to reprojection. Update cubemap projection from fisheye to azimuthal equidistant. - add shaders for Lambert equal-area, orthographic and stereographic projections. - add re-projection GUI drop-down in preferences window. Add `setReprojectionMode()` scripting API call. - include orthographic projection in panorama mode. Includes both hemispheres on the screen, side by side. Can be cycled through with `ctrl`+`shift`+`k`. - include "orthosphere" panorama mode -- orthospherical projection with both hemispheres overlaid to give a view of the celestial sphere from the outside. - enable gamepad operation in welcome GUI. - add support for KTX and ZKTX textures. - change from thread to scheduled task to remove the mode change info pop-up. - add mode change pop-up setting to enable or disable showing a pop-up with information when changing modes (panorama, planetarium, stereo, etc.). - add GUI button to exit stereo mode. - add new object type, 'cosmic locations', to mark the positions of interesting areas or regions. - enable scene lights for shape objects when static light is off. - new model attribute 'blendMode', which defaults to 'alpha' but can also be set to 'additive' to control the object blending. - add several new functions to enable setting the camera state from scripts. - add time zone to settings. Time zone can be either UTC, or the system default. Update date dialog year limits, fix time component layout. - adapt raymarching effects to work with ECS model. - adapt light glow effect to work with ECS model. - introduce gamepad support for spacecraft mode, remove 'gaia scene' camera mode (can be mimicked with focus mode), refactor input controllers, fix default SDL gamepad mappings file. - add zero-point to gamepad configuration. - save configuration when closing dataset manager window. - add pop-up notice when opening the keyframes window if component 'others' is not visible. - add full screen bit depth and refresh rate to fully qualify selected full screen modes. - add notice when there are no datasets. - improve layout and information of crash window. ## Bug Fixes - particle set size when rendered as points and star scaling issue. - correctly query graphics device for resolution and apply scaling. - toggling SSR and motion blur does not update depth state in some shaders. - double definitions in shader libraries. - render constellation boundaries as closed polygons in order to avoid artifacts. - index errors in keybaord in controller GUI. - back-buffer scale is now applied correctly (and only once), works with external view. - remove angle from zenith from cubemap renderer in planetarium, use shader-based solution. - prevent rendering titles if panorama mode is on. - initialize position from coordinates object during initialization phase. - land at location never returns. Fixes [#674](https://codeberg.org/gaiasky/gaiasky/issues/674). [#674](https://codeberg.org/gaiasky/gaiasky/issues/674) - set foucs with `FocusView` object type. Fixes [#671](https://codeberg.org/gaiasky/gaiasky/issues/671). [#671](https://codeberg.org/gaiasky/gaiasky/issues/671) - provide a correct index mapping for arbitrary attributes with string values. - particle size of interactively loaded point cloud datasets. - vertically flip UV coordinates of two-faced billboard to correct texture orientation. - regression in billboard group rendering. Fixes [#663](https://codeberg.org/gaiasky/gaiasky/issues/663). [#663](https://codeberg.org/gaiasky/gaiasky/issues/663) - update coordinates in invisible only when present. Fixes [#662](https://codeberg.org/gaiasky/gaiasky/issues/662). [#662](https://codeberg.org/gaiasky/gaiasky/issues/662) - prevent runtime error due to non-invertible matrix in spacecraft entity. - diffuse color contribution calculated incorrectly when nLights > 1 in normal shaders. - names in star groups can now be localized, fix focus name in panel. - translate strings of filters, shapes, datasets and minimap. Fixes [#403](https://codeberg.org/gaiasky/gaiasky/issues/403). [#403](https://codeberg.org/gaiasky/gaiasky/issues/403) - moon orbits are recomputed more often. - filters crash with instanced star renderers. - modal windows made not collapsible by default. - hotkey tooltip backgrounds. - jump in Pluto's orbit due to deviation between full periods. - highlight 'all visible' setting in quad-based star renderers. - frame sequence number synchronized, value updated when opening preferences. - use view angle instead of view angle apparent in go to object API call. - increase number of vertices of minimap shape renderer, fixes crash in heliosphere minimap. - typo in Jupiter English translation file, add meshes to data descriptor file. - break link in dataset manager if too long. - make sure direction and up vectors are orthogonal in camera transition call. - increase size star point buffer when needed. - null-check satellite attitude before getting quaternion. Fixes [#402](https://codeberg.org/gaiasky/gaiasky/issues/402). [#402](https://codeberg.org/gaiasky/gaiasky/issues/402) - empty tips may crash Gaia Sky at startup. - 'add scene graph object' event missing source object. Fixes [#400](https://codeberg.org/gaiasky/gaiasky/issues/400). [#400](https://codeberg.org/gaiasky/gaiasky/issues/400) - remove phase of pi radians in default-model orbital elements. - regression with libgdx 1.11.0 that caused vertical tooltips. - null-check settings in crash reporter. - workaround for libgdx backslash bug in asset manager. Fixes [#398](https://codeberg.org/gaiasky/gaiasky/issues/398). [#398](https://codeberg.org/gaiasky/gaiasky/issues/398) - hide system cursor correctly with GLFW until libgdx 1.10.1 is released. - use minimum width for debug interface to prevent dynamic resizing depending on content. ## Build System - upgrade gradle wrapper version to 7.5.1. - move repository to [Codeberg](https://codeberg.org). - update changelog template repository to Codeberg. - update GitLab references to Codeberg, when possible. Use Codeberg API for version checking. - remove GitLab CI file. - extract documentation project from submodule to its own project. - add `aarch64` JRE to macOS bundle for M1 machines. Move to macOS single bundle archive from deprecated old single bundle. - force safe graphics mode on M1 macOS. - upgrade to libgdx 1.11.0 and LWJGL 3.3.1 --- this adds M1 Mac support. - use default GC (G1) in favor of Shenandoah (only LTS). ## Documentation - improve comments on color maps GLSL code. - add new panorama orthographic projection to API javadocs. - remove wrong license (leftover from old copy-paste) in fisheye fragment shader code. - add contributor. - update repository pointers to Codeberg.