* 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
- 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
* Converting template parser to a class to enable recursive $include in the near future
* New template parser working with $include, $splice
Including dependency tracking on $include
* Adding $buildType template command, and cleaning up the code around that.
* Bump major version number. Using ShaderStringBuilder.
* Don't build slot list twice
* Fix view space position for FB case 1064118