HatchitResource
ht_sampler_base.h
1 
15 #pragma once
16 
17 #include <ht_platform.h>
18 #include <ht_types.h>
19 #include <ht_string.h>
20 
21 namespace Hatchit
22 {
23  namespace Resource
24  {
25  class HT_API Sampler
26  {
27  public:
28  enum class ShaderVisibility
29  {
30  UNKNOWN,
31  ALL,
32  VERTEX,
33  TESS_CONTROL,
34  TESS_EVAL,
35  GEOMETRY,
36  FRAGMENT
37  };
38 
39  struct Immutable
40  {
41  uint32_t shaderRegister;
42  uint32_t registerSpace;
43  ShaderVisibility visibility;
44  };
45 
46  enum class AddressMode
47  {
48  WRAP,
49  CLAMP,
50  BORDER,
51  MIRROR,
52  MIRROR_ONCE
53  };
54 
55  enum class CompareOperation
56  {
57  COMPARE_OP_NEVER,
58  COMPARE_OP_LESS,
59  COMPARE_OP_EQUAL,
60  COMPARE_OP_LESS_EQUAL,
61  COMPARE_OP_GREATER,
62  COMPARE_OP_NOT_EQUAL,
63  COMPARE_OP_GREATER_EQUAL,
64  COMPARE_OP_ALWAYS
65  };
66 
67  enum class FilterMode
68  {
69  NEAREST,
70  BILINEAR
71  };
72 
73  enum class MipMode
74  {
75  NEAREST,
76  LINEAR
77  };
78 
79  enum class BorderColor
80  {
81  COLOR_TRANSPARENT_BLACK,
82  COLOR_OPAQUE_BLACK,
83  COLOR_OPAQUE_WHITE
84  };
85 
86  enum class ColorSpace
87  {
88  GAMMA,
89  LINEAR
90  };
91 
92  struct Address
93  {
94  AddressMode u;
95  AddressMode v;
96  AddressMode w;
97  };
98 
99  struct Filter
100  {
101  FilterMode min;
102  FilterMode mag;
103  };
104 
105  virtual ~Sampler() = default;
106 
107  const Filter& GetFilter() const;
108  const Address& GetAddress() const;
109  const Immutable& GetImmutable() const;
110  float GetMipLODBias() const;
111  float GetMinLOD() const;
112  float GetMaxLOD() const;
113  uint32_t GetMaxAnisotropy() const;
114  CompareOperation GetCompareOp() const;
115  BorderColor GetBorderColor() const;
116  ColorSpace GetColorSpace() const;
117  MipMode GetMipMode() const;
118 
119  protected:
120  Address m_address;
121  Filter m_filter;
122  float m_mipLODBias;
123  float m_minLOD;
124  float m_maxLOD;
125  uint32_t m_maxAnisotropy;
126  CompareOperation m_compareOp;
127  BorderColor m_borderColor;
128  MipMode m_mipMode;
129  Immutable m_immutable;
130  ColorSpace m_colorSpace;
131 
132 
133  static Sampler::MipMode SamplerMipModeFromString(std::string s);
134  static Sampler::FilterMode SamplerFilterModeFromString(std::string s);
135  static Sampler::AddressMode SamplerAddressModeFromString(std::string s);
136  static Sampler::ColorSpace SamplerColorSpaceFromString(std::string s);
137  static Sampler::CompareOperation SamplerCompareOpFromString(std::string s);
138  static Sampler::BorderColor SamplerBorderColorFromString(std::string s);
139  static ShaderVisibility SamplerVisibilityFromString(std::string s);
140 
141  friend class RootLayout;
142 
143  };
144  }
145 }
Definition: ht_sampler_base.h:92
Definition: ht_sampler_base.h:25
Definition: ht_rootlayout_resource.h:26
Hatchit Engine Copyright(c) 2015-2016 Third-Degree.
Definition: ht_assimp.h:31
Definition: ht_sampler_base.h:39
Definition: ht_sampler_base.h:99