Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
godotengine
GitHub Repository: godotengine/godot
Path: blob/master/servers/rendering/rendering_server_enums.h
45987 views
1
/**************************************************************************/
2
/* rendering_server_enums.h */
3
/**************************************************************************/
4
/* This file is part of: */
5
/* GODOT ENGINE */
6
/* https://godotengine.org */
7
/**************************************************************************/
8
/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */
9
/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */
10
/* */
11
/* Permission is hereby granted, free of charge, to any person obtaining */
12
/* a copy of this software and associated documentation files (the */
13
/* "Software"), to deal in the Software without restriction, including */
14
/* without limitation the rights to use, copy, modify, merge, publish, */
15
/* distribute, sublicense, and/or sell copies of the Software, and to */
16
/* permit persons to whom the Software is furnished to do so, subject to */
17
/* the following conditions: */
18
/* */
19
/* The above copyright notice and this permission notice shall be */
20
/* included in all copies or substantial portions of the Software. */
21
/* */
22
/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
23
/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
24
/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */
25
/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
26
/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
27
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
28
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
29
/**************************************************************************/
30
31
#pragma once
32
33
#include <cstdint>
34
35
namespace RenderingServerEnums {
36
37
enum {
38
NO_INDEX_ARRAY = -1,
39
ARRAY_WEIGHTS_SIZE = 4,
40
CANVAS_ITEM_Z_MIN = -4096,
41
CANVAS_ITEM_Z_MAX = 4096,
42
CANVAS_LAYER_MIN = -2147483648,
43
CANVAS_LAYER_MAX = 2147483647,
44
MAX_GLOW_LEVELS = 7,
45
MAX_CURSORS = 8,
46
MAX_2D_DIRECTIONAL_LIGHTS = 8,
47
MAX_MESH_SURFACES = 256,
48
};
49
50
/* TEXTURE API */
51
52
enum TextureType {
53
TEXTURE_TYPE_2D,
54
TEXTURE_TYPE_LAYERED,
55
TEXTURE_TYPE_3D,
56
};
57
58
enum TextureLayeredType {
59
TEXTURE_LAYERED_2D_ARRAY,
60
TEXTURE_LAYERED_CUBEMAP,
61
TEXTURE_LAYERED_CUBEMAP_ARRAY,
62
};
63
64
enum CubeMapLayer {
65
CUBEMAP_LAYER_LEFT,
66
CUBEMAP_LAYER_RIGHT,
67
CUBEMAP_LAYER_BOTTOM,
68
CUBEMAP_LAYER_TOP,
69
CUBEMAP_LAYER_FRONT,
70
CUBEMAP_LAYER_BACK,
71
};
72
73
enum TextureDrawableFormat {
74
TEXTURE_DRAWABLE_FORMAT_RGBA8,
75
TEXTURE_DRAWABLE_FORMAT_RGBA8_SRGB, // Use this if you want to read the result from both 2D (non-hdr) and 3D.
76
TEXTURE_DRAWABLE_FORMAT_RGBAH,
77
TEXTURE_DRAWABLE_FORMAT_RGBAF,
78
};
79
80
enum TextureDetectRoughnessChannel {
81
TEXTURE_DETECT_ROUGHNESS_R,
82
TEXTURE_DETECT_ROUGHNESS_G,
83
TEXTURE_DETECT_ROUGHNESS_B,
84
TEXTURE_DETECT_ROUGHNESS_A,
85
TEXTURE_DETECT_ROUGHNESS_GRAY,
86
};
87
88
/* PIPELINES API */
89
90
enum PipelineSource {
91
PIPELINE_SOURCE_CANVAS,
92
PIPELINE_SOURCE_MESH,
93
PIPELINE_SOURCE_SURFACE,
94
PIPELINE_SOURCE_DRAW,
95
PIPELINE_SOURCE_SPECIALIZATION,
96
PIPELINE_SOURCE_MAX,
97
};
98
99
/* SHADER API */
100
101
enum ShaderMode {
102
SHADER_SPATIAL,
103
SHADER_CANVAS_ITEM,
104
SHADER_PARTICLES,
105
SHADER_SKY,
106
SHADER_FOG,
107
SHADER_TEXTURE_BLIT,
108
SHADER_MAX,
109
};
110
111
enum CullMode {
112
CULL_MODE_DISABLED,
113
CULL_MODE_FRONT,
114
CULL_MODE_BACK,
115
};
116
117
/* COMMON MATERIAL API */
118
119
enum {
120
MATERIAL_RENDER_PRIORITY_MIN = -128,
121
MATERIAL_RENDER_PRIORITY_MAX = 127,
122
};
123
124
/* MESH API */
125
126
enum ArrayType {
127
ARRAY_VERTEX = 0, // RG32F (2D), RGB32F, RGBA16 (compressed)
128
ARRAY_NORMAL = 1, // RG16
129
ARRAY_TANGENT = 2, // BA16 (with normal) or A16 (with vertex, when compressed)
130
ARRAY_COLOR = 3, // RGBA8
131
ARRAY_TEX_UV = 4, // RG32F or RG16
132
ARRAY_TEX_UV2 = 5, // RG32F or RG16
133
ARRAY_CUSTOM0 = 6, // Depends on ArrayCustomFormat.
134
ARRAY_CUSTOM1 = 7,
135
ARRAY_CUSTOM2 = 8,
136
ARRAY_CUSTOM3 = 9,
137
ARRAY_BONES = 10, // RGBA16UI (x2 if 8 weights)
138
ARRAY_WEIGHTS = 11, // RGBA16UNORM (x2 if 8 weights)
139
ARRAY_INDEX = 12, // 16 or 32 bits depending on length > 0xFFFF.
140
ARRAY_MAX = 13,
141
};
142
143
enum {
144
ARRAY_CUSTOM_COUNT = ARRAY_BONES - ARRAY_CUSTOM0
145
};
146
147
enum ArrayCustomFormat {
148
ARRAY_CUSTOM_RGBA8_UNORM,
149
ARRAY_CUSTOM_RGBA8_SNORM,
150
ARRAY_CUSTOM_RG_HALF,
151
ARRAY_CUSTOM_RGBA_HALF,
152
ARRAY_CUSTOM_R_FLOAT,
153
ARRAY_CUSTOM_RG_FLOAT,
154
ARRAY_CUSTOM_RGB_FLOAT,
155
ARRAY_CUSTOM_RGBA_FLOAT,
156
ARRAY_CUSTOM_MAX,
157
};
158
159
enum ArrayFormat : uint64_t {
160
/* ARRAY FORMAT FLAGS */
161
ARRAY_FORMAT_VERTEX = 1 << ARRAY_VERTEX,
162
ARRAY_FORMAT_NORMAL = 1 << ARRAY_NORMAL,
163
ARRAY_FORMAT_TANGENT = 1 << ARRAY_TANGENT,
164
ARRAY_FORMAT_COLOR = 1 << ARRAY_COLOR,
165
ARRAY_FORMAT_TEX_UV = 1 << ARRAY_TEX_UV,
166
ARRAY_FORMAT_TEX_UV2 = 1 << ARRAY_TEX_UV2,
167
ARRAY_FORMAT_CUSTOM0 = 1 << ARRAY_CUSTOM0,
168
ARRAY_FORMAT_CUSTOM1 = 1 << ARRAY_CUSTOM1,
169
ARRAY_FORMAT_CUSTOM2 = 1 << ARRAY_CUSTOM2,
170
ARRAY_FORMAT_CUSTOM3 = 1 << ARRAY_CUSTOM3,
171
ARRAY_FORMAT_BONES = 1 << ARRAY_BONES,
172
ARRAY_FORMAT_WEIGHTS = 1 << ARRAY_WEIGHTS,
173
ARRAY_FORMAT_INDEX = 1 << ARRAY_INDEX,
174
175
ARRAY_FORMAT_BLEND_SHAPE_MASK = ARRAY_FORMAT_VERTEX | ARRAY_FORMAT_NORMAL | ARRAY_FORMAT_TANGENT,
176
177
ARRAY_FORMAT_CUSTOM_BASE = (ARRAY_INDEX + 1),
178
ARRAY_FORMAT_CUSTOM_BITS = 3,
179
ARRAY_FORMAT_CUSTOM_MASK = 0x7,
180
ARRAY_FORMAT_CUSTOM0_SHIFT = (ARRAY_FORMAT_CUSTOM_BASE + 0),
181
ARRAY_FORMAT_CUSTOM1_SHIFT = (ARRAY_FORMAT_CUSTOM_BASE + ARRAY_FORMAT_CUSTOM_BITS),
182
ARRAY_FORMAT_CUSTOM2_SHIFT = (ARRAY_FORMAT_CUSTOM_BASE + ARRAY_FORMAT_CUSTOM_BITS * 2),
183
ARRAY_FORMAT_CUSTOM3_SHIFT = (ARRAY_FORMAT_CUSTOM_BASE + ARRAY_FORMAT_CUSTOM_BITS * 3),
184
185
ARRAY_COMPRESS_FLAGS_BASE = (ARRAY_INDEX + 1 + 12),
186
187
ARRAY_FLAG_USE_2D_VERTICES = 1 << (ARRAY_COMPRESS_FLAGS_BASE + 0),
188
ARRAY_FLAG_USE_DYNAMIC_UPDATE = 1 << (ARRAY_COMPRESS_FLAGS_BASE + 1),
189
ARRAY_FLAG_USE_8_BONE_WEIGHTS = 1 << (ARRAY_COMPRESS_FLAGS_BASE + 2),
190
191
ARRAY_FLAG_USES_EMPTY_VERTEX_ARRAY = 1 << (ARRAY_COMPRESS_FLAGS_BASE + 3),
192
193
ARRAY_FLAG_COMPRESS_ATTRIBUTES = 1 << (ARRAY_COMPRESS_FLAGS_BASE + 4),
194
// We leave enough room for up to 5 more compression flags.
195
196
ARRAY_FLAG_FORMAT_VERSION_BASE = ARRAY_COMPRESS_FLAGS_BASE + 10,
197
ARRAY_FLAG_FORMAT_VERSION_SHIFT = ARRAY_FLAG_FORMAT_VERSION_BASE,
198
// When changes are made to the mesh format, add a new version and use it for the CURRENT_VERSION.
199
ARRAY_FLAG_FORMAT_VERSION_1 = 0,
200
ARRAY_FLAG_FORMAT_VERSION_2 = 1ULL << ARRAY_FLAG_FORMAT_VERSION_SHIFT,
201
ARRAY_FLAG_FORMAT_CURRENT_VERSION = ARRAY_FLAG_FORMAT_VERSION_2,
202
ARRAY_FLAG_FORMAT_VERSION_MASK = 0xFF, // 8 bits version
203
};
204
205
static_assert(sizeof(ArrayFormat) == 8, "ArrayFormat should be 64 bits long.");
206
207
enum PrimitiveType {
208
PRIMITIVE_POINTS,
209
PRIMITIVE_LINES,
210
PRIMITIVE_LINE_STRIP,
211
PRIMITIVE_TRIANGLES,
212
PRIMITIVE_TRIANGLE_STRIP,
213
PRIMITIVE_MAX,
214
};
215
216
enum BlendShapeMode {
217
BLEND_SHAPE_MODE_NORMALIZED,
218
BLEND_SHAPE_MODE_RELATIVE,
219
};
220
221
/* MULTIMESH API */
222
223
enum MultimeshTransformFormat {
224
MULTIMESH_TRANSFORM_2D,
225
MULTIMESH_TRANSFORM_3D,
226
};
227
228
enum MultimeshPhysicsInterpolationQuality {
229
MULTIMESH_INTERP_QUALITY_FAST,
230
MULTIMESH_INTERP_QUALITY_HIGH,
231
};
232
233
/* LIGHT API */
234
235
enum LightType {
236
LIGHT_DIRECTIONAL,
237
LIGHT_OMNI,
238
LIGHT_SPOT,
239
};
240
241
enum LightParam {
242
LIGHT_PARAM_ENERGY,
243
LIGHT_PARAM_INDIRECT_ENERGY,
244
LIGHT_PARAM_VOLUMETRIC_FOG_ENERGY,
245
LIGHT_PARAM_SPECULAR,
246
LIGHT_PARAM_RANGE,
247
LIGHT_PARAM_SIZE,
248
LIGHT_PARAM_ATTENUATION,
249
LIGHT_PARAM_SPOT_ANGLE,
250
LIGHT_PARAM_SPOT_ATTENUATION,
251
LIGHT_PARAM_SHADOW_MAX_DISTANCE,
252
LIGHT_PARAM_SHADOW_SPLIT_1_OFFSET,
253
LIGHT_PARAM_SHADOW_SPLIT_2_OFFSET,
254
LIGHT_PARAM_SHADOW_SPLIT_3_OFFSET,
255
LIGHT_PARAM_SHADOW_FADE_START,
256
LIGHT_PARAM_SHADOW_NORMAL_BIAS,
257
LIGHT_PARAM_SHADOW_BIAS,
258
LIGHT_PARAM_SHADOW_PANCAKE_SIZE,
259
LIGHT_PARAM_SHADOW_OPACITY,
260
LIGHT_PARAM_SHADOW_BLUR,
261
LIGHT_PARAM_TRANSMITTANCE_BIAS,
262
LIGHT_PARAM_INTENSITY,
263
LIGHT_PARAM_MAX,
264
};
265
266
enum LightBakeMode {
267
LIGHT_BAKE_DISABLED,
268
LIGHT_BAKE_STATIC,
269
LIGHT_BAKE_DYNAMIC,
270
};
271
272
enum LightOmniShadowMode {
273
LIGHT_OMNI_SHADOW_DUAL_PARABOLOID,
274
LIGHT_OMNI_SHADOW_CUBE,
275
};
276
277
enum LightDirectionalShadowMode {
278
LIGHT_DIRECTIONAL_SHADOW_ORTHOGONAL,
279
LIGHT_DIRECTIONAL_SHADOW_PARALLEL_2_SPLITS,
280
LIGHT_DIRECTIONAL_SHADOW_PARALLEL_4_SPLITS,
281
};
282
283
enum LightDirectionalSkyMode {
284
LIGHT_DIRECTIONAL_SKY_MODE_LIGHT_AND_SKY,
285
LIGHT_DIRECTIONAL_SKY_MODE_LIGHT_ONLY,
286
LIGHT_DIRECTIONAL_SKY_MODE_SKY_ONLY,
287
};
288
289
enum ShadowQuality {
290
SHADOW_QUALITY_HARD,
291
SHADOW_QUALITY_SOFT_VERY_LOW,
292
SHADOW_QUALITY_SOFT_LOW,
293
SHADOW_QUALITY_SOFT_MEDIUM,
294
SHADOW_QUALITY_SOFT_HIGH,
295
SHADOW_QUALITY_SOFT_ULTRA,
296
SHADOW_QUALITY_MAX,
297
};
298
299
enum LightProjectorFilter {
300
LIGHT_PROJECTOR_FILTER_NEAREST,
301
LIGHT_PROJECTOR_FILTER_LINEAR,
302
LIGHT_PROJECTOR_FILTER_NEAREST_MIPMAPS,
303
LIGHT_PROJECTOR_FILTER_LINEAR_MIPMAPS,
304
LIGHT_PROJECTOR_FILTER_NEAREST_MIPMAPS_ANISOTROPIC,
305
LIGHT_PROJECTOR_FILTER_LINEAR_MIPMAPS_ANISOTROPIC,
306
};
307
308
/* REFLECTION PROBE API */
309
310
enum ReflectionProbeUpdateMode {
311
REFLECTION_PROBE_UPDATE_ONCE,
312
REFLECTION_PROBE_UPDATE_ALWAYS,
313
};
314
315
enum ReflectionProbeAmbientMode {
316
REFLECTION_PROBE_AMBIENT_DISABLED,
317
REFLECTION_PROBE_AMBIENT_ENVIRONMENT,
318
REFLECTION_PROBE_AMBIENT_COLOR,
319
};
320
321
/* DECAL API */
322
323
enum DecalTexture {
324
DECAL_TEXTURE_ALBEDO,
325
DECAL_TEXTURE_NORMAL,
326
DECAL_TEXTURE_ORM,
327
DECAL_TEXTURE_EMISSION,
328
DECAL_TEXTURE_MAX,
329
};
330
331
enum DecalFilter {
332
DECAL_FILTER_NEAREST,
333
DECAL_FILTER_LINEAR,
334
DECAL_FILTER_NEAREST_MIPMAPS,
335
DECAL_FILTER_LINEAR_MIPMAPS,
336
DECAL_FILTER_NEAREST_MIPMAPS_ANISOTROPIC,
337
DECAL_FILTER_LINEAR_MIPMAPS_ANISOTROPIC,
338
};
339
340
/* VOXEL GI API */
341
342
enum VoxelGIQuality {
343
VOXEL_GI_QUALITY_LOW,
344
VOXEL_GI_QUALITY_HIGH,
345
};
346
347
/* LIGHTMAP API */
348
349
enum ShadowmaskMode {
350
SHADOWMASK_MODE_NONE,
351
SHADOWMASK_MODE_REPLACE,
352
SHADOWMASK_MODE_OVERLAY,
353
SHADOWMASK_MODE_ONLY,
354
};
355
356
/* PARTICLES API */
357
358
enum ParticlesMode {
359
PARTICLES_MODE_2D,
360
PARTICLES_MODE_3D,
361
};
362
363
enum ParticlesTransformAlign {
364
PARTICLES_TRANSFORM_ALIGN_DISABLED,
365
PARTICLES_TRANSFORM_ALIGN_Z_BILLBOARD,
366
PARTICLES_TRANSFORM_ALIGN_Y_TO_VELOCITY,
367
PARTICLES_TRANSFORM_ALIGN_Z_BILLBOARD_Y_TO_VELOCITY,
368
PARTICLES_TRANSFORM_ALIGN_LOCAL_BILLBOARD,
369
};
370
371
enum ParticlesEmitFlags {
372
PARTICLES_EMIT_FLAG_POSITION = 1,
373
PARTICLES_EMIT_FLAG_ROTATION_SCALE = 2,
374
PARTICLES_EMIT_FLAG_VELOCITY = 4,
375
PARTICLES_EMIT_FLAG_COLOR = 8,
376
PARTICLES_EMIT_FLAG_CUSTOM = 16,
377
};
378
379
enum ParticlesDrawOrder {
380
PARTICLES_DRAW_ORDER_INDEX,
381
PARTICLES_DRAW_ORDER_LIFETIME,
382
PARTICLES_DRAW_ORDER_REVERSE_LIFETIME,
383
PARTICLES_DRAW_ORDER_VIEW_DEPTH,
384
};
385
386
enum ParticlesTransformAlignCustomSrc {
387
PARTICLES_ALIGN_CHANNEL_FILTER_DISABLED,
388
PARTICLES_ALIGN_CHANNEL_FILTER_X,
389
PARTICLES_ALIGN_CHANNEL_FILTER_Y,
390
PARTICLES_ALIGN_CHANNEL_FILTER_Z,
391
PARTICLES_ALIGN_CHANNEL_FILTER_W,
392
PARTICLES_ALIGN_CHANNEL_FILTER_MAX,
393
};
394
395
enum ParticlesTransformAlignAxis {
396
PARTICLES_ALIGN_AXIS_X,
397
PARTICLES_ALIGN_AXIS_Y,
398
PARTICLES_ALIGN_AXIS_MAX,
399
};
400
401
/* PARTICLES COLLISION API */
402
403
enum ParticlesCollisionType {
404
PARTICLES_COLLISION_TYPE_SPHERE_ATTRACT,
405
PARTICLES_COLLISION_TYPE_BOX_ATTRACT,
406
PARTICLES_COLLISION_TYPE_VECTOR_FIELD_ATTRACT,
407
PARTICLES_COLLISION_TYPE_SPHERE_COLLIDE,
408
PARTICLES_COLLISION_TYPE_BOX_COLLIDE,
409
PARTICLES_COLLISION_TYPE_SDF_COLLIDE,
410
PARTICLES_COLLISION_TYPE_HEIGHTFIELD_COLLIDE,
411
};
412
413
enum ParticlesCollisionHeightfieldResolution { // Longest axis resolution.
414
PARTICLES_COLLISION_HEIGHTFIELD_RESOLUTION_256,
415
PARTICLES_COLLISION_HEIGHTFIELD_RESOLUTION_512,
416
PARTICLES_COLLISION_HEIGHTFIELD_RESOLUTION_1024,
417
PARTICLES_COLLISION_HEIGHTFIELD_RESOLUTION_2048,
418
PARTICLES_COLLISION_HEIGHTFIELD_RESOLUTION_4096,
419
PARTICLES_COLLISION_HEIGHTFIELD_RESOLUTION_8192,
420
PARTICLES_COLLISION_HEIGHTFIELD_RESOLUTION_MAX,
421
};
422
423
/* FOG VOLUME API */
424
425
enum FogVolumeShape {
426
FOG_VOLUME_SHAPE_ELLIPSOID,
427
FOG_VOLUME_SHAPE_CONE,
428
FOG_VOLUME_SHAPE_CYLINDER,
429
FOG_VOLUME_SHAPE_BOX,
430
FOG_VOLUME_SHAPE_WORLD,
431
FOG_VOLUME_SHAPE_MAX,
432
};
433
434
/* VIEWPORT API */
435
436
enum CanvasItemTextureFilter {
437
CANVAS_ITEM_TEXTURE_FILTER_DEFAULT, // Uses canvas item setting for draw command, uses global setting for canvas item.
438
CANVAS_ITEM_TEXTURE_FILTER_NEAREST,
439
CANVAS_ITEM_TEXTURE_FILTER_LINEAR,
440
CANVAS_ITEM_TEXTURE_FILTER_NEAREST_WITH_MIPMAPS,
441
CANVAS_ITEM_TEXTURE_FILTER_LINEAR_WITH_MIPMAPS,
442
CANVAS_ITEM_TEXTURE_FILTER_NEAREST_WITH_MIPMAPS_ANISOTROPIC,
443
CANVAS_ITEM_TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC,
444
CANVAS_ITEM_TEXTURE_FILTER_MAX,
445
};
446
447
enum CanvasItemTextureRepeat {
448
CANVAS_ITEM_TEXTURE_REPEAT_DEFAULT, // Uses canvas item setting for draw command, uses global setting for canvas item.
449
CANVAS_ITEM_TEXTURE_REPEAT_DISABLED,
450
CANVAS_ITEM_TEXTURE_REPEAT_ENABLED,
451
CANVAS_ITEM_TEXTURE_REPEAT_MIRROR,
452
CANVAS_ITEM_TEXTURE_REPEAT_MAX,
453
};
454
455
enum ViewportScaling3DMode {
456
VIEWPORT_SCALING_3D_MODE_BILINEAR,
457
VIEWPORT_SCALING_3D_MODE_FSR,
458
VIEWPORT_SCALING_3D_MODE_FSR2,
459
VIEWPORT_SCALING_3D_MODE_METALFX_SPATIAL,
460
VIEWPORT_SCALING_3D_MODE_METALFX_TEMPORAL,
461
VIEWPORT_SCALING_3D_MODE_NEAREST,
462
VIEWPORT_SCALING_3D_MODE_MAX,
463
VIEWPORT_SCALING_3D_MODE_OFF = 255, // for internal use only
464
};
465
466
enum ViewportScaling3DType {
467
VIEWPORT_SCALING_3D_TYPE_NONE,
468
VIEWPORT_SCALING_3D_TYPE_TEMPORAL,
469
VIEWPORT_SCALING_3D_TYPE_SPATIAL,
470
VIEWPORT_SCALING_3D_TYPE_MAX,
471
};
472
473
inline ViewportScaling3DType scaling_3d_mode_type(ViewportScaling3DMode p_mode) {
474
if (p_mode == VIEWPORT_SCALING_3D_MODE_NEAREST || p_mode == VIEWPORT_SCALING_3D_MODE_BILINEAR || p_mode == VIEWPORT_SCALING_3D_MODE_FSR || p_mode == VIEWPORT_SCALING_3D_MODE_METALFX_SPATIAL) {
475
return VIEWPORT_SCALING_3D_TYPE_SPATIAL;
476
} else if (p_mode == VIEWPORT_SCALING_3D_MODE_FSR2 || p_mode == VIEWPORT_SCALING_3D_MODE_METALFX_TEMPORAL) {
477
return VIEWPORT_SCALING_3D_TYPE_TEMPORAL;
478
}
479
return VIEWPORT_SCALING_3D_TYPE_NONE;
480
}
481
482
enum ViewportAnisotropicFiltering {
483
VIEWPORT_ANISOTROPY_DISABLED,
484
VIEWPORT_ANISOTROPY_2X,
485
VIEWPORT_ANISOTROPY_4X,
486
VIEWPORT_ANISOTROPY_8X,
487
VIEWPORT_ANISOTROPY_16X,
488
VIEWPORT_ANISOTROPY_MAX,
489
};
490
491
enum ViewportUpdateMode {
492
VIEWPORT_UPDATE_DISABLED,
493
VIEWPORT_UPDATE_ONCE, // Then goes to disabled, must be manually updated.
494
VIEWPORT_UPDATE_WHEN_VISIBLE, // Default
495
VIEWPORT_UPDATE_WHEN_PARENT_VISIBLE,
496
VIEWPORT_UPDATE_ALWAYS,
497
};
498
499
enum ViewportClearMode {
500
VIEWPORT_CLEAR_ALWAYS,
501
VIEWPORT_CLEAR_NEVER,
502
VIEWPORT_CLEAR_ONLY_NEXT_FRAME,
503
};
504
505
enum ViewportEnvironmentMode {
506
VIEWPORT_ENVIRONMENT_DISABLED,
507
VIEWPORT_ENVIRONMENT_ENABLED,
508
VIEWPORT_ENVIRONMENT_INHERIT,
509
VIEWPORT_ENVIRONMENT_MAX,
510
};
511
512
enum ViewportSDFOversize {
513
VIEWPORT_SDF_OVERSIZE_100_PERCENT,
514
VIEWPORT_SDF_OVERSIZE_120_PERCENT,
515
VIEWPORT_SDF_OVERSIZE_150_PERCENT,
516
VIEWPORT_SDF_OVERSIZE_200_PERCENT,
517
VIEWPORT_SDF_OVERSIZE_MAX,
518
};
519
520
enum ViewportSDFScale {
521
VIEWPORT_SDF_SCALE_100_PERCENT,
522
VIEWPORT_SDF_SCALE_50_PERCENT,
523
VIEWPORT_SDF_SCALE_25_PERCENT,
524
VIEWPORT_SDF_SCALE_MAX,
525
};
526
527
enum ViewportMSAA {
528
VIEWPORT_MSAA_DISABLED,
529
VIEWPORT_MSAA_2X,
530
VIEWPORT_MSAA_4X,
531
VIEWPORT_MSAA_8X,
532
VIEWPORT_MSAA_MAX,
533
};
534
535
enum ViewportScreenSpaceAA {
536
VIEWPORT_SCREEN_SPACE_AA_DISABLED,
537
VIEWPORT_SCREEN_SPACE_AA_FXAA,
538
VIEWPORT_SCREEN_SPACE_AA_SMAA,
539
VIEWPORT_SCREEN_SPACE_AA_MAX,
540
};
541
542
enum ViewportOcclusionCullingBuildQuality {
543
VIEWPORT_OCCLUSION_BUILD_QUALITY_LOW = 0,
544
VIEWPORT_OCCLUSION_BUILD_QUALITY_MEDIUM = 1,
545
VIEWPORT_OCCLUSION_BUILD_QUALITY_HIGH = 2,
546
};
547
548
enum ViewportRenderInfo {
549
VIEWPORT_RENDER_INFO_OBJECTS_IN_FRAME,
550
VIEWPORT_RENDER_INFO_PRIMITIVES_IN_FRAME,
551
VIEWPORT_RENDER_INFO_DRAW_CALLS_IN_FRAME,
552
VIEWPORT_RENDER_INFO_MAX,
553
};
554
555
enum ViewportRenderInfoType {
556
VIEWPORT_RENDER_INFO_TYPE_VISIBLE,
557
VIEWPORT_RENDER_INFO_TYPE_SHADOW,
558
VIEWPORT_RENDER_INFO_TYPE_CANVAS,
559
VIEWPORT_RENDER_INFO_TYPE_MAX,
560
};
561
562
enum ViewportDebugDraw {
563
VIEWPORT_DEBUG_DRAW_DISABLED,
564
VIEWPORT_DEBUG_DRAW_UNSHADED,
565
VIEWPORT_DEBUG_DRAW_LIGHTING,
566
VIEWPORT_DEBUG_DRAW_OVERDRAW,
567
VIEWPORT_DEBUG_DRAW_WIREFRAME,
568
VIEWPORT_DEBUG_DRAW_NORMAL_BUFFER,
569
VIEWPORT_DEBUG_DRAW_VOXEL_GI_ALBEDO,
570
VIEWPORT_DEBUG_DRAW_VOXEL_GI_LIGHTING,
571
VIEWPORT_DEBUG_DRAW_VOXEL_GI_EMISSION,
572
VIEWPORT_DEBUG_DRAW_SHADOW_ATLAS,
573
VIEWPORT_DEBUG_DRAW_DIRECTIONAL_SHADOW_ATLAS,
574
VIEWPORT_DEBUG_DRAW_SCENE_LUMINANCE,
575
VIEWPORT_DEBUG_DRAW_SSAO,
576
VIEWPORT_DEBUG_DRAW_SSIL,
577
VIEWPORT_DEBUG_DRAW_PSSM_SPLITS,
578
VIEWPORT_DEBUG_DRAW_DECAL_ATLAS,
579
VIEWPORT_DEBUG_DRAW_SDFGI,
580
VIEWPORT_DEBUG_DRAW_SDFGI_PROBES,
581
VIEWPORT_DEBUG_DRAW_GI_BUFFER,
582
VIEWPORT_DEBUG_DRAW_DISABLE_LOD,
583
VIEWPORT_DEBUG_DRAW_CLUSTER_OMNI_LIGHTS,
584
VIEWPORT_DEBUG_DRAW_CLUSTER_SPOT_LIGHTS,
585
VIEWPORT_DEBUG_DRAW_CLUSTER_DECALS,
586
VIEWPORT_DEBUG_DRAW_CLUSTER_REFLECTION_PROBES,
587
VIEWPORT_DEBUG_DRAW_OCCLUDERS,
588
VIEWPORT_DEBUG_DRAW_MOTION_VECTORS,
589
VIEWPORT_DEBUG_DRAW_INTERNAL_BUFFER,
590
};
591
592
enum ViewportVRSMode {
593
VIEWPORT_VRS_DISABLED,
594
VIEWPORT_VRS_TEXTURE,
595
VIEWPORT_VRS_XR,
596
VIEWPORT_VRS_MAX,
597
};
598
599
enum ViewportVRSUpdateMode {
600
VIEWPORT_VRS_UPDATE_DISABLED,
601
VIEWPORT_VRS_UPDATE_ONCE,
602
VIEWPORT_VRS_UPDATE_ALWAYS,
603
VIEWPORT_VRS_UPDATE_MAX,
604
};
605
606
/* SKY API */
607
608
enum SkyMode {
609
SKY_MODE_AUTOMATIC,
610
SKY_MODE_QUALITY,
611
SKY_MODE_INCREMENTAL,
612
SKY_MODE_REALTIME,
613
};
614
615
/* COMPOSITOR EFFECTS API */
616
617
enum CompositorEffectFlags {
618
COMPOSITOR_EFFECT_FLAG_ACCESS_RESOLVED_COLOR = 1,
619
COMPOSITOR_EFFECT_FLAG_ACCESS_RESOLVED_DEPTH = 2,
620
COMPOSITOR_EFFECT_FLAG_NEEDS_MOTION_VECTORS = 4,
621
COMPOSITOR_EFFECT_FLAG_NEEDS_ROUGHNESS = 8,
622
COMPOSITOR_EFFECT_FLAG_NEEDS_SEPARATE_SPECULAR = 16,
623
};
624
625
enum CompositorEffectCallbackType {
626
COMPOSITOR_EFFECT_CALLBACK_TYPE_PRE_OPAQUE,
627
COMPOSITOR_EFFECT_CALLBACK_TYPE_POST_OPAQUE,
628
COMPOSITOR_EFFECT_CALLBACK_TYPE_POST_SKY,
629
COMPOSITOR_EFFECT_CALLBACK_TYPE_PRE_TRANSPARENT,
630
COMPOSITOR_EFFECT_CALLBACK_TYPE_POST_TRANSPARENT,
631
COMPOSITOR_EFFECT_CALLBACK_TYPE_MAX,
632
COMPOSITOR_EFFECT_CALLBACK_TYPE_ANY = -1,
633
};
634
635
/* ENVIRONMENT API */
636
637
enum EnvironmentBG {
638
ENV_BG_CLEAR_COLOR,
639
ENV_BG_COLOR,
640
ENV_BG_SKY,
641
ENV_BG_CANVAS,
642
ENV_BG_KEEP,
643
ENV_BG_CAMERA_FEED,
644
ENV_BG_MAX,
645
};
646
647
enum EnvironmentAmbientSource {
648
ENV_AMBIENT_SOURCE_BG,
649
ENV_AMBIENT_SOURCE_DISABLED,
650
ENV_AMBIENT_SOURCE_COLOR,
651
ENV_AMBIENT_SOURCE_SKY,
652
};
653
654
enum EnvironmentReflectionSource {
655
ENV_REFLECTION_SOURCE_BG,
656
ENV_REFLECTION_SOURCE_DISABLED,
657
ENV_REFLECTION_SOURCE_SKY,
658
};
659
660
enum EnvironmentGlowBlendMode {
661
ENV_GLOW_BLEND_MODE_ADDITIVE,
662
ENV_GLOW_BLEND_MODE_SCREEN,
663
ENV_GLOW_BLEND_MODE_SOFTLIGHT,
664
ENV_GLOW_BLEND_MODE_REPLACE,
665
ENV_GLOW_BLEND_MODE_MIX,
666
};
667
668
enum EnvironmentToneMapper {
669
ENV_TONE_MAPPER_LINEAR,
670
ENV_TONE_MAPPER_REINHARD,
671
ENV_TONE_MAPPER_FILMIC,
672
ENV_TONE_MAPPER_ACES,
673
ENV_TONE_MAPPER_AGX,
674
};
675
676
enum EnvironmentSSRRoughnessQuality {
677
ENV_SSR_ROUGHNESS_QUALITY_DISABLED,
678
ENV_SSR_ROUGHNESS_QUALITY_LOW,
679
ENV_SSR_ROUGHNESS_QUALITY_MEDIUM,
680
ENV_SSR_ROUGHNESS_QUALITY_HIGH,
681
};
682
683
enum EnvironmentSSAOQuality {
684
ENV_SSAO_QUALITY_VERY_LOW,
685
ENV_SSAO_QUALITY_LOW,
686
ENV_SSAO_QUALITY_MEDIUM,
687
ENV_SSAO_QUALITY_HIGH,
688
ENV_SSAO_QUALITY_ULTRA,
689
};
690
691
enum EnvironmentSSILQuality {
692
ENV_SSIL_QUALITY_VERY_LOW,
693
ENV_SSIL_QUALITY_LOW,
694
ENV_SSIL_QUALITY_MEDIUM,
695
ENV_SSIL_QUALITY_HIGH,
696
ENV_SSIL_QUALITY_ULTRA,
697
};
698
699
enum EnvironmentSDFGIYScale {
700
ENV_SDFGI_Y_SCALE_50_PERCENT,
701
ENV_SDFGI_Y_SCALE_75_PERCENT,
702
ENV_SDFGI_Y_SCALE_100_PERCENT,
703
};
704
705
enum EnvironmentSDFGIRayCount {
706
ENV_SDFGI_RAY_COUNT_4,
707
ENV_SDFGI_RAY_COUNT_8,
708
ENV_SDFGI_RAY_COUNT_16,
709
ENV_SDFGI_RAY_COUNT_32,
710
ENV_SDFGI_RAY_COUNT_64,
711
ENV_SDFGI_RAY_COUNT_96,
712
ENV_SDFGI_RAY_COUNT_128,
713
ENV_SDFGI_RAY_COUNT_MAX,
714
};
715
716
enum EnvironmentSDFGIFramesToConverge {
717
ENV_SDFGI_CONVERGE_IN_5_FRAMES,
718
ENV_SDFGI_CONVERGE_IN_10_FRAMES,
719
ENV_SDFGI_CONVERGE_IN_15_FRAMES,
720
ENV_SDFGI_CONVERGE_IN_20_FRAMES,
721
ENV_SDFGI_CONVERGE_IN_25_FRAMES,
722
ENV_SDFGI_CONVERGE_IN_30_FRAMES,
723
ENV_SDFGI_CONVERGE_MAX
724
};
725
726
enum EnvironmentSDFGIFramesToUpdateLight {
727
ENV_SDFGI_UPDATE_LIGHT_IN_1_FRAME,
728
ENV_SDFGI_UPDATE_LIGHT_IN_2_FRAMES,
729
ENV_SDFGI_UPDATE_LIGHT_IN_4_FRAMES,
730
ENV_SDFGI_UPDATE_LIGHT_IN_8_FRAMES,
731
ENV_SDFGI_UPDATE_LIGHT_IN_16_FRAMES,
732
ENV_SDFGI_UPDATE_LIGHT_MAX,
733
};
734
735
enum EnvironmentFogMode {
736
ENV_FOG_MODE_EXPONENTIAL,
737
ENV_FOG_MODE_DEPTH,
738
};
739
740
enum SubSurfaceScatteringQuality {
741
SUB_SURFACE_SCATTERING_QUALITY_DISABLED,
742
SUB_SURFACE_SCATTERING_QUALITY_LOW,
743
SUB_SURFACE_SCATTERING_QUALITY_MEDIUM,
744
SUB_SURFACE_SCATTERING_QUALITY_HIGH,
745
};
746
747
/* CAMERA ATTRIBUTES API */
748
749
enum DOFBlurQuality {
750
DOF_BLUR_QUALITY_VERY_LOW,
751
DOF_BLUR_QUALITY_LOW,
752
DOF_BLUR_QUALITY_MEDIUM,
753
DOF_BLUR_QUALITY_HIGH,
754
};
755
756
enum DOFBokehShape {
757
DOF_BOKEH_BOX,
758
DOF_BOKEH_HEXAGON,
759
DOF_BOKEH_CIRCLE,
760
};
761
762
/* INSTANCING API */
763
764
enum InstanceType {
765
INSTANCE_NONE,
766
INSTANCE_MESH,
767
INSTANCE_MULTIMESH,
768
INSTANCE_PARTICLES,
769
INSTANCE_PARTICLES_COLLISION,
770
INSTANCE_LIGHT,
771
INSTANCE_REFLECTION_PROBE,
772
INSTANCE_DECAL,
773
INSTANCE_VOXEL_GI,
774
INSTANCE_LIGHTMAP,
775
INSTANCE_OCCLUDER,
776
INSTANCE_VISIBLITY_NOTIFIER, // TODO: Fix typo in "VISIBILITY" (in 5.0).
777
INSTANCE_FOG_VOLUME,
778
INSTANCE_MAX,
779
780
INSTANCE_GEOMETRY_MASK = (1 << INSTANCE_MESH) | (1 << INSTANCE_MULTIMESH) | (1 << INSTANCE_PARTICLES)
781
};
782
783
enum InstanceFlags {
784
INSTANCE_FLAG_USE_BAKED_LIGHT,
785
INSTANCE_FLAG_USE_DYNAMIC_GI,
786
INSTANCE_FLAG_DRAW_NEXT_FRAME_IF_VISIBLE,
787
INSTANCE_FLAG_IGNORE_OCCLUSION_CULLING,
788
INSTANCE_FLAG_MAX,
789
};
790
791
enum ShadowCastingSetting {
792
SHADOW_CASTING_SETTING_OFF,
793
SHADOW_CASTING_SETTING_ON,
794
SHADOW_CASTING_SETTING_DOUBLE_SIDED,
795
SHADOW_CASTING_SETTING_SHADOWS_ONLY,
796
};
797
798
enum VisibilityRangeFadeMode {
799
VISIBILITY_RANGE_FADE_DISABLED,
800
VISIBILITY_RANGE_FADE_SELF,
801
VISIBILITY_RANGE_FADE_DEPENDENCIES,
802
};
803
804
/* BAKE API */
805
806
enum BakeChannels {
807
BAKE_CHANNEL_ALBEDO_ALPHA,
808
BAKE_CHANNEL_NORMAL,
809
BAKE_CHANNEL_ORM,
810
BAKE_CHANNEL_EMISSION,
811
};
812
813
/* CANVAS TEXTURE API */
814
815
enum CanvasTextureChannel {
816
CANVAS_TEXTURE_CHANNEL_DIFFUSE,
817
CANVAS_TEXTURE_CHANNEL_NORMAL,
818
CANVAS_TEXTURE_CHANNEL_SPECULAR,
819
};
820
821
/* CANVAS ITEM API */
822
823
enum NinePatchAxisMode {
824
NINE_PATCH_STRETCH,
825
NINE_PATCH_TILE,
826
NINE_PATCH_TILE_FIT,
827
};
828
829
enum CanvasGroupMode {
830
CANVAS_GROUP_MODE_DISABLED,
831
CANVAS_GROUP_MODE_CLIP_ONLY,
832
CANVAS_GROUP_MODE_CLIP_AND_DRAW,
833
CANVAS_GROUP_MODE_TRANSPARENT,
834
};
835
836
/* CANVAS LIGHT API */
837
838
enum CanvasLightMode {
839
CANVAS_LIGHT_MODE_POINT,
840
CANVAS_LIGHT_MODE_DIRECTIONAL,
841
};
842
843
enum CanvasLightBlendMode {
844
CANVAS_LIGHT_BLEND_MODE_ADD,
845
CANVAS_LIGHT_BLEND_MODE_SUB,
846
CANVAS_LIGHT_BLEND_MODE_MIX,
847
};
848
849
enum CanvasLightShadowFilter {
850
CANVAS_LIGHT_FILTER_NONE,
851
CANVAS_LIGHT_FILTER_PCF5,
852
CANVAS_LIGHT_FILTER_PCF13,
853
CANVAS_LIGHT_FILTER_MAX,
854
};
855
856
/* CANVAS OCCLUDER POLYGON API */
857
858
enum CanvasOccluderPolygonCullMode {
859
CANVAS_OCCLUDER_POLYGON_CULL_DISABLED,
860
CANVAS_OCCLUDER_POLYGON_CULL_CLOCKWISE,
861
CANVAS_OCCLUDER_POLYGON_CULL_COUNTER_CLOCKWISE,
862
};
863
864
/* GLOBAL SHADER PARAMETERS API */
865
866
enum GlobalShaderParameterType {
867
GLOBAL_VAR_TYPE_BOOL,
868
GLOBAL_VAR_TYPE_BVEC2,
869
GLOBAL_VAR_TYPE_BVEC3,
870
GLOBAL_VAR_TYPE_BVEC4,
871
GLOBAL_VAR_TYPE_INT,
872
GLOBAL_VAR_TYPE_IVEC2,
873
GLOBAL_VAR_TYPE_IVEC3,
874
GLOBAL_VAR_TYPE_IVEC4,
875
GLOBAL_VAR_TYPE_RECT2I,
876
GLOBAL_VAR_TYPE_UINT,
877
GLOBAL_VAR_TYPE_UVEC2,
878
GLOBAL_VAR_TYPE_UVEC3,
879
GLOBAL_VAR_TYPE_UVEC4,
880
GLOBAL_VAR_TYPE_FLOAT,
881
GLOBAL_VAR_TYPE_VEC2,
882
GLOBAL_VAR_TYPE_VEC3,
883
GLOBAL_VAR_TYPE_VEC4,
884
GLOBAL_VAR_TYPE_COLOR,
885
GLOBAL_VAR_TYPE_RECT2,
886
GLOBAL_VAR_TYPE_MAT2,
887
GLOBAL_VAR_TYPE_MAT3,
888
GLOBAL_VAR_TYPE_MAT4,
889
GLOBAL_VAR_TYPE_TRANSFORM_2D,
890
GLOBAL_VAR_TYPE_TRANSFORM,
891
GLOBAL_VAR_TYPE_SAMPLER2D,
892
GLOBAL_VAR_TYPE_SAMPLER2DARRAY,
893
GLOBAL_VAR_TYPE_SAMPLER3D,
894
GLOBAL_VAR_TYPE_SAMPLERCUBE,
895
GLOBAL_VAR_TYPE_SAMPLEREXT,
896
GLOBAL_VAR_TYPE_MAX,
897
};
898
899
/* STATUS INFORMATION */
900
901
enum RenderingInfo {
902
RENDERING_INFO_TOTAL_OBJECTS_IN_FRAME,
903
RENDERING_INFO_TOTAL_PRIMITIVES_IN_FRAME,
904
RENDERING_INFO_TOTAL_DRAW_CALLS_IN_FRAME,
905
RENDERING_INFO_TEXTURE_MEM_USED,
906
RENDERING_INFO_BUFFER_MEM_USED,
907
RENDERING_INFO_VIDEO_MEM_USED,
908
RENDERING_INFO_PIPELINE_COMPILATIONS_CANVAS,
909
RENDERING_INFO_PIPELINE_COMPILATIONS_MESH,
910
RENDERING_INFO_PIPELINE_COMPILATIONS_SURFACE,
911
RENDERING_INFO_PIPELINE_COMPILATIONS_DRAW,
912
RENDERING_INFO_PIPELINE_COMPILATIONS_SPECIALIZATION,
913
RENDERING_INFO_MAX,
914
};
915
916
/* BACKGROUND */
917
918
// If this is modified, review the conversion code in `project_settings.cpp`
919
// which is hardcoded to avoid coupling `core` with `servers`.
920
enum SplashStretchMode {
921
SPLASH_STRETCH_MODE_DISABLED,
922
SPLASH_STRETCH_MODE_KEEP,
923
SPLASH_STRETCH_MODE_KEEP_WIDTH,
924
SPLASH_STRETCH_MODE_KEEP_HEIGHT,
925
SPLASH_STRETCH_MODE_COVER,
926
SPLASH_STRETCH_MODE_IGNORE,
927
};
928
929
/* MISC */
930
931
#ifndef DISABLE_DEPRECATED
932
// Never actually used, should be removed when we can break compatibility.
933
enum Features {
934
FEATURE_SHADERS,
935
FEATURE_MULTITHREADED,
936
};
937
#endif
938
939
} // namespace RenderingServerEnums
940
941
// Alias to make it easier to use.
942
#define RSE RenderingServerEnums
943
944