* It's supposed to be legal technically, but it's illegal to dereference so
dropping these binds is also fine. Since this has caused driver crashes before
that seems safer.
* It seems like the problem isn't related to mips, but to 64x64 dimension faces
(or smaller). Since it's hard to figure out exactly what the bug is and this
might break in other scenarios maybe with other texture formats, we fall back
to enabling the workaround across all cubemaps. This is unfortunate but the
only way to be reliable.
- Add a new combo box and button to camera settings for mesh viewer
- Add a new dialog window for custom axis mappings
- Implement the axis mappings in gl driver (other drivers to come)
* We also add the ability to toggle on/off the replacement being active without
needing to intentionally add a compile error (and this also makes it more
explicitly clear when the shader replacement is enabled or not. This could be
useful for quick A/B testing between the edited version and the original.
* We also add some extra debug asserts after the fixup path to ensure that all
pointers are in the correct array (if we miss passing the old/new function for
a value fixup like this, it could point to the old function and be silently
ignored since that's conditional).
* A unit test harness is added too for convenience of iterating on a single
shader's annotation.
* Previously the vertex picking was always being done in NDC space, but now for
perspective projections we unproject into world space and raycast there for
more reliable results with unsual projections.
* If we're replaying state set before a pipeline is bound we don't know which
values are dynamic so conservatively we set them all. This means the state can
be anything by default as long as it's legal - if it doesn't come from a
previous dynamic state set its value is irrelevant.
* MSVC gives each variable in the switch/case its own stack space, which means
this function needs a bunch and if we serialise a long pNext chain (like
device features) we can easily overflow the stack.
* I didn't check release, my suspicion is that this isn't an issue there, but
the workaround is small so it's still useful to do.