704 Commits over 610 Days - 0.05cph!
Horizontal scroll (#1236)
Hold shift + mouse wheel to perform a horizontal scroll, if your mouse
has a horizontally scrolling wheel then that will work too.
https://files.facepunch.com/alexguthrie/1b1511b1/sbox_4y8iF5jVHk.mp4
X axis doesn't apply to ButtonCode.MouseWheelDown / ButtonCode.MouseWheelUp
Initial horizontal scroll support
Changes MouseWheel naming to MouseScroll, float parameters become a
Vector2.
Hold shift + mouse wheel to perform a horizontal scroll, if your mouse
has a horizontally scrolling wheel then that will work too.
Changed my mind, everyone else just uses MouseWheel regardless of whether it's 1D or 2D, let's do the same
Add separate Matrix test for converting from a transform, verify manually
Make `Matrix.FromTransform` more generalized, move steamvr specific one into `VROverlay` where it's used
Matrix test for converting to/from transforms
Changed my mind, everyone else just uses MouseWheel regardless of whether it's 1D or 2D, let's do the same
Initial horizontal scroll support
Changes MouseWheel naming to MouseScroll, float parameters become a
Vector2.
Hold shift + mouse wheel to perform a horizontal scroll, if your mouse
has a horizontally scrolling wheel then that will work too.
VR: Don't call GetPerformanceStats if VR isn't running (sorry)
VR: Lets be honest, nobody is using an xbox 360 controller or knuckles ev1 anymore
VR: fix minor docs blunder
VR: IsVive etc. now handled per-controller (was detecting controller type anyway before)
Might be useful for anyone that likes to mix controller types (e.g. one
vive controller and one knuckles) but the use case for this seems quite
niche?
sbox-issues/issues/994
VR: Basic internal HMD type detection
VR: More HMD types, move controller type & hmd type conversion into relevant files
VR: these should be internal, oops 🤦♂️
VR: Initial performance stats window
Just basic stuff for now, will evolve over time
VR: Move all render model related stuff into VRNative.RenderModel.cs
VR: Fix some minor input discrepancies, use ArgumentOutOfRangeException for anything out of range
VR: Clean up render model code, make everything non-blocking
VR: Hook up IVRRenderModels interface
VR: Add render model support for controllers, VR Model Renderer component (sbox-issues/issues/1001)
Uses `vr_controller_01_mrhat` if no model available
VR: Render model textures, fix axes
VR: Model renderer component is separate, takes a model renderer as property, doesn't run in non-vr
VR: More docs for `VROverlay` and `VROverlayPanel`
VR: VrInput -> VRInput, extra docs for VRController
VR: Docs, rename Input VrHand to VRController
VR: Normalize prefix casing to `VR` instead of mixing `Vr` and `VR`
VR: VRHand component doesn't fetch skinned model renderer automatically, match behaviour of all other components instead
Make `Matrix` numerics value internal, similar to the one on `Vector3`
VR: Move `VROverlayPanel`, `VROverlay`, `VROverlayInput` into `Sandbox.VR` namespace
VR: Generate extra `GetXActionData` functions with `ulRestrictToDevice` = `k_ulInvalidInputValueHandle`
VR: Menu chord bindings / action
VR: Remove legacy layer, move VR stuff into Sandbox.VR namespace
VR: Hook up WorldScale
VR: Do a reset whenever GameMenuDll.ResetEnvironment is called, just resets world scale for now
VR: Shorten Sandbox.Engine.VR to Engine.VR, maybe we should rename this class entirely
VR: Move `VR` class into Sandbox.VR
VR: Remove `VR` class, move any relevant properties over to `Input.VR`
All of this was input-related anyway, this feels like a better place to
have it. Modifying the anchor is done through `Input.VR.Anchor` now.
The only exception to this is checking if we're running in VR; use
`Game.IsRunningInVR` instead.
This avoids us clashing with the `Sandbox.VR` namespace and causing a
bunch of problems. Shouldn't be too different anyway as most things
should be covered by our components.
VR: Components don't update if VR isn't running
VR: fix some stereo-related render warnings
VR: perform copy before adding layers & don't create temporary back color buffer
VR: overlays don't block input if there's a game running, use high quality rendering now that works again
Render menu
Fix rendering `RootPanel`s in VR: separate out `IsWorldPanel` from `RenderedManually`
Clear attributes after popping a layer when rendering UI
Set VR depth resolve & refract textures, fixes glass rendering in VR
Move `vr_depth_submit` convar over to managed
Respect `vr_spectator_show_left_eye` value
VR companion view, render stereo to its own back buffer
https://files.facepunch.com/alexguthrie/1b0111b1/sbox-dev_Z2Mn6GMTLF.png
VR texture submit supports full depth submit (but we're not passing depth just yet)
Pass depth buffer to submit
Rename VRNative CheckError function to Assert
Move assert function for VR overlay errors into VRNative
Remove unused VRNative functions
Support for all types of VR textures (pose, depth+pose, depth, and neither)
Fix VR rendering crash
Disable menu VR overlay
Make VRNative Compositor/System/etc. all properties
TrackedDeviceInfo has battery percentage (cherry-picked from vr-stats branch)
Battery percentage just displays in `vr_info` concommand for now
Change the way we handle VRTextureWithPose - create an initial VRTexture and then (optionally) append pose data, rather than just creating a VRTextureWithPose outright
Reinstate VR overlay code using new internal VR backend
Move FromTransform into Matrix so we can re-use it
Update OpenVR SDK from 1.26.7 to 2.0.10
Use LastBackColorBuffer for VR - should fix spontaneous crash, can't reliably reproduce locally though?
Remove IPD measurement - feels useless here - and clean up
Add TrackedDeviceInfo defaults
Move performance timing stuff into VRNative.Timings.cs, clean up some more stuff
Put some of this data in Performance window too
Initial VR performance stats editor tool
Takes data from SteamVR compositor, tries to turn it into something that
is more useful for us - not sure how much of this data we need/want, or
what else we want right now
Render VR separately
Rename RenderWithViewport to RenderStereoAndSubmit, clean up SceneCamera stereo rendering code
Set VR controller type (Input.VR.Type)
Remove some CSS logs I forgot about (sorry)
Re-add streaming mode stuff to menu - same as before (would be better in settings imo, but this works for now)
VR - remove vulkan extension list spew, was using this to check something and forgot to remove it
Fix anchor positioning
VR: retrieve and save off HMD position immediately before calling RenderWithViewport
Gives us much better & up-to-date info to put inside VRTextureWithPose,
reprojection becomes much more accurate.
VR: controllers are correctly affected by anchor
Re-add vendor info to TrackedDevice for `vr_info` debug command
VR input system supports device roles (i.e. left hand, right elbow, waist, chest), uses newer IVRInput system (paths etc.)
Submit a VRTextureWithPose_t to compositor
Re-add some VR native submit code, looks like it got removed by mistake
Fix VR stereo camera positioning
VR legacy layer uses real values (don't like this but I don't see any other way, we can remove it later)
Fill device roles for tracked devices
Add Expose attribute to StereoTargetEye
Update Facepunch.ActionGraphs
Support for node plugs in title bars
Support for overriding getting relevant nodes without an input type
Merge branch 'master' into vr-refactor
Not using this anymore
Input stubs for legacy games
Fix rendering (this got fucked in the rebase, oops)
[Squash] Initial managed VR code, delete VR project
[Squash] Add `IsLeftHandDominant`, `Enabled` properties + `TriggerHapticVibration`
[Squash] Document TrackedDevice, remove unused, update skeletal data
Submit all the info we need to camera renderer + start rewriting stereo rendering
[Squash] Initial managed VR / stereo rendering logic
[Squash] Poll events & get poses correctly
[Squash] Don't do blit copy for each eye (works as long as `r_aoproxy_enable 00`), submit for DX11
https://files.facepunch.com/alexguthrie/1b1311b1/qrenderdoc_wLfY06ol2a.png
[Squash] Bind GetLastPoses, clean up
Update OpenVR from 1.16.8 to 1.26.7 (latest)
[Squash] Fix IPD calc, camera positioning, fix InchToMillimeter that was converting from mm to inch
[Squash] Dispatch submit func from scenesystem, do submit on render thread
[Squash] Digital / skeletal / pose action data + helper funcs for retrieving all action data
Remove unused (mostly legacy stuff)
# Conflicts:
# engine/Sandbox.Engine/EngineLoop.cs
Revert "Remove unused (mostly legacy stuff)"
This reverts commit ab8ea1a69e47ddff1367df4d5f00a1975def5d99.
Vulkan - explicit timing/post present handoff, submit logic
# Conflicts:
# engine/Sandbox.Engine/EngineLoop.cs
Remove runtime VR enable/disable
Doesn't work for vulkan which is what we're aiming to eventually primarily
support - ideally we want something like this issue describes:
ValveSoftware/openvr/issues/993
I did try re-creating the render device whenever VR was enabled/disabled
but couldn't get this working and I think fixing it is out-of-scope here.
[Squash] Refactor HMD-specific tracking code
[Squash] Finish VR analog/digital input, clean up
[Squash] Vulkan submit tweaks, log compositor errors