1//************************************ bs::framework - Copyright 2018 Marko Pintera **************************************//
2//*********** Licensed under the MIT license. See LICENSE.md for full terms. This notice is not to be removed. ***********//
3#pragma once
4
5#include "BsCorePrerequisites.h"
6#include "Reflection/BsRTTIType.h"
7#include "Renderer/BsRenderSettings.h"
8
9namespace bs
10{
11 /** @cond RTTI */
12 /** @addtogroup RTTI-Impl-Engine
13 * @{
14 */
15
16 class BS_CORE_EXPORT AutoExposureSettingsRTTI : public RTTIType <AutoExposureSettings, IReflectable, AutoExposureSettingsRTTI>
17 {
18 private:
19 BS_BEGIN_RTTI_MEMBERS
20 BS_RTTI_MEMBER_PLAIN(histogramLog2Min, 0)
21 BS_RTTI_MEMBER_PLAIN(histogramLog2Max, 1)
22 BS_RTTI_MEMBER_PLAIN(histogramPctLow, 2)
23 BS_RTTI_MEMBER_PLAIN(histogramPctHigh, 3)
24 BS_RTTI_MEMBER_PLAIN(minEyeAdaptation, 4)
25 BS_RTTI_MEMBER_PLAIN(maxEyeAdaptation, 5)
26 BS_RTTI_MEMBER_PLAIN(eyeAdaptationSpeedUp, 6)
27 BS_RTTI_MEMBER_PLAIN(eyeAdaptationSpeedDown, 7)
28 BS_END_RTTI_MEMBERS
29
30 public:
31 const String& getRTTIName() override
32 {
33 static String name = "AutoExposureSettings";
34 return name;
35 }
36
37 UINT32 getRTTIId() override
38 {
39 return TID_AutoExposureSettings;
40 }
41
42 SPtr<IReflectable> newRTTIObject() override
43 {
44 return bs_shared_ptr_new<AutoExposureSettings>();
45 }
46 };
47
48 class BS_CORE_EXPORT TonemappingSettingsRTTI : public RTTIType <TonemappingSettings, IReflectable, TonemappingSettingsRTTI>
49 {
50 private:
51 BS_BEGIN_RTTI_MEMBERS
52 BS_RTTI_MEMBER_PLAIN(filmicCurveShoulderStrength, 0)
53 BS_RTTI_MEMBER_PLAIN(filmicCurveLinearStrength, 1)
54 BS_RTTI_MEMBER_PLAIN(filmicCurveLinearAngle, 2)
55 BS_RTTI_MEMBER_PLAIN(filmicCurveToeStrength, 3)
56 BS_RTTI_MEMBER_PLAIN(filmicCurveToeNumerator, 4)
57 BS_RTTI_MEMBER_PLAIN(filmicCurveToeDenominator, 5)
58 BS_RTTI_MEMBER_PLAIN(filmicCurveLinearWhitePoint, 6)
59 BS_END_RTTI_MEMBERS
60
61 public:
62 const String& getRTTIName() override
63 {
64 static String name = "TonemappingSettings";
65 return name;
66 }
67
68 UINT32 getRTTIId() override
69 {
70 return TID_TonemappingSettings;
71 }
72
73 SPtr<IReflectable> newRTTIObject() override
74 {
75 return bs_shared_ptr_new<TonemappingSettings>();
76 }
77 };
78
79 class BS_CORE_EXPORT WhiteBalanceSettingsRTTI : public RTTIType <WhiteBalanceSettings, IReflectable, WhiteBalanceSettingsRTTI>
80 {
81 private:
82 BS_BEGIN_RTTI_MEMBERS
83 BS_RTTI_MEMBER_PLAIN(temperature, 0)
84 BS_RTTI_MEMBER_PLAIN(tint, 1)
85 BS_END_RTTI_MEMBERS
86
87 public:
88 const String& getRTTIName() override
89 {
90 static String name = "WhiteBalanceSettings";
91 return name;
92 }
93
94 UINT32 getRTTIId() override
95 {
96 return TID_WhiteBalanceSettings;
97 }
98
99 SPtr<IReflectable> newRTTIObject() override
100 {
101 return bs_shared_ptr_new<WhiteBalanceSettings>();
102 }
103 };
104
105 class BS_CORE_EXPORT ColorGradingSettingsRTTI : public RTTIType <ColorGradingSettings, IReflectable, ColorGradingSettingsRTTI>
106 {
107 private:
108 BS_BEGIN_RTTI_MEMBERS
109 BS_RTTI_MEMBER_PLAIN(saturation, 0)
110 BS_RTTI_MEMBER_PLAIN(contrast, 1)
111 BS_RTTI_MEMBER_PLAIN(gain, 2)
112 BS_RTTI_MEMBER_PLAIN(offset, 3)
113 BS_END_RTTI_MEMBERS
114
115 public:
116 const String& getRTTIName() override
117 {
118 static String name = "ColorGradingSettings";
119 return name;
120 }
121
122 UINT32 getRTTIId() override
123 {
124 return TID_ColorGradingSettings;
125 }
126
127 SPtr<IReflectable> newRTTIObject() override
128 {
129 return bs_shared_ptr_new<ColorGradingSettings>();
130 }
131 };
132
133 class BS_CORE_EXPORT DepthOfFieldSettingsRTTI : public RTTIType <DepthOfFieldSettings, IReflectable, DepthOfFieldSettingsRTTI>
134 {
135 private:
136 BS_BEGIN_RTTI_MEMBERS
137 BS_RTTI_MEMBER_PLAIN(enabled, 0)
138 BS_RTTI_MEMBER_PLAIN(focalDistance, 1)
139 BS_RTTI_MEMBER_PLAIN(focalRange, 2)
140 BS_RTTI_MEMBER_PLAIN(nearTransitionRange, 3)
141 BS_RTTI_MEMBER_PLAIN(farTransitionRange, 4)
142 BS_RTTI_MEMBER_PLAIN(nearBlurAmount, 5)
143 BS_RTTI_MEMBER_PLAIN(farBlurAmount, 6)
144 BS_END_RTTI_MEMBERS
145
146 public:
147 const String& getRTTIName() override
148 {
149 static String name = "DepthOfFieldSettings";
150 return name;
151 }
152
153 UINT32 getRTTIId() override
154 {
155 return TID_DepthOfFieldSettings;
156 }
157
158 SPtr<IReflectable> newRTTIObject() override
159 {
160 return bs_shared_ptr_new<DepthOfFieldSettings>();
161 }
162 };
163
164 class BS_CORE_EXPORT AmbientOcclusionSettingsRTTI : public RTTIType <AmbientOcclusionSettings, IReflectable, AmbientOcclusionSettingsRTTI>
165 {
166 private:
167 BS_BEGIN_RTTI_MEMBERS
168 BS_RTTI_MEMBER_PLAIN(enabled, 0)
169 BS_RTTI_MEMBER_PLAIN(radius, 1)
170 BS_RTTI_MEMBER_PLAIN(bias, 2)
171 BS_RTTI_MEMBER_PLAIN(fadeRange, 3)
172 BS_RTTI_MEMBER_PLAIN(fadeDistance, 4)
173 BS_RTTI_MEMBER_PLAIN(intensity, 5)
174 BS_RTTI_MEMBER_PLAIN(power, 6)
175 BS_RTTI_MEMBER_PLAIN(quality, 7)
176 BS_END_RTTI_MEMBERS
177
178 public:
179 const String& getRTTIName() override
180 {
181 static String name = "AmbientOcclusionSettings";
182 return name;
183 }
184
185 UINT32 getRTTIId() override
186 {
187 return TID_AmbientOcclusionSettings;
188 }
189
190 SPtr<IReflectable> newRTTIObject() override
191 {
192 return bs_shared_ptr_new<AmbientOcclusionSettings>();
193 }
194 };
195
196 class BS_CORE_EXPORT ScreenSpaceReflectionsSettingsRTTI : public RTTIType <ScreenSpaceReflectionsSettings, IReflectable, ScreenSpaceReflectionsSettingsRTTI>
197 {
198 private:
199 BS_BEGIN_RTTI_MEMBERS
200 BS_RTTI_MEMBER_PLAIN(enabled, 0)
201 BS_RTTI_MEMBER_PLAIN(intensity, 1)
202 BS_RTTI_MEMBER_PLAIN(maxRoughness, 2)
203 BS_RTTI_MEMBER_PLAIN(quality, 3)
204 BS_END_RTTI_MEMBERS
205
206 public:
207 const String& getRTTIName() override
208 {
209 static String name = "ScreenSpaceReflectionsSettings";
210 return name;
211 }
212
213 UINT32 getRTTIId() override
214 {
215 return TID_ScreenSpaceReflectionsSettings;
216 }
217
218 SPtr<IReflectable> newRTTIObject() override
219 {
220 return bs_shared_ptr_new<ScreenSpaceReflectionsSettings>();
221 }
222 };
223
224 class BS_CORE_EXPORT BloomSettingsRTTI : public RTTIType <BloomSettings, IReflectable, BloomSettingsRTTI>
225 {
226 private:
227 BS_BEGIN_RTTI_MEMBERS
228 BS_RTTI_MEMBER_PLAIN(enabled, 0)
229 BS_RTTI_MEMBER_PLAIN(quality, 1)
230 BS_RTTI_MEMBER_PLAIN(threshold, 2)
231 BS_RTTI_MEMBER_PLAIN(intensity, 3)
232 BS_RTTI_MEMBER_PLAIN(tint, 4)
233 BS_END_RTTI_MEMBERS
234
235 public:
236 const String& getRTTIName() override
237 {
238 static String name = "BloomSettings";
239 return name;
240 }
241
242 UINT32 getRTTIId() override
243 {
244 return TID_BloomSettings;
245 }
246
247 SPtr<IReflectable> newRTTIObject() override
248 {
249 return bs_shared_ptr_new<BloomSettings>();
250 }
251 };
252
253 class BS_CORE_EXPORT ShadowSettingsRTTI : public RTTIType <ShadowSettings, IReflectable, ShadowSettingsRTTI>
254 {
255 private:
256 BS_BEGIN_RTTI_MEMBERS
257 BS_RTTI_MEMBER_PLAIN(directionalShadowDistance, 0)
258 BS_RTTI_MEMBER_PLAIN(numCascades, 1)
259 BS_RTTI_MEMBER_PLAIN(cascadeDistributionExponent, 2)
260 BS_RTTI_MEMBER_PLAIN(shadowFilteringQuality, 3)
261 BS_END_RTTI_MEMBERS
262
263 public:
264 const String& getRTTIName() override
265 {
266 static String name = "ShadowSettings";
267 return name;
268 }
269
270 UINT32 getRTTIId() override
271 {
272 return TID_ShadowSettings;
273 }
274
275 SPtr<IReflectable> newRTTIObject() override
276 {
277 return bs_shared_ptr_new<ShadowSettings>();
278 }
279 };
280
281 class BS_CORE_EXPORT RenderSettingsRTTI : public RTTIType <RenderSettings, IReflectable, RenderSettingsRTTI>
282 {
283 private:
284 BS_BEGIN_RTTI_MEMBERS
285 BS_RTTI_MEMBER_PLAIN(enableAutoExposure, 0)
286 BS_RTTI_MEMBER_REFL(autoExposure, 1)
287 BS_RTTI_MEMBER_PLAIN(enableTonemapping, 2)
288 BS_RTTI_MEMBER_REFL(tonemapping, 3)
289 BS_RTTI_MEMBER_REFL(whiteBalance, 4)
290 BS_RTTI_MEMBER_REFL(colorGrading, 5)
291 BS_RTTI_MEMBER_PLAIN(exposureScale, 6)
292 BS_RTTI_MEMBER_PLAIN(gamma, 7)
293 BS_RTTI_MEMBER_REFL(depthOfField, 8)
294 BS_RTTI_MEMBER_PLAIN(enableFXAA, 9)
295 BS_RTTI_MEMBER_REFL(ambientOcclusion, 10)
296 BS_RTTI_MEMBER_REFL(screenSpaceReflections, 11)
297 BS_RTTI_MEMBER_PLAIN(enableHDR, 12)
298 BS_RTTI_MEMBER_PLAIN(enableLighting, 13)
299 BS_RTTI_MEMBER_PLAIN(enableShadows, 14)
300 BS_RTTI_MEMBER_PLAIN(overlayOnly, 15)
301 BS_RTTI_MEMBER_PLAIN(enableIndirectLighting, 16)
302 BS_RTTI_MEMBER_REFL(shadowSettings, 17)
303 BS_RTTI_MEMBER_PLAIN(enableSkybox, 18)
304 BS_RTTI_MEMBER_REFL(bloom, 19)
305 BS_END_RTTI_MEMBERS
306
307 public:
308 const String& getRTTIName() override
309 {
310 static String name = "RenderSettings";
311 return name;
312 }
313
314 UINT32 getRTTIId() override
315 {
316 return TID_RenderSettings;
317 }
318
319 SPtr<IReflectable> newRTTIObject() override
320 {
321 return bs_shared_ptr_new<RenderSettings>();
322 }
323 };
324
325 /** @} */
326 /** @endcond */
327}
328