- 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)
* When using VS In we want to ignore the W component, but that already happens
explicitly for vulkan/GL in the shader. Mirror that same solution to D3D
instead of trying to force a 3-component format which may not be supported
(e.g. on AMD R16G16B16_*)
* On GL you can specify a vertex attribute that's stored as int but gets
converted to float with glVertexAttribFormat instead of glVertexAttribIFormat.
However if the shader accepts an int this is invalid and the value is
undefined - we emulate this as the float bits being read as int directly, but
that's not guaranteed behaviour.
* Normally we don't emulate this kind of mis-cast behaviour and just display the
type of data passed to the shader, but in this case GL lets you specify three
types (stored as int, cast to float, read as int) so our normal behaviour of
just showing the input can be more misleading than normal.
* There's not a good accepted terminology for this kind of event, and for
historical reasons 'drawcall' has been the accepted term, even though
that can be quite confusing when a dispatch or a copy is a 'drawcall'.
* This is particularly highlighted by the event browser filters where
$draw() includes draws and dispatches, but $dispatch() only includes
dispatches, it's hard to intuitively understand why $draw() matches all
of these calls.
* As a result we've defined the term 'action' to cover these types of
events in the same way that we defined 'event' in the first place to
mean a single atomic API call.
* Also added a script that can run as part of CI to verify that the docstring
matches, by generating a regex from the docstring documented parameter types
and return type and making sure we find a match within the C headers. This
ensures all parameters are documented with the right types, no extra
parameters are documented, and the return type is correct.
* The script also checks proper scoping so that if qrenderdoc docstrings
mention a renderdoc type, they need to scope it properly.
* This is a leftover artifact from before we had general extended type support
and double was the only non-32 bit type we handled. Now we support most type
formats so doubles are just CompType::Float with 8 byte width
* Actually creating a 64-bit spinbox is not feasible without constructing it
almost from scratch due to how much QAbstractSpinBox depends on private
internals that can't be overridden. Instead use a QDoubleSpinBox with no
decimals since we don't need the full 64-bit range, and the mantissa of a
double is enough.
* E.g. on D3D12 we can debug DXBC shaders but not DXIL shaders. On vulkan this
will allow us to have the UI work better when encountering shaders with
unsupported capabilities or extensions.
* We change to use VarType instead of CompType for signature parameters which
allows us to represent different types of variables beyond just
unsigned/signed integer and float.