/**************************************************************************/ /* 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 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