Yellow-Dog-Man / Resonite-Issues

Issue repository for Resonite.
https://resonite.com
134 stars 2 forks source link

Address disruptive issues caused by floating point #121

Open gentlecolts opened 11 months ago

gentlecolts commented 11 months ago

Describe the bug?

When a user is in floating point, or even just moving too fast, it becomes significantly more difficult to interact with UI, requiring the use of emergency gestures to respawn

To Reproduce

scale up/down too much, get launched into floating point, or simply just be in floating point

Expected behavior

One solution may be during rendering, apply user root offset to the rest of the world negatively. only position needed, although scale would be nice too, rotation is irrelevant but may just come along as a side effect if applying matrix inverse is easiest. This would keep the user’s hierarchy near 0,0,0 during render and reduce the impact of floating point as perceived locally. Another solution may be to render the local user’s root in a separate pass, again offset (in the render pipeline) in a manner which avoids floating point issues.

Screenshots

No response

Resonite Version Number

2023.10.13.202

What Platforms does this occur on?

Windows, Linux

What headset if any do you use?

No response

Log Files

No response

Additional Context

No response

Reporters

zangooseoo

Frooxius commented 10 months ago

Being at large offsets and moving really fast are separate issues. If moving too fast exhibits issues even at small floating point values, then that should be a separate issue.

I'm changing this away from a bug, this is not really a bug, just more of a consequence of how floating points behave, so it's not totally unexpected - and not something that can be really fully addressed - we can only mitigate this in various ways.

Longer term, we'll likely provide systems for chunking worlds, so you can build much larger worlds, while keeping the actual values pretty small within each chunk. That would allow to build virtually unlimited (meaning limited by complexity, storage and RAM) world sizes.

gentlecolts commented 10 months ago

I'll create an issue for movement then. The solution I had in mind was either something like having a render pass for local user root that's only offset as much as, say, steamvr space, or whatever smaller, more local space is convenient, OR, perhaps somehow treating space at render time as relative to user head, rather than world space. That said, I think the addition of chunking would address this issue and others quite well actually, looking forward to that!