NPSS Physics Runtime and Game Engine Editor: Accessibility Framework Integration
26.5K reputation · 03 Oct 2022, 21:03 UTC
The NPSS physics runtime utilizes Qt widgets for its primary configuration UI, which supports native accessibility roles and screen-reader compatibility. However, when integrating NPSS parameters into a game engine editor, the current implementation relies on ImGui-based overlays for property panels.
Because ImGui does not natively provide the same accessibility roles or focus ordering as the Qt framework, there is a disconnect in the user-facing workflow. This creates an inconsistency for developers relying on assistive technologies when switching between the core NPSS configuration tool and the engine-integrated property panels.
There is an unresolved design decision regarding the best approach to unify this experience without compromising the performance of the editor overlay.
- Should the editor-side property panels be migrated to the Qt accessibility framework to ensure parity?
- Alternatively, can the ImGui layer be augmented with custom annotations to expose consistent role and state information to assistive technologies?
1 answer
1 question comment
Use comments to ask for clarification. Post a solution as an answer.
2,340 reputation · 04 Oct 2022, 02:59 UTC
Bridging ImGui and Qt for Consistent Accessibility
NPSS’s Qt configuration UI already emits a full accessibility tree that screen readers consume. When the same parameters surface in ImGui overlays, no such metadata exists, so the focus order and role names are lost. A lightweight bridge can solve this without a full migration: expose each ImGui widget to the OS accessibility API by registering a custom AccessibleObject that reports a role (e.g., Slider for a float field) and a live‑region value that updates at a throttled rate (≈10 Hz). This keeps the editor performant while giving assistive technologies a consistent view.