Cogs.Core
TwinVisualsComponent.h
1#pragma once
2
3#include "Foundation/ComponentModel/Component.h"
4
5#include "EntityPtr.h"
6#include "Resources/Resources.h"
7
8#include <glm/glm.hpp>
9
10#include <vector>
11
12namespace Cogs::Core {
13
14 enum struct TwinVisualsNotification : uint32_t
15 {
16 None,
18 TexturesLoading,
20 };
21
22 enum struct TwinVisualsMode : uint32_t
23 {
24 Balanced,
25 Advanced,
26 Glass,
27 Sketch,
28 DepthOfField,
29 Preview3DTriangleSize,
30 DarkFocus,
31 SurfaceHyper,
32 SurfaceDefault,
33 SurfaceCAD,
34 SurfaceGlass,
35 SurfaceSketch,
36 SurfaceDarkFocus,
37 SurfaceClay
38 };
39
40 enum struct TwinVisualsQualityPreset : uint32_t
41 {
42 Low,
43 Medium,
44 High,
45 Ultra
46 };
47
48
49 enum struct TwinVisualsTonemapper : uint32_t {
50 Reinhard,
51 Filmic,
52 ACESLuminance,
53 PBRNeutral
54 };
55
56 enum struct TwinVisualsDynamicRenderResolution : uint32_t {
57 FullQuality,
58 Balanced,
59 Fast,
60 FullAndSmooth,
61 };
62
63 enum struct TwinVisualsTexAtlasStyle : uint32_t {
64 Grayscale,
65 Color,
66 None,
67 };
68
71 {
72 public:
73
75 std::string biosphere;
76
78 std::vector<WeakEntityPtr> texAtlases;
79
81 TwinVisualsTexAtlasStyle texAtlasStyle = TwinVisualsTexAtlasStyle::Color;
82
84 TwinVisualsMode mode = TwinVisualsMode::Balanced;
85
87 TwinVisualsQualityPreset qualityPreset = TwinVisualsQualityPreset::Medium;
88
90 TwinVisualsTonemapper tonemapper = TwinVisualsTonemapper::ACESLuminance;
91
93 bool shadowsEnabled = true;
94
96 TwinVisualsDynamicRenderResolution dynamicRenderResolution = TwinVisualsDynamicRenderResolution::FullQuality;
97
99 bool useLowResolution = false;
100
103
105 float brightness = 0.5f;
106
108 bool groundPlaneEnabled = false;
109
111 float groundOpaqueness = 0.f;
112
114 float groundElevation = 0.f;
115
117 glm::vec4 groundColor = glm::vec4(0.4, 0.4, 0.4, 1.0);
118
120 float hazeIntensity = 1.f;
121
123 glm::vec3 hazeColor = glm::vec3(0.7, 0.7, 0.7);
124
126 bool gridEnable = false;
127
129 float gridSpacingMaj = 100.f;
130
132 float gridRotation = 0.f;
133
135 glm::dvec2 gridOrigin = glm::dvec2(0.0);
136
138 glm::vec4 gridLineColorMaj = glm::vec4(1.f);
139
141 glm::vec4 gridLineColorMin = glm::vec4(1.f);
142
144 float gridLineWidthMaj = 1.5f;
145
147 float gridLineWidthMin = 1.f;
148
150 float gridFadeTweakMaj = 2.f;
151
153 float gridFadeTweakMin = 2.f * 3.f;
154
155 static void registerType();
156 };
157
158}
159
160template<> inline Cogs::StringView getName<Cogs::Core::TwinVisualsNotification>() { return "TwinVisualsNotification"; }
161template<> inline Cogs::StringView getName<Cogs::Core::TwinVisualsMode>() { return "TwinVisualsMode"; }
162template<> inline Cogs::StringView getName<Cogs::Core::TwinVisualsQualityPreset>() { return "TwinVisualsQualityPreset"; }
163template<> inline Cogs::StringView getName<Cogs::Core::TwinVisualsTonemapper>() { return "TwinVisualsTonemapper"; }
164template<> inline Cogs::StringView getName<Cogs::Core::TwinVisualsDynamicRenderResolution>() { return "TwinVisualsDynamicRenderResolution"; }
165template<> inline Cogs::StringView getName<Cogs::Core::TwinVisualsTexAtlasStyle>() { return "TwinVisualsTexAtlasStyle"; }
166template<> inline Cogs::StringView getName<Cogs::Core::TwinVisualsComponent>() { return "TwinVisualsComponent"; }
Base class for Component instances.
Definition: Component.h:143
TwinVisualsQualityPreset qualityPreset
TwinVisualsTexAtlasStyle texAtlasStyle
std::vector< WeakEntityPtr > texAtlases
TwinVisualsDynamicRenderResolution dynamicRenderResolution
Provides a weakly referenced view over the contents of a string.
Definition: StringView.h:50
Contains the Engine, Renderer, resource managers and other systems needed to run Cogs....
@ TexturesFailed
One or more new textures have started fetching.
@ TexturesReady
All textures required have been fetched successfully, will be used next frame.
@ Color
Use color property from point set if present, fallback to basecolor.