Initial Vulkan API support for Windows was added in this update along with other minor improvements:
Tutorials applications with Vulkan support:
HelloTriangle tutorial was simplified with removal of vertex buffer and using only vertex_id for triangle rendering.
HelloCube tutorial was added for demonstration of rotating colored cube rendering using only vertex and index buffers. Uniform buffers and program bindings are not used for the purpose of simplicity and vertices transformation is done fully on CPU.
Samples applications:
Scene complexity in Asteroids sample can be changed now with new single-key shortcuts: 0 .. 9
Vulkan API is used via vulkan.hpp C++ wrappers with support of dynamic dispatch table, which allows to build without Vulkan SDK libraries. vk::Unique* wrappers are used to automatically release Vulkan objects in RAII style.
Vulkan debug layer logging is supported.
Vulkan object names and debug labels are supported.
RenderPattern class was added to represent render pass attachments configuration without binding to particular resources (wrapper of vk::Renderpass). RenderPass was updated accordingly to get configuration from RenderPattern and bind attachment resources. RenderPattern instance was added to RenderState settings.
Resource::Location was refactored to use references to resources instead of pointers, get rid of null-pointer checks.
Device::Capabilities struct was added with the required command queues count and other configuration flags, required due to Vulkan specifics.
CommandQueueTrackingBase class was added to share command queue execution tracking logic between DirectX and Vulkan implementations.
Camera::Resize method arguments were changed to use FrameSize and FloatSize structures, which simplify its calls from the App::Resize method.
Graphics/Mesh module was split from Graphics/Primitives.
SkyBox extension is now using CubeMesh instead of SphereMesh for sky rendering.
User Interface library changes:
Text::HorizontalAlignment::Justify added to support horizontal text justification.
HeadsUpDisplay: Graphics API name was added for displaying in HUD .
Common changes:
Shader uniform structures were shared between HLSL and C++ code via header files using HLSL++ library.
Chained parameter setters were added to some major Settings structures for initialization convenience.
External libraries:
Vulkan-Headers was added v1.2.191
SPIRV-Cross was added v2021-01-15
DirectXCompiler was updated to v1.6.2104 to support SPIRV generation on Windows and new binaries for Linux
Catch2 updated to v2.13.7
CLI11 updated to v2.0.0
CMRC updated to 2021-08-27
FMT updated to v8.0.1
FreeType2 updated to v2.11.0+ (2011-09-11)
IttApi updated to 2021-09-06
MagicEnum updated to v0.7.3
STB updated to 2021-09-10
Tracy updated to v0.7.8
CMakeModules updated with manually added support for finding new Windows SDK versions (closed #87)
Build Infrastructure:
CMake build option METHANE_GFX_VULKAN_ENABLED was added to enable Vulkan build on Windows.
Azure build jobs and CMake build profiles were updated for multiple graphics API support and extended with Vulkan builds for Windows.
CMake module MethaneShaders enable compilation of HLSL shaders to SPIRV for Vulkan graphics API using new DirectX Compiler (DXC) version.
Build scripts Build/Windows/Build.bat and Build/Posix/Build.sh were extended with convenience command line options, including --vulkan, --debug, --graphviz, --analyze and others.
Initial Vulkan build support on MacOS was added via MoltenVK library, unfortunately it does not work due to some unsupported Vulkan extensions which are required by Methane Kit.
Methane Kit v0.6 Pre-Release Update 1
Initial Vulkan API support for Windows was added in this update along with other minor improvements:
HelloTriangle
tutorial was simplified with removal of vertex buffer and using onlyvertex_id
for triangle rendering.HelloCube
tutorial was added for demonstration of rotating colored cube rendering using only vertex and index buffers. Uniform buffers and program bindings are not used for the purpose of simplicity and vertices transformation is done fully on CPU.Asteroids
sample can be changed now with new single-key shortcuts:0 .. 9
SystemVK
,DeviceVK
,RenderContextVK
,FrameBufferTextureVK
,RenderPassVK
,RenderPatternVK
,ShaderVK
,ProgramVK
,RenderStateVK
,ViewStateVK
,CommandListVK
,RenderCommandListVK
,FenceVK
,BufferVK
classes.vulkan.hpp
C++ wrappers with support of dynamic dispatch table, which allows to build withoutVulkan SDK
libraries.vk::Unique*
wrappers are used to automatically release Vulkan objects in RAII style.RenderPattern
class was added to represent render pass attachments configuration without binding to particular resources (wrapper ofvk::Renderpass
).RenderPass
was updated accordingly to get configuration fromRenderPattern
and bind attachment resources.RenderPattern
instance was added toRenderState
settings.Resource::Location
was refactored to use references to resources instead of pointers, get rid of null-pointer checks.Device::Capabilities
struct was added with the required command queues count and other configuration flags, required due to Vulkan specifics.CommandQueueTrackingBase
class was added to share command queue execution tracking logic between DirectX and Vulkan implementations.RenderContextDX
implementation is now using waitable object to reduce DXGI swap-chain latency.Camera::Resize
method arguments were changed to useFrameSize
andFloatSize
structures, which simplify its calls from theApp::Resize
method.Graphics/Mesh
module was split fromGraphics/Primitives
.SkyBox
extension is now usingCubeMesh
instead ofSphereMesh
for sky rendering.Text::HorizontalAlignment::Justify
added to support horizontal text justification.HeadsUpDisplay
: Graphics API name was added for displaying in HUD .Settings
structures for initialization convenience.Vulkan-Headers
was added v1.2.191SPIRV-Cross
was added v2021-01-15DirectXCompiler
was updated to v1.6.2104 to support SPIRV generation on Windows and new binaries for LinuxCatch2
updated to v2.13.7CLI11
updated to v2.0.0CMRC
updated to 2021-08-27FMT
updated to v8.0.1FreeType2
updated to v2.11.0+ (2011-09-11)IttApi
updated to 2021-09-06MagicEnum
updated to v0.7.3STB
updated to 2021-09-10Tracy
updated to v0.7.8CMakeModules
updated with manually added support for finding new Windows SDK versions (closed #87)METHANE_GFX_VULKAN_ENABLED
was added to enable Vulkan build on Windows.MethaneShaders
enable compilation of HLSL shaders to SPIRV for Vulkan graphics API using new DirectX Compiler (DXC) version.Build/Windows/Build.bat
andBuild/Posix/Build.sh
were extended with convenience command line options, including--vulkan
,--debug
,--graphviz
,--analyze
and others.MoltenVK
library, unfortunately it does not work due to some unsupported Vulkan extensions which are required by Methane Kit.