ImageId struct is 8-bytes large and can fit in CPU register. Passing it
by value lets compiler pass it in register instead of forcing to
reference it from memory.
In my tests this brings
[dome park](https://github.com/OpenRCT2/OpenRCT2/files/6134362/dome-export.zip)
benchgfx results from 42.16s down to 41.08s, or by 2.5%.
* Tidy up masked paint code
Its only used by surface elements and only then by attached ps's so no need to support it in the normal ps.
* Remove unneeded function
Define see-through paint colours in Paint.h for global use
Color staff sprite button
Change ride->is_visible bool to ignore_invisible_flag bool
Add shortcut to open transparency options (CTRL+T)
- Changes all references of `VIEWPORT_FLAG_INVISIBLE_PEEPS` to `VIEWPORT_FLAG_INVISIBLE_GUESTS` and `VIEWPORT_FLAG_INVISIBLE_STAFF`
- Updates Invisible People menu item and shortcut.
- Added new viewport flags into the `viewport_set_visibility` function
- Invisible options only work if see-through is activated as well
- Added see-through supports
- Regression: Exclude ride from invisible no longer works (ride is still see-through)
* Implement profiling API
* Add console commands for the profiler
* Remove accidental line
* Correct csv output
* Add copyright notice
* Add missing override
* Add default virtual destructor
* Explicitly pass template argument
* Use static
* Add plugin API for profiler
* Add more profile calls
* Workaround for GCC hopefully
* Add missing static keyword
* Use uint64 for call count
* Reduce name length see if CI passes
* Improve handling of function names
* Work around (broken) static inline variables
* Fix missing include
* Disable profiler for clang 5 and older
* Update copyright date
* Profile UpdateAllMiscEntities
* Apply review suggestions
Co-authored-by: Ted John <ted@brambles.org>
* Move to image ID for paint struct
* Move image list to be past the end of legacy limit
* Extend image list size
* Introduce constants for image list size
* Use std::array to store internal paint struct
For most of these cases, adding a trailing comma to the array block makes clang-format put each item on a new line, and clang-format exception blocks could be reduced where clang-format does not handle them properly.