Sign in

Fred Emmott

@fredemmott.com
45 followers 17 following 56 posts

Freelance VR software engineer

PostsRepliesMedia
Fred Emmott @fredemmott.com · 06/03/2026
> 1024 also OK, as long as it’s a fixed boundary :)
000
Fred Emmott @fredemmott.com · 06/03/2026
Lots of in depth advice about how to make sure you can scale, but here’s an easy one for day one: your primary key starts at 1024, not zero, not one. The only thing that knows this is your “new <T>” flow
100
Fred Emmott @fredemmott.com · 31/01/2026
Though overall I feel there's no good solutions here. Unless UWP fits your need or you're making a game (so you just need an accelerated surface to draw on + input, no window management), MS haven't provided a good development experience for Windows apps since ~ XP.
100
Fred Emmott @fredemmott.com · 31/01/2026
BUT DARK MODE! (half /s) You can get a bunch more of the Win32 stuff working in dark mode if you tell the framework your app is explorer.exe... *shudder*
210
Fred Emmott @fredemmott.com · 31/01/2026
While there's workarounds to invalidate the cache, it's then hard to make resizing work *well* while you're dragging the frame, even if it's a standard win32 frame
010
Fred Emmott @fredemmott.com · 31/01/2026
There's also a lot of resize issues caused by mobile-first frameworks being used on desktop; e.g. Yoga (the layout engine underpinning React Native) doesn't adequately invalidate caches when resizing the top-level container. Almost never happens on phone, common on desktop
210
Fred Emmott @fredemmott.com · 31/01/2026
That’s primarily about the title bar, but meeting the title bar (and general texture/corners guidelines) needs a non standard frame
100
Fred Emmott @fredemmott.com · 31/01/2026
I agree it’s often not worth it, but the default win32 title bar does not meet Microsoft’s own style guidelines: learn.microsoft.com/en-us/window... - and they don’t use it in their own toolkits. If you follow the platform style guidelines, you must replace it. if you don’t, your app looks dated.
learn.microsoft.com
Windows app title bar - Windows apps
Design the title bar of a desktop app to match the personality of the app.
200
Fred Emmott @fredemmott.com · 20/12/2025
For part-time vim fanatics on windows: github.com/fredemmott/c... By default, remaps capslock to escape - unless a game is running.
github.com
GitHub - fredemmott/capslock: A flexible capslock remapper
A flexible capslock remapper. Contribute to fredemmott/capslock development by creating an account on GitHub.
000
Reposted by Fred Emmott
OpenXR @openxr.org · 13/11/2025
We are pleased to announce the release of the Best Practices Validation Layer. It addresses a critical need in XR development: catching suboptimal API usage patterns that can lead to inconsistent behavior across different OpenXR runtimes. Learn more: www.khronos.org/blog/new-ope... #OpenXR #XR
OpenXR Best Practices Validation Layer
163
Reposted by Fred Emmott
Omar @ocornut.bsky.social · 05/11/2025
Funding: if your mid/large business uses Dear ImGui - and maybe you are approaching end of year budget/planning etc. - please consider reaching out (PM/email) so I can help you help Dear ImGui !
09549
Fred Emmott @fredemmott.com · 29/08/2025
TIL either hexdump or xxd is endian-sensitive
hexdump and xxd side-by-side, showing byte swapping in 16-bit groupings
000
Fred Emmott @fredemmott.com · 30/07/2025
3/3. Meta could bring hand tracking support to > 50% of PCVR headsets overnight by removing an arbitrary restriction - this would substantially change the cost/benefit of hand tracking for game developers.
120
Fred Emmott @fredemmott.com · 30/07/2025
2/3. More than half of the headsets on the Steam Hardware Survey are Quest-series headsets that have support for hand tracking, but it requires developer mode or third-party software.
110
Fred Emmott @fredemmott.com · 30/07/2025
1/3. Lukewarm take: the lack of PCVR game support for hand tracking is Meta’s fault.
130
Fred Emmott @fredemmott.com · 12/07/2025
WIP: Reimplementing the look-and-feel of WinUI3 in standard C++23, without a dependency on WinRT, XAML, or msbuild
110
Reposted by Fred Emmott
Bastiaan Olij @mux213.bsky.social · 11/06/2025
Slightly snowed under with the spatial entities announcement, OpenXR 1.1.49 also includes the new render models extension which provides access to 3D models of the controllers currently held by the user.
171
Reposted by Fred Emmott
Khronos Group @thekhronosgroup.fosstodon.org.ap.brid.gy · 07/03/2025
With Meta's upcoming v74 SDK release, the built-in OpenXR path for Unity, UnrealEngine, and Godot will be the recommended path for development. #OpenXR enables you to build cross-platform and use Meta platform plugins to add unique HorizonOS features […]
fosstodon.org
Original post on fosstodon.org
031
Fred Emmott @fredemmott.com · 05/03/2025
*passing the CTS* on every release would be hugely valuable to everyone though , including runtime devs.
010
Fred Emmott @fredemmott.com · 05/03/2025
I need to write up my thoughts on this, but while the CTS is hugely valuable, I don’t see official conformance as useful to devs or users. IMO the primary benefit is the IP framework for official adopters
100
Fred Emmott @fredemmott.com · 05/03/2025
The CTS is free; official conformance requires adopter status and a passing submission (though there is a waive process). It does not require resubmitting or re-testing on new releases or new headsets
120
Fred Emmott @fredemmott.com · 22/02/2025
It's frustrating as a developer when I investigate crashes and see they're caused by a runtime bug that could easily have been detected before release. It's frustrating for users when I have to tell them to hope for a fix from their manufacturer.
010
Fred Emmott @fredemmott.com · 22/02/2025
[5/5] This is clearly bad for developers and users - and it hurts the ecosystem as a whole; your readers/viewers deserve to know what they’re buying; don’t mislead them by saying headsets support OpenXR when they don’t.
100
Fred Emmott @fredemmott.com · 22/02/2025
[4/5] - some vendors seem to stick with an old version of the test suite - some vendors only seem to test their initial release, or only major milestone releases - some seem unlikely to have passed any version, and only been spot-tested on a few games
100
Fred Emmott @fredemmott.com · 22/02/2025
[3/5] Some manufacturers routinely test their releases, and they should be celebrated for this: conformant runtimes make the whole ecosystem stronger and reduce locking. I’ve unfortunately also seen a mix of:
100
Fred Emmott @fredemmott.com · 22/02/2025
[2/5] You can ask manufacturers what version of the CTS you should use - this should either be the latest version, or any other version published by Khronos that’s at most 180 days old.
100
Fred Emmott @fredemmott.com · 22/02/2025
[1/5] PCVR journalists: when covering a headset software/firmware update, run the OpenXR Conformance Test Suite. If it fails, the headset/software/firmware *DOES NOT* support OpenXR and users should expect problems. The CTS is freely available on GitHub.
153
Fred Emmott @fredemmott.com · 05/02/2025
Or the opposite, “We reward teams with fewer severe incidents” -> “hmm is this really worth opening an incident over?” “Is this really a *severe* incident?”, reducing communication and increasing time to fix and severity of incidents , even if there’s fewer labeled as “incidents”
000
Fred Emmott @fredemmott.com · 05/02/2025
Metrics often stop being useful once they become goals; rewarding productivity measured by number of commits can encourage spamming ridiculously small commits - eg one per file when one per concept might make more sense
000
Reposted by Fred Emmott
alice @alice.tf · 22/01/2025
imagine being so well known for killing projects that you have to make a statement assuring developers that you definitely will Not kill your *fourth* XR platform in the last 12 years www.roadtovr.com/google-respo...
roadtovr.com
Google Responds to Developer Concerns About Long-term Commitment to Android XR
Google’s announcement of Android XR last month was largely met with excitement, but there was a notable undercurrent of concern about Google’s long-term commitment to the platform. The company has a s...
24413
Fred Emmott @fredemmott.com · 15/01/2025
Whatever restriction were hypothetically added, I could bypass them for $360/active development year, by moving to more invasive techniques and www.ssl.com/certificates...
ssl.com
Buy Sole Proprietorship EV Code Signing Certificates - SSL.com
SSL.com's EV Code Signing certificates offer the highest level of validation for signing and protecting your code, even for sole proprietors.
100
Fred Emmott @fredemmott.com · 15/01/2025
or they could set HKLM\System\CurrentControlSet\Control\Class\{ADAPTER}\000X\VulkanDriverName to point at their wrapper; no kernel driver needed then.
010
Fred Emmott @fredemmott.com · 15/01/2025
Also, a lot of the worst ones come from hardware vendors, but aren't GPU drivers. They are already able to publish properly signed Windows drivers, and they do for other components. If Windows did lock this down, they'd just publish a fake GPU driver wrapping the NVidia/Intel/AMD/... one.
110
Fred Emmott @fredemmott.com · 15/01/2025
I also disagree with 'how it should be': If as a user, I install "Bob's Vulkan Tool", it *should* work with all games, not just games that decided they want to support "Bob's Vulkan Tool" - that's not the best for game developers, but it is the correct expectation for users and the overall system.
100
Fred Emmott @fredemmott.com · 15/01/2025
As the isolation and hooks don't exist, the options are: - use anti-cheat to prevent unknown DLLs loading, likely causing more problems with rare driver DLLs - put up with the status quo - disable API layers and get a strict superset of problems when they move to detours/minhook
000
Fred Emmott @fredemmott.com · 15/01/2025
Even for Steam/Discord, game developers would likely say no as it introduces risk and removes control of the in-app experience.
000
Fred Emmott @fredemmott.com · 15/01/2025
Also, to be realistic, 'game developer explicitly calls DrawSteamOverlay()' is only plausible for overlays as common Steam or Discord; if I asked you to add a call to 'DrawOpenKneeboardOverlay()', the most reasonable answer would be 'not worth the time or risk, sorry'.
200
Fred Emmott @fredemmott.com · 15/01/2025
To echo @rectus.bsky.social , a better solution would be for Windows or the graphics drivers to provide an overlay and capture API that's suitable for games.
020
Fred Emmott @fredemmott.com · 15/01/2025
That's better for game developers, but not for overlay developers, or users who want the option for *every* game. 'directly hook into 3D API calls' is going to happen anyway - API layers don't cause it, but they avoid the "this overlay uses minhook, this uses detours, they conflict" problems etc
100
Fred Emmott @fredemmott.com · 15/01/2025
As a general rule, if it starts with 'Windows' or 'System' but doesn't include 'Windows.UI', it's available outside of UWP. There are exceptions.
010
Fred Emmott @fredemmott.com · 15/01/2025
The documentation is between 'not great' and 'misleading', but neither of those are needed - you can `#include <winrt/Windows.Graphics.Capture.h>` and use it in any Win32 app, and if you use IGraphicsCaptureItemInterop to create it from an HMONITOR or HWND (only for non-UWP apps), no system prompt.
110
Fred Emmott @fredemmott.com · 15/01/2025
*vulkan layer, not vulkan extension
000
Fred Emmott @fredemmott.com · 15/01/2025
(there's popular XR+VK titles that use VK_KHR_vulkan_enable instead of _enable2, and there's valid reasons to continue to choose _enable over _enable2)
110
Fred Emmott @fredemmott.com · 15/01/2025
There's Windows::Graphics::Capture, though it has its' own shortcomings. I'm not aware of an alternative for overlays though. I'm likely to be making my own Vulkan extension soon too, to force on VK_KHR_timeline_semaphore if OpenXR is also present
410
Fred Emmott @fredemmott.com · 15/01/2025
This makes me sad - changes to Vulkan *can not* solve this problem. Injecting DLLs on Windows is easy. At an ecosystem level, all changes to Vulkan do is encourage layer developers to move to alternatives like Detours, which is worse for everyone, and what we'll see if this becomes common practice
000
Fred Emmott @fredemmott.com · 15/01/2025
*and for layers that mutate state. Nesting: what if I want Discord *and* OBS?
010
Fred Emmott @fredemmott.com · 15/01/2025
Security for dll injection doesn’t really exist on windows, except anti cheat , which usually requires signing. Additional steps can’t really achieve much except pushing layer developers to use detours instead.
010
Fred Emmott @fredemmott.com · 15/01/2025
That said, while all layers should aim to be minimally invasive, that goes double for layers with a companion app when that app isn’t running; they should aim to be as close as possible to passthrough in that situation.
000
Fred Emmott @fredemmott.com · 15/01/2025
They do need to be done on startup; launchers don’t nest, for layers that mutate state, and mutating the call chain while running is can cause issues. these are common problems with detours, and caused by the late init
110