947 Commits over 580 Days - 0.07cph!
Fix VRCompositorError_SharedTexturesNotSupported on dx11
Initial compositor submit, Vulkan only for now
Transition texture to VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL
Poll events & get poses correctly
Check error inside PollEvents
Clear first draw
Don't do blit copy for each eye (works as long as `r_aoproxy_enable 00`)
https://files.facepunch.com/alexguthrie/1b1311b1/qrenderdoc_wLfY06ol2a.png
Submit & impl submit for DX11
Render each eye into separate scratch targets and then blit into combined texture until I can figure out why this is broken
Remove native SetupStereoFrustums
Remove unused camerarenderer stage
RenderStereo uses correct view flags etc., clean up
Initial managed VR / stereo rendering logic
Remove tracked device debug spew
SceneCamera.RenderStereo, allow eye targeting
Build & override camera frustum based on params provided by steamvr
Clean up unused shit
Document TrackedDevice, remove unused, update skeletal data
Move VR class into Sandbox.Engine (forwarded to Sandbox.Game) and respect anchor for tracked transforms
Compositor submit bindings, cleanup
Submit all the info we need to camera renderer + start rewriting stereo rendering
Deleted subviews, crossed/nohmd stereo modes, auto-fidelity, no longer uses multiview instancing
Clean up
IsLeftHandDominant, Enabled
C# has control over whether vr is enabled
Also add `vr_enabled` concmd so that we can test toggling VR at runtime
Move VR stuff over to Sandbox.Engine, start deleting old VRGlue - breaks VROverlay for now
Only init if -vr specified, ensure active
Init overlay, bindings for dashboard visible & drawing controllers
Move vr-specific input into Sandbox.Engine
Proper way of converting matrices from steamvr -> sbox, push test hmd data to game
Move a bunch of stuff in VRNative, clean up
Delete VR project
Simplify MaterialSystem2 VR code, don't do any native VR setup
Initial basic managed openvr setup - just logs hmd position to console for now
Debug all tracked devices
Skeletal input data
Actions, action sets, action state, analog input data
Move native wrapper functions into VRNative class
Rename enum values
Remove unused input source strings
Hook up compositor, settings, device properties & info
Move constants
Rename enum values
Remove unused input source strings
Move native wrapper functions into VRNative class
Actions, action sets, action state, analog input data
Delete VR project
Simplify MaterialSystem2 VR code, don't do any native VR setup
Initial basic managed openvr setup - just logs hmd position to console for now
Debug all tracked devices
Skeletal input data
`mask-repeat`: `no-repeat` uses border sampler, `round` acts like `clamp`
sboxgame/issues/issues/4061
Don't enable D_WORLDPANEL combo inside panel layers, avoids multiple uses of worldpanel matrix when a filter is active
sboxgame/issues/issues/4056
Angles, Rotation, Vector2, Vector3, Vector4 all implement IParsable, have both TryParse and Parse + tests
sboxgame/issues/issues/4051
ui_cssbox uses custom samplers for border image
sboxgame/issues/issues/4054
Make StartScreen inside EditorMainWindow, instead of going through an event
Fix text gradients 🤦♂️
Fix keyword-based transform origin values
Don't hide EditorMainWindow on startup if there isn't a StartScreen
e.g. if tools fail to compile
Lettters -> letters (sboxgame/issues/issues/4030)
Fix for transform-origin values not correctly being applied
Add GlobalEngineNamespace, move TypeLibrary into it so that we can access it from Sandbox.Game and Sandbox.UI
Bring clipboard back in case people were using it, forward to Sandbox.Game
Move UseTemplate attribute
TypeLibrary fixes
Move input, UISystem
Move controls over, delete unused clipboard class
Temp fix for route attribute
Move Screen
Move textblock code into Sandbox.UI, compile with /unsafe
Forward various types to Sandbox.Game
Move from Sandbox.Game into Sandbox.UI: anim, data, input, panel, parser, razor, render, styles, util, yoga wrapper
Move to Tier1, remove Raster and just use Texture
Sandbox.UI
Abstract Sandbox.UI input, move over RootPanel, data classes, IPanel
Move BaseStyles into Sandbox.UI
Fix flawed equality logic
Sizes passed to ImageRect.Calculate with Undefined unit will correctly use default size
Default text overflow to "None", spec default is clip but ours behaves differently - this will do for now
Give `line-height`, `letter-spacing` and `word-spacing` default values, no need to null check them
Don't implicitly clamp backgrounds if background-size is `cover`
Handle LengthUnit.Undefined gracefully, document
Call GetPixels() on backdrop filter props instead of getting Value directly, fixes percentage/fraction-based filters
CSS: Better Autogen (#1222)
Leaves out nullability changes for a later pain day, but includes layout cascade auto-gen, transition/animation default value handling w/ auto-generated defaults, and guarantees a value for every property in ComputedStyles (although the compiler isn't aware of this yet).
Turn BaseStyles members into a table containing type, default value, and inheritance state, generate BaseStyles.Defaults
Auto-generate layout cascading based on inheritance state
Use BaseStyles.Default instead of hardcoding defaults
Similar to `css-defaults` branch but this does it better - so I'm
deleting that in favour of this.
Rather than hard-coding the default value every time we fetch it:
```cs
var value = Styles.BackgroundColor ?? Color.White;
```
We should be doing something like:
```cs
var value = Styles.BackgroundColor ?? Default.BackgroundColor;
```
Provide default values as fallbacks for style transitions, use LerpProperty inside BaseStyles.FromLerp
In FromLerp, check if the property we're trying to change is actually changing
Prevents us from stomping property changes when a transition is running
with `transition: all` if you have an animation running simulataneously
Move default styles into `DefaultStyles`, make everything readonly
VirtualScrollPanel uses DefaultStyles
Only use fallback inside Lerp functions if from/to are null
Move null checks into Lerp functions, remove logs
Tidy up, use same code path for lerps
Refer to default values in docstrings, inherited/cascading values lerp to their initial `from` values if `to` is unset
Merge fixes, Name -> TypeName
Generate FillDefaults() function, call inside PreLayout.BuildFinal, add Length.Undefined
Fix a bunch of defaults (need better way to check if a property is set tho)
Add `Style.IsDefault( name )`
Bad idea to call FillDefaults here since it will stomp previous keyframes
backdrop-filter-hueRotate is backdrop-filter-hue-rotate (oops)
mask-position defaults to 0,0
Use IsDefault when necessary inside tests (HasValue will always be true for ComputedStyle properties), only check where necessary (i.e. if we're not also checking the value itself)
Scrolling fixes
Remove DefaultStyles, internalize IsDefault, FillDefaults, ApplyCascading
Handle `overflow` prop defaults separately
Use HasScrollY inside panel input
Get rid of remaining null coalescing shit - ComputedStyle properties are no longer null
ComputedStyles has its own class w/ no nullables, helps clean things up
Remove unused, clean up
Turn BaseStyles members into a table containing type, default value, and inheritance state, generate BaseStyles.Defaults
Auto-generate layout cascading based on inheritance state
Use BaseStyles.Default instead of hardcoding defaults
Similar to `css-defaults` branch but this does it better - so I'm
deleting that in favour of this.
Rather than hard-coding the default value every time we fetch it:
```cs
var value = Styles.BackgroundColor ?? Color.White;
```
We should be doing something like:
```cs
var value = Styles.BackgroundColor ?? Default.BackgroundColor;
```
Provide default values as fallbacks for style transitions, use LerpProperty inside BaseStyles.FromLerp
In FromLerp, check if the property we're trying to change is actually changing
Prevents us from stomping property changes when a transition is running
with `transition: all` if you have an animation running simulataneously
Move default styles into `DefaultStyles`, make everything readonly
VirtualScrollPanel uses DefaultStyles
Only use fallback inside Lerp functions if from/to are null
Move null checks into Lerp functions, remove logs
Tidy up, use same code path for lerps
Refer to default values in docstrings, inherited/cascading values lerp to their initial `from` values if `to` is unset
Merge fixes, Name -> TypeName
Generate FillDefaults() function, call inside PreLayout.BuildFinal, add Length.Undefined
Fix a bunch of defaults (need better way to check if a property is set tho)
Add `Style.IsDefault( name )`
Bad idea to call FillDefaults here since it will stomp previous keyframes
backdrop-filter-hueRotate is backdrop-filter-hue-rotate (oops)
mask-position defaults to 0,0
Use IsDefault when necessary inside tests (HasValue will always be true for ComputedStyle properties), only check where necessary (i.e. if we're not also checking the value itself)
Scrolling fixes
Remove DefaultStyles, internalize IsDefault, FillDefaults, ApplyCascading
Handle `overflow` prop defaults separately
Use HasScrollY inside panel input
Get rid of remaining null coalescing shit - ComputedStyle properties are no longer null
ComputedStyles has its own class w/ no nullables, helps clean things up
Remove unused, clean up
ComputedStyles has its own class w/ no nullables, helps clean things up
Get rid of remaining null coalescing shit - ComputedStyle properties are no longer null
Use HasScrollY inside panel input
Handle `overflow` prop defaults separately
Remove DefaultStyles, internalize IsDefault, FillDefaults, ApplyCascading
backdrop-filter-hueRotate is backdrop-filter-hue-rotate (oops)
mask-position defaults to 0,0
Use IsDefault when necessary inside tests (HasValue will always be true for ComputedStyle properties), only check where necessary (i.e. if we're not also checking the value itself)
Add `Style.IsDefault( name )`
Bad idea to call FillDefaults here since it will stomp previous keyframes
Fix a bunch of defaults (need better way to check if a property is set tho)
Generate FillDefaults() function, call inside PreLayout.BuildFinal, add Length.Undefined