joystickPlatform

Linux Native Client

In Progress
It's our intention for s&box to be cross-platform, a native Linux client is a good start.

Auto-detect Graphics Settings

Planned
We have Low/Med/High graphics settings but default to High, we should automatically select one based on the user's hardware.

Controller UI

Planned
Make it easier to make UIs that can be used with controller.

Linux Dedicated Server

Complete
Nobody wants to run servers on Windows. The engine builds for Linux, there are some runtime bugs to resolve still.
buildEditor

Mapping Mesh Merging

In Progress
A small unnoticable compile step for scene map meshes that merges them together into one.

Material Editor 2.0

On Hold
We want to remove the native material editor, simplify it all and put it in the inspector.

Avalonia UI

Planned
We want to replace Qt with Avalonia UI for the editor UI, a native C# solution that should be easier to work with and faster.

glTF Support

Planned
Support importing glTF models into the editor.

Auto LODs

Complete
Automatically generate levels of detail for meshes on import, so creators don't have to manually author LOD chains. The system should produce good quality reduced meshes with minimal effort. 

Project Templates

Complete
Provide a set of starter project templates - FPS, third person, sandbox, blank - so creators can hit the ground running with a working foundation instead of starting from scratch every time. 

Standalone License

Complete
Allow developers to publish games directly to Steam.

Mapping IO Components

Complete
We don't have an easy way to add buttons or doors to maps...
auto_awesomeRendering

GPU Resource Viewer

In Progress
We don't have a good way of inspecting all resources currently resident on the GPU. We want to be able to quickly glance and filter down what our GPU memory is being used for.

Bindless Material Pipeline

In Progress
Material changes are expensive to our frame time, we can avoid rebinding textures between materials, which in turn lets us instance more stuff together.

Skinned Instancing

In Progress
Skinned meshes currently can't be instanced, meaning every animated character is a separate draw call. We want to support GPU skinning with instancing so crowds and large numbers of animated entities are significantly cheaper to render. 

Slang

Planned
Replace our current shader compiler DXC with Slang, a modern shader language with features like interfaces, generics, and modules. This gives us a more expressive and maintainable shader codebase with better tooling support. 

Shadow Cache

Planned
Decrease the cost of rendering shadows by caching the static geometry and only rendering dynamic geometry over it.

Static Meshlet Rendering

Planned
We can break static meshes into meshlets / fragments and render them very efficiently, combining draw calls into indirect multi draw calls as well as using GPU occlusion culling. A static map or level can be entirely composed of these for huge benefit.

Terrain: Smaller Geometry Clipmaps

Planned
Terrain is currently rendered with one big geometry clipmap mesh. We want to split it up into a level of instanced clipmaps for a simple level of CPU culling, reducing GPU overhead especially in auxiliary views.

Auto DDGI

Planned
Instead of having to place volumes and configure them, we should be able to voxelize the entire scene (within reason) to figure out where to place probes.

VR Multiview

Planned
Reintroduce multiview instancing for VR rendering, but using VK_KHR_multiview to make it transparent to the rendering pipeline.

UI Batching

Complete
We want to batch render as many UI elements together as possible, significantly reducing our draw call overhead and improving frame times in UI heavy scenes.

Ambient Occlusion Optimizations

Complete
Our SSAO post processing is very expensive right now and scales poorly with larger screen resolutions.

SSR Optimizations

Complete
Our SSR solution is still too expensive.

Upscalers

Complete
Make your game render at a lower resolution and upscale to a blurry mess 🚀 FSR & DLSS
emoji_emotions2D

Tileset Resource

In Progress
A resource that goes hand-in-hand with Sprite, allowing you to define Tiles from a Tileset image so they can be painted into a scene. You will also be able to apply metadata like tags to tiles for things like custom footstep sounds on different materials.

Tileset Painting Tool

In Progress
This tool will let you paint Tiles into your scene by creating TilesetRenderers for each layer and giving you options for collision, depth, ect.

Autotiling

Planned
This will let you define the way that certain Tiles connect to one-another so you can paint with an Autotile brush and it will automatically place the correct tiles given the surrounding tiles.

Sprite Attachments

Planned
Similar to Models, this will let you define attachment points on your sprite, adjusting it's position for each frame in an animation. This can be used to attach hats to a Head attachment, or having projectiles fire from a Muzzle attachment.

Animation Loop Points

Planned
For animations that have a lead-in and hold on a pose/loop. Instead of splitting them up and using code to trigger them in time, you can use Loop Points to have a single animation with the lead-in and loop and when that animation is played the lead-in will only be played a single time.

Spritesheet Importer

Complete
An easy way to import a spritesheet and have it split up automatically into animations without the need for individual images that you would need to import one-by-one in each animation manually
animationAnimation

Animgraph 2

In Progress
A better performing animgraph system, where in our current system pose evaluation is expensive and fragile.
media_outputSound & Media

Sound Simulation

In Progress
s&box's environmental audio simulation is pretty bare-bones. We only have very basic sound occlusion and static DSP volumes.

We want to add simulation for at least some of the physical sound properties:
reflection, transmition, absorbtion, diffraction...
boltPhysics