That example alone doesn't seem to be triggering the allocation of both bool and float registers for `a.b` because of compiler optimizations[1], but I changed the shader a little to prevent them:
Curious, it does for me (d3dcompiler_47 from winetricks). But yes, it probably is not critical to match native exactly.
So, we will need a function similar to `track_object_components_usage()` but checking for the usage of bool components, to determine the size of the variable in the REGSET_BOOL (?). Still, I don't think tracking per-component would be necessary.
We could potentially do it in the same function, even (and call it something that implies it's not specific to objects).