u/panic_in_the_galaxy

Version 2026.8.19.5261 (Summary in the comments)

  • Clean up of ContextReference.cs, Removed a number of ToNearest Overloads that were parrallel implementations of the same approach. Where these were used, switched them over to using the SpanBuilder approach.
  • Added ToNearest functions for TemperatureReference.
  • Fixed MassReference was using string builder instead of span builder.
  • Tweaked Kitten Movement values.
  • Fuel line hoses can now be bent and deformed in the editor by clicking on the fuel line connection and adding or removing nodes.
  • Fixed an error where Bepu bounds for sleeping vehicles were not being updated properly. This manifested in landed vehicles sometimes being un-collideable.
  • Fixed a case where solid rocket motors could stop firing mid-sequence, and also a bunch of other errors that came out of the woodwork while fixing that one.
  • Reformulated the double-base solid propellant as a platonized variant to reduce its burn rate.
  • Prevented vehicles with firing engines from flipping into the landed state for a single frame.
  • Prevented vehicles with firing solid rocket motors but the ignition switch set to off from going into the landed state permanently.
  • Fixed a deadlock where newly-activated engines might not recomputed propellant availability.
  • Fixed several cases where solid motors might never shut down at the end of their burn and just trickle thrust forever.
  • Clarified which of the area ratio clamps win in the case where the cross each other.
  • Volumetric exhausts now raymarch into the nozzle, this avoid the engine bell looking empty because exhausts start at the nozzle exit plane
  • Fixed teleport/launch commands using time information from the previous frame.
  • Fixed a big RCS control issue where the physics system was effectively executing flight computer jet commands multiple times, thus greatly overshooting targets and causing chattering / excessive propellant usage. This was hugely impactful in time warp, but not at 1x speed where the small frame times gave the flight computer enough time to correct.
  • Greatly increased vehicle drag when flying backwards through the atmosphere.
  • Somewhat increased forward drag as it was a bit too low.
  • Temporarily increase the kitten to Pod range to re-enter the pod until we have ladders.
  • Changed Kitten Evas now have two control Modes: View and Direct. View control will auto orient the kitten to the camera orientation, W/S/A/D/Space/Cntr for 6-dof translation. Direct control is the same translation and rotation controls as space-craft.
  • Changed View mode now only auto rotates kitten when player translate input is enters. (i.e you can now pan your camera around an eva kitten without it auto rotating away from you).
  • Added new Gauge Canvas for Eva Control. View/Direct flight mode toggle. RCS Toggle. Manual and Rate Toggles.
  • Changed Flight computer related gauge canvasses are now disabled when in Eva mode.
  • Fixed several issues with rendering to strings with units of measure.
  • Added middle dots to separate unit products.
  • Remove allocating ToNearest() and replaced it with stackalloc buffers in most cases, or the explicitly-named AllocateNearestString() where that is currently required.
  • Added KittenServoPrecomp. This moves some of the kitten locomotion physics computation out of Bepus micro-step velocity integration in the same way the vehicles precompute forces in ComputeDerivatives.
  • Improve the sampling of volumetric exhausts inside the bell with a
  • more physical approximation
  • Improved snap-to-mesh ground clutter precision. Rather than resampling the height at each mesh vertex, the existing built vertices from the terrain mesh data pass are read - should improve generation performance too.
  • Added squared length residual error calculation to MathCommon, used to correct ground clutter height placement since it relies on a floating precision normalized vector multiplied by a huge scale (planet radius) which reintroduces the error in the normalization.
  • Added asset bundler support for convex hull shapes (ground clutter for now).
  • Added convex hull colliders for the ground clutter rocks.
  • Added MeshColliderTemplate and ConvexHullColliderTemplate.
  • Added debug drawing for ground clutter convex hulls.
  • Removed mesh atlas skipping loading meshes starting with "_" added in one of my last commits, since the atlas just stores the meshes that ground clutter will reference to build its own data.
  • Don't omit velocity when updating particles for a new physics bubble floating origin.
  • Removed unused KSA quaternion Slerp, since Brutal already has one.
  • When the game can't keep up with the requested sim speed, show a realtime multiplier in the F1 Frame Statistics overlay.
  • Hide the intrusive 'Simulation Paused' alert while in the vehicle editor.
  • Removed temporary colliders from the landing legs and solar panels sice they have art-authored ones now.
  • Fixed docking Port Camera not rotating with vehicle, camera orientation was baked into a fixed world-frame direction once, at the moment the camera was toggled on, and never updated again.
  • Fixed crash where loading and/or launching an existing saved vehicle that had kittens assigned to it's seats that are no longer available. In this case we check seat assignments now when loading a saved vehicle and unassign any unavailable kittens.
  • Added Kitten Cameras and Portrait UI.
  • Fixed portrait gauge border/screws frozen at creation.
  • Fixed corner "screw" decorations size on portrait guage.
  • Fixed EVA button to match styling.
  • Fixed FOV for portrait camera.
  • Repaired IVA portrait lights to work when powered. Patch was missing some fragment shaders
  • Changed Ubo data for portrait lights to an array instead of a single light
  • Fixed our kitten portrait lights do NOT require EC to operate.
  • Fixed Rocket (test vehicle) not having any EC stored on it.
  • Fixed drawn kittens in the game not being cleared when entering the editor (whether with new vehicle or debug) causing kittens to erroneously float around in the editor.
  • Prevent the flight computer from running engines at 100% when it would destroy the vehicle due to g-forces.
  • Extend the auto burn time (by throttling down) for small-dV burns to give the flight computer time to correct any small attitude misalignments.
  • Imported new versions of command, fairing, landing, and utility parts.
  • Added a per-canvas gauge visibility context system. A canvas with one or more flags only draws when every flag is true for the currently controlled vehicle. Canvases with no flags are drawn all the time.
  • Assigned context flags to BurnControl (Burn), EngineControl (Engines), RendezvousControl (Target), KittenFlightControl (EVA), AutopilotSettings (Vehicle), Sequence (Sequence).
  • Added a "Context Assignments" HUD menu window for toggling these flags per canvas in-game. These overrides are saved into the settings.toml file and applied as overrides to the default values set in the gauges.xml file.
  • Added surface flag to aeroshroud surface attach connectors.
  • Added Kittens can now grab onto ladders and capsules.
  • Added Kitten Ladder Animation.
  • Added Kittens will start grabbed onto the capsule when beginning EVA.
  • Added Grab [F] Board [B] and Let Go [Space] Hotkeys and contextual tooltip for Kittens.
  • Added Walk anim for kittens.
  • Reduced Board Radius.
  • Added anim converter tool.
  • Fix stale diffuse light map due to an unsynchronized CPU read of a live GPU buffer in the prepass depth validator
  • Added colliders to all trees except the tiny shrubs.
  • Fixed LOD distances not set beyond defaults for trees beyond tree type 3. This should yield a ~10-20% performance boost in forests.
  • Draw SOI bubbles around the closest-approach positions of targeted objects when planning a burn.
  • Continue to draw encounter position and SOI bubble after an encounter is actually achieved.
  • Draw small markers directly on the orbit for Ap/Pe/aN/dN.
  • Make marker labels have uniform style.
  • Added DynamicWorkerPool which allows multiple workers to cooperate on the same calculation.
  • Changed the vehicle update step to use one pool worker per physics bubble.
  • Explicitly lock the global shapes buffer when it is unsafe to modify it.
  • Parcel out post-step work on a per-vehicle basis to the vehicle worker pool.
  • Split Vehicle.UpdateFromTaskResults into unsync / sync halves, where the unsync part can run entirely in parallel.
  • Replaced SimTime with UniverseTime, backed by 128-bit nanoseconds. This is a prelude to creating 64-bit nanosecond integer BubbleTime within physics steps as part of eliminating precision issues and facilitating future multiplayer physics updates.
  • Upgraded the vehicle worker pool with the ParallelBatch ref struct. This provides a direct, inline, nestable method to fork and join a set of threaded jobs.
  • Parcel out module updates and unconstrained physics step to per-vehicle parallel batch jobs.
  • Further vehicle worker pool upgrades to support this.
  • Redesigned global shapes lock to better match the actual access pattern and threading requirements.
  • Implemented the BepuWorkerDispatcher to allow Bepu physics to access the vehicle worker pool.
  • Renamed vehicle update classes - VehicleUpdateTask is the single overall orchestrator, with multiple PhysicsBubbles as parallel islands to be solved.
  • Cleanup pass on new vehicle worker pool changes.
  • Fixed a longstanding error with departure and transfer burns which assumed SOI exit conditions were the same as hyperbolic asymptotic conditions, but which could deviate significantly for finite spheres of influence. This greatly improves the accuracy of both burn types.
  • Prevented the flight computer from loading departure burns that hadn't been transferred to the vehicle flight plan yet.
  • Fixed departure burns re-solving with the wrong time on transfer.
  • Fixed departure burns being deleted on loading a save.
  • Improved UX when planning departure burns very close to escape velocity.
  • Fixed a case where the new UniverseTime was handling a sentinel check differently than SimTime was which erroneously aborted an encounter search.
  • Added BeginningOfTime/EndOfTime to UniverseTime and changed some releated naming.
  • Imported new versions of CoreFairingA, CoreServiceModuleA.
  • Added GSC ELA-4 and Māhia LC-1A.
  • Added object pooling to PhysicsBubble and ConstraintSim to stop allocations on merge/split operations wherever possible.
  • Increased the laziness for when ConstraintSim is initialized to hopefully produce fewer of them.
  • Split ConstraintSim and most Bepu-related structures into their own file.
  • Major update to how cursor hover logic and display is handled. This is aimed at reducing the number of cases where multiple targets are competing for the highlight and generally making picking objects on screen feel less crazy.
  • Added T- time and altitude to orbit hover data.
  • Moved orbit hover data to the lower left to deconflict with orbit marker data.
  • Hid most orbit numeric data unless hovered or active (being an active burn or your own trajectory while under thrust).
  • Prevented orbit lines occluded by the parent body from being hovered.
  • Completely hid the orbit lines and hoverability of the flown portion of a non-periodic orbit (either unbound or terminal, e.g. and impact or escape).
  • Displayed the target's position in a closest-approach pair as an inverted caret rather than a circle.
  • Displayed a same-time marker on your target's orbit when hovering your own (and vice-versa).
  • Only displayed the object name when hovering an orbit you can't interact with, and reduce the cursor grab distance.
  • Fixed at least one case of burns "sticking" as you drag them along their orbits.
  • Concentrated cursor target arbitration into a single CursorTarget class.
  • Cleaned-up/reorganized apparent size calculation methods.
  • Fixed the docking camera being upside-down, making the control axes mapping very confusing.
  • Imported updated CoreFuelTankB assets.
  • Added a 'Draw Part Axes' option in the vehicle editor.
  • Added a warning to the GLB->XML importer to detect connectors with suspicious orientations.
  • Changed the default orientation of vehicles teleported to the surface (including launch) such that pitch down is north.
  • Changed the default camera rotation when creating a new vehicle on the surface such that the camera is facing along the vehicle Z (down) axis.
  • These two changes should make the traditional "hit D to pitch East on launch" function and tilt the vehicle in the expected direction with respect to the camera.
  • Changed all batteries to have a maximum capacity x10 based on feedback.
  • Fixed gauge overlay content rendering one frame behind the gauge windows while dragging it.
  • Added Resources Gauge Panel. Shows resources in controlled vehicle with percentage full bars.
  • Fixed Fur not rendering after a bug was introduced when setting up lights for the kitten cam.
  • Matched the resource bar gauge colours to the default values in gauges.xml
  • Fixed an empty crew portrait gauge being displayed when there is only empty seats in our vehicle. in this case the gauge is turned off.
  • Added Jump and Tumble Animations to Kitten.
  • Fixed Kittens faceplanting when landing horizontal jumps.
  • Fixed Kittens could jump when upsidedown.
  • Changed When kittens tip past 60degrees they switch into the tumble Mode.
  • Changed the resources gauge colours for each resource to match the defined colours in the definitions and the bar style to match the part menu style.
  • Fixed Kittens on Ladders were looking downwards.
  • Fixed Kittens grabbing onto ladders capsules would start in the incorrect animation pose, due to having the anim frozen before the blend completed.
  • Resolved validation issues for invalid dynamic offsets, cacao AO, light irradiance image clears and part selector image sync.
  • Fixed a crash that would result after a Bepu sim was returned to the object pool but the vehicles contained therein held on to their (now stale) resource handles.
  • Imported new versions of CoreElectricalA, CoreFuelTankA, CorePassageA, and CorePropulsionA to fix flipped connectors.
  • Updated Rocket and Gemini7 to have right-side-up docking ports.
  • Increased Surface Friction for kittens in Tumble mode.
  • Fix the ocean, ground clutter and launchpad/super mesh pipelines rendering with a stale viewport in supersampled screenshots
  • Fixed using row-major matrix convention for quaternion to/from mat3 conversions.
  • Improve performance of volumetric exhausts by up to 40%, especially noticeable when many RCS instances fill the screen. Split exhaust instance data into per-instance SSBO and per-template UBO to reduce register pressure, make separate pipelines with spec constant permutations for different features instead of branching per instance, prebake transients for every exhaust every frame into a small lut instead of sampling them in shader.
  • Added Kittens face down to teh ground have greater surface friction.
  • Tweaked Kitten center of mass.
  • Changed Speed of Airborne anim.
  • Changed portrait camera for EVA kittens to side view when on ladders to avoid clipping for now. This is temporary.
  • Changed the Resources gauge to auto-size to its resource rows (up to 6) and scroll beyond that and fixed the RESOURCES header text scaling with the gauge height.
  • Tweak the spacing on the resources scrolling so we don't get a false scrollbar when out by a couple of pixels.
  • Fixed a case where small thruster commands were keeping thruster pulses alive, causing spurious wakeups and making it look like thrusters were continuously firing but nothing was happening.
  • Fixed a case where rocket states would be forced to update on every substep if they ever fired on any substep within a frame.
  • Don't ignore updating rocket cores that still have a pulse to complete.
  • Added Kitten jump Landing anim.
  • Disabled debug menu Editor Toggle while controlling an EVA kitten preventing entry into the vehicle editor mid-EVA as Kittens are not catered for in the vehicle editor.
  • Excluded the kitten backpack subpart from the vehicle editor's Add SubParts list by tagging it Hidden matching the existing hidden-part filtering used elsewhere.
  • Blocked engine shutdown (X key) on vehicles with no control module matching the lockout already applied to engine startup/throttle.
  • Lock out all vehicle input controls if it is not controllable.
  • Fixed map view trajectory drawing a gap right after a patch transition by stitching the arc start exactly at the window boundary. Previously the line began at the first cached point which could fall a noticeable distance short.
  • Fixed docking camera sitting exactly on the docking ring's mating plane causing it to clip into the ring's own geometry. Camera now stands off 0.1m forward along the docking axis.
  • Fixed the docking camera's center reticle to be set from the actual viewport size.
  • Moved map grid rendering out of screen space. Precision when close to the grid is much better now.
  • Modified the map grid-plane so it is optionally drawn per-body to help with visualizing a body's sphere of influence and its position in 3D space.
  • Allow the player to adjust the roll (Q/E) of a part while it's grabbed but snapped to a connector.
reddit.com
u/panic_in_the_galaxy — 9 days ago

Version 2026.8.5.5168 (Summary in the comments)

  • Added hotkey shift-F3 to open/close the kitten roster window.
  • Added hotkey F3 in the vehicle editor to open/close the kitten assignment window.
  • Reduced RCS thrust overall.
  • Made small RCS thrusters have noticeably less thrust than large ones.
  • Fixed compact engine plume location which was broken after the applied-transforms import.
  • Choose active control system based on actual thrust, not commanded thrust. This prevents still-burning SRB gimbals from being disabled if the 'ignite' command is toggled off.
  • Fixed a crash when a vehicle's orbit decayed into terrain impact within a single physics step, instead of waking it onto full physics.
  • Fixed docking ports not clearing their highlights after being a target candidate.
  • Reworked fullscreen rendering on windows devices. Windows fullscreen now uses the vulkan extension VK_EXT_full_screen_exclusive, inorder to fix latency issues when in fullscreen.
  • Corrected the size of solid propellant grains built in to the nozzle segments for size D and size E SRBs.
  • Added some additional info to solid rocket motors in the vehicle editor to make it more clear how player choices are affecting the motor.
  • Added an AreaReference.
  • Replaced a few output string unit numbers with superscripts.
  • Make the Dock (TGT) frame properly align with a targeted docking port that is not directly on the centerline nose of the target vehicle.
  • In the vehicle editor, WSADQE now rotate using the grabbed part's local axes intead of the global editor axes. This should hopefully be more intuitive.
  • Added Kitten Animation Controller. Kittens can now walk/run/jump on the surface of planets.
  • Changed Kitten EVA controller to auto-point kitten towards camera forward. W/S/A/D/contol/space control kitten forward/back/left/right/up/down.
  • Changed Greatly increased the thrust of Kitten RCS.
  • Fixed an issue where player control inputs could leak when switching vehicles,window loosing focus or timewarping past 30x. Thruster flags are now reset on vehicle are now cleared in these cases.
  • Added part highlighting when hovering over an entry in the Crew Assignment window and grouped entries by their parent part.
  • Fixed the Resources window per-frame highlight reset clearing hover highlights set by other windows (crew assignment, fuel lines, solid motor grain segments) left open at the same time.
  • Fixed Stutter in Walk/run anim due to loop period not being correctly calculated.
  • Changed to exit early out of anim when FreezeAnimation is true.
  • Increased TumbleSpeedGate to 6.5ms from 5.5ms for KittenLocomotion.
  • Allowed the player to disable the decoupler module(s) on a part, e.g. turning adapters into static fairings.
  • Added a 'Control From Here' option in right-click menus for parts with control modules or docking ports. This will shift the origin and orientation of the control point of your vehicle.
  • Right-clicking on another vehicle's docking port will now set your target to that docking port.
  • Right-clicking on one of your own docking ports still allows you to choose a nearby vehicle docking port, but the menu UI is significantly streamlined.
  • Fixed target vehicle docking ports not becoming un-highlighted.
  • Fixed semi-related cases of modules using the render vehicle position instead of the current physics position in their updates.
  • Fixed Kittens on terrain would movement stutter when not in landed state due to the rolling resistance code fighting the servo code.
  • Changed Kittens now seek to align with the surface normal (up to a maximum slope).
  • Changed Kittens Go into "Landed" state faster.
  • Fixed ground clutter uniform scale check not checking minScale properly.
  • ## Refactored Glb to XML utility and asset bundler:
  • Lifted shared functions out and split the bundler into Parts and Ground Clutter. The command now needs GlbToXmlUtility.exe <clutter / parts> <same as before> to differentiate between the two.
  • Added GlbExtras for parsing Extras on the glb which are custom properties in Blender. May not keep this around but for now was the easiest way to get material flags processed.
  • Changed diffuse ktx create command to include the alpha channel.
  • Added Opacity and Thickness textures (BC4). The opacity texture uses alpha coverage preserving mip generation.
  • Added GroundClutterMaterial and ClutterObject to the mod library as it now shares a similar loading process to parts (from asset bundles).
  • Changed GroundClutterReference to populate objects via their IDs from assets. IDs are resolved when the ground clutter renderer begins processing the references - will need to look into doing this outside the renderer.
  • Added gamma correction to Solid.frag based on diffuse alpha since the asset bundler processes all textures in Linear space. This would have been needed anyway in the opposite direction if the asset bundler output sRGB textures.
  • Processed all ground clutter assets using the asset bundler - textures are now all KTX2, ground clutter objects are now referenced by ID from assets which are generated from the glb to xml util for a given ecotype.
  • Removed individual ground clutter models except for the Luna rocks which are referenced by the rings and particle systems.
  • Fixed Vulkan validation errors on startup when the loaded system contains a single atmospheric body
  • Fixed the ocean shore filter sampling the low-res coarse terrain height
  • Small improvement to ocean performance, reduce register usage by moving register-heavy functions to the top of the shader
  • Fixed the EVA button not showing on a capsule's crew door when the vehicle had more than one instance of the same capsule/pod
  • Fixed flight plan never predicting a SOI encounter for near-coplanar transfers (e.g. a Hohmann transfer to Luna).
  • Fixed two related gaps in the candidate filter, the pe/ap reachability checks had no margin for the sibling's own SOI and a patch with zero surviving candidates left its expiry at infinity which silently disabled the periodic re-verification scan meant to catch exactly this kind of miss.
  • Added a live SOI-proximity check to every coasting vehicle's motion update.
  • Fixed Kittens could not walk on LaunchPad.
  • Changed TractionTimeConstant to 0.07 from 0.2. This makes kittens accelerate faster and change direction more snappily.
  • Fixed an error where the RCS disable flag had not been plumbed into the rcs parameter calculations properly, so the flight computer was trying to wake up to fire jets that could never fire. This was causing big performance issues at high time warp.
  • Fixed an error where RCS translation was still allowed even with RCS disabled.
  • Changed Kittens to be much hardier with regards to impacts. EffectiveMaxGLoad is now multiplied by 2.5x for kittens.
  • Added First Pass on UI Restyle. This adds ConsoleStyle a container for the imgui style to push/pop and ConsoleWidgets a shared container for consistantly styled elements that other windows will use.
  • Moved most windows over to using the new style, this is a shotgun pass ans has numerous visual regressions that will need to be resolved before this work is a contender to move over to trunk.
  • 2nd pass on Game Settings to better align it with the proposed design artifact.
  • Fixed the rest of the settings tabs to be in line with the new style.
  • Fixed Part Thumbnails were not tone-mapped. This resulted in harsh blacks and whites that did not read well. They now apply the current tonemap settings when rendered on game start
  • Improved readabilty of hover interactions.
  • Fixed tooltips in VehicleEditor were not sized to body text.
  • Fixed windows with a scroll bar were insufficiently padded on the right.
  • Moved Sequence UI over to using the new imgui style.
  • Fixed some incorretcly aligned eliments in the TransferPlanner window.
  • Fixed mismatching terrain biome control sampling cutoff thresholds between CPU and GPU.
  • Further improved terrain physical and visual accuracy.
  • Normalized the cube-to-sphere output in double precision before converting to float instead of after.
  • Increased the resolution of Earth's terrain mesh which will also improve terrain physical and visual parity.
  • Fixed gradient scalar being applied twice on the CPU for terrain.
  • Added RenderImage as the new foundational class for image targets alongside dynamic rendering support
  • Added BarrierBatch, a simple helper struct to batch vulkan pipeline barriers
  • Added TargetImage to pair an MSAA attachment with its resolve, collapsing 1x and MSAA into one path
  • Added ImageBarrierInfo with named state presets, giving every RendeImage a tracked layout/access state
  • Moved all offscreen rendering off VkRenderPass and framebuffers onto dynamic rendering
  • Moved a large portion of pipeline barriers to BarrierBatch instead
  • Removed RenderPassState, DynamicRenderState, OffscreenTarget and LegacyScenePass
  • Spherical Billboarding Stability
  • Improved billboard snapping. Snapping now always chooses an initial reference point then computes an offset in the planet's ccf tangent frame such that vertices for the selected snap LOD (and by extension all LODs belonging to that level) map 1:1 with the previous snapped billboard. This holds for small arc lengths such as when moving over a planet's surface which was where the snapping instability was the most obvious in the form of vertex swimming, the downside being if you leave and come back to the same place the vertices will not be in the same place - however this was true for the old functionality anyway. North is used as a reference point when choosing the initial reference point but never after so there should be no risk of gimbal lock.
  • Updated the mesh collections to support the new billboard snapping logic.
  • Add conservative morphological anti-aliasing CMAA2 as an anti-aliasing option, ported to GLSL compute from the reference implementation (https://github.com/GameTechDev/CMAA2) with its performance optimizations retained. This provides an anti-aliasing option for AMD GPUs where multisampling doesn't currently work, and a general "fast" AA option for all GPUs. CMAA2 was chosen over SMAA because it's a bit sharper, and introduces no blur on stars and small elements due to its conservative nature.
  • Added collider processing to the asset bundler for the ground clutter path, very similar to how part colliders work and are stored.
  • Added support for multiple collider primitives per mesh.
  • Changed ground clutter collision generation to output the scale ID rather than the actual scale so it can be used to create the correct shape for Bepu later.
  • Added more primitive types to the gizmos renderer to draw all shapes supported by Bepu/physics.
  • Added ground clutter shape registration with Bepu / global shapes. Each shape is created as a singular primitive or a compound for each object type and for each unique scale belonging to that object type.
  • Removed misplaced tree and rock asset XMLs.
  • Fix some of the FFT mip map spec constants not being set correctly
  • Added an accurate measure of the max FFT wave displacement to be used
  • for more accurate culling, this was noticeable as clipping when the waves were very large
  • Remove some allocated but unused arrays on the ocean FFT
  • Fix a race condition on FFT data readback
  • Fixed a text alignment issue with the GroundTrackWindow.
  • Fixed an imgui error spam issue with the Manifest window
  • Updated KittenRoster to new ui styling.
  • Imported Core Utility A (ladders). Not yet functional as ladders (SoonTM).
  • Fixed ground impact FX being rocket-scale regardless of collider size. A kitten landing now kicks up a fraction of the rock/dust/smoke that a full rocket stack would.
  • Fixed debris launch speed being driven by kinetic energy (mass * speed^2) instead of true impact speed.
  • Added "Fill Seats" / "Fill ALL vehicle seats" buttons to the Crew Assignment window and the launch-existing-vehicle UI.
  • Added a "CREW ASSIGNMENT" toggle button to the vehicle editor's launch footer, to the left of the "LAUNCH VEHICLE" button.
  • Fixed the launch pad rendering as blown-out white instead of its intended color.
  • Increased the contrast of the Danger UI color as it was one of the lowest-contrast colors in the palette, making it appear less prominent than e.g. Pending.
  • Added warnings to the top of the screen when your vehicle is nearing its g-force or pressure limits.
  • Imported new CoreFairingA assets, including many new structural and decoupling parts.
  • Added masses to all fairing parts.
  • Fixed several errors with how mass properties (specifically moments of inertia) were being computed.
  • Added a tangent ogive mass type.
  • Allowed masses of revolution to be a sector rather than a full circle.
reddit.com
u/panic_in_the_galaxy — 15 days ago

Version 2026.8.3.5117 (Summary in the comments)

  • Fixed tree leaves being opaque and having backface culling enabled when starting the game with MSAA enabled.
  • Prevented using the transient alpha-to-coverage attachment if MSAA is disabled.
  • Changed alpha-to-coverage attachment to R8UNorm since the attachment is only bound so the shader can output coverage (stores nothing), reducing VRAM usage.
  • Fixed SimplePipelineCreator alpha-to-coverage state becoming stale.
  • Clean up the code for the PlumeTrailSegmentsManager and split it into multiple smaller classes with clearly defined responsibilities
  • Extract shared plume trail cursor creation/dragging logic
  • Share plume junction vertices on the CPU instead of synchronizing duplicated endpoints
  • Centralize current plume timing rules instead of splitting them over multiple files
  • Split smaller classes out of TrailSegmentLodHierarchy
  • Better organize plume trail sources into folders by role
  • Added a warning to the GLB importer to detect non-identity transform in subpart meshes.
  • Organized and regularized script console output a bit.
  • Fixed a case where contact docking could cause a position jump via the physics bubble origin snap if a certain order of events occurred.
  • Added ProfilerTags around the highlevel function calls in Program.OnFrame.
  • Updated Rocket and Gemini7 to have correct sequencing with the newly-introduced decouplers on existing modules.
  • Reduced the oversizing of 3m tanks to be the same amount of oversizing as the other diameter tanks.
  • Reduced oversizing of all spherical tanks to make them more inline with the oversizing of cylindrical tanks in total volume.
  • Added comments showing the true geometric size for each tank.
  • Fixed RandomStartTime flag on stream from disk environment sounds was causing a 100ms hitch on playback due to the file streams needing to seek a new position. This would occur when zooming into the planet when the camera crossed aournd ~40km in altitude. When the stream is initialized on DataLoad the buffer is pre-pumped to avoid this hitch, however the seek on playback means it needs to wait for it to be pumped again before playing. I Have removed RandomStartTime from these sound behaviours as a temporary fix for now. Pending an investigation into making this a non blocking behaviour.
  • Fixed unsaved vehicle popup appearing outside viewport when in windowed mode.
  • Fixed new vehicle popup appearing outside viewport when in windowed mode.
  • Changed editor WSADQE to rotate parts in the same way as you command rotation for vehicles in flight.
  • Removed Double3Ex Up/Forward/etc. vectors as they were misleading and often misused.
  • Added named vectors to Camera as they were used legitimately for this purpose in a few cases.
  • Clarified reference frame for camera vectors.
  • Added Kitten Name Generator class.
  • Changed Streamed Sounds are now loaded with the NonBlocking Mode flag. These means the main thread will no longer be stalled during intitial playback or seeking while waiting for the steamed audio to buffer.
  • Restored RandomStartTime for Environment Sounds.
  • Added memorial/special names list to the Kitten name generator. These have a 5% probability of being used. These are outside of our special names list as well (Hunter, Banjo and Polaris for now).
  • Made the camera smoothly interpolate between positions when the center of mass changes (e.g. when docking).
  • Changed the camera smoothing method to a critically-damped spring instead of an exponential moving average which tightens up control significantly.
  • Added debug drawing for vehicle colliders to the physics debug menu.
  • Added Trash area in Vehicle Editor for droping parts to delete them.
  • Fixed Boosters not using the solidengine icon.
  • Added KittenRoster and KittenRosterEntryData to track kittens in each save, each kitten's assigned vehicle, current mission start time, total mission time and mission count.
  • Generate a new roster on new-save creation (Hunter/Banjo/Polaris plus 17 randomly-named kittens) and persisted as part of the universe save data.
  • Added serialize/deserialize of kitten roster from Game save files.
  • Changed EVADoor kitten spawning to pull the kitten's name and character from the new roster. (This wil be changed to have crew stored in each vehicle and only EVA them if they are in the vehicle).
  • Changed Vehicle disposal to finalize a kitten's mission stats whenever its an EVA vehicle. (stats will be finalized on vehicle recovery when that is done).
  • Imported a new version of CorePropulsionA with applied local transforms.
  • Make sure larger vehicles absorb smaller vehicles when docking.
  • Removed prototype icons from vehicleEditor and replaced with text, Icons will be reauthored as svgs at some point in the future.
  • Fixed some alignment issues with the vehicleEditor parts window.
  • Fixed some structural parts not using the correct seperator icon in the sequence window.
  • Imported a new version of CoreElectricalA. Removed some now-redundant placeholder colliders.
  • Fixed an error where adding/removing/modifying fuel lines would not trigger tank reconfiguration.
  • Fixed an error where deleting a fuel port could leave dangling fuel line entries.
  • Fixed kitten EVA jetpack thrusters spawning with no propellant.
  • Don't require 'enter' to save values in the Set Orbit debug.
  • Stop altitude reverting to semi-major axis in the Set Orbit debug.
  • Default destination body to the home body in the Set Orbit debug.
  • Added Kitten Roster window UI to Universe Topbar menu.
  • Added AssignedKittenHash field to IVASeat plus save/load support (SaveData.AssignedKittenName, GetSaveData/ApplySaveData) so seat occupancy persists across saves.
  • Added Crew (enumeration of a vehicle's seats), SeatCount, ability to AddCrew (assign to a specific seat) and AddCrewToFirstAvailableSeat(kittenHash) as well as RemoveCrew functions to Vehicle class.
  • Changed the "Enter vehicle" EVA-door interaction to now actually call AddCrewToFirstAvailableSeat.
  • Added colors to all consumables.
  • Change fill bars to use the new consumable colors, include consumable names and tooltips, and display total quantity rather than percentage (the bar already does that).
  • Added roll-up fill bars to solid rocket motors.
  • Added EVADoor and IVASeat linking.
  • Added SeatId to EVADoorTemplate/EVADoor and IVASeat. These are now resolved and aligned between each Internal and external part.
  • Added id's for the existing internal and pod part.
  • Changed the part boarding logic to now target the specific seat the user selects. Already in-use seats are not shown so you cannot enter an already occupied seat.
  • Changed EVADoor to now only show the "EVA" button when there it's aligned IVASeat is occupied.
  • Changed the exit logic to no longer spawn a new kitten and instead spawns the kitten assigned to the aligned seat and updates the vehicle's seat assigned appropriately.
  • Added Vehicle.HasLaunched and a situaiton change triggers this to be set so we can record when missions actually start and update kitten stats appropriately.
  • Added to the start and end mission events to now bank elapsed mission times for assigned kittens.
  • Fixed distinguish between start of a mission (as mentioned above) vs the continuation of a mission (Transfering between vehicles, going on EVA, etc).
  • Added explicit kitten assignment for the test vehicle scenario only (Rocket and Gemini7) so that each now has one kitten on board.
  • Changed the Kitten Roster window to split the mission count, current mission elapsed and total mission elapsed times in separate columns.
  • Fixed hideously low-resolution orbit lines during atmospheric launch by only sampling points on or above the minimum terrain radius.
  • Added markers for the beginning/end of red danger orbital arcs.
  • Sample elliptical orbit points in eccentric anomaly for somewhat improved point distribution.
  • Added CrewAssignmentWindow listing every seat across the whole vehicle currently open in the editor and allows assignment of kittens via dropdown lists for each seat. Window UI is accessible via the editor's topbar Editor menu.
  • Added Crew Assignment section to the main menu Launch Existing Vehicle menu to allow assignment of crew.
  • Added warning pop-up window when user attempts to launch a vehicle from the vehicle editor or the main menu - launch existing vehicle menu with NO assigned crew at all.
  • Fixed a duplicte imgui id bug in the Assigned Vehicle column of the KittenRosterWindow.
  • Fixed assignment of Hunter, Banjo and Polaris in the Kitten Roster when launching the testing scenario (As these kittens are automaticaly spawned on EVA in this scenario).
  • Fixed docking camera viewport not working.
  • Fixed Set target option in a docking port's part window.
  • Fixed highlighting of set target part once it is set.
  • Added the currently set target into the docking port part menu and hovering over the target in the UI will highlight that part so the user can know which one is the current target.
  • Added ability to unset the target docking port in the docking port part window.
  • Added a placeholder launch pad structure at launch sites driven by a new IsLaunchPad flag on Landmark location definitions.
  • Added the launch pad height when computing initial spawn/teleport placement.
  • Added interaction between vehicles and launch pad collider.
  • Ensure vehicles resting on a launch pad register as ground contact so they sleep the same way they do on terrain.
  • Don't spawn rock particles from being emitted when a vehicle impacts a launch pad.
  • Added a ground clutter exclusion zone around launch pads, vegetation will not spawn on or immediately around a the pad.
  • Fixed EVA kittens spawning without propellant, fixed game-start kittens spawning without propellant, and fixed SRBs spawning without propellant. Everyone has propellant.
  • Added many warnings for part modules which are not wired up correctly in the template XML or in save game data.
  • Made many improvements to burn creation UX.
  • Added a right-click menu that allows you to warp to point on your orbit, create a manual burn, or create special burns like circularizations and target plane matches.
  • Prevented left-clicking on an orbit from creating any more than the first burn to avoid great confusion.
  • Prevented users from being able to create left-click burns on hidden orbit lines which was extremely confusing.
  • Made parent departure burns accessible only through the right-click menu.
  • Moved burn click handling to its own file.
  • Added a new time formatter (1y 32d 16h 4m 22s).
  • Made the map view change focus with the bracket keys along with the flight view.
  • Draw non-periodic orbits starting from the orbiter's current position.
  • Updated the launch pad from rendering unlit to using PBR + Lighting.
  • Added GltfFile: LaunchPad to DefaultAssets.xml
  • Added LaunchPadRenderer to handle instancing.
  • Fixed LaunchPad spinning and not correctly conforming it's parent celestial rotation.
  • Added a default phase for substances which controls their name presentation. The default phase gets no prefix (e.g. just 'Water' when liquid), while the non-default phases get a qualifier word: Vapor, Liquid, or Ice.
  • Removed old planet shaders (HeightFuncs, GenerateMeshHeight) that were replaced with the procedural modifiers refactor.
  • Fixed terrain normal map sampling using hardware linear interpolation that would create stepping in areas where erosion is applied.
  • Fix a full scan of all plume segments when adding segments not yet in LOD to the GPU list
  • Add a VRAM usage display and breakdown for the plume trails in the trails debug UI, reduce size of intersections list allocated for the coarse grid
  • Remove vestigial scratch list in PlumeSegmentStore
  • Refactor trailSegmentLodFrame to make it more readable and add some code comments
  • Changed ground clutter scales from continuous between [minScale, maxScale] to 16 discrete scales for Bepu integration.
  • Fixed launch site exclusions not applying to ground clutter physical data.
  • Added a warning for non-uniform scale for collideable ground clutter objects.
  • Fixed ground clutter physical data disposing grid data immediately instead of waiting for the GPU to finish using it.
  • WIP implementation of ground clutter collider primitive processing.
  • Split 'Collideable' into three collideable types 'None', 'PrimitiveList' and 'Mesh' ahead of bepu integration.
  • Sample cloud shadows on vessels, kittens, launchpads and other shaders, use the cheap volumetric shadow as these objects tends to be smaller on-screen and can move through clouds. This is currently difficult to see on the placeholder launchpad because of its high albedo
  • Replace the atmosphere push constants with a per-planet UBO. Since the atmosphere shading is used in many other shaders and systems, moving its data to a UBO frees other systems to use their own push consts
  • Pre-generate the smaller static atmosphere LUTs and regenerate them on atmosphere changes. Previously these were generated every frame in a shared texture. This fixes some shaders implicitly getting last frame's last-rendered planet's atmosphere data which was working but very brittle, and this allows generating larger LUTs in the future to speed up some aspects of the godray rendering. The main scattering LUTs which depend on the current viewpoint are still rendered once per frame.
  • Fix atmosphere godrays not rendering if clouds are disabled
  • Added CanRecover and Recovery method to Vehicle class.
  • Added ability to recover currently controlled vehicle to the escape menu. Recovery and Abandon are now mutually exclusive so you will see one or the other.
  • Changed the red cross (abandon/delete) button to a green tick button (recover) in the universe manifest depending on whether the vehicle is recoverable or not.
  • Added a serialized Kia (killed-in-action) flag and Kill function to Kittens.
  • Fixed issue where decouple/undock lost the HasLaunched flag on a vehicle messing with kitten stats.
  • Fixed setting the HasLaunched flag on the testing scenario vehicles.
  • Handle killing vs recovering in the input events processing.
  • Fixed issue where camera completely loses it's mind when all vehicles in the current game are destroyed or recovered and it has nothing to switch to. It will now switch to viewing the home planet.
  • Added a memorial tab to the kitten roster window. Which will display kittens that are no longer with us.
  • Added function to create 5 fresh kittens when our roster runs out of available kittens automatically. (Eventually this will be a sandbox only option I suspect).
  • Fixed ensure no code path can assign a KIA kitten to a vehicle.
  • Added travelled distance to kittens stats.
  • Added fastest speed to kitten stats.
  • Only display closest approaches from the final trajectory (including any planned burns) to cut down on the clutter.
  • Fixed crew assignment window hanging around after exiting the vehicle editor.
  • Fixed a data race in SequencePerformance on TotalDeltaV. Also accumulate this into a local variable and publish once so we don't see flickering in the UI.
  • Fixed danger arc markers sometimes being drawn in the wrong place.
  • Fixed some impossible-to-reach markers from being drawn.
  • Suppress CCF danger arcs for intermediate burn plans.
  • Fixed excessive closest-approach entries when your orbit is long and the target's is short.
  • Allow double-click-to-focus on planets even when the outline box is not drawn.
  • Notify the player that right-click is required to create a departure burn.
  • Visually diminish the hover icons on orbits that can't create burns (like random other planets) and don't show them as yellow when hovered.
  • Added caching for Part.MatrixAsmb2VehicleAsmb, the calculation of which was a significant cost at high time warp.
  • Show orbit marker quantites (apoapsis, periapsis, relative inclination) whenever the vehicle is under thrust or in the atmosphere to reduce the amount of mouse-hovering required.
  • Tint danger segments of planned burns differently from your current trajectory to make them easier to tell apart.
  • Open the burn window to the left of the burn gizmo to the right, as this is usually the trailing orbit direction.
  • Fixed a cross-thread interaction with danger arcs.
  • Fixed several errors with how danger arc entry/exit markers were being displayed.
  • Made the flight computer aware when engines run out of propellant and stop taking credit for the thrust they produce in burn planning.
  • Made the engine control gauge dV and TWR ratings reflect the engines that are actually capable of producing thrust. TWR also takes atmospheric pressure into account.
  • Added the ability for vehicles to be destroyed if they exceed a structural g-limit or dynamic pressure limit. This means that vehicles can be destroyed on impact with the terrain, ocean, or each other. They can also be ripped apart by aerodynamic forces during atmospheric entry or hydrodynamic forces if entering the water too fast.
  • No destruction effects yet. Vehicles can only be destroyed as a whole - either the entire vehicle is OK, or the whole thing is destroyed.
  • Prevented all rockets from recomputing all properties on every physics update when literally nothing was happening (all rockets off). This was a huge drag on time warp performance.
  • Fixed several other instances of module systems creating state copies just to do nothing with them.
reddit.com
u/panic_in_the_galaxy — 18 days ago

Version 2026.7.10.5056 (Summary in the comments)

  • Added 6 more tree model variants, these are shrub sized that spawn mostly at the edges of forests.
  • Added an 'auto' button to return solid rocket nozzle area ratio to the automatically-assigned mode.
  • Prevented tanks from being unexpectedly refilled when loading vehicles, saving vehicles, or exiting the editor. Note that swapping engines, etc. will still cause refills.
  • Added an explicit "Refill Consumables" button to the editor UI to replace the automatic calls.
  • Fixed the manual tank fill sliders potentially jumping positions after being released.
  • Allow solid motor propellant to be changed in the vehicle editor.
  • Allow nozzles to change their volumetric exhaust style based on the configured reaction.
  • Restored the ability to set per-segment grain geometry which had been inadvertently lost.
  • Fixed a crash when disconnecting a solid motor from a stack of segments.
  • Added a previous symmetry hotkey (default: shift + x) so you don't have to wrap around the full symmetry set to go back one.
  • Added the GlbToXmlUtility CLI tool. This has been moved from an external repository into the main codebase in order to re-use the existing KSA serializers, keep the tool better in-sync with the game asset structure, and lower the barrier to entry for any dev to use it.
  • Modified the tool to output exactly the right filenames and directory structure to enable direct copy/paste with no modifications.
  • Moved fuel port to its own GameData file.
  • Imported new versions of: CoreCouplingA, CoreElectricalA, CoreFairingA, CoreFuelTankA, CoreLandingA, CorePropulsionA, CorePropulsionB, CorePropulsionC, CoreServiceModuleA
  • Improved the teleport to ground function (which also handles newly-launched vehicles) to set the base of the vehicle directly on the terrain, even if the center of mass is very far from the center of geometry.
  • Suppress a few XML fields when they have default values.
  • Enlarged the RCS-by-default tanks to be more in line with the secretly-oversized liquid tanks.
  • Updated Rocket and Gemini7 to take advantage of the larger RCS tanks.
  • Increased Rocket first stage engine & RCS propellant.
  • Fixed a potential elliptic integral exception in the on-rails rotation algorithm. This was possible due to the safety check not fully covering the singular separatrix region, only a specific pole.
  • Relaxed symmetric inertia classifier to treat nearly-symmetric bodies as symmetric to further insulate us from singular or unstable cases.
  • Fixed Popups dressed with gauge style ui now autosize for content.
  • Changed Multiplier -/+ buttons on burn edit window now step by and round to the current order of magnitude. i.e if less than 1 steps by 0.1 if less than 10 steps by 1 etc.
  • Fixed Burn Multipler value could be set to 0.
  • Fixed a rare parsing bug for Part Keyframe Animations that was causing the landing leg to animate incorrectly.
  • Fixed SRB burn time calculation to use the correct flow rate.
  • Added decomposition of sequences iunto phases when we have multiple engines with different burn times in one sequence in the Delta-V Debug UI.
  • Added solid residue breakdown in the end fuel readout in Delta-V Debug UI.
  • Added engine highlighting when hovering over each phase in the Delta-V Debug UI.
  • (Still need to fix more logic on where multiple engines in one sequence end their burn at different times).
  • Fixed sequence boundary cutoffs bug where we were not sequencing the drain simulation to stop dV in one sequence and carrying over to the next sequence by understanding where engines in each sequence will be decoupled. The first group of engines that will decouple in a sequence is when the sequence will now end.
  • Added Alt + LMB will duplicate hovered part in VehicleEditor.
  • Fixed Part highlighting would pass though modal imgui pop-ups.
  • Implement depth-aware per-upscaling-block ray placement for volumetric clouds and trails, this minimizes
  • cloud/plumes flickering near rapidly-varying geometry which became much more noticeable since the
  • addition of detailed trees. Use a similar approach to the one presented in RDR 2 SIGGRAPH 2019's presentation.
  • Fix exhaust denoise shader reading out of bounds which can cause black artifacts on the edge of the screen
  • Fix artifacts on the cloud upscaling visible at the edge of the atmosphere, the issue was introduced when adjusting the upscaling for the plume trails
  • Masked trees by slope and altitude so they no longer spawn on cliffs or in the ocean.
  • Masked grass by slope so it no longer spawns on cliffs.
  • Updated the beach sand texture so it no longer inherits the planet's colour (fixes green beaches).
  • Updated Earth's biome map so beaches are thinner and start closer to the ocean. They're still larger than they should be but this was a quick and easy change.
  • Fixed cubic hermite spline editor not clamping y values even with them provided.
  • Added altitude density curve and LUT to ground clutter with res 1024 (+- 15m altitude precision on Earth).
  • Added altitude density curve editor to the ground clutter GUI.
  • Reduced the number of shrubs that spawn on slopes.
  • Increased the blend strength between Earth's biomes.
  • Fixed "collideable" tagged ground clutter slightly changing position and orientation when the terrain mesh snaps despite being placed on the heightfield directly. This was caused by a round trip through the mesh transform using the mesh origin offset trick for extra precision. Instead, the ego positions of ground clutter chunks (cell anchors) are computed in double precision and clutter ccf position is stored as an offset from the anchors which should improve precision massively.
  • Prevented ground clutter regeneration for "collideable" tagged ecotypes since the positions of instances within them are now deterministic to a great degree of precision.
  • Fixed ground clutter no longer spawning on the Moon or Mars.
  • Fixed an error where we could try to ask for an impossible true anomaly when drawing markers for hyperbolic orbits.
  • Added ImGaugeDressing, Helper class for IMgauge draw functions that previously lived on Popup.cs.
  • Changed Settings menu now uses gauge style window styling.
  • Changed Settings menu now modal.
  • Added RandomStartTime Option for Looping Sounds.
  • Removed Engine sounds from using sound groups as it was causing sounds not to play.
  • Changed increased ratio on EnginesChannel Compressor to handle instances when dozens of engine sounds play at once.
  • Fixed a decoupler silently failing to fire when staged together with another decoupler upstream of it in the part tree.
  • Moved an [XmlIgnore] that was suppressing real data into a GLB importer override.
  • Added audio cluster channels can now be per parent local. Engine cluster channels are now per vehicle rather than global.
  • Added some aditional audio debugging tools for showing sound positions.
  • Restored the ability for RCS propellant to cross decouplers.
  • Added low-profile decoupler game data.
  • Added two missing interstages to the game data.
  • Made all interstages decouplers.
  • Adjusted/added mass values for all interstages.
  • Made service bays into decouplers and gave them mass.
  • Set service bay connectors to internal and gave them symmetry.
  • Added actual tanks to the service bay part tanks, and made them attach to connectors rather than surfaces.
  • Fixed a couple of XML entries that were misnamed and thus not being parsed.
  • Fixed When sequencing an already firing engine, that engines cluster audio would not get moved to the new vehicle.
  • Fire active solid rockets if they are jettisoned. This should make separation motors work as expected.
reddit.com
u/panic_in_the_galaxy — 23 days ago

Version 2026.7.9.5018 (Summary in the comments)

  • Moved terrain modifier CPU evaluation from double to float to match GPU terrain construction. This fixes some rare cases where the terrain would mismatch due to hashing functions working with slightly different inputs.
  • Split simplex noise library into float and double precision versions.
  • Extruded the shadow cascade frusta towards the sun to include objects that cast into the cascades.
  • Fixed nonuniformEXT missing from biplanar sampling function definitions. If non uniform access is required, shaders can now declare USE_NONUNIFORM_EXT to enable the qualifier.
  • Fixed the Vehicle Editor camera not recentering when switching the active build target between vehicles — "Switch Vehicle"/"Make Vehicle Root" now reframe the camera onto the newly-focused vehicle's root part, reusing the same OrbitView.OffsetPart mechanism flight's "Focus Camera" already uses.
  • Fixed the Vehicle Editor camera not recentering when switching the active build target between vehicles — "Switch Vehicle"/"Make Vehicle Root" now snapshot the camera onto the newly-focused vehicle's root part (same one-time recenter the EditorCameraFocus hotkey already uses), instead of a live per-frame follow that fought with dragging the root part and sent the camera flying out of the editor cube.
  • Added texture streaming context to the game settings.
  • Fixed the "New Vehicle?" confirmation wiping the editor with no chance to save — clicking Ok now checks every unattached vehicle and the focused build for unsaved changes and, if any are found, offers the same "Unsaved Vehicles" save prompt the exit flow already uses before clearing them.
  • Added MilkyWay renderer, decoupling the milkyway from the star renderer.
  • Cleaned up milkyway references so textures are not all bound into the global textures.
  • Added generate simplex noise compute shader, similar to the generate worley noise, this writes a simplex noise texture to a target image.
  • The MilkyWay now reads from a pre-baked simplex noise texture instead of dynamically generating simplex noise in the fragment shader. This reduces the milkyway frametime by ~half.
  • Added a guard for timeToFirstEncounter being NaN (previously only the infinity case was caught), ending the patch the same way as the other edge cases.
  • Modified Module.List to store modules with the same concrete type in contiguous segments. This allows us to efficiently query Modules based on their interfaces in all cases, not just when the top-level TModule implements the interface.
  • Replaced the flat SOI-size cutoff for automatic encounter detection with an orbital-geometry check; siblings are now excluded only when their radius band can't overlap ours or when an approximate MOID (evaluated at the two mutual orbital nodes) puts them well beyond their own sphere of influence,
  • so small moons like Phobos and Deimos are no longer silently skipped just for having a small SOI.
  • Fixed a radius-band gap where bodies orbiting entirely inside our own periapsis weren't excluded from candidacy either.
  • Removed the now-unused FlightPlan.FAST_SOI_PATCH_SIZE constant.
  • Added solid rocket motors to the game. The motor feeds from solid fuel segments, which can be stacked on top of each other in the vehicle editor to adjust the amount of propellant per booster.
  • Added the ability to select the grain geometry for each segment, which defines the thrust profile of the booster over its burn. It defaults to a neutral star grain as a sane default.
  • Added a new concept called Capabilities to part connectors. These determine what kinds of interactions are permitted across the connector, currently: Electricity, BulkFluid (e.g. engines), ServiceFluid (e.g. RCS), SolidMotorCase (for building boosters). Electrity and ServiceFluid are assumed by default, while BulkFluid and SolidMotorCase are opt-in.
  • Made the feed sources for rocket engines explicit in the XML so that specific connectors or Part-internal tanks can be selected where appropriate.
  • Added generate_grains.py to ThermoToolkit.
  • Added the ability to call GetUsing<T>() on individual module type lists to find specific sub-classes.
  • Generalized many systems in the game that had assumed liquid propellants and Combustors to also handle SolidMotors and solid propellants.
  • Fixed rare texture streaming edge case when terrain textures are forcibly downsampled below 512x512.
  • Added planet terrain normals to the texture streaming system which should farther help with VRAM usage.
  • Fixed ground clutter not getting refreshed while mips are streamed nicely which sometimes caused mysterious floating clutter.
  • Better handled balancing texture sizes against our VRAM budget and prioritized terrain height related maps to help avoid terrain mismatches.
  • Added Esc Menu. With the following buttons: RESUME, SAVE/LOAD, NEW VEHICLE, Launch VEHICLE, ABANDON VEHICLE, SETTINGS, QUIT.
  • Added in Editor SAVE/LOAD brings up vehicle save load menu, other non vehicle editor buttons hidden.
  • Added ImGauge and ImGauge helper classes. This allow the drawing of Gauge styled UI directly from code (as you would auther imgui ui), This should make the generation of styled UI elements easier to create quickly.
  • Fixed an issue with Gauges.glsl where gauge buttons would only draw their bezel and dropshadow correctly at one asset ratio.
  • Removed accidently commited file.
  • Implement simple LOD for plume trails. Simplify distant plume trails by
  • merging consecutive segments to reduce GPU workload. Compute LOD levels
  • on a worker using the job system running one frame behind to minimize
  • CPU overhead. Upload newly added segments from the current frame directly
  • to the GPU without waiting for LOD processing. Additional LOD improvements
  • will be added to handle cells with a high number of small segments from
  • multiple emitters.
  • Lock clouds shadow volume to slowest moving layer, avoids discontinuities
  • in clouds lighting at high time compression
  • Only use plume trails on SRBs
  • Change how multiple plume trail emitters stack for large combined
  • plumes, still a placeholder
  • Optimize coarse to fine plume trail segment culling grid refinement
  • Group plume emitters across vehicles, this is needed when emitters are
  • staged but keep flying together for a bit.
  • Tweak plume trails noise
  • Better handle sampling of smaller plumes when in proximity to large
  • plumes
  • Simplify some of the segment weighting math in the plume trail shader,
  • optimize how trail data is accessed and preocompute some values
  • Fix issue with cloud shadows not being sampled on plume trails when
  • above clouds top boundary
  • Refactor trail segment bucket
  • Remove some unnecessary guards in the plume trail shader
  • Remove some unused stats from the trail renderer
  • Set plume end radius via template, set start radius from nozzle fxRadius
  • Start merging non fully expanded segments when radius permits
  • Enable plume trails by default
  • Small tweak to trails distant raymarching quality
  • Small tweak to trail merging logic
  • Tweaking some volumetric plume parameters to amp up the aggressiveness and match real values more closely.
  • Added a simple model of plume velocity loss when passing through a normal shock which has a pretty large effect.
  • Removed the barrel shock fading from the shader so that it's always present. This is a huge part of what gives supersonic plumes their rough and fuzzy edges.
  • Cut emission values in half across the board due to the increased brightness of the ever-present barrel shock.
  • Increased the off-axis and turbulent noise scrolling velocities to be much closer to the plume velocity, making them seem less candle-like and much more violent.
  • Fixed incorrect exit plane location for the compact engine.
  • Clamp exit mach number at 1.05 instead of 1 to prevent the mach disk effect freaking out.
  • Correctly account for unburnable solid propellant in the dV simulation.
  • Fixed particle positional offset caused by particles getting rebased at age 0. Because particles are getting spawned already offset, we were applying the rebase to them immediately which would apply that offset a second time. It is now only applied if their age is greater than 0.
  • Fixed particle frame jitter. This was caused by an order of operation bug where the ModelMatrixUpdater was executing after the position updaters, which would prepare the particles for the next frame.
  • Changed VehicleEditor deleting the root part of the of the currently editing vehicle will automaticall switch your edit view to the next available vehicle if one exists.
  • Refactored delete part code into helper method.
  • Added solid rocket modules to all existing booster parts.
  • Moved default grain geometry from the segment XML to the motor XML.
  • Added HollowOpenSemiEllipsoidMass to the XML mass properties options.
  • Added the ability to specify feeding from sub-parts.
  • Added solid motor casing to the part preview mass.
  • Changed All UI pop-ups to use the Gauge Window styling.
  • Fixed WelcomePopup Window height too small.
  • Fixed can't exit Main Menu by pressing Esc after changing it to a modal window.
  • Fixed PartTreeSelectionPopup now scales its height with number of available part-trees.
  • Swapped _decouplerConnections for a ConnectorCapability.DecouplerJoint flag authored per-connector to fit the ConnectorCapability extension introduced with SRBs.
  • Added DecouplerJoint Capability to all decoupler's connectors.
  • Replaced the symmetry-index crossfeed check with a proper junction/branch comparison whilst doing the above.
  • Changed view proj matrix retrieval from ubo to push constant in the ground clutter shadow pass.
  • Added LOD bias to the opacity texture in the ground clutter shadow pass.
  • Added shadow rendering toggle to ground clutter per-LOD.
  • Excluded far away tree instances from shadow casting.
  • Added a third tree variant.
  • Lowered ground clutter shadow LOD bias from 2 to 1.
  • Fixed forcing shadow LOD to 3 (last commit).
  • Included LOD sort when building ground clutter draw commands. Commands are now sorted by pipeline, then LOD.
  • Fix instability in clouds and plumes temporal upscaling when in front of terrain discontinuities like dense trees and the horizon, this was previously implemented but broken due to a typo
  • Added 3 small tree variants to Earth.
  • Added distribution texture for Earth's forests - Large trees spawn in large forest regions, small trees can spawn here too but also spawn in sparser areas.
  • Removed unnecessary atomic add in Generate.comp.
  • Fixed fading LODs 'snapping' to fully opaque if the ground clutter regenerates after a planet mesh snap.
reddit.com
u/panic_in_the_galaxy — 26 days ago

Version 2026.7.8.4980 (Summary in the comments)

  • Added Hud dropdown to file bar. This now contains tools for hud management including new layouts feature as well as the toggles for enabling/disabling gauges that were previously found in the View dropdown.
  • Added save any arrangement of gauges as a HudLayout, using the Save Current Layout Button in the Hud dropdown, you may check one layout as your default.
  • Added Hotkeys for selecting and cycling layouts.
  • Added Layout Config Window for managing saved layouts and their hotkeys.
  • HudLayouts are serialized in same location as Saves/Vehicles etc in the HUDLayouts folder.
  • Fixed default vehicles missing propellants after tank XML rework.
  • Made the 'Rocket' first stage have T/W > 1 when teleported to Earth.
  • Added screenshot capabilities
  • Fixed the odd camera zoom/jump that could happen when decopuling or docking vehicles.
  • Fixed the console duplicate command not properly duplicating vehicles.
  • Updated PartTree.Serialize() so that it serializes all important parts of the tree, not just the parts list.
  • Fixed vehicle data being left in a bad spot after docking. This would present as parts not highlighting when hovered and the center of mass not being correct.
  • Hoisted the decision of whether to recompute derived data after part tree operations up to the top of the part system API rather than having it buried and implicitly chosen in several places.
  • Added RCS toggle to Engine Control Gauge Canvas.
  • Updated FlightComputer to respect RCS toggle when orienting the vessel.
  • Added new texture category 'TerrainHeight' for terrain textures that affect height calculations. These no longer get downmipped or downsampled by the terrain texture max size setting. This will cause increased VRAM usage for people who were previously setting these textures to be resized. This change is intended to avoid the misalignment between the rendered and collided with terrain.
  • Modified some CPU sampling of terrain textures to more accurately align with GPU sampling to help with rendered terrain and terrain collision alignment.
  • Changed Where RCSMode was being evaluated by the flight computer as it was doing a number of needless RCS calculations when RCS was disabled.
  • Fixed a new vehicle's attitude reference from becoming corrupted after undocking.
  • Store vehicle names on Control modules. This is the name we will use for undocked vehicles, if available.
  • Fixed a couple of insidious frame errors lurking in the code for making part connections and moving part trees around in ASMB.
  • Consolidated the 4x copies of code for moving the root part and all of its children into a single place.
  • Changed the cascaded shadow filter to a specialization constant instead of being apart of the uniform data.
  • Fixed an edge-case where ThrustVectorControl would not be used despite RCS being disabled, if the vessel had lots of rcs thrusters and limited tvc. Introduced in commit ef37582b.
  • Converted cascaded shadows to manual rendering instead of multi-view rendering. MVR did not have the ability for us to curate what we render to each cascade. This is preparing for ground clutter culling for shadows.
  • Prevented freshly-decoupled vehicles from colliding with each other until they are out of contact to avoid them getting stuck inside each other.
  • Gave vehicles with no defined mass a total mass based on a density, not a hardcoded value. This should help prevent massless parts from becoming inadvertent airships.
  • Removed physics constants from the game settings menu and made them internal constants to prevent them from getting "stuck" to the values when players first launched the game.
  • Fixed per-sequence delta-v/TWR/Isp lumping the entire reachable fuel supply into the sequence that first ignites the engines, leaving later decouple sequences blank.
  • Each sequence's burn now ends at the next staging event that drops tanks out of its fuel supply.
  • Known limitation: the estimate is availability-based, not a time simulation, so designs where engines drain separate tanks simultaneously (parallel boosters without fuel lines, solid+liquid first
  • stages) attribute all of a tank's fuel to the earlier sequence instead of splitting it by burn time — crossfed and serial designs are exact.
  • Fixing this requires an event-driven fuel-flow time simulation, planned for a later date.
  • Fixed the sequence-performance simulation draining tanks in a fixed nearest-first order regardless of each engine's fuel flow rule. It now consumes in the same order the engine actually drains in flight. * Changed the default fuel flow rule for engines from nearest-to-furtherest to furtherest-to-nearest by stage.
  • Added persistence for the engine Fuel Flow rule: a rule picked in the flow-rule dropdown (editor or flight part window) is now saved with the vehicle and restored on load, instead of silently resetting to the default.
  • Changed Reworked the burn UI to be integrated into the gauge canvas system.
  • Added support for plus symbol in Gauges.glsl.
  • Added Creating a burn now automatically selects that burn is the current active burn for editing.
  • Added Lcontrol/LShift act as modifiers when clicking -/+ buttons on burn editor window they will modify the mul value by 0.1/10.
  • Enabled the non uniform extension for terrain and ground clutter shaders that use indirection to obtain the texture array IDs. This should fix issues with terrain flickering on some devices.
  • Removed unnecessary debug log spam.
  • Fixed Imgui Input fields in new Burn Edit Window impinged slightly on '-' button.
  • Fixed the burn edit window could be "disabled" in the same way as the other gauge canvasses, this was un-intuitive as the enable/disable feature is primarily linked to whether a node is selected.
  • Added AlwaysEnabled flag to GaugeCanvases for canvases that rely of gameplay state for their enabled behaviour.
  • Added Delete pill button to burn gizmos, the pill button appears when a burn gizmo is hovered and stays active until the mouse position moves out of the hysteresis range.
  • Update Brutal.Monitor to the latest package
  • Fixed per-sequence delta-v/TWR/Isp attributing a whole tank's fuel to whichever sequence ignites first when engines drain separate tanks simultaneously (parallel boosters without fuel lines, solid+liquid first stages).
  • Replaced the availability-based truncation with an event-driven fuel-flow time simulation.
  • Split CullInstances.comp into two mains depending on whether shadow culling is enabled or not.
  • Added per-cascade shadow culling for ground clutter, improving forest rendering performance on Earth.
  • Moved ground clutter draw command ownership from ecotype data to view resources.
  • Added a GPU marker for ground clutter cascade index when drawing.
  • Instead of forbidding all collision between newly-decoupled vehicles that spawn with interpenetrating colliders, reject only the contacts which would prevent them from pushing away from the parent vehicle. This helps prevent the collision avoidance system from becoming a permanent state of affairs where vehicles aren't able to get away from each other.
  • Decrease penetration recovery velocity from 5 m/s to 1.5 m/s now that we don't get embedded in hillsides.
  • Removed the dropdown-based fuel line creation controls (two part pickers + "Add Line") from the vehicle Resources window; existing links are still listed there with their enabled toggle, flow-direction cycle button, and delete button.
  • Added Velocity Markers to navball Prograde/Retrograde, Normal/AntiNormal, In/Out Target Prograde/Retrogade and Burn. These are drawn from the Navball frag shader using sdf equations for pixel perfect scaling at any resolution.
  • Added NavballMarkers.glsl this contains all the functions required to draw the Navball markers.
  • Improved mouse hover logic over extreme hyperbolic orbits.
  • Added a way to switch which vehicle is the active build target in the Vehicle Editor: a "Switch Vehicle" button, and a "Make Vehicle Root" option on any unattached vehicle's part menu.
  • Added a save prompt on exiting the editor when any vehicle with unsaved changes would otherwise be discarded — lets you save each one before continuing, whether it's an unattached vehicle sitting in the build area or a brand-new vehicle you built from scratch
  • and didn't launch.
  • Fixed the vehicle picker mislabeling whichever vehicle was currently focused as the "Existing Vehicle" instead of the one actually loaded from the original save.
  • Added Destroy button next to vehicles in the manifest. Destroy is gated behind a confirmation pop-up.
  • First pass on texture streaming functionality. This is enabled by default and can be toggled off via the startup config. The texture streaming will attempt to stream textures as they're needed and maintain a VRAM cache of textures ready to go on the GPU. This only affects large terrain related textures for now. This is early/experimental work and will be refined as we find issues.
  • Added KeyBinding for ToggleRCS. Defaulted to R.
  • Fixed texture streaming auto budget calculating incorrectly.
  • Fixed a sigificant error in velocity verlet integration where stale position values were being used to compute environmental parameters like gravitation and drag. At high time warp under physics this could result in adding significant orbital energy.
  • Properly handle edge cases where we need to apply atmospheric forces in the CCI frame.
  • Start flight computer roll in the "ANY" mode to stop unnecessary roll actuation unless specifically requested.
reddit.com
u/panic_in_the_galaxy — 29 days ago

New HudLayout Feature coming soon

From Matty (Programmer) on discord:

New HudLayout Feature coming soon:

  • You can save any arrangement of gauges as a HudLayout, using the Save Current Layout Button. Layouts are saved in UV space.
  • Additionally you can assign one as your default layout.
  • Keypad 0-9 are hot keys for switching layouts and tilde is the select default layout key.
  • A new layouts window for managing saved layouts. Here you can re-assign hot keys, delete layouts and change default.
  • Layouts are serialized in the HudLayouts folder next to Vehicles and saves. Each layout gets its own folder with an xml file and a toml meta data.

Comment by me: The feature is already commited and will be in the next build.

u/panic_in_the_galaxy — 1 month ago

Version 2026.7.6.4939 (Summary in the comments)

  • Added new Sequence UI layout.
  • Added Sequence UI code is now shared across editor and flight, items can now be re-sequenced during flight. When in flight the amber highlight sequence shows the sequence that will fire when spce-bar is pressed.
  • Added fuel indicator bars for engines in sequence view when in flight.
  • Changed When in flight, Sequence window is now positioned above nav ball on the left side of screen.
  • Changed Perigee/appogee readout has been moved to the top right of screen.
  • Added new particle updater called GrowOnSpawn. This can be used to prevent particles from suddenly appearing, instead they will start small and grow up to their base size. This can be used along side ShrinkOverLifetime or GrowOverLifetime.
  • Volumetric ice particles now use the GrowOnSpawn particle updater.
  • Added initial screenspace renderer for particles. This now replaces the previous volumetric renderer which was rendering volumetrics in a fragment shader on spherical meshes. Instead we run a compute shader to calculate the volumetric contribution in screenspace, reducing large performance drops when inside a cluster of volumetric particles.
  • Cleaned up screenspace particle modlibrary ids.
  • Fixed broken downscale depth for screenspace particles.
  • Added explicit ModelMatrix particle updater. Previously the current particles scale was tied directly to the render data. Because the render data held only a model matrix and not a decomposed set of position, rotation and scale data. If multiple particle updaters wanted to edit the particles scale they would generally have to edit it directly on the render datas model matrix. Instead there is now a proper scale that is tied to the particle update state which gets edited directly, then the model matrix updater build the model matrix at the end. This encourages particle updaters to not touch the rendering data directly and just use the shared particle state data instead.
  • Changed Grouped parts in a sequence are now expanded or collapsed by right clicking on the grouped parts.
  • Add experimental volumetric plume trail rendering.
  • Trails are disabled by default and can be enabled using the Trails option
  • under Game Settings > Volumetrics.
  • The system tracks individual trail segments and uses a spatial acceleration
  • structure to sample only relevant segments while raymarching. Empty space is
  • skipped efficiently, and the sampling rate adapts to the radius and density
  • of nearby plume sections.
  • Current limitations:
  • Trails are currently added to all main engines for testing. They will be
  • assigned more selectively in the future, including to solid rocket
  • boosters when added.
  • Emitters currently release trail material based on movement rather than
  • forcefully exhausting gas. This can look unnatural when a vehicle is
  • stationary or moving slowly (such as a low TWR vehicle struggling to
  • launch .Plumes currently look best above ~20 m/s. Stationary and
  • low-speed exhaust will be improved in the future.
  • Trail sections currently use basic expansion, diffusion, time-based
  • dissolution and a pseudo-wind drift, you can watch plumes morph over
  • time.
  • Trails do not yet cast shadows. They do receive shadows from clouds, which
  • helps integrate them into the scene.
  • Occlusion against existing engine plume effects and other transparent
  • particles is not yet handled correctly.
  • Very thin, distant plumes can become unstable when processed by the
  • upscaling system. This will be addressed by improving the upscaling method
  • or increasing the apparent width of distant trails.
  • Ground-contact smoke and vapor are not yet emitted, so launches currently
  • lack the larger ground-level plume effects planned for this system.
  • Simplify complex trails in the background once expanded plume sections are
  • large enough to contain the original smaller segments.
  • Add a system that dynamically merges nearby volumetric trail emitters on the
  • same vehicle into a single larger plume, reducing the number of trails that
  • must be tracked and rendered. Merged plumes can split dynamically when
  • emitters move apart.
  • Add basic plume expansion, diffusion, time-based dissolution and a
  • basic wind drift. You can watch plumes moreph over time.
  • Use the cloud upscaling system for volumetric trails.
  • Integrate volumetric trails with clouds, allowing clouds to occlude trails
  • and trails to occlude clouds behind them. Occlusion with existing engine
  • plume effects and other transparent particles is not yet supported correctly.
  • Sample the cloud shadow volume when rendering plume trails. Trails receive
  • cloud shadows but do not yet cast their own shadows.
  • Add noise anti-tiling to plume trails using an extension of the simplex
  • anti-tiling method.
  • Stabilize 3D plume trail noise in CCF space using the split-precision method
  • used by planetary rings, rather than passing positional offsets from the CPU.
  • Stabilize cloud and trail upscaling motion vectors by tracking average
  • density.
  • Expose additional cloud and trail upscaling quality settings.
  • Add a debug line renderer for volumetric trails.
  • Add a debug sample-count visualization mode for volumetric trails.
  • Add trail debugging parameters and controls through the "plumes" command and
  • the View > Debug > View Plumes menu.
  • Add separate repeat-sampler targets to compute pipelines.
  • Apply the time-decomposition technique used by planetary rings to the ocean,
  • preventing ocean animation time from looping after some time.
  • Added preliminary ground clutter shadow culling. Before, ground clutter shadow depth was rendered based on the instances visible in the main camera - now depends on whether they're in the frustum of any shadow cascade. Atm the shadow frustum does not extend back towards the sun so looking away from long shadows will still cull the instances behind the camera.
  • Fixed bounding sphere radius calculation and LOD selection.
  • Updated the ground clutter LOD screen sizes to work with the fixed logic.
  • Optimized ground clutter colour render pass by removing alpha-cutout and alpha-to-coverage logic, which is already done in the depth pre-pass. This should restore early-z and may improve performance slightly on older hardware.
  • Split ground clutter culling into 'prepare' and 'cull'. Prepare transforms the instances to ego space and passes through instance colour, culling is now separate and can be performed per-view (main camera, shadows, etc).
  • Added ClutterViewResources and moved LOD, reordering and draw command generation there.
  • Removed Evaluate.comp as it was replaced by the prepare and culling shaders.
  • Removed BuildDispatchCommands.comp.
  • Removed render buffer from GrowOnSpawn particle updater as it is no longer used.
  • GrowOverLifetime no longer edits the emitters extra data. This was previously setup to reduce the particles density overtime. This now only handles the one task for increasing the particle scale, density is handled in the screenspace renderer.
  • Added FuelPort module (MaxLength, anchor point) and a Fuel Port part (placeholder art reusing the quarter-tank mesh).
  • Added fuel line tube visuals between ports with flow-direction arrowheads, rendered in editor and flight (grey = enabled, dark red = disabled).
  • Added fuel line rows to the part UI: enabled checkbox, flow-direction cycle button, delete, endpoint hover highlighting.
  • Added fuel-line crossings to the fuel flow overlay, routed tank -> port -> port -> tank, shown only for links the engine actually drains through.
  • Added symmetry fan-out for port links: linking one booster of a symmetric set replicates the line per sibling, including ports placed individually on already-symmetric boosters (matched by template + mount distance).
  • Added Fuel Flow rule dropdown for engine cores to the editor part UI (was flight-only); flow rule now survives resource-manager rebuilds in both editor and flight instead of resetting to the controller default.
  • Changed GenericMesh shader: instance color rgb now tints albedo and alpha is a self-lit fraction, so fuel-line tubes are visible in the editor (editor enclosure box unchanged).
  • Fixed tanks fed through a fuel line not auto-filling with propellant: engine consumers are now offered to link-fed tanks across stage boundaries, matching what the engine can actually drain (daisy chains included).
  • Fixed tank-less fuel ports not opening the stage bypass: link endpoints resolve to the part the port is mounted on for marking, receiver stage checks, and chaining.
  • Fixed fuel flow visualization silently turning off after any staging/sequence/fuel-line edit (toggle now carried across manager recreation), and it now deliberately turns off for all engines/thrusters when leaving the editor to flight.
  • Fixed gizmo lines/spheres never rendering in the vehicle editor (fuel-line pairing preview draws through these).
  • WIP code clean up of VehicleEditor.cs removed un-used fields, removed descriptive/verboise comments, Split out several large functions in to more easliy digestable sub functions.
  • Changed Visual rework of inflight sequencing UI to make it more readable.
  • Added Active sequence title bar is now highlighted in green.
  • Fixed sequences that had only decouplers could show flicking tiny deltaV and Thrust-to-Weight values.
  • Fixed some incosistant colouring of objects in the sequence window.
  • Added tank-to-tank fuel pump transfer in flight: every tank row in a part window now has In/Out buttons ahead of its fill bar. Tanks set to Out drain into every tank set to In on the same vehicle at 100 L/s per draining tank, matching propellants only. Arming requires the part window to stay open — closing it (or decoupling the part away) stops the transfer automatically. Transfer state is never saved; loaded games start with no transfer running.
  • Added empty-tank adoption: an empty tank set to In adopts the propellant mix of the tank feeding it (moles created then depleted, so no fuel is conjured), letting transfers fill a tank that starts empty or repurpose one drained of something else. Non-empty tanks keep the strict matching rule so propellants can't be mixed. The adopted mix is marked manually assigned so automatic reconfiguration won't undo it.
  • Added electrical cost to fuel transfer: 20 W per draining tank while fuel is actually moving, drained from the vehicle's batteries. Partial charge slows the flow proportionally; no charge stalls it. Armed-but-idle pairs (dry source, full receivers) draw nothing.
  • Added "Fuel transfer requires electrical power" alert: a persistent on-screen warning (same family as "No propellant for active engines") that shows while an armed transfer could move fuel but the batteries are empty, and clears itself when power returns or the transfer is disarmed.
  • Changed transfer In/Out buttons render green when armed and powered, yellow when armed without electrical power (updates live if the batteries drain mid-transfer).
  • Updated CorePropulsion A Assets
  • Imported CorePropulsion C Assets (Larger SRBs). The parts can be found under the 'Booster' EditorTag. Their engine game data is not yet configured.
  • Fixed the in-flight Sequences window never appearing on Linux with multiple monitors.
  • The window's screen anchor was captured once on its first draw,
  • but on X11 the first frames render before the window manager has placed the OS window
  • (a hidden GLFW window reports position 0,0), so when a save loads straight into flight the window was pinned
  • at desktop coordinates no monitor displays and stayed there, clipped outside the game window.
  • Anchored windows pinned to the main viewport now detect when they've ended up
  • entirely off the game window and re-run their anchor (also self-heals when the game
  • window is moved to another monitor mid-session).
  • Anchor placement now uses ImGuiCond.Always since ImGui silently ignores a repeated ImGuiCond.
  • NB - the one-shot behaviour is unchanged, gated by _anchorApplied.
  • Changed Sequence.TankMatchesMix removed; tank/mix substance matching now lives on Tank as HoldsMixSubstances, shared by the sequence fuel bars and tank mix assignment.
  • Fixed vehicle editor Save/Load menu writing empty vehicle saves: Overwrite looked up a universe vehicle by the save's name (never present in the editor) and serialized nothing, it now saves the tree being edited.
  • Fixed saving in the editor using the vehicle's stale part tree instead of the live editing tree (the two only re-sync on editor exit), and New refusing to save a vehicle built from the main menu that had never been launched.
  • Changed New/Overwrite in the Vehicle Saves window to offer the same choices: the vehicle being edited (labelled "(Existing Vehicle)" when there is one) plus any unattached trees - selection popup only when there is more than one option.
  • Imported CoreFuelTank B Assets (bay parts). Not yet configured as fuel tanks.
  • Fixed engines and thrusters could still be switched on/off from the part window on a vehicle with no control module (e.g. after decoupling them away): the Active checkboxes, the Decouple menu item, and the staging key are now locked out without a control module, matching the flight computer lockout (disabled controls + "No vehicle control module." tooltip, staging shows the standard lockout alert). Editor unaffected.
  • Updated CoreServiceModule A Assets. This removes the old service module Parts. Internal storage connectors now available but not yet configured.
  • THE REMOVAL OF THE OLD SERVICE MODULE PARTS BREAKS OLD SAVES THAT ARE USING THEM
  • Changed fuel flow overlay drain-order numbers to render 4x bigger (and centered on their tank) as they were difficult to read.
  • Fixed a fuel line into a booster only granting the engine access to the single tank it plugs into: the whole same-stage stack feeding that tank is now drainable (flow overlay, drain orders, and tank auto-fill all include it).
  • Fixed fuel crossfeed being able to cross a decoupler into a different stage (e.g. a core engine reaching its radial boosters through the decouplers, bypassing the fuel line): fuel now only crosses a decoupler within the engine's own stage — different-stage tanks behind a decoupler require a fuel line.
  • Updated CoreElectrical A Assets and CoreStructural A Assets.
  • Changed In flight Sequence UI is now integrated with the GaugeCanvas System. The Imgui UI is drawn on top of a gaugeCanvas dressing.
  • Fixed AtM/Vac toggle button not working on sequence window when in flight.
  • Fixed a padding issue with the Navball Canvas that left a dead space above the navball.
  • Screenspace volumetric particles now sample from a generated worley noise texture, similar to how the plume trail and clouds do.
  • Fixed screenspace particle distortion when multiple volumetric particles are aligned in a row.
  • Fixed screenspace volumetric particle shadow banding. Previously for high density volumetrics this would results in clear outlines for where particles started and stopped relative to their screenspace tile.
  • Added explicit opacity value to particles. Previously opacity related values were getting packed into the emitters extra data. This has now been promoted to a core particle value allowing it to be specifically checked instead of packing it.
  • Fixed loading a vehicle in the vehicle editor left every engine unable to see its fuel (empty resource manager graphs, zero dV) until a part was edited: the resource managers were built before the saved tank contents were applied and never rebuilt.
  • Improved screenspace particle clustering to fix premature culling.
  • Maximum particle count for screenspace particles is now fed directly by the particle data buffers allocated particle count.
  • Added graphics setting to toggle screenspace particles on and off. This is currently disabled by default as the particles are heavily WIP and need improvements to their performance.
  • Fixed ImGui EndRegion getting called incorrectly if particle settings are off.
  • Fixed Sibling connector definitions got stomped in an asset reimport. This is because the were errantly authored in the CoreStructuralAAssets.xml file which is auto-generated. The definition has been moved to CoreStructuralAGameData.xml and re-expressed as a <SymmetryGroup> element.
  • Animating Parts now update their colliders correctly. This should allow landing legs to work but could use some more work on aligning the legs to the surface correctly.
  • Fixed random crash "Nullable object must have a value" in CelestialSystem.OnDrawUi: the nearest-orbit-point hover marker was read on the render thread while a background job could null it mid-frame.
  • Fixed nearest-orbit-point hover detection never registering for non-controlled vehicles and celestials: the orbit scan wrote its result to dead local variables instead of the fields the renderer reads.
  • Assorted screenspace particle performance improvements.
  • Removed dangling references to dev propellant files in mod.toml.
  • Fixed role affinity for tanks which were intended to feed thrusters.
  • Moved all tank game data out of the PartGameData mega-file and into the fuel tank file.
  • Converted volume units to display in liters, which gives a helpful intermediate unit between the old cm^3 (mL) and m^3 (kL).
  • Grouped tank volume sliders by configuration.
  • Minor tweak to ground impact particle settings.
  • Changed the tank-to-tank fuel-line connection max distance up to 100m apart.
  • Fixed fuel lines could be connected between two fuel ports mounted on the same part (a part linked to itself); pairing now rejects it with an alert and the preview line shows red.
  • Added quick fuel port placement: while connecting a fuel line, clicking a part that has no fuel port spawns one at the clicked spot and completes the line to it. The preview line tracks the cursor's surface point on port-less parts.
  • Changed fuel-line pairing to respect the editor's symmetry inheritance toggle: with inheritance off, connecting two ports links only the clicked pair instead of fanning out across the symmetry set. * Fixed fuel drain ordering for asparagus staging: tanks order by fuel-line crossings first and in-stack position second, with each crossing restarting the count. Mirrored booster chains now share order numbers and a stack two lines away empties before the stack one line away.
  • Fixed the resource flow graph anchoring fuel-line crossings to the wrong tank depending on the order parts were placed (drain-order numbers could differ between mirrored copies).
  • Changed the resource flow graph's drain-order computation to reuse scratch buffers across rebuilds instead of allocating fresh collections on every staging edit, decouple, or fuel-line change (no behavior change, garbage reduction only).
  • Added a warning when a fuel line is connected to a donor tank that's empty or holds a different propellant than the receiver: the line still completes (the situation can resolve itself later), but a heads-up flashes so it isn't mistaken for a bug when nothing flows.
  • Added a per-tank propellant-use toggle (editor tank controls and the in-flight part context menu): disabling a tank walls its propellant off from engines, thrusters, fuel-line crossfeed, and manual tank-to-tank transfer, while the tank stays fillable and still receives automatic mix assignment. The state persists through save/load and follows symmetry siblings in the editor.
  • Changed the fuel-flow visualization to color by actual carried flow: routes that genuinely deliver fuel stay green even when they pass through a disabled tank, while branches carrying nothing turn yellow with a cross at the midpoint.
  • A disabled tank shows its drain-order number crossed out in yellow. A disabled fuel-line donor that is only relaying daisy-chained fuel still reads green.
  • Added a green highlight on the engine or thruster whose fuel flow is being visualized, matching the flow-line colors; any other highlight reason (staging, resources, sequences) still shows red and takes priority.
  • Added feedback when a fuel transfer stalls because the source tank has propellant use disabled: the transfer buttons turn yellow and a persistent alert explains why nothing is moving.
  • Fixed the default-loaded rocket entering the vehicle editor with unassigned tanks and an incorrect fuel-flow display until the first edit forced a rebuild; tank auto-assignment now runs on editor entry (mid-mission vehicles eep their drained levels — only genuinely unconfigured tanks are assigned).
  • Fixed toggling the flow display from the editor's per-part "Visualize Fuel Flow" button not highlighting the engine/thruster part.
reddit.com
u/panic_in_the_galaxy — 1 month ago

Plumes drifting over time and dynamically merging and splitting

From blackrack on discord:

  1. A basic implementation of plumes drifting over time

  2. Visualization of plume merging: Individual emitters emit individual plumes, but to maintain performance, the plumes are merged into a single large plume when they expand, the lines in the first image show where the individual plume stop and the composite plume starts.

u/panic_in_the_galaxy — 1 month ago

Version 2026.7.5.4892

TLDR in the comments.

  • Changed the ground clutter render resources to use the SimpleGraphicsPipeline abstraction in preparation for multi-material support and render techniques.
  • Added a dummy tree model with 2 primitives to test ground clutter multi-material rendering in the future.
  • Added ground clutter material buffer and replaced all texture bindings with it. Ground clutter receives its material via gl_DrawID and a material buffer ID offset passed in via push constant, since the materials are global to the ground clutter renderer and the draws are local to each ecotype. In the future this will reduce the number of pipeline rebinds required when rendering ground clutter, since they'll only then need to be changed when the render technique changes.
  • Updated ground clutter colour, depth and shadow shaders to support the material buffer.
  • Added primitive material IDs to MeshReference to track which materials apply to which primitives. Could probably handle it better in the future if materials are ever actually loaded from the gltf, otherwise this avoids losing info about which material goes where.
  • Updated how materials are applied to ground clutter: Rather than defining one material per ecotype, all unique materials that can appear on any mesh in the ecotype should be defined. Then each object LOD (individual mesh / glb file) lists references to the ecotype materials that appear on that mesh matching the order of materials in whatever program was used to create them.
  • Added validation checks for XML ground clutter materials.
  • Fixed rebuilding the renderer causing a crash since the changes to how ground clutter pipelines are built.
  • Added multi-material support to the ground clutter renderer.
  • Sorted ground clutter primitives by pipeline. This means the renderer can batch all primitives using the same pipeline into one DrawIndexedIndirect call.
  • Added a debug tree ecotype to Earth, disabled in XML. It contains two primitives: Leaves and trunk, with a material for each.
  • Increased lateral distance to sample the terrain for central difference normals from 5 to 15 to reduce precision error.
  • Increased scratch buffer size by the minimum alignment.
  • Aligned the scratch buffer device address up to the next scratch buffer offset alignment. This should fix a validation error on AMD.
  • Implemented a pre-pass for collision detection between vehicles. At high time warp, this prevents Bepu from generating tons of spurious speculative contacts and dropping into expensive collision detection mode. In-game, this presented as 'hitching' (often quite severe) when time warp is very high and you had vehicles in crossing orbits.
  • Vehicles set to "ignite" no longer prevent the vehicle from going on-rails if there is no propellant available. This was a tremendous cause of slow performance after discarding stages.
  • Added a fast path for ocean-bound vehicles to go into the floating (on-rails) state when far away from the camera to avoid pointless buoyancy simulation.
  • Fixed vehicles not being able to go into the "bottomed" state properly when on the sea bed.
  • Added an alert for "no active engines".
  • Fixed vehicle angular velocity becoming corrupted when transitioning between CCI and CCF coordinate frames.
  • Added in-flight dV/TWR/Isp readouts to the staging window. SequencePerformance is now recomputed every tick for controlled vehicles from the VehicleUpdateTask worker (while the window is open), evaluated at the vehicle's true ambient pressure.
  • Added Isp to the sequence performance readout (header row in editor + flight, and the Delta-V debug window). Effective Isp = net thrust / (mass flow · g0), consistent with the dV formula.
  • The active sequence in flight reads as a live instrument: Isp and dV derive from the actual current exhaust velocity (per-nozzle thrust/mass flow at real ambient pressure and throttle) and TWR from the thrust actually being delivered — an honest 0.00 on throttle cut. With no engines ignited (or after shutdown) all three fall back to max thrust at the current ambient pressure, advertising the sequence's capability. Non-active sequences (and
  • the editor) keep their static user selected Vac/Atm estimates.
  • Fixed EVA kittens spawning at the door part's position, where their collision hull intersected the vehicle and physics kicked them into a spin. Kittens now spawn just outside the door: pushed along the full-part-origin-through-door direction by the kitten's own collision radius plus a small safety margin. This is still temporary as later we will add a ladder/spawn point to the model.
  • Added a collider to KittenBackPackPart (0.35m sphere covering the MMU pack and RCS nozzles). Without one the kitten fell back to the default 2x2x2m bounding-box collision shape, which dwarfed the actual kitten and collided with everything nearby.
  • Added GlintShininess, AtmosphereAttenuation and GlintFadeInPixelSize to
  • DistantGlintSettings (XML + editor sliders + DoubleReference round-trip +
  • clamps on load).
  • ComputeGlintAngleDegrees now folds body-up roll around the camera view axis
  • into the pose angle. The forward-only term degenerated face-on, so a ring of
  • identically-oriented-but-rolled vehicles all sampled the same curve position
  • and glinted in unison; adding roll keeps them distinct.
  • Added ComputeGlintAtmosphereTransmittance: mean camera→vehicle transmittance
  • through the camera's nearby atmospheric body, reusing the sun-lighting
  • analytic model. ComputeGlintMultiplier fades the glint toward GLINT_MIN by
  • this transmittance, scaled by AtmosphereAttenuation (0 = ignore, 1 = full),
  • so glints dim correctly when viewed from a planet surface.
  • (Currently disabled) Glinting vehicles now fade their sprite in at max(SPRITE_END,
  • GlintFadeInPixelSize) instead of SPRITE_END, so the glint can appear at the
  • apparent size where the vehicle's shape stops being discernible. SPRITE_END
  • stays as the floor so the slider can't defer the sprite past the plain path.
  • This feature is currently disabled as the fading between mesh and sprite looks
  • very bad.
  • Removed the hard-coded GLINT_SHININESS constant; the exponent is now driven
  • by DistantGlintSettings.GlintShininess.
  • Replaced the magic 0.25 in the alignment→spec lerp with a named
  • GLINT_MIN_ALIGNMENT_SPEC constant.
  • Added an optional xGridStep parameter to CubicHermiteSplineEditor.EditSpline
  • / DrawGridLines. Angle-keyed glint curves pass 45° so X labels sit on fixed
  • equal intervals instead of the zoom-dependent power-of-two step.
  • Fixed missing and/or miscolored initial points in near-planet danger trajectory visualization.
  • Fix glints popping when fading in due to WIP code for making the glints fade in sooner. Glints still fade in too late, which is being worked on.
  • Fixed several O(n²)-class performance issues when decoupling parts from a vehicle: Vehicle.Split's staging tail and PartTree.ResetStaging are now bulk-guarded (previously every SetStage rebuilt every resource manager — one full rebuild per part); part and module removal during a subtree transfer is single-pass instead of a linear List.Remove per item; the module-state transfer resolves its reflection once per module type as a cached delegate
  • instead of MethodInfo.Invoke per part; RemoveSpentSequences batches its removals; and ProcessTree membership checks are O(1) set lookups instead of linear scans.
  • The split-off vehicle is now configured once instead of twice: body-frame normalization happens before the vehicle is created, so the constructor computes mass properties and builds the Bepu collision compound against final geometry, eliminating a redundant full reconfigure (and a collision-compound teardown/rebuild) per decouple.
  • Fixed module swap-removal leaving stale indices in the id-lookup dictionary (lookups could return the wrong module after parts were removed), and re-adding a previously removed module no longer throws.
  • Fixed rolling resistance to use the inverse inertia, not the inverse mass.
  • Ramp resistance to zero as the body stops rolling to avoid "holding up" bodies against the force of gravity.
  • Increased rolling resistance overall to promote bodies settling down faster.
  • Animations are now sampled in local space and then collectively transformed into TRS space. Previously we were transforming each pose into TRS.
  • Added a rotation specific sampler. There are usages where we only want to use the rotations from a sampled pose, however we are sampling the entire pose, and then throwing 2/3rds of it away. Now we are able to only sample the rotations if we want.
  • The kittens blink animation is no longer always sampling, previously it was always sampling even if it wasn't used for anything.
  • Set the vehicle editor's axes gizmo to match the vehicle ASMB frame orientation.
  • Fixed out-of-frame-order particle updates which show up as a large offset in CCF.
  • Add rotating-frame ficticious forces to particles to avoid them drifting away from vehicles at orbital speeds.
  • Integrate particle positions with velocity verlet to quash error at orbital speeds.
  • Restored kinematic measurement calcluations while bodies are in contact with one another.
  • Fixed alpha-to-coverage not working with MSAA enabled following the ground clutter renderer changes.
  • Added AlphaToCoverageEnable bool to SimplePipelineCreator. Technically owned by the multisample state, but the way SPC is set up means it's either enabled for the entire render pass or not at all. This allows A2C to be enabled only for pipelines that require it.
  • Decoupling - More performance improvements. collapsed the ~3 derived-data rebuilds per split to 1 — the part transfer skips cache recomputes the follow-up vehicle reconfigure redoes anyway.
  • Fixed Part.Disconnect leaking guard depth on early exit, permanently suppressing cache resets.
  • Double buffering of the sequences to avoid racing and the UI display.
  • Significantly decreased the size of terrain patches to cut down on terrain sampling costs.
  • Added Fuel lines functionality. Player-defined one/two-way fuel crossings between parts (across decouplers or unconnected parts).
  • Added scaffolding UI in the Resources window pending dedicated fuel-port parts.
  • Fixed flow visualization turning off on any staging/sequence/fuel-line edit.
  • Fixed target track burn gizmos for normal/outward being on the wrong plots.
  • !THIS BREAKS SAVED GAMES AND SAVED VEHICLES!
  • Created new versions of Gemini7 and Rocket.
  • Created the ThermoToolkit project to help compute thermodynamic properties of volatile substances (ones which are expected to change phase during the game) and reactions (combustion, decomposition, etc.) for propulsion and other processes. This should be shipped with the game and available to modders.
  • Added many new data fields to substances.
  • Refactored combustion processes into several sub-categories of a new concept: Reactions. The main takeaway from this is that processes no longer hardcode an O/F mixture ratio, and we can support thermal rockets (like arcjets, solar thermal, nuclear thermal) in the future.
  • Added many new potential propellants and new reactions, notably methalox, monopropellant hydrazine, and APCP.
  • Replaced pre-configured prop tank combustion processes with an affinity, which can be Engine or Thruster (or both) at the moment. Unless overridden by the player, prop tanks will try and fill themselves with the most sensible propellant mixture.
  • Added many new structural materials to use in present and future calculations (aluminums, steels, inconel, carbon fiber, etc.).
  • Removed dead PartTemplate.Tank field.
  • Removed Nepetalactone, Actinidine, the LR91 Dev engine, and its associated exhaust configuration.
  • Added trees to Earth. Currently 5.5km render distance, and quite demanding with shadows enabled at the moment. They have no distribution so they spawn everywhere in grass/grass mountains, including at launch sites and underwater. Disable ground clutter to turn off the trees.
  • Reverted subsurface scattering implementation to the reference, which depends on the view direction.
  • Changed how double-sided normals are handled - the normal is still flipped, but it is then biased toward the view direction.
  • Refactored intermediate shaders involved in ground clutter reordering and dispatch command generation to use SimpleComputePipeline.
  • Fixed alpha-to-coverage state not updating when rebuilding the ground clutter pipelines.
  • Added debug GPU markers for ground clutter stages (colour, depth, shadow depth) as well as marker per-ecotype. For ex, grass will appear separately to trees in NSight now. Should make debugging ground clutter rendering easier.
  • Enabled distance fade dithering on the trees.
  • Added alpha-to-coverage support for the distance fade dithering. With MSAA enabled, the trees will fade out more smoothly depending on MSAA level.
  • Wrapped activation input application in bulk change guards to prevent repeated reconfigurations when dropping multiple stages.
  • Fixed gemini7's engine not being active on game start.
reddit.com
u/panic_in_the_galaxy — 1 month ago

Version 2026.7.4.4860

I have a TLDR in the comments.

  • Fixed WASDQE rotation controls now appy correctly to face-snapped parts in Vehicle Editor.
  • Changed FaceSnapped Parts now snap aligned with the centre of the child part.
  • Fixed FaceSnapped parts no longer drift across the surface when using the rotation gizmo.
  • Fixed FaceSnapped parts no longer jiggle their rotations when rotation snapping is enabled, their rotations are now locked to the surface normal.
  • Changed VehicleEditor. Disconnected parts will be highlighted in red when hovered, connected parts will be highlighted in green.
  • Fixed Vehicle Editor. duplicating a part will now reset its rotation values (previously the duplicated part could end up with some odd offsets if it was face snapped).
  • Added Local/Assembly reference frame toggle button for rotation and translation gizmos in vehicle Editor.
  • Particles will no longer spawn if the sim speed is high enough that they will spawn and be destroyed in the same frame, this would heavily impact performance if needing to spawn many particles on the CPU every single frame, with no visual impact.
  • When an emitter spawns multiple particles in a single frame their localOffset matrix is decomposed all at once, instead of once per particle. All particles spawned at the same time from the same emitter will have the same local offset.
  • Particle updater now has virtual functions that can be overriden, this means that the screenspace collisions and the planet color updaters now derrive from the base Particle updater instead of being custom implementations.
  • The particle system now holds ownership of writing to the shared GpuEmitterParams buffer. Previously this was owned per particle updater. This removes redunant buffers and code maintenance across different particle updaters.
  • The particle system no longer directly returns particle emitters, instead they return handles to the particle emitters. This means that because particle emitters return themselves automatically to the pool, any system that accesses a particle emitter in order to update it over time, there is no guarantee that it the emitter it is editing has been returned to the pool or not. This is a pattern that was previously implemented for the ice particles but it was only optional. Now it is required to access emitters via their handles instead of touching them directly.
  • Decoupled particle movement and scale. Previously shrinking particles down overtime and updating the particles position were tied into the same particle updater. This meant that if you wanted to increase the scale of the particles overtime such as for volumetric particles you would need to redo the particle movement inside that updater aswell.
  • Removed VolumetricFade particle updater. Instead SimpleMovement and GrowOverLifetime should be used as a replacement.
  • Made part-cursor tracking more robust in the vehicle editor.
  • Added SequencePerformanceList class and instance to the PartTree. This will be used to store performance information for each sequence in the vehicle.
  • Added calculations of TWR and DeltaV for each vehicle sequence in the vehicle editor.
  • Added TWR and DeltaV to the sequence UI in the vehicle editor.
  • Added debug UI for showing Performance information on DeltaV.
  • Added sea level data to EngineController.
  • Added environment data to each sequence so we can save/load environment settings for saved vehicles set by the player for each sequence used to calculate performance data.
  • Added VehicleEditor, Holding shift while pressing wsadqe keys will rotate parts in 5degree increments.
  • Removed old connector blocking code that was no longer working correctly but still fairly expensive.
  • Kitten animations now search for the requested keyframe at a given time, using a binary search instead of the previous linear search. This means that for longer animations instead of searching through every keyframe from the start each time, O(N), we only need to check up to O(log N).
  • Animations now use a minimum blend weight. If their weight is below this threshold then we can safely skip sampling the animation.
  • Assorted optimizations to how animation data is passed around and referenced.
  • Fixed parameter naming in AnimationDirectionalBlend.cs.
  • We now store vehicle editor part offsets in their own variable so they don't get lost with other editor functionality.
  • Fixed disconnecting from a connector not resetting part rotations properly.
  • Fixed decouple parts FIRST before calculating dV and TWR for a sequence.
  • Fixed Incorrect inclusion of parts on the wrong side of a decoupler in Sequence performance calculations.
  • Added Plane collision particle updater. This simply adds a collider along a given plane.
  • Ground impact particles now use the plane collider particle updater instead of the screen space collisions. While this can give some artifacts at certain impact positions, it is alot more stable than the current screen space collisions which result in alot of jitter aswell as being perspective based. This is likely to be reviewed again in the future to settle on a proper collision implementation for particles.
  • Disconnected FromSurface connecting logic from using where a Part was grabbed. Also, added FromSurface connector biasing so overlapping FromSurface connectors can be rated and then chosen from the best based on screen-space distance, facing alignment, and distance from camera. This should probably include regular connection connecting in the future. SoonTM.
  • Added CpuProfiler class. CpuProfiler is a lightweight profiler window that can ship with the release build. Currently it is only available to profile the main thread. Use Profiler.Mainthread.Begin() and Profiler.MainThread.End() to profile sections of code for execution time and GC allocations.
  • Fixed viewport offset when handling screen space aiming for connectors in the vehicle editor.
  • Fixed unnecessary resource manager changes and tank filling when hovering parts over each other in the vehicle editor.
  • Vehicle Editor, made the angle snapping option with face snapping more stable when moving your mouse within an arc increment.
  • Updated Imgui backend to support custom shaders
  • Modified gauge renderering backend to draw to GUI directly: saving on VRAM, renderpasses and draw calls
  • Fixed issue where fuel flows across sequences particularly radial decouplers and across to symmetry sets.
  • Fixed sequence resource group automatic fuel tank filling in the vehicle editor.
  • Fixed some performance improvements around management of running of costly resource groups and sequence processing in the vehicle editor.
  • Renamed Stage/s to ResourceGroup/s in the code to reflect what they actually are.
  • Fixed calculation of total thrust vector of Delta-V to be the sum of all vectors regardless of their overall direction/alignment to the vehicle's forward axis.
  • Very significant improvement to game performance when skimming low over (but not impacting) the terrain. This is particularly noticeable on airless bodies like the Moon, where ground speed can be quite significant even very close to the ground.
  • Allowed vehicles in the freefall state to be in the CCF physics frame. This avoids the mandatory small timesteps that would otherwise be required when inside the terrain band.
  • Incrementally propagate a vehicle's future trajectory when inside the terrain band to check for future terrain collisions (e.g. slamming into a cliff). This allows us to remain in the cheap freefall state until nearly the last moment. This also gives us a precise terrain impact point.
  • For trajectories that are undergoing propagation, show any unchecked segments in a new "pending" color (currently the same as the inactive color).
  • Replaced the textual "X Impact" marker with an ImGui cross made of line segments that sits precisely on the end of the trajectory. For the active vehicle, we also draw the CCF (celestial-fixed) position of impact, which takes into account the rotation of the parent body.
  • For the final patch in a trajectory, allowed it to be continually refreshed to check for new celestial body encounters OR for terrain collisions (or both), depending on the geometry of the orbit.
  • For the active vehicle, draw all trajectory segments that are in the atmosphere or inside the terrain band as red to indicate that the orbit is not long-term stable.
  • Cache the "danger trajectory" state in OrbitPointCce so we don't have to constantly re-check it.
  • Bias the active vehicle's orbit lines and markers to draw on top of the ones from other nearby vehicles to avoid spent stages visually stomping on your trajectory.
  • Fixed SetStage/SetSequence rebuilding every resource manager once per part in a subtree. This splits recursion from the cache reset so a change triggers one rebuild instead of N+1.
  • Fixed bulk stage renumbering (staging, docking merge, editor attach) rebuilding managers per part. This brackets the loops in a batch update so they rebuild once, turning O(N^2) into O(N).
  • Fixed empty sequences and resource groups re-walking the whole part tree on every access. This uses an explicit cached flag so empty groups no longer re-scan all parts every frame.
  • Fixed stage add/remove/reorder rebuilding every resource manager twice. This drops the redundant ResetCaches() since the caller already rebuilds once, halving the cost per edit.
  • Fixed managers hitting the GC finalizer queue on every rebuild. This removes three pointless empty finalizers so discarded managers are collected immediately.
  • Fixed CreateOrders allocating a duplicate set of arrays for the reverse flow ordering. This shares the existing level arrays in reverse, halving per-rebuild allocations.
  • Fixed a crash (ObjectDisposedException) when loading a save from the vehicle editor. This makes the editor's deferred Dispose skip reconfiguring/controlling/following a vehicle that the save load already destroyed, via a new Vehicle.IsDisposed flag.
  • Optimised VehicleEditor when attaching and positioning complex part trees (i.e symmetrical boosters, probes, picking up and replacing large portions of a vehicle). This could be very slow due to many caching operations being re-triggered for every part rather than just running on completion, and also due to symmetry caching being regenerated every frame.
  • Changed Deserializing part trees no long rebuilds the tree at each part deserializatioon step.
  • Changed Cache resets on StageList and SequenceList were running for each part placed when duplicating a part tree (i.e radially attaching a premade booter with symmetry) this was causing huge frame time lag when adding or removing complex part-trees from the vcehicle. This is now run in EndBulkChange().
  • Changed VehicleEditor, The currently grabbed parts Symmetry and attachment settings are cached rather than torn down and regenerated every frame. This was very costly both in allocations and cpu time.
  • Moved In-line decrement inside if statement in Sequence.EndBulkChange onto its own line for clarity.
  • Moved SequencePerformance (per-sequence Delta-V/TWR) recompute off the main thread onto a background ConcurrentWorkers job so it no longer hitches the editor frame.
  • Added SequencePerformanceJob, queued end-of-frame only when dirty and drained at the top of the next frame; PerformanceSequences getter is now cached-only (one-frame-stale) and a new IsDirty flag skips scheduling on idle frames. Editor tree only for now — foundation for flight
  • dV/TWR via VehicleUpdateTask and a merged sequence UI.
  • Added basic underwater post process. This lines up with the current simulations waterline. The underwater post process renderer will only run if the camera is able to be under the water height, that is the effect is not running continuously.
  • Improve preset specular curve to be two spikes to approximate most cases where a vehicle has a few metal parts that have high specular values in their material.
  • Fix default curve to use zero specular curve instead of the preset one, and the default curve should be no glints applied.
  • Change glint RotationSampleMultiplier from 2 to 1, as 1 is the physically correct number that matches the vehicle's rotation.
  • Added Orthographic camera option to Vehicle Editor. Toggle Button is in Top Right for now.
  • Added navigator ball to vehicleEditor, displays current Camera rotation and allows for axis snapping when clicking on x/y/z control ball widgets.
  • Fixed a performance issue when attaching multiple complex part trees in symmetry in VehicleEditor. We re-use the previous frames attachment and symmetry copies if applicable.
  • Merged the editor and in-flight Sequences/Resource Groups UI into shared DrawSequenceContent/DrawResourceGroupContent used by both windows, removing the duplicate flight code.
  • Made flight staging fully editable, routing all edits (editor + flight) through the InputEvents buffers so they apply safely on the main thread.
  • Added StagingDrawContext to gate flight-only activation
  • display vs editor-only dV/TWR + Vac/Atm toggle.
  • Relocated sequence part icons into a static StagingIcons so they show in flight.
  • Unified "Sequence"/"Resource Group" labels and removed dead Sequence.Highlight.
  • Added Experimental Free Camera Option in vehicle editor, it is available via the toggle button in the top right. Orthographic view is disabled while in Free camera mode.
reddit.com
u/panic_in_the_galaxy — 1 month ago

Version 2026.7.2.4824 and 2026.7.3.4826

Version 2026.7.2.4824

  • Changed Resource Groups are now behind a tab on the stage window. They are still set to automatic by default.
  • Changed VehicleEditor, Removed menu bar from Parts Window.
  • Fixed crash when editing un symmetrical part (regression form previous commit)
  • Changed Vehicle Editor Staging Window, Hovering over parent stage elemnt now automatically highlights all items in the stage. This has replaced the Highlighted checkbox.
  • Fixed copy paste error in DefaultAssets.xml. The scale icon would sometimes incorrectly appear where the angle snapping icon could be.
  • Adsed automatic fill logic to vehicle editor. When we attach an engine any empty tanks in the same stage will be automatically filled with that engines combustion resources.
  • Changed VehicleEditor, grabbed part now moves with the cursor when zooming or translating.
  • removed Shift + e hotkey opening current craft in editor. This feature is still available through debug menu.
  • Fixed Symmetries were not getting saved when saving a craft in the editor. This fix only applies to newly created craft.
  • Changed naming of stage back to sequence, pending further design discussion.
  • Made the physics debug map state variables static.
  • Added ability to define default combustion process to a Tank template.
  • Added prefill logic for tanks that have a default combustion process defined when attached in the vehicle editor.
  • Added MMH_NTO_1.6 (RCS fuel) to the three spherical radial tanks so they are automatically prefilled with RCS fuel.
  • Added basic wetness value to vehicle shaders. When a vehicle falls into the ocean any parts underwater become wet. Once a vehicle is out of water it will begin to slowly dry off.
  • Added WIP frost effect to vehicle shaders. This is not currently visible, however the core of the effect has been implemented in MeshIndirect.frag.
  • Add a specular preset glint curve which is copied to all newly created vehicles. This allows newly created vehicles to have a good approximate starting curve instead of the default zero curve. The preset curve has two large peaks and produces good looking glints when tested with the current vehicles.
  • Save glint data on game save. This includes all glint curves for each vehicle and editor settings.
  • Use vehicle normals for the irregular glint curve calculation if available instead of the bounding box. Normals are currently available in the C# code for Gemini, Rocket, and newly created vehicles, but not the Kittens as the Kittens render their meshes using a different system. If normals aren't available, the bounding box calculation is used instead as a fallback. The normals allow a more accurate calculation as glints depend a lot on the variation of normals across the vehicle surface (e.g. satellites in real-life have a lot of panels with widely varying normals). The calculation is done by taking the normal variation across the x, y, and z axis of the vehicle and averaging the results into a single curve, representing the averaged axis. This final curve is able to be represented nicely as 0 - 1 values across 360 degrees, which is how the current glint curves are represented.
  • Fixed vulkan validation on shutdown due to frost buffer not getting disposed of properly on shutdown.
  • Cleaned up frost texture parameter names.
  • Change milky way default quality from "Medium" to "High" as there was a recent speedup of about 1.5x across all quality settings from Dan (commit hash a3438d6). There is also a significant jump in quality from Medium to High, so I felt this change would provide a lot of benefit to players.
  • Removed deactivate of part modules when decoupling.
  • Fixed loss of control inputs on split vehicles. This means engines, etc, etc will continue to burn now after a decoupling event.
  • Added resource groups (Stages) back into the staging UI in flight if manual resource group mode is off.
  • Remove old ROCKET_GLINT_ID string.
  • Hotfix - Use the preset specular curve instead of auto generating the irregularity curve as the auto generation is causing stutters.
  • Made vehicle editor snapping align more correctly by utilizing both a forward and up vector.
  • Vehicle frost now supports sampling from a mask packed in the TFI_Heat textures B channel.
  • Turned off face snapping when the editor is still trying to compensate for camera smoothing. This is a temporary fix for part trees rotating all over when we try to handle face snapping and compensate for camera smoothing at the same time.
  • FxTemperature now goes between -1 to 1 instead of 0 to 1. Values below 0 are used to determine how frost should build up on the exterior of vehicle parts.
  • Added new graphics settings and category for vessel effects. This includes water, frost aswell as thin film interference and vessel ambient lighting (Which were previously part of the general graphics category). By default frost is disabled as it is still a WIP.
  • Temporarily removed the frost mask from MeshIndirect.frag. We currently do not have any updated textures yet with frost masks, meaning with the mask enabled no frost is visible.
  • Fuel Tanks are now PartModelDynamic instead of PartModels, this means that they will render with the correct temperature and frost hash defines.
  • Fixed heat bleeding through at lower temperature values for the vehicle frost.
  • Change glints to update after part tree modification so that splitting and a few other places in the code are also regenerating the glints.
  • Change the glint auto-irregularity curve to use the bounding box calculation.
  • Implement easy optimization to only compute width once in the bounding box calculation. Before applying this optimization, using a profiler revealed that we can have about 1 million parts before the bounding box calculations over all the parts add up to 0.3ms, which is where it starts becoming significant on the main thread.
  • Reword glint "Auto-generate from mesh normals" to "Auto-generate from bounding box"
  • Added full disposal to RecreateResourceManagers so that they don't leak down to the GC finalizer.
  • Removed redundant direct call to RecreateResourceManagers in PartTree.RecomputeAllDerivedData (perf improvement).
  • Changed usage of memoryOwner to arrays in ResourceManagerBase - eliminates ArrayPool rent/return/clear overheads (perf improvement).
  • Changed temporary visited parts List to HashSet in ResourceManagerBase - Further memory usage improvement.
  • Changed SpanOwner to stackalloc in ResourceManager.FindReactantsNodeGroup - stack allocation so no heap hit.
  • Removed unnecessary UpdateAfterPartTreeModification from Vehicle class (perf improvement).
  • Reworked thin film interference and frost ordering so that thin film interference is applied first and then frost acts as a layer overtop of it, instead of thin film interference applying overtop the frost.
  • Replaced spec constant usage with preprocessor macros in the ground clutter shaders.
  • Removed some logging related to ground clutter compile times.
  • Fixed ground clutter terrain blending not being affected by the graphics setting.
  • Added first pass on improving connection interactions when connecting items to to fuel tanks with multiple aligned connectors. (additional data authoring is still remaining to bring most parts into this new behaviour)
  • Fixed 2m engines were not snapping to 2m internal connectors.
  • Added Aligned definitions for other fuel tank connectors.
  • Reworked the experimental volumetric particles so that they spawn based on the fuel tanks temperature. Previously the only criteria for the particles to spawn was for the fuel tank to not be empty. This also means that they are able to properly free themselves back into the emitter pool once the temperature warms back up.
  • Fixed an asyymetic connection behaviour between capsules and tanks.
  • Fixed Engine Plates connections not flagged as internal.
  • Added aligned definitions to Connectors on Engine Plates
  • Reworked solid ice particles to spawn based on the fuel tanks temperature. Previously they spawned attached to the exterior of the vessel and would randomly dettach as the vessel moved, now the particles spawn already dettached as we are no longer relying on just particles for the frost effect.
  • Initial frost blend implementation. Instead of a linear fade in this has the frost grow across the surface of the vessel. This was implemented in still a WIP and not currently visible in game.
  • Added Clicking deploy/retract button on a part that has symmetrical parts (i.e landing legs, solar panels) will cause all symmetrical parts to execute that action if possible.
  • Added basic spawn logic for water splash particles when a vehicle lands in the ocean. This is currently not tied to any particle effect and is purely just the logic to detect when to spawn particles.
  • Added basic water splash particle effect. This is just a placeholder particle effect that adds some basic volumetric particles on impact.
  • Added Tooltips in Vehicle Editor for Part electrical consumption and production.
  • Added Force info to Tooltips in VehicleEditor for parts with a decoupler component.
  • Improved temperature values for fuel tanks and thrusters. Previously there was a disconnect between the thrusters and the fuel tanks temperatures. The temperatures are now alot more stable.
  • Added a temporary branch in MeshIndirect.frag. If a part does not have a valid Tfi_Heat texture, it defaults its frost mask to 1. Once we have proper frost masks implemented this can be removed, however for not it fixes an issue with fuel tanks not having any frost build up on them.
  • Update KSA and Planet.Render.Core shader code for the current Brutal.ShaderC API. (#93)
  • Bump RocketWerkz.Brutal.ShaderC to 2026.7.0
  • Remove IsLocal conditional project references from Planet.Core and Planet.Render.Core
  • Changed VehicleEditor, When placing tanks radially, tanks will prioritise connecting to a radial decoupler FromSurface conncector and fall back to surface snapping if a FromSurface connection can not be aquired.
  • Fixed Loading a game while in VehicleEditor now closes the editor.
  • Fixed an error where a bogus frame conversion would cause billions of g's of gravitation when escaping from a body under full physics.
  • Added primitive support to MeshReference.
  • Added preliminary multi-mesh and multi-primitive support to ground clutter. Does not yet support multiple materials per object.
  • Fixed grass LOD0 sharing the same model name as a particle mesh.
  • Fixed ground clutter terrain blend end distance not being calculated properly.
  • Merged primitive counts and offsets into one buffer.
  • Renamed 'submesh' buffers to 'primitive' to be more in line with the gltf format.
  • Added frost masks to CorePropulsionA and CoreFuelTankA textureAtlases.
  • Removed temporary shader code that was added while waiting for frost masks to be created which defaulted frost masks to always be enabled.
  • Minor optimization so that thin film interference only gets sampled if there is a valid tfi texture.
  • Cleaned up FxTemperature.cs
  • Added Holding middle mouse button while in editor maps mouse up/down to zoom in/out.
  • Cleaned up some shared functionality in the symmetry handling in the editor.
  • Reverted a decoupler symmetry change to fix SymmetryLinks getting phantom entries.
  • Fixed an old bug related to symmetry inheritance without symmetry that caused a part to not properly get assigned a SymmetryLink in some nested cases.
  • Added SequenceGroups are now serialized on Part (rather than being automatically derived from Symmetry information). Any part of the same type in the same sequence can form a sequence group by dragging/dropping it onto another valid part. Parts can now also be dragged out of a sequence group.
  • Fixed issue on Linux X11 with multi-monitor layouts. The symptoms include dropdown menus and tooltips being offset when the game is being displayed on the non-main monitor. This does not affect Windows or Wayland Linux. There is a couple of side-effects of this change. Popups and tooltips can overlap the GNOME top bar or dock. Detached windows can be placed under panels.
  • Ambient occlusion now uses the prepasses normal texture as an input. Previously it was recreating the normal from the depth input. This means that we now get ambient occlusion using the same normals the fragment shader uses, instead of an approximation.
  • Changed Improved drag/drop interaction feel of items in sequence window in vehicle editor. The dragged part is now previewed in any potential valid sequence position.
  • Changed SequenceOrder (i.e. the parts index in the sequence) is now serialized at the part level.
  • Chnaged Selected Diameter is retained when swapping between regions in the part window in VehicleEditor.
  • CACAO ping pong textures are now 8 bit instead of 32 bit, this saves ~0.2ms with no noticable loss in quality.
  • Added new star binary, provided by community member u/briarthrain. This fixes a number of problems with alignment of stars, brightness, smimmering. This is the product of intense work by them, and the community, to generate more appropriate data files for star binaries. Future update will see options for players to select more higher density ones.

Version 2026.7.3.4826

  • Significantly improved the performance of terrain sampling by skipping most unnecessary work.
  • Place the terrain patch at the predicted vacuum impact point rather than directly under the vehicle to avoid sampling terrain we will never hit.
  • Don't sample terrain at all until an impact is imminent.
  • Improved tracking of when resampling is actually necessary.
  • As a side benefit, improved the prediction of the terrain impact point as seen by the Kepler orbit lines (by using the same method).
reddit.com
u/panic_in_the_galaxy — 2 months ago