Nameless Engine
Loading...
Searching...
No Matches
TextureSamplerDescriptions.hpp
1#pragma once
2
3// External.
4#include "directx/d3dx12.h"
5
6namespace ne {
12 static constexpr std::string_view getTextureSamplersShaderArrayName() { return "textureSamplers"; }
13
19 static D3D12_SAMPLER_DESC getPointSamplerDescription() {
20 return D3D12_SAMPLER_DESC(
21 D3D12_FILTER_MIN_MAG_MIP_POINT,
22 D3D12_TEXTURE_ADDRESS_MODE_WRAP,
23 D3D12_TEXTURE_ADDRESS_MODE_WRAP,
24 D3D12_TEXTURE_ADDRESS_MODE_WRAP,
25 0.0F,
26 16, // NOLINT: magic number, max anisotropy
27 D3D12_COMPARISON_FUNC_NEVER,
28 {1.0F, 1.0F, 1.0F, 1.0F}, // border color if border address mode
29 0.0F,
30 D3D12_FLOAT32_MAX);
31 }
32
38 static D3D12_SAMPLER_DESC getLinearSamplerDescription() {
39 return D3D12_SAMPLER_DESC(
40 D3D12_FILTER_MIN_MAG_MIP_LINEAR,
41 D3D12_TEXTURE_ADDRESS_MODE_WRAP,
42 D3D12_TEXTURE_ADDRESS_MODE_WRAP,
43 D3D12_TEXTURE_ADDRESS_MODE_WRAP,
44 0.0F,
45 16, // NOLINT: magic number, max anisotropy
46 D3D12_COMPARISON_FUNC_NEVER,
47 {1.0F, 1.0F, 1.0F, 1.0F}, // border color if border address mode
48 0.0F,
49 D3D12_FLOAT32_MAX);
50 }
51
57 static D3D12_SAMPLER_DESC getAnisotropicSamplerDescription() {
58 return D3D12_SAMPLER_DESC(
59 D3D12_FILTER_ANISOTROPIC,
60 D3D12_TEXTURE_ADDRESS_MODE_WRAP,
61 D3D12_TEXTURE_ADDRESS_MODE_WRAP,
62 D3D12_TEXTURE_ADDRESS_MODE_WRAP,
63 0.0F,
64 16, // NOLINT: magic number, max anisotropy
65 D3D12_COMPARISON_FUNC_NEVER,
66 {1.0F, 1.0F, 1.0F, 1.0F}, // border color if border address mode
67 0.0F,
68 D3D12_FLOAT32_MAX);
69 }
70
76 static CD3DX12_STATIC_SAMPLER_DESC getStaticComparisonSamplerDescription() {
77 return CD3DX12_STATIC_SAMPLER_DESC(
78 0,
79 D3D12_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT,
80 D3D12_TEXTURE_ADDRESS_MODE_BORDER,
81 D3D12_TEXTURE_ADDRESS_MODE_BORDER,
82 D3D12_TEXTURE_ADDRESS_MODE_BORDER,
83 0.0F,
84 16, // NOLINT: magic number, max anisotropy
85 D3D12_COMPARISON_FUNC_LESS_EQUAL, // same as in Vulkan
86 D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK,
87 0.0F,
88 D3D12_FLOAT32_MAX,
89 D3D12_SHADER_VISIBILITY_ALL,
90 6);
91 }
92}