godot-module-template/engine/servers/rendering/rendering_server_enums.h
Sara c3f9669b10 Add 'engine/' from commit 'a8e37fc010'
git-subtree-dir: engine
git-subtree-mainline: b74841629e
git-subtree-split: a8e37fc010
2026-03-13 11:22:19 +01:00

925 lines
24 KiB
C++

/**************************************************************************/
/* rendering_server_enums.h */
/**************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
/* https://godotengine.org */
/**************************************************************************/
/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */
/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */
/* */
/* Permission is hereby granted, free of charge, to any person obtaining */
/* a copy of this software and associated documentation files (the */
/* "Software"), to deal in the Software without restriction, including */
/* without limitation the rights to use, copy, modify, merge, publish, */
/* distribute, sublicense, and/or sell copies of the Software, and to */
/* permit persons to whom the Software is furnished to do so, subject to */
/* the following conditions: */
/* */
/* The above copyright notice and this permission notice shall be */
/* included in all copies or substantial portions of the Software. */
/* */
/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */
/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/**************************************************************************/
#pragma once
#include <cstdint>
namespace RenderingServerEnums {
enum {
NO_INDEX_ARRAY = -1,
ARRAY_WEIGHTS_SIZE = 4,
CANVAS_ITEM_Z_MIN = -4096,
CANVAS_ITEM_Z_MAX = 4096,
CANVAS_LAYER_MIN = -2147483648,
CANVAS_LAYER_MAX = 2147483647,
MAX_GLOW_LEVELS = 7,
MAX_CURSORS = 8,
MAX_2D_DIRECTIONAL_LIGHTS = 8,
MAX_MESH_SURFACES = 256,
};
/* TEXTURE API */
enum TextureType {
TEXTURE_TYPE_2D,
TEXTURE_TYPE_LAYERED,
TEXTURE_TYPE_3D,
};
enum TextureLayeredType {
TEXTURE_LAYERED_2D_ARRAY,
TEXTURE_LAYERED_CUBEMAP,
TEXTURE_LAYERED_CUBEMAP_ARRAY,
};
enum CubeMapLayer {
CUBEMAP_LAYER_LEFT,
CUBEMAP_LAYER_RIGHT,
CUBEMAP_LAYER_BOTTOM,
CUBEMAP_LAYER_TOP,
CUBEMAP_LAYER_FRONT,
CUBEMAP_LAYER_BACK,
};
enum TextureDrawableFormat {
TEXTURE_DRAWABLE_FORMAT_RGBA8,
TEXTURE_DRAWABLE_FORMAT_RGBA8_SRGB, // Use this if you want to read the result from both 2D (non-hdr) and 3D.
TEXTURE_DRAWABLE_FORMAT_RGBAH,
TEXTURE_DRAWABLE_FORMAT_RGBAF,
};
enum TextureDetectRoughnessChannel {
TEXTURE_DETECT_ROUGHNESS_R,
TEXTURE_DETECT_ROUGHNESS_G,
TEXTURE_DETECT_ROUGHNESS_B,
TEXTURE_DETECT_ROUGHNESS_A,
TEXTURE_DETECT_ROUGHNESS_GRAY,
};
/* PIPELINES API */
enum PipelineSource {
PIPELINE_SOURCE_CANVAS,
PIPELINE_SOURCE_MESH,
PIPELINE_SOURCE_SURFACE,
PIPELINE_SOURCE_DRAW,
PIPELINE_SOURCE_SPECIALIZATION,
PIPELINE_SOURCE_MAX,
};
/* SHADER API */
enum ShaderMode {
SHADER_SPATIAL,
SHADER_CANVAS_ITEM,
SHADER_PARTICLES,
SHADER_SKY,
SHADER_FOG,
SHADER_TEXTURE_BLIT,
SHADER_MAX,
};
enum CullMode {
CULL_MODE_DISABLED,
CULL_MODE_FRONT,
CULL_MODE_BACK,
};
/* COMMON MATERIAL API */
enum {
MATERIAL_RENDER_PRIORITY_MIN = -128,
MATERIAL_RENDER_PRIORITY_MAX = 127,
};
/* MESH API */
enum ArrayType {
ARRAY_VERTEX = 0, // RG32F (2D), RGB32F, RGBA16 (compressed)
ARRAY_NORMAL = 1, // RG16
ARRAY_TANGENT = 2, // BA16 (with normal) or A16 (with vertex, when compressed)
ARRAY_COLOR = 3, // RGBA8
ARRAY_TEX_UV = 4, // RG32F or RG16
ARRAY_TEX_UV2 = 5, // RG32F or RG16
ARRAY_CUSTOM0 = 6, // Depends on ArrayCustomFormat.
ARRAY_CUSTOM1 = 7,
ARRAY_CUSTOM2 = 8,
ARRAY_CUSTOM3 = 9,
ARRAY_BONES = 10, // RGBA16UI (x2 if 8 weights)
ARRAY_WEIGHTS = 11, // RGBA16UNORM (x2 if 8 weights)
ARRAY_INDEX = 12, // 16 or 32 bits depending on length > 0xFFFF.
ARRAY_MAX = 13,
};
enum {
ARRAY_CUSTOM_COUNT = ARRAY_BONES - ARRAY_CUSTOM0
};
enum ArrayCustomFormat {
ARRAY_CUSTOM_RGBA8_UNORM,
ARRAY_CUSTOM_RGBA8_SNORM,
ARRAY_CUSTOM_RG_HALF,
ARRAY_CUSTOM_RGBA_HALF,
ARRAY_CUSTOM_R_FLOAT,
ARRAY_CUSTOM_RG_FLOAT,
ARRAY_CUSTOM_RGB_FLOAT,
ARRAY_CUSTOM_RGBA_FLOAT,
ARRAY_CUSTOM_MAX,
};
enum ArrayFormat : uint64_t {
/* ARRAY FORMAT FLAGS */
ARRAY_FORMAT_VERTEX = 1 << ARRAY_VERTEX,
ARRAY_FORMAT_NORMAL = 1 << ARRAY_NORMAL,
ARRAY_FORMAT_TANGENT = 1 << ARRAY_TANGENT,
ARRAY_FORMAT_COLOR = 1 << ARRAY_COLOR,
ARRAY_FORMAT_TEX_UV = 1 << ARRAY_TEX_UV,
ARRAY_FORMAT_TEX_UV2 = 1 << ARRAY_TEX_UV2,
ARRAY_FORMAT_CUSTOM0 = 1 << ARRAY_CUSTOM0,
ARRAY_FORMAT_CUSTOM1 = 1 << ARRAY_CUSTOM1,
ARRAY_FORMAT_CUSTOM2 = 1 << ARRAY_CUSTOM2,
ARRAY_FORMAT_CUSTOM3 = 1 << ARRAY_CUSTOM3,
ARRAY_FORMAT_BONES = 1 << ARRAY_BONES,
ARRAY_FORMAT_WEIGHTS = 1 << ARRAY_WEIGHTS,
ARRAY_FORMAT_INDEX = 1 << ARRAY_INDEX,
ARRAY_FORMAT_BLEND_SHAPE_MASK = ARRAY_FORMAT_VERTEX | ARRAY_FORMAT_NORMAL | ARRAY_FORMAT_TANGENT,
ARRAY_FORMAT_CUSTOM_BASE = (ARRAY_INDEX + 1),
ARRAY_FORMAT_CUSTOM_BITS = 3,
ARRAY_FORMAT_CUSTOM_MASK = 0x7,
ARRAY_FORMAT_CUSTOM0_SHIFT = (ARRAY_FORMAT_CUSTOM_BASE + 0),
ARRAY_FORMAT_CUSTOM1_SHIFT = (ARRAY_FORMAT_CUSTOM_BASE + ARRAY_FORMAT_CUSTOM_BITS),
ARRAY_FORMAT_CUSTOM2_SHIFT = (ARRAY_FORMAT_CUSTOM_BASE + ARRAY_FORMAT_CUSTOM_BITS * 2),
ARRAY_FORMAT_CUSTOM3_SHIFT = (ARRAY_FORMAT_CUSTOM_BASE + ARRAY_FORMAT_CUSTOM_BITS * 3),
ARRAY_COMPRESS_FLAGS_BASE = (ARRAY_INDEX + 1 + 12),
ARRAY_FLAG_USE_2D_VERTICES = 1 << (ARRAY_COMPRESS_FLAGS_BASE + 0),
ARRAY_FLAG_USE_DYNAMIC_UPDATE = 1 << (ARRAY_COMPRESS_FLAGS_BASE + 1),
ARRAY_FLAG_USE_8_BONE_WEIGHTS = 1 << (ARRAY_COMPRESS_FLAGS_BASE + 2),
ARRAY_FLAG_USES_EMPTY_VERTEX_ARRAY = 1 << (ARRAY_COMPRESS_FLAGS_BASE + 3),
ARRAY_FLAG_COMPRESS_ATTRIBUTES = 1 << (ARRAY_COMPRESS_FLAGS_BASE + 4),
// We leave enough room for up to 5 more compression flags.
ARRAY_FLAG_FORMAT_VERSION_BASE = ARRAY_COMPRESS_FLAGS_BASE + 10,
ARRAY_FLAG_FORMAT_VERSION_SHIFT = ARRAY_FLAG_FORMAT_VERSION_BASE,
// When changes are made to the mesh format, add a new version and use it for the CURRENT_VERSION.
ARRAY_FLAG_FORMAT_VERSION_1 = 0,
ARRAY_FLAG_FORMAT_VERSION_2 = 1ULL << ARRAY_FLAG_FORMAT_VERSION_SHIFT,
ARRAY_FLAG_FORMAT_CURRENT_VERSION = ARRAY_FLAG_FORMAT_VERSION_2,
ARRAY_FLAG_FORMAT_VERSION_MASK = 0xFF, // 8 bits version
};
static_assert(sizeof(ArrayFormat) == 8, "ArrayFormat should be 64 bits long.");
enum PrimitiveType {
PRIMITIVE_POINTS,
PRIMITIVE_LINES,
PRIMITIVE_LINE_STRIP,
PRIMITIVE_TRIANGLES,
PRIMITIVE_TRIANGLE_STRIP,
PRIMITIVE_MAX,
};
enum BlendShapeMode {
BLEND_SHAPE_MODE_NORMALIZED,
BLEND_SHAPE_MODE_RELATIVE,
};
/* MULTIMESH API */
enum MultimeshTransformFormat {
MULTIMESH_TRANSFORM_2D,
MULTIMESH_TRANSFORM_3D,
};
enum MultimeshPhysicsInterpolationQuality {
MULTIMESH_INTERP_QUALITY_FAST,
MULTIMESH_INTERP_QUALITY_HIGH,
};
/* LIGHT API */
enum LightType {
LIGHT_DIRECTIONAL,
LIGHT_OMNI,
LIGHT_SPOT,
};
enum LightParam {
LIGHT_PARAM_ENERGY,
LIGHT_PARAM_INDIRECT_ENERGY,
LIGHT_PARAM_VOLUMETRIC_FOG_ENERGY,
LIGHT_PARAM_SPECULAR,
LIGHT_PARAM_RANGE,
LIGHT_PARAM_SIZE,
LIGHT_PARAM_ATTENUATION,
LIGHT_PARAM_SPOT_ANGLE,
LIGHT_PARAM_SPOT_ATTENUATION,
LIGHT_PARAM_SHADOW_MAX_DISTANCE,
LIGHT_PARAM_SHADOW_SPLIT_1_OFFSET,
LIGHT_PARAM_SHADOW_SPLIT_2_OFFSET,
LIGHT_PARAM_SHADOW_SPLIT_3_OFFSET,
LIGHT_PARAM_SHADOW_FADE_START,
LIGHT_PARAM_SHADOW_NORMAL_BIAS,
LIGHT_PARAM_SHADOW_BIAS,
LIGHT_PARAM_SHADOW_PANCAKE_SIZE,
LIGHT_PARAM_SHADOW_OPACITY,
LIGHT_PARAM_SHADOW_BLUR,
LIGHT_PARAM_TRANSMITTANCE_BIAS,
LIGHT_PARAM_INTENSITY,
LIGHT_PARAM_MAX,
};
enum LightBakeMode {
LIGHT_BAKE_DISABLED,
LIGHT_BAKE_STATIC,
LIGHT_BAKE_DYNAMIC,
};
enum LightOmniShadowMode {
LIGHT_OMNI_SHADOW_DUAL_PARABOLOID,
LIGHT_OMNI_SHADOW_CUBE,
};
enum LightDirectionalShadowMode {
LIGHT_DIRECTIONAL_SHADOW_ORTHOGONAL,
LIGHT_DIRECTIONAL_SHADOW_PARALLEL_2_SPLITS,
LIGHT_DIRECTIONAL_SHADOW_PARALLEL_4_SPLITS,
};
enum LightDirectionalSkyMode {
LIGHT_DIRECTIONAL_SKY_MODE_LIGHT_AND_SKY,
LIGHT_DIRECTIONAL_SKY_MODE_LIGHT_ONLY,
LIGHT_DIRECTIONAL_SKY_MODE_SKY_ONLY,
};
enum ShadowQuality {
SHADOW_QUALITY_HARD,
SHADOW_QUALITY_SOFT_VERY_LOW,
SHADOW_QUALITY_SOFT_LOW,
SHADOW_QUALITY_SOFT_MEDIUM,
SHADOW_QUALITY_SOFT_HIGH,
SHADOW_QUALITY_SOFT_ULTRA,
SHADOW_QUALITY_MAX,
};
enum LightProjectorFilter {
LIGHT_PROJECTOR_FILTER_NEAREST,
LIGHT_PROJECTOR_FILTER_LINEAR,
LIGHT_PROJECTOR_FILTER_NEAREST_MIPMAPS,
LIGHT_PROJECTOR_FILTER_LINEAR_MIPMAPS,
LIGHT_PROJECTOR_FILTER_NEAREST_MIPMAPS_ANISOTROPIC,
LIGHT_PROJECTOR_FILTER_LINEAR_MIPMAPS_ANISOTROPIC,
};
/* REFLECTION PROBE API */
enum ReflectionProbeUpdateMode {
REFLECTION_PROBE_UPDATE_ONCE,
REFLECTION_PROBE_UPDATE_ALWAYS,
};
enum ReflectionProbeAmbientMode {
REFLECTION_PROBE_AMBIENT_DISABLED,
REFLECTION_PROBE_AMBIENT_ENVIRONMENT,
REFLECTION_PROBE_AMBIENT_COLOR,
};
/* DECAL API */
enum DecalTexture {
DECAL_TEXTURE_ALBEDO,
DECAL_TEXTURE_NORMAL,
DECAL_TEXTURE_ORM,
DECAL_TEXTURE_EMISSION,
DECAL_TEXTURE_MAX,
};
enum DecalFilter {
DECAL_FILTER_NEAREST,
DECAL_FILTER_LINEAR,
DECAL_FILTER_NEAREST_MIPMAPS,
DECAL_FILTER_LINEAR_MIPMAPS,
DECAL_FILTER_NEAREST_MIPMAPS_ANISOTROPIC,
DECAL_FILTER_LINEAR_MIPMAPS_ANISOTROPIC,
};
/* VOXEL GI API */
enum VoxelGIQuality {
VOXEL_GI_QUALITY_LOW,
VOXEL_GI_QUALITY_HIGH,
};
/* LIGHTMAP API */
enum ShadowmaskMode {
SHADOWMASK_MODE_NONE,
SHADOWMASK_MODE_REPLACE,
SHADOWMASK_MODE_OVERLAY,
SHADOWMASK_MODE_ONLY,
};
/* PARTICLES API */
enum ParticlesMode {
PARTICLES_MODE_2D,
PARTICLES_MODE_3D,
};
enum ParticlesTransformAlign {
PARTICLES_TRANSFORM_ALIGN_DISABLED,
PARTICLES_TRANSFORM_ALIGN_Z_BILLBOARD,
PARTICLES_TRANSFORM_ALIGN_Y_TO_VELOCITY,
PARTICLES_TRANSFORM_ALIGN_Z_BILLBOARD_Y_TO_VELOCITY,
};
enum ParticlesEmitFlags {
PARTICLES_EMIT_FLAG_POSITION = 1,
PARTICLES_EMIT_FLAG_ROTATION_SCALE = 2,
PARTICLES_EMIT_FLAG_VELOCITY = 4,
PARTICLES_EMIT_FLAG_COLOR = 8,
PARTICLES_EMIT_FLAG_CUSTOM = 16,
};
enum ParticlesDrawOrder {
PARTICLES_DRAW_ORDER_INDEX,
PARTICLES_DRAW_ORDER_LIFETIME,
PARTICLES_DRAW_ORDER_REVERSE_LIFETIME,
PARTICLES_DRAW_ORDER_VIEW_DEPTH,
};
/* PARTICLES COLLISION API */
enum ParticlesCollisionType {
PARTICLES_COLLISION_TYPE_SPHERE_ATTRACT,
PARTICLES_COLLISION_TYPE_BOX_ATTRACT,
PARTICLES_COLLISION_TYPE_VECTOR_FIELD_ATTRACT,
PARTICLES_COLLISION_TYPE_SPHERE_COLLIDE,
PARTICLES_COLLISION_TYPE_BOX_COLLIDE,
PARTICLES_COLLISION_TYPE_SDF_COLLIDE,
PARTICLES_COLLISION_TYPE_HEIGHTFIELD_COLLIDE,
};
enum ParticlesCollisionHeightfieldResolution { // Longest axis resolution.
PARTICLES_COLLISION_HEIGHTFIELD_RESOLUTION_256,
PARTICLES_COLLISION_HEIGHTFIELD_RESOLUTION_512,
PARTICLES_COLLISION_HEIGHTFIELD_RESOLUTION_1024,
PARTICLES_COLLISION_HEIGHTFIELD_RESOLUTION_2048,
PARTICLES_COLLISION_HEIGHTFIELD_RESOLUTION_4096,
PARTICLES_COLLISION_HEIGHTFIELD_RESOLUTION_8192,
PARTICLES_COLLISION_HEIGHTFIELD_RESOLUTION_MAX,
};
/* FOG VOLUME API */
enum FogVolumeShape {
FOG_VOLUME_SHAPE_ELLIPSOID,
FOG_VOLUME_SHAPE_CONE,
FOG_VOLUME_SHAPE_CYLINDER,
FOG_VOLUME_SHAPE_BOX,
FOG_VOLUME_SHAPE_WORLD,
FOG_VOLUME_SHAPE_MAX,
};
/* VIEWPORT API */
enum CanvasItemTextureFilter {
CANVAS_ITEM_TEXTURE_FILTER_DEFAULT, // Uses canvas item setting for draw command, uses global setting for canvas item.
CANVAS_ITEM_TEXTURE_FILTER_NEAREST,
CANVAS_ITEM_TEXTURE_FILTER_LINEAR,
CANVAS_ITEM_TEXTURE_FILTER_NEAREST_WITH_MIPMAPS,
CANVAS_ITEM_TEXTURE_FILTER_LINEAR_WITH_MIPMAPS,
CANVAS_ITEM_TEXTURE_FILTER_NEAREST_WITH_MIPMAPS_ANISOTROPIC,
CANVAS_ITEM_TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC,
CANVAS_ITEM_TEXTURE_FILTER_MAX,
};
enum CanvasItemTextureRepeat {
CANVAS_ITEM_TEXTURE_REPEAT_DEFAULT, // Uses canvas item setting for draw command, uses global setting for canvas item.
CANVAS_ITEM_TEXTURE_REPEAT_DISABLED,
CANVAS_ITEM_TEXTURE_REPEAT_ENABLED,
CANVAS_ITEM_TEXTURE_REPEAT_MIRROR,
CANVAS_ITEM_TEXTURE_REPEAT_MAX,
};
enum ViewportScaling3DMode {
VIEWPORT_SCALING_3D_MODE_BILINEAR,
VIEWPORT_SCALING_3D_MODE_FSR,
VIEWPORT_SCALING_3D_MODE_FSR2,
VIEWPORT_SCALING_3D_MODE_METALFX_SPATIAL,
VIEWPORT_SCALING_3D_MODE_METALFX_TEMPORAL,
VIEWPORT_SCALING_3D_MODE_MAX,
VIEWPORT_SCALING_3D_MODE_OFF = 255, // for internal use only
};
enum ViewportScaling3DType {
VIEWPORT_SCALING_3D_TYPE_NONE,
VIEWPORT_SCALING_3D_TYPE_TEMPORAL,
VIEWPORT_SCALING_3D_TYPE_SPATIAL,
VIEWPORT_SCALING_3D_TYPE_MAX,
};
inline ViewportScaling3DType scaling_3d_mode_type(ViewportScaling3DMode p_mode) {
if (p_mode == VIEWPORT_SCALING_3D_MODE_BILINEAR || p_mode == VIEWPORT_SCALING_3D_MODE_FSR || p_mode == VIEWPORT_SCALING_3D_MODE_METALFX_SPATIAL) {
return VIEWPORT_SCALING_3D_TYPE_SPATIAL;
} else if (p_mode == VIEWPORT_SCALING_3D_MODE_FSR2 || p_mode == VIEWPORT_SCALING_3D_MODE_METALFX_TEMPORAL) {
return VIEWPORT_SCALING_3D_TYPE_TEMPORAL;
}
return VIEWPORT_SCALING_3D_TYPE_NONE;
}
enum ViewportAnisotropicFiltering {
VIEWPORT_ANISOTROPY_DISABLED,
VIEWPORT_ANISOTROPY_2X,
VIEWPORT_ANISOTROPY_4X,
VIEWPORT_ANISOTROPY_8X,
VIEWPORT_ANISOTROPY_16X,
VIEWPORT_ANISOTROPY_MAX,
};
enum ViewportUpdateMode {
VIEWPORT_UPDATE_DISABLED,
VIEWPORT_UPDATE_ONCE, // Then goes to disabled, must be manually updated.
VIEWPORT_UPDATE_WHEN_VISIBLE, // Default
VIEWPORT_UPDATE_WHEN_PARENT_VISIBLE,
VIEWPORT_UPDATE_ALWAYS,
};
enum ViewportClearMode {
VIEWPORT_CLEAR_ALWAYS,
VIEWPORT_CLEAR_NEVER,
VIEWPORT_CLEAR_ONLY_NEXT_FRAME,
};
enum ViewportEnvironmentMode {
VIEWPORT_ENVIRONMENT_DISABLED,
VIEWPORT_ENVIRONMENT_ENABLED,
VIEWPORT_ENVIRONMENT_INHERIT,
VIEWPORT_ENVIRONMENT_MAX,
};
enum ViewportSDFOversize {
VIEWPORT_SDF_OVERSIZE_100_PERCENT,
VIEWPORT_SDF_OVERSIZE_120_PERCENT,
VIEWPORT_SDF_OVERSIZE_150_PERCENT,
VIEWPORT_SDF_OVERSIZE_200_PERCENT,
VIEWPORT_SDF_OVERSIZE_MAX,
};
enum ViewportSDFScale {
VIEWPORT_SDF_SCALE_100_PERCENT,
VIEWPORT_SDF_SCALE_50_PERCENT,
VIEWPORT_SDF_SCALE_25_PERCENT,
VIEWPORT_SDF_SCALE_MAX,
};
enum ViewportMSAA {
VIEWPORT_MSAA_DISABLED,
VIEWPORT_MSAA_2X,
VIEWPORT_MSAA_4X,
VIEWPORT_MSAA_8X,
VIEWPORT_MSAA_MAX,
};
enum ViewportScreenSpaceAA {
VIEWPORT_SCREEN_SPACE_AA_DISABLED,
VIEWPORT_SCREEN_SPACE_AA_FXAA,
VIEWPORT_SCREEN_SPACE_AA_SMAA,
VIEWPORT_SCREEN_SPACE_AA_MAX,
};
enum ViewportOcclusionCullingBuildQuality {
VIEWPORT_OCCLUSION_BUILD_QUALITY_LOW = 0,
VIEWPORT_OCCLUSION_BUILD_QUALITY_MEDIUM = 1,
VIEWPORT_OCCLUSION_BUILD_QUALITY_HIGH = 2,
};
enum ViewportRenderInfo {
VIEWPORT_RENDER_INFO_OBJECTS_IN_FRAME,
VIEWPORT_RENDER_INFO_PRIMITIVES_IN_FRAME,
VIEWPORT_RENDER_INFO_DRAW_CALLS_IN_FRAME,
VIEWPORT_RENDER_INFO_MAX,
};
enum ViewportRenderInfoType {
VIEWPORT_RENDER_INFO_TYPE_VISIBLE,
VIEWPORT_RENDER_INFO_TYPE_SHADOW,
VIEWPORT_RENDER_INFO_TYPE_CANVAS,
VIEWPORT_RENDER_INFO_TYPE_MAX,
};
enum ViewportDebugDraw {
VIEWPORT_DEBUG_DRAW_DISABLED,
VIEWPORT_DEBUG_DRAW_UNSHADED,
VIEWPORT_DEBUG_DRAW_LIGHTING,
VIEWPORT_DEBUG_DRAW_OVERDRAW,
VIEWPORT_DEBUG_DRAW_WIREFRAME,
VIEWPORT_DEBUG_DRAW_NORMAL_BUFFER,
VIEWPORT_DEBUG_DRAW_VOXEL_GI_ALBEDO,
VIEWPORT_DEBUG_DRAW_VOXEL_GI_LIGHTING,
VIEWPORT_DEBUG_DRAW_VOXEL_GI_EMISSION,
VIEWPORT_DEBUG_DRAW_SHADOW_ATLAS,
VIEWPORT_DEBUG_DRAW_DIRECTIONAL_SHADOW_ATLAS,
VIEWPORT_DEBUG_DRAW_SCENE_LUMINANCE,
VIEWPORT_DEBUG_DRAW_SSAO,
VIEWPORT_DEBUG_DRAW_SSIL,
VIEWPORT_DEBUG_DRAW_PSSM_SPLITS,
VIEWPORT_DEBUG_DRAW_DECAL_ATLAS,
VIEWPORT_DEBUG_DRAW_SDFGI,
VIEWPORT_DEBUG_DRAW_SDFGI_PROBES,
VIEWPORT_DEBUG_DRAW_GI_BUFFER,
VIEWPORT_DEBUG_DRAW_DISABLE_LOD,
VIEWPORT_DEBUG_DRAW_CLUSTER_OMNI_LIGHTS,
VIEWPORT_DEBUG_DRAW_CLUSTER_SPOT_LIGHTS,
VIEWPORT_DEBUG_DRAW_CLUSTER_DECALS,
VIEWPORT_DEBUG_DRAW_CLUSTER_REFLECTION_PROBES,
VIEWPORT_DEBUG_DRAW_OCCLUDERS,
VIEWPORT_DEBUG_DRAW_MOTION_VECTORS,
VIEWPORT_DEBUG_DRAW_INTERNAL_BUFFER,
};
enum ViewportVRSMode {
VIEWPORT_VRS_DISABLED,
VIEWPORT_VRS_TEXTURE,
VIEWPORT_VRS_XR,
VIEWPORT_VRS_MAX,
};
enum ViewportVRSUpdateMode {
VIEWPORT_VRS_UPDATE_DISABLED,
VIEWPORT_VRS_UPDATE_ONCE,
VIEWPORT_VRS_UPDATE_ALWAYS,
VIEWPORT_VRS_UPDATE_MAX,
};
/* SKY API */
enum SkyMode {
SKY_MODE_AUTOMATIC,
SKY_MODE_QUALITY,
SKY_MODE_INCREMENTAL,
SKY_MODE_REALTIME,
};
/* COMPOSITOR EFFECTS API */
enum CompositorEffectFlags {
COMPOSITOR_EFFECT_FLAG_ACCESS_RESOLVED_COLOR = 1,
COMPOSITOR_EFFECT_FLAG_ACCESS_RESOLVED_DEPTH = 2,
COMPOSITOR_EFFECT_FLAG_NEEDS_MOTION_VECTORS = 4,
COMPOSITOR_EFFECT_FLAG_NEEDS_ROUGHNESS = 8,
COMPOSITOR_EFFECT_FLAG_NEEDS_SEPARATE_SPECULAR = 16,
};
enum CompositorEffectCallbackType {
COMPOSITOR_EFFECT_CALLBACK_TYPE_PRE_OPAQUE,
COMPOSITOR_EFFECT_CALLBACK_TYPE_POST_OPAQUE,
COMPOSITOR_EFFECT_CALLBACK_TYPE_POST_SKY,
COMPOSITOR_EFFECT_CALLBACK_TYPE_PRE_TRANSPARENT,
COMPOSITOR_EFFECT_CALLBACK_TYPE_POST_TRANSPARENT,
COMPOSITOR_EFFECT_CALLBACK_TYPE_MAX,
COMPOSITOR_EFFECT_CALLBACK_TYPE_ANY = -1,
};
/* ENVIRONMENT API */
enum EnvironmentBG {
ENV_BG_CLEAR_COLOR,
ENV_BG_COLOR,
ENV_BG_SKY,
ENV_BG_CANVAS,
ENV_BG_KEEP,
ENV_BG_CAMERA_FEED,
ENV_BG_MAX,
};
enum EnvironmentAmbientSource {
ENV_AMBIENT_SOURCE_BG,
ENV_AMBIENT_SOURCE_DISABLED,
ENV_AMBIENT_SOURCE_COLOR,
ENV_AMBIENT_SOURCE_SKY,
};
enum EnvironmentReflectionSource {
ENV_REFLECTION_SOURCE_BG,
ENV_REFLECTION_SOURCE_DISABLED,
ENV_REFLECTION_SOURCE_SKY,
};
enum EnvironmentGlowBlendMode {
ENV_GLOW_BLEND_MODE_ADDITIVE,
ENV_GLOW_BLEND_MODE_SCREEN,
ENV_GLOW_BLEND_MODE_SOFTLIGHT,
ENV_GLOW_BLEND_MODE_REPLACE,
ENV_GLOW_BLEND_MODE_MIX,
};
enum EnvironmentToneMapper {
ENV_TONE_MAPPER_LINEAR,
ENV_TONE_MAPPER_REINHARD,
ENV_TONE_MAPPER_FILMIC,
ENV_TONE_MAPPER_ACES,
ENV_TONE_MAPPER_AGX,
};
enum EnvironmentSSRRoughnessQuality {
ENV_SSR_ROUGHNESS_QUALITY_DISABLED,
ENV_SSR_ROUGHNESS_QUALITY_LOW,
ENV_SSR_ROUGHNESS_QUALITY_MEDIUM,
ENV_SSR_ROUGHNESS_QUALITY_HIGH,
};
enum EnvironmentSSAOQuality {
ENV_SSAO_QUALITY_VERY_LOW,
ENV_SSAO_QUALITY_LOW,
ENV_SSAO_QUALITY_MEDIUM,
ENV_SSAO_QUALITY_HIGH,
ENV_SSAO_QUALITY_ULTRA,
};
enum EnvironmentSSILQuality {
ENV_SSIL_QUALITY_VERY_LOW,
ENV_SSIL_QUALITY_LOW,
ENV_SSIL_QUALITY_MEDIUM,
ENV_SSIL_QUALITY_HIGH,
ENV_SSIL_QUALITY_ULTRA,
};
enum EnvironmentSDFGIYScale {
ENV_SDFGI_Y_SCALE_50_PERCENT,
ENV_SDFGI_Y_SCALE_75_PERCENT,
ENV_SDFGI_Y_SCALE_100_PERCENT,
};
enum EnvironmentSDFGIRayCount {
ENV_SDFGI_RAY_COUNT_4,
ENV_SDFGI_RAY_COUNT_8,
ENV_SDFGI_RAY_COUNT_16,
ENV_SDFGI_RAY_COUNT_32,
ENV_SDFGI_RAY_COUNT_64,
ENV_SDFGI_RAY_COUNT_96,
ENV_SDFGI_RAY_COUNT_128,
ENV_SDFGI_RAY_COUNT_MAX,
};
enum EnvironmentSDFGIFramesToConverge {
ENV_SDFGI_CONVERGE_IN_5_FRAMES,
ENV_SDFGI_CONVERGE_IN_10_FRAMES,
ENV_SDFGI_CONVERGE_IN_15_FRAMES,
ENV_SDFGI_CONVERGE_IN_20_FRAMES,
ENV_SDFGI_CONVERGE_IN_25_FRAMES,
ENV_SDFGI_CONVERGE_IN_30_FRAMES,
ENV_SDFGI_CONVERGE_MAX
};
enum EnvironmentSDFGIFramesToUpdateLight {
ENV_SDFGI_UPDATE_LIGHT_IN_1_FRAME,
ENV_SDFGI_UPDATE_LIGHT_IN_2_FRAMES,
ENV_SDFGI_UPDATE_LIGHT_IN_4_FRAMES,
ENV_SDFGI_UPDATE_LIGHT_IN_8_FRAMES,
ENV_SDFGI_UPDATE_LIGHT_IN_16_FRAMES,
ENV_SDFGI_UPDATE_LIGHT_MAX,
};
enum EnvironmentFogMode {
ENV_FOG_MODE_EXPONENTIAL,
ENV_FOG_MODE_DEPTH,
};
enum SubSurfaceScatteringQuality {
SUB_SURFACE_SCATTERING_QUALITY_DISABLED,
SUB_SURFACE_SCATTERING_QUALITY_LOW,
SUB_SURFACE_SCATTERING_QUALITY_MEDIUM,
SUB_SURFACE_SCATTERING_QUALITY_HIGH,
};
/* CAMERA ATTRIBUTES API */
enum DOFBlurQuality {
DOF_BLUR_QUALITY_VERY_LOW,
DOF_BLUR_QUALITY_LOW,
DOF_BLUR_QUALITY_MEDIUM,
DOF_BLUR_QUALITY_HIGH,
};
enum DOFBokehShape {
DOF_BOKEH_BOX,
DOF_BOKEH_HEXAGON,
DOF_BOKEH_CIRCLE,
};
/* INSTANCING API */
enum InstanceType {
INSTANCE_NONE,
INSTANCE_MESH,
INSTANCE_MULTIMESH,
INSTANCE_PARTICLES,
INSTANCE_PARTICLES_COLLISION,
INSTANCE_LIGHT,
INSTANCE_REFLECTION_PROBE,
INSTANCE_DECAL,
INSTANCE_VOXEL_GI,
INSTANCE_LIGHTMAP,
INSTANCE_OCCLUDER,
INSTANCE_VISIBLITY_NOTIFIER, // TODO: Fix typo in "VISIBILITY" (in 5.0).
INSTANCE_FOG_VOLUME,
INSTANCE_MAX,
INSTANCE_GEOMETRY_MASK = (1 << INSTANCE_MESH) | (1 << INSTANCE_MULTIMESH) | (1 << INSTANCE_PARTICLES)
};
enum InstanceFlags {
INSTANCE_FLAG_USE_BAKED_LIGHT,
INSTANCE_FLAG_USE_DYNAMIC_GI,
INSTANCE_FLAG_DRAW_NEXT_FRAME_IF_VISIBLE,
INSTANCE_FLAG_IGNORE_OCCLUSION_CULLING,
INSTANCE_FLAG_MAX,
};
enum ShadowCastingSetting {
SHADOW_CASTING_SETTING_OFF,
SHADOW_CASTING_SETTING_ON,
SHADOW_CASTING_SETTING_DOUBLE_SIDED,
SHADOW_CASTING_SETTING_SHADOWS_ONLY,
};
enum VisibilityRangeFadeMode {
VISIBILITY_RANGE_FADE_DISABLED,
VISIBILITY_RANGE_FADE_SELF,
VISIBILITY_RANGE_FADE_DEPENDENCIES,
};
/* BAKE API */
enum BakeChannels {
BAKE_CHANNEL_ALBEDO_ALPHA,
BAKE_CHANNEL_NORMAL,
BAKE_CHANNEL_ORM,
BAKE_CHANNEL_EMISSION,
};
/* CANVAS TEXTURE API */
enum CanvasTextureChannel {
CANVAS_TEXTURE_CHANNEL_DIFFUSE,
CANVAS_TEXTURE_CHANNEL_NORMAL,
CANVAS_TEXTURE_CHANNEL_SPECULAR,
};
/* CANVAS ITEM API */
enum NinePatchAxisMode {
NINE_PATCH_STRETCH,
NINE_PATCH_TILE,
NINE_PATCH_TILE_FIT,
};
enum CanvasGroupMode {
CANVAS_GROUP_MODE_DISABLED,
CANVAS_GROUP_MODE_CLIP_ONLY,
CANVAS_GROUP_MODE_CLIP_AND_DRAW,
CANVAS_GROUP_MODE_TRANSPARENT,
};
/* CANVAS LIGHT API */
enum CanvasLightMode {
CANVAS_LIGHT_MODE_POINT,
CANVAS_LIGHT_MODE_DIRECTIONAL,
};
enum CanvasLightBlendMode {
CANVAS_LIGHT_BLEND_MODE_ADD,
CANVAS_LIGHT_BLEND_MODE_SUB,
CANVAS_LIGHT_BLEND_MODE_MIX,
};
enum CanvasLightShadowFilter {
CANVAS_LIGHT_FILTER_NONE,
CANVAS_LIGHT_FILTER_PCF5,
CANVAS_LIGHT_FILTER_PCF13,
CANVAS_LIGHT_FILTER_MAX,
};
/* CANVAS OCCLUDER POLYGON API */
enum CanvasOccluderPolygonCullMode {
CANVAS_OCCLUDER_POLYGON_CULL_DISABLED,
CANVAS_OCCLUDER_POLYGON_CULL_CLOCKWISE,
CANVAS_OCCLUDER_POLYGON_CULL_COUNTER_CLOCKWISE,
};
/* GLOBAL SHADER PARAMETERS API */
enum GlobalShaderParameterType {
GLOBAL_VAR_TYPE_BOOL,
GLOBAL_VAR_TYPE_BVEC2,
GLOBAL_VAR_TYPE_BVEC3,
GLOBAL_VAR_TYPE_BVEC4,
GLOBAL_VAR_TYPE_INT,
GLOBAL_VAR_TYPE_IVEC2,
GLOBAL_VAR_TYPE_IVEC3,
GLOBAL_VAR_TYPE_IVEC4,
GLOBAL_VAR_TYPE_RECT2I,
GLOBAL_VAR_TYPE_UINT,
GLOBAL_VAR_TYPE_UVEC2,
GLOBAL_VAR_TYPE_UVEC3,
GLOBAL_VAR_TYPE_UVEC4,
GLOBAL_VAR_TYPE_FLOAT,
GLOBAL_VAR_TYPE_VEC2,
GLOBAL_VAR_TYPE_VEC3,
GLOBAL_VAR_TYPE_VEC4,
GLOBAL_VAR_TYPE_COLOR,
GLOBAL_VAR_TYPE_RECT2,
GLOBAL_VAR_TYPE_MAT2,
GLOBAL_VAR_TYPE_MAT3,
GLOBAL_VAR_TYPE_MAT4,
GLOBAL_VAR_TYPE_TRANSFORM_2D,
GLOBAL_VAR_TYPE_TRANSFORM,
GLOBAL_VAR_TYPE_SAMPLER2D,
GLOBAL_VAR_TYPE_SAMPLER2DARRAY,
GLOBAL_VAR_TYPE_SAMPLER3D,
GLOBAL_VAR_TYPE_SAMPLERCUBE,
GLOBAL_VAR_TYPE_SAMPLEREXT,
GLOBAL_VAR_TYPE_MAX,
};
/* STATUS INFORMATION */
enum RenderingInfo {
RENDERING_INFO_TOTAL_OBJECTS_IN_FRAME,
RENDERING_INFO_TOTAL_PRIMITIVES_IN_FRAME,
RENDERING_INFO_TOTAL_DRAW_CALLS_IN_FRAME,
RENDERING_INFO_TEXTURE_MEM_USED,
RENDERING_INFO_BUFFER_MEM_USED,
RENDERING_INFO_VIDEO_MEM_USED,
RENDERING_INFO_PIPELINE_COMPILATIONS_CANVAS,
RENDERING_INFO_PIPELINE_COMPILATIONS_MESH,
RENDERING_INFO_PIPELINE_COMPILATIONS_SURFACE,
RENDERING_INFO_PIPELINE_COMPILATIONS_DRAW,
RENDERING_INFO_PIPELINE_COMPILATIONS_SPECIALIZATION,
RENDERING_INFO_MAX,
};
/* BACKGROUND */
// If this is modified, review the conversion code in `project_settings.cpp`
// which is hardcoded to avoid coupling `core` with `servers`.
enum SplashStretchMode {
SPLASH_STRETCH_MODE_DISABLED,
SPLASH_STRETCH_MODE_KEEP,
SPLASH_STRETCH_MODE_KEEP_WIDTH,
SPLASH_STRETCH_MODE_KEEP_HEIGHT,
SPLASH_STRETCH_MODE_COVER,
SPLASH_STRETCH_MODE_IGNORE,
};
/* MISC */
#ifndef DISABLE_DEPRECATED
// Never actually used, should be removed when we can break compatibility.
enum Features {
FEATURE_SHADERS,
FEATURE_MULTITHREADED,
};
#endif
} // namespace RenderingServerEnums
// Alias to make it easier to use.
#define RSE RenderingServerEnums