expenses / mateversum

Mateversum is a peer-to-peer WebXR metaverse project. Binary: https://github.com/expenses/mateversum-web
https://expenses.github.io/mateversum-web
MIT License
24 stars 1 forks source link

Mirror improvements #3

Open expenses opened 2 years ago

expenses commented 2 years ago

After #2, we have basic mirror support. Currently the implementation involves writing a mirror plane to the stencil buffer, rendering reflected copies of everything to that buffer, then rendering everything normally again.

While there's no way to avoid rendering everything effectively twice (although culling would help), we can reduce the number of pixels we're rendering in the mirror by rendering to a texture instead, which is apparently what NeosVR does. It seems a bit tricky though and apparently requires an oblique frustum?

This'd also let us do some fancier effects such as generating a mip chain for fogged up mirrors.

This is extremely low on my priority list though.

jam10o-new commented 2 years ago

This is a long-term/low-priority issue so I'm just going to drop thoughts here.

Just came back to my mind that... Mirrors in basically every social VR platform are: Locally toggled, Disabled by default

If you are [practically] restricted to a single mirror plane, tying that to a toggle system makes sense (only one "enabled" mirror/plane at a time - all others are just faked).

But that means in the longer term it could give folks the same flexibility in mirror placement they expect elsewhere - and users are already used to toggling mirrors on if they want them.

expenses commented 2 years ago

Apparently you can't use stencil buffers + multiview on my iGPU in Chrome on windows. Seems to have been broken since 47dbd5d3441d3b603d075f4b09670a7f71f42487. There's no warning or anything. I've tested it in Chrome on windows on other setups so it seems to just be an isolated incident.