

- #DETROIT BECOME HUMAN PC SHADER COMPILATION PROCESS DRIVERS#
- #DETROIT BECOME HUMAN PC SHADER COMPILATION PROCESS DRIVER#
This completely eradicated the stuttering issue, but we were now facing a new problem: the generation of the VkPipelineCache was taking a very long time. In the end, we decided to generate all the VkPipeline during the first launch of the game. Then we anticipated the creation of the VkPipelines during loading, but it was so slow when the VkPipelineCache was not up-to-date that our background loading strategy was compromised. The VkPipelineCache is then up-to-date, and the stuttering will be gone for the next draw call. Initially, we tried to create the VkPipelines the first time we needed them.
#DETROIT BECOME HUMAN PC SHADER COMPILATION PROCESS DRIVER#
This information is important for the driver to ensure it has everything it needs to compile shaders in the most efficient way possible.

A VkPipeline can be made with a vertex and a pixel shader for instance. SPIR-V makes shader compilation faster and easier to optimize for the driver shader compiler.

It was taking a whole night to generate a complete shader cache for Detroit: Become Human! This shader cache was provided to everyone each morning. This resulted in an insane number of vertex and pixel shaders, so we knew from the beginning of the port that this will be a huge problem.ĭuring the production of the game, we generated a shader cache targeting the GPU model of our workstations.
#DETROIT BECOME HUMAN PC SHADER COMPILATION PROCESS DRIVERS#
On PC, the driver needs to compile shaders at load time: this cannot be an off-line process because of the wide configurations of GPUs and drivers that need to be supported. We knew that the high number of draw calls could be an issue with low-end PCs. This means we can push a lot of draw calls per frame. As the driver has less work to do, we have more work to do! It is very direct and has very low overhead. For instance, we are responsible for handling memory or implementing a shader cache. There is still an abstraction because it runs on different GPUs, but we have much more control. Consequently, it can be very hard to optimize a full-featured 3D engine. They rely on the driver to do a lot of work which is hidden from the developer. These APIs are easy to understand and are very suitable for learning purposes. There are not enough resource slots, and it would have been very difficult to reach a decent performance if we had to reorganize our shaders to use fewer resources. Consequently, the PC version was a great challenge for us. It has very strong visuals and most of the technology has been developed internally. We started to work on the PC version in July and it was released in December It is an adventure game with three playable characters and many different story lines. It was released in three parts, and all three parts are now available with links at the end of Part 1. The information contained in the blog represents the view of AMD or of the third-party authors as of the posting date.
