VK9 has reached it's 12th and 13th milestones. Reaching these milestones required the addition of limited lighting support and significant improvements to the texture stage support. The variables used for texture stages are now handled with specialization constants. What this means is that although they exist in the SPIR-V they should be optimized away when the SPIR-V is compiled into GPU instructions. This approach means that the GPU should only be running relevant code for fixed function. As part of initial lighting support both the light structures and material structure are available to the shaders being used to handle fixed function.
VK9 has reached it's 14th,15th, and 16th milestones. Reaching these milestones required further work on alpha blending and lighting support for fixed function. In addition this release switched to the glslc shader compiler from Google. The primary reason for the switch is the addition of #include support in shaders. This will allow some shader code for fixed function to be deduplicated.
VK9 has reached it's 23rd milestone. Reaching this milestone required the implementation of basic shader support. Leading up to this new feature enhancements were made to fixed function lighting support and several minor improvements such as converting Vulkan API results to human readable strings in log messages. The next steps for the project will be to continue implementing the remaining fixed function features as well as the remaining DXBC instructions. I plan to take a break for the Holiday's and hit the ground running in 2018.
For those of you interested in the technical approach VK9's shader support works by taking the DXBC (Microsoft's old DirectX byte code format) passed to it by the application and it converts it to SPIR-V which is Vulkan's byte code format. There are significant challenges in the conversion for various reasons. One such example is the TEX instruction which functions differently depending on the shader model used. The rules for input/outpu…