SPARK  0.1.0
A general purpose game engine written in C++.
Loading...
Searching...
No Matches
VulkanSampler.h
1#pragma once
2
3#include "spark/render/Resource.h"
4#include "spark/render/Sampler.h"
5#include "spark/render/StateResource.h"
6#include "spark/render/vk/Export.h"
7#include "spark/render/vk/Helpers.h"
8
9#include "spark/base/Macros.h"
10
11#include <memory>
12
13SPARK_FWD_DECLARE_VK_HANDLE(VkSampler)
14
15namespace spark::render::vk
16{
17 class VulkanDevice;
18
22 class SPARK_RENDER_VK_EXPORT IVulkanSampler : public ISampler, public virtual IResource<VkSampler> {};
23
24 SPARK_WARNING_PUSH
25 SPARK_DISABLE_MSVC_WARNING(4250) // 'VulkanSampler': inherits 'Resource<VkSampler>::handle' via dominance
26
27
30 class SPARK_RENDER_VK_EXPORT VulkanSampler final : public IVulkanSampler, public Resource<VkSampler>, public StateResource
31 {
32 public:
48 explicit VulkanSampler(const VulkanDevice& device,
49 FilterMode mag_filter = FilterMode::Nearest,
50 FilterMode min_filter = FilterMode::Nearest,
51 BorderMode border_u = BorderMode::Repeat,
52 BorderMode border_v = BorderMode::Repeat,
53 BorderMode border_w = BorderMode::Repeat,
54 MipMapMode mip_map_mode = MipMapMode::Nearest,
55 float mip_map_bias = 0.f,
56 float min_lod = 0.f,
57 float max_lod = std::numeric_limits<float>::max(),
58 float anisotropy = 0.f,
59 const std::string& name = "");
60 ~VulkanSampler() override;
61
62 VulkanSampler(const VulkanSampler& other) = delete;
63 VulkanSampler(VulkanSampler&& other) noexcept = delete;
64 VulkanSampler& operator=(const VulkanSampler& other) = delete;
65 VulkanSampler& operator=(VulkanSampler&& other) noexcept = delete;
66
68 [[nodiscard]] FilterMode minifyingFilter() const noexcept override;
69
71 [[nodiscard]] FilterMode magnifyingFilter() const noexcept override;
72
74 [[nodiscard]] std::array<BorderMode, 3> borderMode() const noexcept override;
75
77 [[nodiscard]] float anisotropy() const noexcept override;
78
80 [[nodiscard]] MipMapMode mipMapMode() const noexcept override;
81
83 [[nodiscard]] float mipMapBias() const noexcept override;
84
86 [[nodiscard]] float minLod() const noexcept override;
87
89 [[nodiscard]] float maxLod() const noexcept override;
90
91 private:
92 struct Impl;
93 std::unique_ptr<Impl> m_impl;
94 };
95
96 SPARK_WARNING_POP
97}
Provides access to a resource managed by the derived class.
Definition Resource.h:11
Describes a texture sampler.
Definition Sampler.h:59
Definition Resource.h:34
Base class for a resource that can be identified by a name in a DeviceState.
Definition StateResource.h:29
Interface for Vulkan sampler.
Definition VulkanSampler.h:22
Vulkan implementation of IGraphicsDevice.
Definition VulkanDevice.h:25
Vulkan implementation of ISampler.
Definition VulkanSampler.h:31
Definition VulkanSampler.cpp:53