* Move previewMode to RenderData instead of ShaderData (still some to do here, as apparently there's still a RenderData _and a_ ShaderData per node, but the intention was to have a RenderData per node and then share ShaderData between those)
* Introduce a temporary identifier for nodes. The first part of this identifier is an index (`int`) which is assigned linearly. When a node is deleted, its identifier as added to a free list. Each identifier also contains a version (`int`), which is incremented when the identifier is re-used. This allows us to replace usage of Dictionary with List in a lot of places.
* Introduce IndexSet for efficiently storing and manipulating a list of indices (e.g. from temp IDs). Internally this stores a list of 32-bit integers and uses each bit to represent 1 index. The operations of `ISet<int>` are implemented for this type, although that interface does not exist in Unity. The operations are very fast and cac...
- Requires reorder of preview shader includes
- Requires adding EntityLighting.hlsl to preview shader includes (For DecodeHDREnvironment)
- Requires addeing unity_SpecCube0 (texture, sampler and instruction) to ShaderVariables.hlsl (for Preview shader)
- Added "legacy" ComputeScreenPos function
- Added ScreenPositionSlotControlView and its style element (USS).
- Moved ScreenSpaceType enum definition to ScreenSpaceType.cs and added
ScreenSpaceTypeExtensions that provides extension methods for the enum.
- Updated the existing implementation to work with
ScreenPositionSlotControlView.
- Separate Master node requirements into per-slot stages
- Add shader stage option to IMayRequire interfaces
- Remove uneeded intermediate spaces from surface description
- Change orthonormal basis to world