20,809 Commits over 1,522 Days - 0.57cph!
Work In progress - improved median denoise,
Code changed for median filter.
Don't keep sounds that failed to load around trying to mix forever (matches how old vmix mixer handles it) Fixes #1597
Add MapInstance.Bounds to get world bounds of the map
Make sure to unregister for update after sending
Keep track of potential pending network updates to flush for RPCs
Misc fixes
Move EnablePostProcessing from GizmoSettings to ViewportState
Default each viewport to a unique perspective
add support for multiple scene views, orthographic scene views, and configurable grid axis
add keybind to cycle camera plane around selection
refactor bits into SceneEditorViewport, re/store gizmo settings alongside viewport cookie
rework to single layout and splitter, disable new tab creation for now
add support for per-widget toolbar actions
save/restore sceneview layout
move viewport/instance gizmo settings to EditorCookie from ProjectCookie
move save/restore viewport cookies to addon space
no reason to copy+set camera transform anymore
use active SceneOverlayWidget directly
use a single toolmanager instance
fix nudging
remove some global gizmoinstance refs
tuck camera alignment shortcuts away in camera menu
maintain layout config when toggling viewport fullscreen
remove log
temp disable copying from scene camera
camera fixes: make orthographic clipping more predictable, add smooth(er) perspective/ortho transitions, fix gizmotest widget, reenable scene camera copy
add setting to lock scene camera rotation
fix incorrectly sized gizmo hitboxes in ortho view
replace remaining direct scene camera transform accessors
tweak sprite gizmo hitbox scale in ortho views
cleanup scene tick/draw flow with multiple viewports
replace legacy global GizmoInstance
snip unneeded multi-tab leftovers
use state/gizmo settings for scene view control
replace remaining ray length with Gizmo.RayDepth
don't try to save scene-specific viewport config for untitled scenes
use alternate check for IsUnderMouse
move viewport settings to ViewportState from GizmoSettings, use shared gizmo settings for all viewports
shift camera settings to EditorPreferences, simplify viewport options
restore single EditorScene gizmo settings
revert camera extension changes, fix pan and orbit zoom, tidy
use hammer's linked splitters for uniform viewport resizing
PartyRoom - run tick at set interval, cache owner
Add Panel.ToggleClass
Remove ButtonGroupConstructor
Can change party title, capacity, public state
sound-in, sound-out will target UI mixer if there is one (resolves #5583)
Use a bone body cache in model physics, spending too much time asking native for the pairing every frame
Work In Progress - AO - new features, changes, improvements
Various work in progress
Do BeginFrame() and EndFrame() on render thread
Native to managed bindings cleanup, sync manually
Sync cleanup, fpxr update
Hightlight.RenderEffect: Use Scene.GetAllComponents instead of iterating every gameobject ( closes #1597 )
Fix enter/leave not updating chat box
Add party_id to rich presence
Add Connection.PartyId
Add more CompileCodeArchive tests
Codegen should shit itself if you don't use a string literal from Cloud.Asset() methods
Terrain: Add height blend settings, add per material height and normal strength, various other polishing
Hide GameResource.ResourceVersion
Move from SteamVR over to Facepunch.XR
Remove direct OpenXR bindings
Pass debug callback to Facepunch.XR, make a session
Move OpenXR requirements into Facepunch.XR
Requirements are done automatically now, make instance/device extension format consistent
Hack around extension-related crash for now
Events
Pass vulkan-related stuff in as structure
Fetch rendering recommendations from fpxr
Remove silly hack hard-coding all our extensions, fetch them properly
Bind fpxr compositor and add everything we should need to start submitting
FPXR: Session now handled by Compositor, Instance is now a class
Delete all OpenVR files & references, stub out anything that required them
Initial FPXR presentation logic
Fetch display info from compositor
Submit texture, render loop, etc.
Use Facepunch.XR provided logging levels
Pass bounds to texture submit info
Default IPD (for testing with null driver)
Facepunch.XR works out bounds for us, gives us full render target size separately from eye render target size
TerrainMaterialList: Allow drops properly
Editor post processing toggle closes #1587
Colour grading changes, tonemapping in its own component (means color grading isn't 1 pass, but that's easier to do later compared to splitting up components)
Co-authored-by: Matt Stevens <matt@mattstevens.co.uk>
Tonemapping applies to editor camera too, respects Camera.EnablePostProcessing
Flush network updates before send RPCs
Work in progress - colour grading
Variuous changes - exposure added in RGB and HSV
Keep tonemapping in its own component, remove uncommon options, cleanup
Fix buffer overrun (80% confidence)
Clothing LODs
Bandana, sleeveless jacket and fingerless gloves LODs
Add vertex bevel operation https://files.facepunch.com/layla/1b0311b1/sbox-dev_qwSFxWpceA.mp4
Fix model physics not setting gameobject tags
Hammer: Option for placing objects using bounds bottom as origin for when you want to disable it
Removed some gumf and re-enabled range check
Ditto
Work In Progress - Added features, UI layout, general code changes
Added Denoising, improved code generally, UI changes.
RayTraceSceneWorld boilerplate
SteamLobbySocket caches owner, calling SteamMatchmaking.GetLobbyOwner each tick had significant impact
Add SkinnedModelRenderer.UseAnimGraph, this will frequently be used to turn off animations on ragdolls without going through sceneobject
Fix model physics T posing for a frame on enabled and switching animgraph off, allows for smooth ragdoll transitions https://files.facepunch.com/layla/1b3011b1/sbox_K1lOWP0iir.mp4
Work In Progress - SSAO post process
SSAO, normal reconstruction (simple and improved methods), various controls
FPArms: added basic throwable animations
ResourcesPage path widget directory is relative to the Assets directory
Expose Terrain size properties to settings sheet
Changed GameObject prefab deserialization to return promised GameResource, instead of failing and throwing, fixes a race condition where prefab resource hasn't loaded in time
First person arms: various updates to prefabs + new non-weapon_root-centric shared animations (for grenades)
Edge merge now supports 2 open edges from different meshes, meshes will be merged into one https://files.facepunch.com/layla/1b2811b1/sbox-dev_4CCaZjcxH9.mp4
First person arms: bring back the hold bones for non-weapon_root-centric setups
Add mesh merging (only 2 open edges from the same mesh for now)
New TerrainMaterial & TerrainStorage resources, rework creation of terrain, component custom editor, simple height blends and various QOL improvements
New TerrainMaterial asset, can be used on multiple terrains, copied from other projects
* Replaces TerrainData.TerrainLayer which used manual packed vtex files
* Accepts source images for: albedo, normal, rough, ao, height
* Compiles into 2 generated vtex_c
* Contains other properties for metalness, uv scale, uv rotation
* AssetPreview is used for editor UX too, instead of hacky shit before
* TerrainMaterialEditor auto populates _normal _rough etc. properties from albedo
* Drag drop TerrainMaterial assets into Terrain component
* Open for expansion to grass/clutter properties
TerrainStorage
* Replaces TerrainData & TerrainDataFile
* Make use of IJsonConvert to avoid all the crazy crap I was doing before
* Drag drop TerrainStorage asset into scene
* JsonUpgrader for TerrainData -> TerrainStorage, resmaples ^2+1 heightmaps to just ^2
Terrain component editor:
* Support creating or linking TerrainStorage if none is attached
* Split settings into its own tab
* Add heightmap resampling for non pow2 heightmaps
* Add import splatmap
* Terrain creation no longer forced through GameObject menu, remove Hide attribute from Terrain component.
* Remove special terrain save logic from SceneEditorSession, use scene.saved editor event
* Texture streaming works properly
* Basic height blend
* Disable specular on terrain
New TerrainMaterial & TerrainStorage assets, improve terrain creation, no more manual vtex layers
New TerrainMaterial asset, can be used on multiple terrains, copied from other projects
* Replaces TerrainData.TerrainLayer which used manual packed vtex files
* Accepts source images for: albedo, normal, rough, ao, height
* Compiles into 2 generated vtex_c
* Contains other properties for metalness, uv scale, uv rotation
* AssetPreview is used for editor UX too, instead of hacky shit before
* TerrainMaterialEditor auto populates _normal _rough etc. properties from albedo
* Drag drop TerrainMaterial assets into Terrain component
* Open for expansion to grass/clutter properties
TerrainStorage
* Replaces TerrainData & TerrainDataFile
* Make use of IJsonConvert to avoid all the crazy crap I was doing before
* Drag drop TerrainStorage asset into scene
Terrain component editor:
* Support creating or linking TerrainStorage if none is attached
* split settings into its own tab, add filter properties
* Don't force Terrain creation through GameObject menu, don't hide terrain asset generation in here, don't hide the Terrain component
* Remove special terrain save logic from SceneEditorSession, use scene.saved editor event
* Disable specular on terrain
Terrain: Mark all TerrainMaterial textures as used and wanting max quality. In the future this could be smarter and not want max quality for textures used far away
Basic height blend
https://files.facepunch.com/matt/1b1711b1/sbox-dev_0JNrWPuC9N.png
JsonUpgrader for TerrainStorage: Resample ^2+1 heightmaps to just ^2, use non-nested format
Fix warning
Heightmap import resamples if non pow2 given
Recompile shader
Terrain height scale scales the normal strength
Import splatmap
New Terrain Material button
TerrainMaterial default images
Reverse Scene isEditor constructor so GameObjectSystem constructor is aware of editor scenes
▋▆█▄▅▍▋ ▉▆█▉▄▌▌▌▅ ▍▉▊▉▉▅ ▍▊ ▋▌█▍▆▆▉.▆▉▆▌█▋ ▍▌▊▄ ▄▋█▉▋▊▊ ▅▋▋▍ ▉▆▄▊▇▌▇ ▇▉▋▇
▄▌-▇█▉▄█▇▄▊-▄█: █▇█▄▄ ▅▋▌▉ <█▉▊▇▆.▅▄▍▊@▉▄▇▋▋▉▆▆▄▊▋▇▋▇▉▋.▊▇▌>
Hotspot rect assets can be loaded from kv3 and json
Add Pixmap.FromTexture
Remake rect editor in C# open rect assets with it https://files.facepunch.com/layla/1b2811b1/sbox-dev_v1vsYYyeyh.png