target_sources(Engine
    PRIVATE
        Buffer.h
        Buffer.cpp
        Command.h
        Command.cpp
        DebugVertex.h
        Descriptor.h
        Descriptor.cpp
        Enums.h
        Enums.cpp
        Graphics.h
        Graphics.cpp
        Initializer.h
        Mesh.h
        Mesh.cpp
        Meshlet.h
        Meshlet.cpp
        Pipeline.h
        Pipeline.cpp
        RenderTarget.h
        RenderTarget.cpp
        Resources.h
        Resources.cpp
        Shader.h
        Shader.cpp
        slang-compile.h
        slang-compile.cpp
        StaticMeshVertexData.h
        StaticMeshVertexData.cpp
        Texture.h
        Texture.cpp
        VertexData.h
        VertexData.cpp
        Window.h
        Window.cpp)

target_sources(Engine
    PUBLIC FILE_SET HEADERS
        FILES
            Buffer.h
            Command.h
            DebugVertex.h
            Descriptor.h
            Enums.h
            Graphics.h
            Initializer.h
            Mesh.h
            Meshlet.h
            Pipeline.h
            RenderTarget.h
            Resources.h
            Shader.h
            StaticMeshVertexData.h
            Texture.h
            VertexData.h
            Window.h)

add_subdirectory(RenderPass/)
if(APPLE)
    add_subdirectory(Metal/)
else()
    add_subdirectory(Vulkan/)
endif()