1 /*
2 * Copyright (c) 2024 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #ifndef SCENEPLUGINAPI_POSTPROCESS_H
17 #define SCENEPLUGINAPI_POSTPROCESS_H
18
19 #include <scene_plugin/api/postprocess_uid.h>
20 #include <scene_plugin/interface/intf_camera.h>
21
22 #include <meta/api/internal/object_api.h>
SCENE_BEGIN_NAMESPACE()23 SCENE_BEGIN_NAMESPACE()
24
25 class Bloom final : public META_NS::Internal::ObjectInterfaceAPI<Bloom, ClassId::Bloom> {
26 META_API(Bloom)
27 META_API_OBJECT_CONVERTIBLE(IBloom)
28 META_API_CACHE_INTERFACE(IBloom, Bloom)
29 META_API_CACHE_INTERFACE(IPostProcessEffect, PostprocessEffect)
30
31 public:
32 META_API_INTERFACE_PROPERTY_CACHED(PostprocessEffect, Enabled, bool)
33 META_API_INTERFACE_PROPERTY_CACHED(Bloom, Type, IBloom::BloomType)
34 META_API_INTERFACE_PROPERTY_CACHED(Bloom, Quality, QualityType)
35 META_API_INTERFACE_PROPERTY_CACHED(Bloom, ThresholdHard, float)
36 META_API_INTERFACE_PROPERTY_CACHED(Bloom, ThresholdSoft, float)
37 META_API_INTERFACE_PROPERTY_CACHED(Bloom, AmountCoefficient, float)
38 META_API_INTERFACE_PROPERTY_CACHED(Bloom, DirtMaskCoefficient, float)
39 META_API_INTERFACE_PROPERTY_CACHED(Bloom, DirtMaskImage, IBitmap::Ptr)
40 META_API_INTERFACE_PROPERTY_CACHED(Bloom, UseCompute, bool)
41 };
42
43 class Blur final : public META_NS::Internal::ObjectInterfaceAPI<Blur, ClassId::Blur> {
44 META_API(Blur)
45 META_API_OBJECT_CONVERTIBLE(IBlur)
46 META_API_CACHE_INTERFACE(IBlur, Blur)
47 META_API_CACHE_INTERFACE(IPostProcessEffect, PostprocessEffect)
48
49 public:
50 META_API_INTERFACE_PROPERTY_CACHED(PostprocessEffect, Enabled, bool)
51 META_API_INTERFACE_PROPERTY_CACHED(Blur, Type, IBlur::BlurType)
52 META_API_INTERFACE_PROPERTY_CACHED(Blur, Quality, QualityType)
53 META_API_INTERFACE_PROPERTY_CACHED(Blur, FilterSize, float)
54 META_API_INTERFACE_PROPERTY_CACHED(Blur, MaxMipmapLevel, uint32_t)
55 };
56
57 class ColorConversion final : public META_NS::Internal::ObjectInterfaceAPI<ColorConversion, ClassId::ColorConversion> {
58 META_API(ColorConversion)
59 META_API_OBJECT_CONVERTIBLE(IColorConversion)
60 META_API_CACHE_INTERFACE(IColorConversion, ColorConversion)
61 META_API_CACHE_INTERFACE(IPostProcessEffect, PostprocessEffect)
62
63 public:
64 META_API_INTERFACE_PROPERTY_CACHED(PostprocessEffect, Enabled, bool)
65 META_API_INTERFACE_PROPERTY_CACHED(ColorConversion, Function, IColorConversion::ConversionFunctionType)
66 };
67
68 class ColorFringe final : public META_NS::Internal::ObjectInterfaceAPI<ColorFringe, ClassId::ColorFringe> {
69 META_API(ColorFringe)
70 META_API_OBJECT_CONVERTIBLE(IColorFringe)
71 META_API_CACHE_INTERFACE(IColorFringe, ColorFringe)
72 META_API_CACHE_INTERFACE(IPostProcessEffect, PostprocessEffect)
73
74 public:
75 META_API_INTERFACE_PROPERTY_CACHED(PostprocessEffect, Enabled, bool)
76 META_API_INTERFACE_PROPERTY_CACHED(ColorFringe, Coefficient, float)
77 META_API_INTERFACE_PROPERTY_CACHED(ColorFringe, DistanceCoefficient, float)
78 };
79
80 class DepthOfField final : public META_NS::Internal::ObjectInterfaceAPI<DepthOfField, ClassId::DepthOfField> {
81 META_API(DepthOfField)
82 META_API_OBJECT_CONVERTIBLE(IDepthOfField)
83 META_API_CACHE_INTERFACE(IDepthOfField, DepthOfField)
84 META_API_CACHE_INTERFACE(IPostProcessEffect, PostprocessEffect)
85
86 public:
87 META_API_INTERFACE_PROPERTY_CACHED(PostprocessEffect, Enabled, bool)
88 META_API_INTERFACE_PROPERTY_CACHED(DepthOfField, FocusPoint, float)
89 META_API_INTERFACE_PROPERTY_CACHED(DepthOfField, FocusRange, float)
90 META_API_INTERFACE_PROPERTY_CACHED(DepthOfField, NearTransitionRange, float)
91 META_API_INTERFACE_PROPERTY_CACHED(DepthOfField, FarTransitionRange, float)
92 META_API_INTERFACE_PROPERTY_CACHED(DepthOfField, NearBlur, float)
93 META_API_INTERFACE_PROPERTY_CACHED(DepthOfField, FarBlur, float)
94 META_API_INTERFACE_PROPERTY_CACHED(DepthOfField, NearPlane, float)
95 META_API_INTERFACE_PROPERTY_CACHED(DepthOfField, FarPlane, float)
96 };
97
98 class Dither final : public META_NS::Internal::ObjectInterfaceAPI<Dither, ClassId::Dither> {
99 META_API(Dither)
100 META_API_OBJECT_CONVERTIBLE(IDither)
101 META_API_CACHE_INTERFACE(IDither, Dither)
102 META_API_CACHE_INTERFACE(IPostProcessEffect, PostprocessEffect)
103
104 public:
105 META_API_INTERFACE_PROPERTY_CACHED(PostprocessEffect, Enabled, bool)
106 META_API_INTERFACE_PROPERTY_CACHED(Dither, Type, IDither::DitherType)
107 META_API_INTERFACE_PROPERTY_CACHED(Dither, Coefficient, float)
108 };
109
110 class Fxaa final : public META_NS::Internal::ObjectInterfaceAPI<Fxaa, ClassId::Fxaa> {
111 META_API(Fxaa)
112 META_API_OBJECT_CONVERTIBLE(IFxaa)
113 META_API_CACHE_INTERFACE(IFxaa, Fxaa)
114 META_API_CACHE_INTERFACE(IPostProcessEffect, PostprocessEffect)
115
116 public:
117 META_API_INTERFACE_PROPERTY_CACHED(PostprocessEffect, Enabled, bool)
118 META_API_INTERFACE_PROPERTY_CACHED(Fxaa, Sharpness, SharpnessType)
119 META_API_INTERFACE_PROPERTY_CACHED(Fxaa, Quality, QualityType)
120 };
121
122 class MotionBlur final : public META_NS::Internal::ObjectInterfaceAPI<MotionBlur, ClassId::MotionBlur> {
123 META_API(MotionBlur)
124 META_API_OBJECT_CONVERTIBLE(IMotionBlur)
125 META_API_CACHE_INTERFACE(IMotionBlur, MotionBlur)
126 META_API_CACHE_INTERFACE(IPostProcessEffect, PostprocessEffect)
127
128 public:
129 META_API_INTERFACE_PROPERTY_CACHED(PostprocessEffect, Enabled, bool)
130 META_API_INTERFACE_PROPERTY_CACHED(MotionBlur, Alpha, float)
131 META_API_INTERFACE_PROPERTY_CACHED(MotionBlur, Velocity, float)
132 META_API_INTERFACE_PROPERTY_CACHED(MotionBlur, Quality, QualityType)
133 META_API_INTERFACE_PROPERTY_CACHED(MotionBlur, Sharpness, SharpnessType)
134 };
135
136 class Taa final : public META_NS::Internal::ObjectInterfaceAPI<Taa, ClassId::Taa> {
137 META_API(Taa)
138 META_API_OBJECT_CONVERTIBLE(ITaa)
139 META_API_CACHE_INTERFACE(ITaa, Taa)
140 META_API_CACHE_INTERFACE(IPostProcessEffect, PostprocessEffect)
141
142 public:
143 META_API_INTERFACE_PROPERTY_CACHED(PostprocessEffect, Enabled, bool)
144 META_API_INTERFACE_PROPERTY_CACHED(Taa, Sharpness, SharpnessType)
145 META_API_INTERFACE_PROPERTY_CACHED(Taa, Quality, QualityType)
146 };
147
148 class Tonemap final : public META_NS::Internal::ObjectInterfaceAPI<Tonemap, ClassId::Tonemap> {
149 META_API(Tonemap)
150 META_API_OBJECT_CONVERTIBLE(ITonemap)
151 META_API_CACHE_INTERFACE(ITonemap, Tonemap)
152 META_API_CACHE_INTERFACE(IPostProcessEffect, PostprocessEffect)
153
154 public:
155 META_API_INTERFACE_PROPERTY_CACHED(PostprocessEffect, Enabled, bool)
156 META_API_INTERFACE_PROPERTY_CACHED(Tonemap, Type, ITonemap::TonemapType)
157 META_API_INTERFACE_PROPERTY_CACHED(Tonemap, Exposure, float)
158 };
159
160 class Vignette final : public META_NS::Internal::ObjectInterfaceAPI<Vignette, ClassId::Vignette> {
161 META_API(Vignette)
162 META_API_OBJECT_CONVERTIBLE(IVignette)
163 META_API_CACHE_INTERFACE(IVignette, Vignette)
164 META_API_CACHE_INTERFACE(IPostProcessEffect, PostprocessEffect)
165
166 public:
167 META_API_INTERFACE_PROPERTY_CACHED(PostprocessEffect, Enabled, bool)
168 META_API_INTERFACE_PROPERTY_CACHED(Vignette, Coefficient, float)
169 META_API_INTERFACE_PROPERTY_CACHED(Vignette, Power, float)
170 };
171
172 #define MAP_PROPERTY_TO_USER(interface_type, user_name) \
173 public: \
174 SCENE_NS::user_name user_name() \
175 { \
176 SCENE_NS::user_name ret; \
177 ret.Initialize(interface_pointer_cast<META_NS::IObject>( \
178 META_NS::GetValue(this->Get##interface_type##Interface()->user_name()))); \
179 return ret; \
180 }
181
182 class PostProcess final : public META_NS::Internal::ObjectInterfaceAPI<PostProcess, ClassId::PostProcess> {
183 META_API(PostProcess)
184 META_API_OBJECT_CONVERTIBLE(IPostProcess)
185 META_API_CACHE_INTERFACE(IPostProcess, PostProcess)
186
187 public:
188 META_API_INTERFACE_PROPERTY_CACHED(PostProcess, Name, BASE_NS::string)
189 MAP_PROPERTY_TO_USER(PostProcess, Bloom)
190 MAP_PROPERTY_TO_USER(PostProcess, Blur)
191 MAP_PROPERTY_TO_USER(PostProcess, ColorConversion)
192 MAP_PROPERTY_TO_USER(PostProcess, ColorFringe)
193 MAP_PROPERTY_TO_USER(PostProcess, DepthOfField)
194 MAP_PROPERTY_TO_USER(PostProcess, Dither)
195 MAP_PROPERTY_TO_USER(PostProcess, Fxaa)
196 MAP_PROPERTY_TO_USER(PostProcess, MotionBlur)
197 MAP_PROPERTY_TO_USER(PostProcess, Taa)
198 MAP_PROPERTY_TO_USER(PostProcess, Tonemap)
199 MAP_PROPERTY_TO_USER(PostProcess, Vignette)
200 };
201
202 SCENE_END_NAMESPACE()
203
204 #endif // SCENEPLUGINAPI_POSTPROCESS_H
205