Render architecture

For rendering using Vulkan or Direct3D 12, you should strive to architecting your graphics engine to be able to easily parallelize drawcalls. Parallel rendering in Direct3D 12 and Vulkan is a lot more potent than it has been before, and should be used to relieve pressure off of the main thread.

In addition, preferably, an architecture that maps to the concept of Vulkan renderpasses would be ideal. This would drastically reduce the amount of runtime management required in terms of framebuffers and graphics pipelines. And last but not least, the driver optimizations and advantages for tiled renderers could provide substantial benefits for certain platforms.

Examples of render architectures that could map well to new APIs include:

Architectures such as these are designed to scale well across multiple threads. In addition, architectures such as these are commonly easier to solve resource barriers for, as bindings tend to be much more tightly controlled.