
A new update has been released, you can view the full changes on our blog post.
https://sbox.game/news/update-26-07-15-4d62b783
Adds subtitles and lip sync to sound files. This is kind of how HL2 did it, except better.
Adds import-time processing options to sound compiles, driven from the sound's `.meta` and applied by the native sound compiler:
All are no-ops unless set, so existing content compiles byte-identical. Loop points are resolved after trimming so they land on the timeline the user authors against in the sound editor. Changing a setting saves the `.meta` and force-recompiles the asset (raw vsnds aren't in the game-resource auto-compile path), debounced so slider drags and multi-select edits produce one compile per asset instead of a stale-compile storm.
Height Coverage is a new feature for decals that allows using heightmap as an additional visibility mask. It will be available for use as long as your decal has a valid heightmap texture assigned to it. It it controlled by two properties in the decal component:
This is how it looks in action:
Keep noted that it works as an additional mask, meaning that it will be applied on top of opacity/attenuation masks on your decal if you have them. While this mask is fully compatible with parallax, it is not necessary to use it all. For custom shader enthusiasts, I have also updated the documentation for Decals class, and provided new information about reading height coverage settings from byte buffer, decoding them, and applying them.
Our terrain clip maps implementation was basic and prevented us from doing more advanced optimization techniques. This week, I went over almost every aspect of our terrain solution so that we can make it faster. The mesh is now split into more granular chunks that we can test against the camera to perform culling. In most cases, the play is in the middle of the terrain where at least 70% of the terrain isn't in camera view. By discarding all of those chunks, we can get some nice performance improvements.
This allows you to push more detail where it matters, in the camera view. The culling is more aggressive in the video to showcase the culling.
Our other big bottleneck was the sheer number of texture fetches. We added a precompute pass so we can bake data ahead of time instead of recalculating it every frame while shading. We moved to GatherRed where we were sampling neighboring texels and depth passes now do almost 0 work. In the best case we went from 24 texture taps down to 1, and our benchmark rendering time was halved.
We've also fixed some discrepancies in our height blending. Rocks pocking through grass should now behave accordingly instead of fading.
Serious Engine joins the list of mountable games (purchased and installed), you can play maps and spawn props & characters from games made in this engine.
Demo recording now properly supports first-person views by capturing properties like render tags and the Absolute flag. Additionally, we fixed a recording bug that could slightly misalign the values captured to separate tracks, leading to view models appearing to vibrate.
Thanks to your feedback, we've got a batch of fixes and quality of life improvements for Movie Maker's keyframe editing mode. This includes fixing the last keyframe sometimes being skipped in compiled movies, saving the selected interpolation mode as a cookie, and adding a way to change the values of multiple keyframes in the context menu.
In the editor we have docks, Qt has these built in but they suck, so we used toolwindowmanager, this wasn't bad but had a lot of flaws - now we're using Qt Advanced Docking. Overall this gives us a much more complete and polished IDE-style docking system which should be much more stable, without us needing to patch the docking system ourselves. ADS gives us a more capable base for features such as:
Additionally the API is much simpler for creating and adding your own docks where code used to be duplicated with DockManager.RegisterDockType, that method is now gone.
For a very long time I've wanted to make tools that use a central widget with docks around it, with the advanced docking system we can now do that. The main scene editor already makes use of it so we don't need a dock per scene session.
This saves our asses in a bunch of ways where you could close your scene dock and fuck your whole layout. And if you're mad you can't dock your scene inside your asset browser anymore, too bad.
Vertex Painting in the mapping tools was lacking some features, so I worked through a list of stuff I wanted and the community wanted. This includes; Flood FIll
Flood Fill - Noise
Flood Fill - Occlusion
Flood Fill - Curvature
As well as supporting Invert and Clear Paint data. Also some quick nice time savers too; Improve Colour Lift
Quick Colour Pick
Scale Brush Distance
Added this back, if you pin s&box editor to your task bar you can launch projects quickly with this.
I'm going to bore you with some statistics. We recently started wondering why our individual frame stage timings showed a steady decline over the past months, while our global average frame time stayed relatively stable.
It takes no mathematician to see that something about our metrics tracking was fucked until last week:
Two issues: