982 Commits over 610 Days - 0.07cph!
VR: Experimental fast function for storing reprojected HMD matrix
VR: Separate out stereo render/submit/blit, don't submit editor SceneCameras
(We still render and blit companion while in the editor, we just don't
submit a texture to the compositor while not in play mode)
https://files.facepunch.com/alexguthrie/1b2011b1/rsIQEZV0nc.mp4
VR: Fix out-of-editor rendering
VR: stop NoOpPostprocess layer trying to clear again in stereo mode
VR: Clean up stereo rendering logic, fixes aoproxy rendering, reduces memory requirements
VR: TrackedDevice defaults
Input.MouseWheel is a Vector2 now
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
VR component cleanup, update VR test scene
- Renamed components to better reflect their functions, dropped
Component suffix
- Drop update types - I can't think of a reason why you *wouldn't* want
these to update constantly, but feel free to tell me if I'm being dumb
- Comment everything for when our editor UI shows this stuff
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
Tracked pose component has "Use Relative Transform" property
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
Basic skeletal pose component - only works with Alyx hands, needs some more thought
https://files.facepunch.com/alexguthrie/1b1311b1/vrmonitor_2IaktVphKK.png
Remove unused UseRelativeTransform from tracked pose component
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)
Squash commit of VR components from vr branch
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