Offshoot from D2440.
In reality, most of what I'd done there is this: a quality level setting for actors.
This implements:
- A way to define different quality level for a given actor (currently in the same file).
- Prop quality levels are taken into account automatically.
- An option to choose a quality level.
- this option can be changed at runtime.
- a bunch of refactoring
The idea is that the quality is 0-255, with values in the 100-200 range intended to be "normal", below that being "toasters/LOD" and above that "cinematic/super GPUs".
It would help lower-end GPUs to switch off some beautification props, remove variations at lower quality levels.
Why actors and not groups/variants
Variants are already quite complex. Groups could work, but it seemed like it would be simpler to do this at the actor level. It increases duplication, but it makes things more straightforward.
One thing I might do is implement a 'maxquality' attribute on groups & variants, so that if the actor is loaded at a lower quality, these get discarded, and then we could just load the same actor definition with different quality levels & things would work.
TODO:
It would probably be good to have string-equivalent for quality levels, with 100="low", 150="medium", 200="high" for example.- Implement defining the quality levels in different files - this is quite doable, just need to actually do it.
- Maybe implement the duplication reduction above ^
Screenshots
Low: reduced variation, fewer things cast shadows,
Medium: normal variations, shield casts shadows
High: added the greave & some more props around the shield. Everything casts shadows.