Volumetric exhausts are rendered as discrete individual volumes, each of which has its own emissive, absorbing and scattering components as well as noise and animations.

Because raymarching many volumes is expensive, areas of the screen where many exhausts are visible have exhausts rendered at a lower resolution, but edges are preserved.

The exhaust system is geared towards handling a large number of partially-absorbing plumes, specific technical choices are made to support this:
This approach may be revised in the future if needed.
The volumetric exhaust instance is added directly to the Thruster or Engine nodes.
This section will focus on configuring templates.
All the settings can be tweaked in-game from the debug UI (accessible with the terminal command Exhaust which can let you tinker and see what the settings do.
Rendering
For every exhaust a bounding cone or box is determined inside which the exhaust is raymarched.
Example showing plumes and their bounding volumes
Because raymarching many volumes is expensive, areas of the screen where many exhausts are visible have exhausts rendered at a lower resolution, but edges are preserved.

2048 plumes on-screen, left image shows the final result, right image shows a resolution “heatmap”, areas in yellow and in red are rendered at a progressively lower resolution than the area in green
The exhaust system is geared towards handling a large number of partially-absorbing plumes, specific technical choices are made to support this:
- Exhausts are instanced and rendered all together, without ordering
- Occlusion and overlapping is handled via approximate order-independent-transparency
- High instance-count areas of the screen are rendered at low resolution to preserve performance
This approach may be revised in the future if needed.
Configuration
Configuration is split into a Template (VolumetricExhaustTemplate) which defines how the plume should look and an instance (VolumetricExhaust) which defines which thruster or engine the plume is added to. Templates should be added to an <Assets></Assets> node to be loaded from mod.toml.The volumetric exhaust instance is added directly to the Thruster or Engine nodes.
This section will focus on configuring templates.
All the settings can be tweaked in-game from the debug UI (accessible with the terminal command Exhaust which can let you tinker and see what the settings do.
Shape
Controls the shape of the plume. The plumes are a truncated cone, changing the settings can change the truncated cone into a regular cone or a cylinder.- StartRadius: Defines the initial width of the plume at its base
Different angle settings
- Length: Specifies the total distance the plume extends from its start point
Exhaust
- ExhaustSpeed: In m/s, controls how fast the plume moves in space, which can be seen when noise, or animated density/angle changes move through the plume.
Absorption
Controls the light absorbing/scattering part of the exhaust, some settings exist here for artistic control of the plume look and to better match RCS references.Different density settings
- DensityFallOffPower: Controls how quickly the density falls off from the start of the plume towards the end
- ScatteringBrightness: The brightness of the scattering part
- PhaseEccentricity: Controls how the brightness of the plume changes based on the viewing angle relative to the light source. High values make the plume very bright when looking towards the sun but difficult to see otherwise, low values make the brightness more uniform with light directions.
- InnerConeSize: The size of a second denser region inside the plume, from the axis of the plume to the outside, this serves to give a more interesting visual look to plumes, values between 0-1
Different inner cone settings
- CoreDensity: The density of a denser region at the start of the plume, from the emitter
Different core density/falloff settings
Emission
Controls the emissive part of the plume- CoreLength: Controls the length of the emissive part relative to the total plume length, 0-1 values
- CoreHeight: Controls the height/radius of the emissive part relative to the total plume height, 0-1 values
- Brightness: The brightness of the emissive part
- ColorGradient: 4 colors defining a gradient for the emissive part
- Flow
- PressureWaves:Creates the visual effect of shock waves traveling through the exhaust. Mach diamonds will appear on the areas of high pressure (but can be offset, see mach diamonds below)
- PressureWaves:Creates the visual effect of shock waves traveling through the exhaust. Mach diamonds will appear on the areas of high pressure (but can be offset, see mach diamonds below)
Different period settings
Overlap 0.6 vs 0.0
Top: with deformation. Bottom: without
Top: with fade. Bottom: Without
- StartOffset: Offsets the deformation phase towards or away from the emitter


















