The renderer is some of the earliest Inferno code and some of the worst. I was still learning DX12 and C++ at this time and the current design simply will not work for future features.
The breaking point was wanting to add custom models for powerups, which required hacking in extra TexIDs at the end of the PIG tables. The issue only became more apparent when wanting to load and mix resources from Descent 3.
- Rewrite the renderer and asset loading to be generic. Do not base it around the PIG files of D1 and D2. Instead, load resources into a dictionary and then resolve game resources to that instead. This will require creating a new texture table, but eliminates the need for the robot / model texture tables.
- Shader management is a mess and requires far too many edits in different places to add a new one. Redesign.
- The renderer is not isolated properly to support multiple passes in the same frame. This will become an issue once rear view / missile views are added to the cockpit monitors. This is a Descent 2 feature, but should be present in D1.
I am currently in the process of developing a standalone renderer in another project, as trying to build one in the current codebase is not viable.
The renderer is some of the earliest Inferno code and some of the worst. I was still learning DX12 and C++ at this time and the current design simply will not work for future features.
The breaking point was wanting to add custom models for powerups, which required hacking in extra TexIDs at the end of the PIG tables. The issue only became more apparent when wanting to load and mix resources from Descent 3.
I am currently in the process of developing a standalone renderer in another project, as trying to build one in the current codebase is not viable.