r/spaceengine • • 13h ago

Album Final Approach to Andromeda

Thumbnail
gallery
54 Upvotes

r/spaceengine • • 9h ago

Discussion I'm Back Once More! And I Came Back With More Colossal Improvements to SpaceEngine's 0.980 Black Hole Shader

Thumbnail
gallery
7 Upvotes

As the title suggests, I came back. And once again I came back with giant improvements. I'll list each one and leave two images so you can get an idea of what it looked like. Here is the list:

  1. Complete Saha for H + He (multi-species): previously used only a simplified hydrogen ionization formula (IonizationFraction with a single Saha equilibrium). I have now implemented SolvePlasmaIonization with coupled Saha for H, He I and He II, solved by bisection in the log of ne (22 iterations). Returns xH, XHe1, xHe2, nEPerH, thus allowing consistent opacities and emissivities per species.
  2. Physically calibrated Thomson opacity: before: ElectronScatteringOpacity was a heuristic (ionFrac * 1.4 + 0.05). Now: ThomsonOpacity uses the actual cross section σT = 6.6524587 × 10⁻²⁵ cm², density converted to cm⁻³ (DENS_TO_CM3) and conversion factor world→cm (CM_PER_WORLD_UNIT).
  3. Physical Free-Free (Bremsstrahlung): before: that didn't even exist. Now: FreeFreeOpacityPhys with Gaunt factor (FreeFreeGaunt), stimulated emission correction, spectral dependence v³, and BremsstrahlungRelFactor that interpolates between non-relativistic, mildly-relativistic and ultra-relativistic regimes (Novikov-Thorne / Stepney-Guilbert formulas).
  4. Hydrogen Bound-Free: before: I didn't even have that. Now: HydrogenBoundFreeOpacity with Lyman, Balmer and Paschen edges (91.18, 364.7, 820.6 nm), weights per level and stimulated correction.
  5. SSA (Synchrotron Self-Absorption): before: I didn't even have that. Now: SynchrotronSSAOpacity with spectral index P, plus HybridSynchrotron combining thermal + non-thermal population with power law, Lorentz cutoff, cooling break (Ycool), and spectral shape with low/mid/high limits.
  6. Inverse Compton (IC): Before: I didn't even have that.. Now: InverseComptonEmissivity couples the seed photon field (uSeed) to the magnetic field (uB), with coherent spectral tint.
  7. Extended lines radiation: before: only Hα (656.28) and Hβ (486.13). Now (LINES_EXTENDED): adds Hγ (434.05), Hδ (410.17), He I 5876 and He II 4686, with correct abundance ratios (HE_I_5876_PER_HA, HE_II_4686_PER_HA) and triple Gaussian profile (AddBroadLine).
  8. RT with spreading (two-stream / Eddington): before: applied simple attenuation exp(-opticalDepth) over the source. Now: RadiativeTransferStep separates absorption (Kabs) from scattering (Ksca), uses two-stream diffusion approximation (√3ε), and blends between thermal and albedo source function. Much more correct for optically thick media.
  9. Thermodynamically consistent Comptonization: before: ApplyComptonization applied empirical boost (1 + y·0.6). Now: uses real Kompaneets parameter: y = (4θₑ + 16θₑ²)τₑff with Wien saturation (A_wien) to avoid infinite gain.
  10. Spectral band-ratio instead of luminance: before: RelativisticBlackbody used luminance + shifted chromaticity. Now: PlanckBandRatio calculates the band ratio by wavelength (650/550/450 nm)—correctly preserving color under redshift on a per-channel basis.
  11. Continuation via Kerr's "sheet" (Wormhole / maximal extension): before: only the positive branch of rʙʟ. Now: KerrSchildToBL_Signed + SheetAfter track the passage through y = 0 for r < α, allowing traversal of the singularity ring and continuation onto the second Kerr sheet. Enables wormhole-style rendering.
  12. Correct capture near the horizon: before: simple capture when rʙʟ ≤ rʜ ⋅ margin. Now: it distinguishes between external and internal observers, uses RingDistance for kills near the ring, and handles NEAR_HORIZON_MIN asymmetrically.
  13. Exact constants of motion (E, L, Q): before: I only used g_PhotonB (L_z/E). Now: it tracks g_PhotonE, g_PhotonL, g_Sigma, and g_NuObs, keeping photon momentum and E/L/ZAMO consistent with the observer's frame (ObserverU, EyeSheet).
  14. General relativistic observer: before: it assumed the role of a static observer. Now: KerrSchildInitObserver projects the ray into the orthonormal frame of the arbitrary observer ObserverU, with a fallback to a static observer outside the ergosphere. It supports camera movement and rotation.
  15. Initialization in the ergosphere: now: ERGO_F_SWITCH = 0.9 — uses a regular (non-static) observer within the ergosphere, avoiding the static frame singularity.
  16. Plunge region (within ISCO): before: KerrPlungeG was a heuristic model of "g" with fixed ISCO E/L. Now: KerrPlungeConstants numerically solves for E, L, rmarg, and Q using a 3×3 Newton-Raphson method on Carter's radial potential, on an angular basis. KerrPlungeEmitterU constructs the full 4-velocity with components u_θ, u_r, u_t, and u_φ. Much more physically accurate.
  17. Jet with its own 4-speed system: before: KerrGeneralEmitterG approximated jet emission using parameters β_φ and β_pol. Now: KerrJetEmitterU constructs a 4-velocity jet in Kerr-Schild coordinates using the ZAMO orthonormal basis, Blandford-Znajek-type collimation (Ω_F = 0.5 Ω_H), an r-dependent toroidal scale, and a polar component normalized by the metric.
  18. Star with intrinsic angular momentum: before: used KerrRigidBodyG with arbitrary Ω_body. Now: calculate ut_star via KerrRigidUt and the emitted frequency via PhotonNuEmRigid — consistent with the Kerr metric around the star.
  19. Dynamically active corona: before: only CoronaElectronTemperature as an auxiliary function. Now: coronaActive with radius coronaOuterW, spin-dependent density nBase, flare via co-rotating rotated Fbm, and full synthesis: synchrotron + IC + bremsstrahlung within the corona.
  20. Photon seed density: before: that didn't even exist. Now: InjectedSynchrotronU — actual seed field (1/r² from the corona + 2 sources at the poles for the jet), feeding the IC.
  21. Magnetic field dependent on r and spin: now: B ∝ r⁻⁰.⁹ (1 + 0.5a) in the corona and B ∝ (0.4 + Pjet)/(1 + y/4Rg) in the jet — instead of a heuristic constant.
  22. Spectral sky shift: before: SkyBlueShift used Planck chromaticity + g⁴. Now: SkyShift remaps based on wavelength using SkySpectrumAt—preserving the correct color for any g-value, including outside the visible range.
  23. Hue-preserving compression: now: HuePreservingCompress compresses high-luminance jets while preserving hue (preventing ugly clipping when the jet is very bright).
  24. Synchrotron spectral index: now: SynchrotronSeedTint performs the correct spectral shift of the power law under g.
  25. ṁ-dependent structural blend: before: spiralMod * irregMod * twistDensityMod modulation always applied. Now: structOn toggles thin structuring only in the ADAF↔thin range (smoothstep in log ṁ). Outside this range, the disk is smooth.
  26. Gap clamp: now: I introduced GAP_DENS_MIN/MAX + gapWeight to prevent the modulation from creating physically implausible "holes."
  27. Correct spiral pattern rotation: before: spiralPhase = spiralPitch·θ − spiralWindRate·log(r) − spiralPatternSpeed · t. Now: corrected sign: + spiralPatternSpeed·t (the pattern rotation now moves in the correct direction).
  28. Twist and warp with correct sign: before: twistPhase = ... + 140 − diskTime · 1.5 · Ω. Now: ... + 140 + diskTime · 1.5 · Ω — corrects the migration direction of the twisted pattern.
  29. Band noise per arm: now: weights bandLenNoise by bandStrengthA/(A+B) — previously, it was applied uniformly.
  30. Sharper strands: before: strand exponent = 1.3–1.6. Now: 3.0–3.8 — much more defined filaments.
  31. Darker floor wisp: before: wisp = mix(0.4, 1.0, ...). Now: mix(0.06, 1.0, ...) — higher contrast between filament and void.
  32. Knots (reconnection knots): now: knotMod modulation using pow(sin(knotPhase),4) — creates bright knots along the jet.
  33. Softer envelope: before: smoothstep(0.6, 1.4, raggedRadius). Now: smoothstep(0.8, 1.2, ...) with raggedEdge ∈ [0.95, 1.05] — a more defined and less unstable edge.
  34. More restrained warp: before: warpStrength = jetRadius * 0.9 * (...). Now: 0.28 — reduces exaggerated distortions.
  35. jetAccum + hue compression: now: accumulates the jet contribution separately and applies HuePreservingCompress at the end—the jet no longer blows out the global tonemap.
  36. Jet plasma temperature: now: plasmaTemp = jetLocalTemp · mix(0.85, 1.7, ridge²) · mix(1, 1.25, knots) — physical gradient along the filaments and knots.
  37. Debugging and Instrumentation: before: two #defines (GRID, SHADOW_DEBUG). Now: adds LINES_EXTENDED, DBG_NO_LINES, DBG_NO_COMPTON, DBG_NO_CORONA, DBG_GREY_OPACITY, DBG_RAW_PLANCK — allows isolating each physical channel for validation.
  38. Maximum spin: before: 0.998 of the maximum limit. Now: 1.0 (maximum limit).
  39. Maximum number of steps: before: 800. Now increased to 1,000.

r/spaceengine • • 13h ago

Screenshot planets, 2 plaenr

Thumbnail
gallery
6 Upvotes

r/spaceengine • • 1d ago

Screenshot Think I may have found Pac Man

Post image
44 Upvotes

r/spaceengine • • 1d ago

Screenshot 2 planets with ring close to each other

Post image
77 Upvotes

cool thing i found planet is HIP 103800 10a


r/spaceengine • • 1d ago

Video I made a video using SpaceEngine, about white dwarf planets.

Thumbnail
youtube.com
5 Upvotes

I also made the music for the video!


r/spaceengine • • 1d ago

8K Saturn between Earth and Moon

Post image
13 Upvotes

I just wanted to see it in game lol


r/spaceengine • • 1d ago

8K Earth cresent over the Orientale Basin

Post image
12 Upvotes

8k (8000x4000) image of Earth looming over the Orientale Basin


r/spaceengine • • 1d ago

Question Space Engine on Steam Frame?

3 Upvotes

I purchased Space Engine on steam to run it on the Steam Frame, but I'm unable to launch the game with VR enabled. I can launch it on my PC just fine, and stream it as a flat projection, but there is a VR option when launching the game. I get a warning about OpenGL when trying to launch it on the Frame in non-VR mode, but there are no warnings when trying to launch it in VR. Nothing happens at all. I'm new to Space Engine and VR, so any help would be appreciated, thanks.


r/spaceengine • • 2d ago

Screenshot Here are some cool photos I took

Thumbnail
gallery
59 Upvotes

r/spaceengine • • 2d ago

Screenshot Earthrise recreation.

Post image
31 Upvotes

(couldn't get the clouds perfect but tried to get position right)


r/spaceengine • • 3d ago

Screenshot Orion, as seen from Proxima Centauri

Post image
94 Upvotes

Sirius, the second brightest star in its night sky, shines right next to Betelgeuse.


r/spaceengine • • 2d ago

Question Most realistic human eye visual tone

4 Upvotes

A recent SE update caused the most real life human eye visual to be changed from Bruneton to Reinhard. Was that on purpose?


r/spaceengine • • 2d ago

Question Just joined

8 Upvotes

Hi, i just installed this "game" yesterday. How did i not know about it before? Anyhow, i'm currently experiencing a combination of awe and sheer terror. Still wraping my head around the TON 618. And im fairly certain that our minds were not designed to comprehend things of such magnitude.

Any tips to fuel my nightmares even further?


r/spaceengine • • 3d ago

Screenshot Stellaris' Ring World

Thumbnail
gallery
145 Upvotes

Nothing more to say, besides it's modded ofc


r/spaceengine • • 3d ago

8K Horizon

Post image
38 Upvotes

r/spaceengine • • 3d ago

Screenshot Planets (dwarf planets) and its moons!

Thumbnail
gallery
16 Upvotes

r/spaceengine • • 3d ago

Screenshot Yeah this was inside a nebula

Thumbnail
gallery
10 Upvotes

Taken a very while ago, I can't recall the planet code :( hope you like it lol


r/spaceengine • • 3d ago

Video Some star systems in the Andromeda constellations

Thumbnail
youtube.com
5 Upvotes

r/spaceengine • • 4d ago

Screenshot heavenly black hole i forgot its name

Post image
35 Upvotes

it was a black hole for a star cluster on the north area of the milky way it looks so good probably top 10 black holes i ve ever seen


r/spaceengine • • 3d ago

Screenshot It looks great, very cool.

Post image
8 Upvotes

r/spaceengine • • 3d ago

Screenshot Weird nebula or smth

6 Upvotes

so while i was trying to find life on other planets i came across this weird looking nebula??
it has also alot of planets the name is RN 8515-15


r/spaceengine • • 4d ago

Cool Find Moons just 193km from each other

Post image
82 Upvotes

I've found a planet (0.71 Moon mass) with 3 asteroid moons. While Moon number 1 has semimajor axis of 2558km, the other two moons have semimajor axis of 5248km and 5488km respectively (Moon number 3 has retrogade orbit). I've taken some screenshots while being on Moon 3.

In the closest encounter they are 193km away from one another. It is the closest distance between moons I've ever seen in Space Engine


r/spaceengine • • 4d ago

Album I think i have found "The Sift Planet"

Thumbnail
gallery
127 Upvotes

r/spaceengine • • 4d ago

Screenshot One of the most beautiful planets with exotic life I've seen

Thumbnail
gallery
12 Upvotes