General Relativity public beta
Our General Relativity update (which we previously talked about here, here, and here) is being released for public beta testing! If you are not already a member of our beta testing group and would like to be, see the instructions here for how to opt into the public beta branch on Steam.
Please read the list of known issues below before testing or providing feedback!
This update took a long time and effort to make: we worked not only on black holes, wormholes, and warp bubbles, but also made some changes to core engine systems.
For more details, you can read the complete changelog at the end of this post.
Black Hole/Warp Quality Settings
With all the new changes, we want to provide some additional information about a variety of settings which influence the new GR effects.
Two sliders, “Gravitational lensing performance” and “Volumetric objects resolution/While moving,” have already been described in a previous blog post. These can be found at the bottom of the Settings/Graphics dialog, and have strong effects on rendering performance.You can balance quality vs speed by adjusting them manually in the "custom" graphics preset. Note that the second slider also affects performance when flying through a galaxy or nebula.
The GR shader uses environment maps or skyboxes to render the warped part of the scene beyond the edges of the screen. These environment maps must be updated periodically, since they could contain moving objects (such as a companion star to a black hole, a planet near a wormhole, hull reflections, or a galaxy or star field through which a ship is warping). The resolution of these maps is set by the "Environment maps resolution" drop-down menu under the Settings/Graphis dialog. The higher the resolution, the better the result, but at the cost of slower update speed (this is significant in high and ultra modes - see below). The update period of environment maps is set by the next two drop-down menus: "Warp & refl. update interval" (for ships) and "Black hole update interval" (for black holes, neutron stars, white dwarfs and wormholes). There are 5 options for this:
- off - warp effects and reflections are off (ships has no effects, other objects are rendered as a colored spheres)
- low - environment map is updated once per 5 seconds (2 seconds for ships); one face per frame (so update cycle is 6 adjacent frames every 5 (2) seconds)
- medium - environment map is updated once per second (0.5 second for ships); one face per frame (so update cycle is 6 adjacent frames every second (0.5 seconds for ships)
- high - environment map is updated continuously; one face per frame (so update cycle is 6 frames)
- ultra - environment map is updated continuously; six faces per frame (so update cycle is 1 frame)
The environment maps consist of six square faces (like a cube), and in most modes the engine updates only one of these faces per frame. This leads to somewhat jagged movement of some of the background stars near the warping ship, or Earth reflected on ISS hull, and so on. This is very noticeable on ships, and less so on black holes (as they typically have static environment maps).
If you want to make interstellar warp look as smooth as possible, you should use the ultra setting, since only in ultra mode are all six faces updated with every frame. However, this also places substantial load on the engine, meaning that FPS will drop significantly. Black holes and wormholes will still look decent even at medium and even low modes, but ultra might work well for situations where FPS is less important (such as screenshots).
The update interval modes are modified internally under certain conditions: if you notice any of the behaviors listed below, know that this is not a bug, but intended.
- if object moves quickly (a black hole in a close binary system), update interval in low and medium modes is reduced to 0.2 seconds
- if time is paused, update mode is forced to low
- if time flow speed is greater than 10, update mode in low and medium modes is forced to high
- if there are multiple warping objects in the scene, their environment maps are updated in sequence
This last one requires some additional explanation: the engine is limited in how many updates to environment map faces can be done per frame. In the low/medium/high modes, the limit is 1 face per frame; in ultra mode, the limit is 6 per frame (ie. one full environment map). So, if you have multiple objects that use environment maps (such as a reflective ship near the black hole, binary black hole, or just a wormhole —which uses two maps internally), then even the ultra mode will not be not completely “real time”. However, these cases can be considered as special scenarios.
The environment map update interval settings are changed automatically with graphics presets, and unlocked for manual change when the "custom" preset is selected.
Aside from the General Relativity features, the most noticeable changes in this update are related to performance. The first of these is program startup time, with the loading of shaders and some other data now utilizing multiple CPU cores. This improves shader compilation time by an order of magnitude, although it is still not completely asynchronous due to an OpenGL limitation. The shader compilation time is important during a "cold start" — the first startup after installing the program, a change in SE’s version number, or a change to your graphics driver version (i.e. when updating, or rolling back). During a cold start, SE deletes the shader cache and rebuilds it from scratch. Below are some benchmarks of the performance difference. Of course, it varies from PC to PC, so your results will certainly be different. In any case, this upgrade reduces the cold start time on some computers from an intolerable 5 minutes, down to 1 minute or less.
Cold startup – a startup after SE or graphics driver update; includes rebuilding the shader cache, compiling all shaders.
Warm startup – any subsequent startup; shaders are loaded from the cache.
Results are in minutes:seconds format.
Computer: AMD Ryzen 9 3950X (16 cores/32 threads, 3.5 GHz), Nvidia GeForce RTX 2080
old – 0:58
new – 0:36
old – 0:25
new – 0:14
Computer: Intel Core i7-4930k (6 cores/12 threads, 3.5 GHz), Nvidia GeForce GTX 1060
old – 5:09 (!)
new – 1:16
old – 0:25
new – 0:21
Computer: Intel Core i7-4930k (6 cores/12 threads, 3.5 GHz), AMD Radeon RX 580
old – 4:52 (!)
new – 1:18
old – 0:22
new – 0:21
Other performance improvements include eliminating various sources of periodic "lag spikes" – moments when the engine has a high load on its main CPU thread, resulting in rendering delays. In previous versions, if you rotated the camera smoothly, you might have noticed that the animation sometimes lagged for a fraction of a second. This was caused by some CPU-intensive work that the engine performs periodically. As of this update, all of that work is now done asynchronously and moved to other CPU threads, so as to help prevent it from interrupting the rendering process. Note that updating of environment maps in low and medium modes may still cause lag spikes, since it’s still quite intensive. This is something we hope to sort out later.
The following issues related to GR features are already known and are being worked on, so please do not report them.
- Flickering dark or light spots on accretion disks
- Parts of accretion disks can appear "cut off" or transparent from certain camera angles
- Accretion disks and jets seem to "stand still" when moving the camera away at a speed of ~2.3c (instead of 1c) when time is running at 1x speed
- Banding artifacts in the color and brightness of accretion disks are visible when dim disks are viewed at bright exposure levels
- Accretion disks sometimes look too dark in HDR mode
- Accretion disks and jets can have different relative brightnesses in HDR mode vs. auto/manual exposure mode
- White dwarfs without accretion disks can look glitchy in the solar system browser and Wiki previews
- Accretion disk properties and overall variety need improvement (pending for 0.991)
- Some real black holes lack accurate accretion disks
- Stars or other objects inside accretion disks only render in front of or behind the disk; this is a limitation of the current rendering system, not a bug
- Ships inside a warp bubble can have parts of the model "missing" or "faded out"; this is a limitation of the current rendering system, not a bug
Improvements and New Features
- Realistic General Relativity effects:
- Kerr-Newman ("rotating") black holes
- Ellis wormholes (traversable for camera and ships)
- Alcubierre warp bubble
- Volumetric accretion disks
- Faster program startup (multi-threaded loading of shaders and some data)
- Engine performance improvements (fixed various periodic lag spikes):
- Scanning for nearest galaxies and planetary system was moved to worker threads
- Faster updating of planet/moon lighting color, which allows improving the frequency of color updates in the “high” planet shine mode
- Faster updating of previews in the Solar system browser
- Updated localizations
- Added Armenian localization
- Improved precision of axial rotation for quickly spinning objects like neutron stars
- Faster AMD CAS implementation for upscaling volumetrics
- Added lanczos filter for upscaling volumetrics
- Added frame-time graph to debug mode
- Tweaked all graphics quality presets, and added a “potato” preset at the extreme low end (for comparison, the old “low” preset was somewhere between the new “potato” and “low” presets in quality)
- Added warning messages during “cold startups” if the operating system, RAM, VRAM, and/or GPU vendor do not meet SE’s system requirements
- Better default acceleration/deceleration curve for "Go to" automatic camera flights
- Camera "Go to" timing values are SE variables now
- Updated exoplanets catalog (September 02, 2022)
- Ability to edit RA/Dec/Dist of a catalog star
- Fixed barycenter billboard rendering
- Fixed black stars artifact caused by too much absorption by nebulae
- Fixed velocity value display in spacecraft and aircraft camera modes
- Fixed bug with spacecraft lighting in interstellar space
- Fixed some bugs in the Wiki text editor
- Fixed Venus texture orientation
- Fixed visibility of labels of asteroids/comets which use custom 3D models (e.g. 67P, Eros)
- Fixed console rendering when its buffer is overflown
- Fixed 2D main menu background
- Fixed image corruption in stereoscopic 3D modes (hopefully)
- Fixed reflections on non-PBR ships in auto-exposure mode
- Fixed spline path remaining time display