Path: blob/master/servers/rendering/rendering_server_enums.h
45987 views
/**************************************************************************/1/* rendering_server_enums.h */2/**************************************************************************/3/* This file is part of: */4/* GODOT ENGINE */5/* https://godotengine.org */6/**************************************************************************/7/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */8/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */9/* */10/* Permission is hereby granted, free of charge, to any person obtaining */11/* a copy of this software and associated documentation files (the */12/* "Software"), to deal in the Software without restriction, including */13/* without limitation the rights to use, copy, modify, merge, publish, */14/* distribute, sublicense, and/or sell copies of the Software, and to */15/* permit persons to whom the Software is furnished to do so, subject to */16/* the following conditions: */17/* */18/* The above copyright notice and this permission notice shall be */19/* included in all copies or substantial portions of the Software. */20/* */21/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */22/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */23/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */24/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */25/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */26/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */27/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */28/**************************************************************************/2930#pragma once3132#include <cstdint>3334namespace RenderingServerEnums {3536enum {37NO_INDEX_ARRAY = -1,38ARRAY_WEIGHTS_SIZE = 4,39CANVAS_ITEM_Z_MIN = -4096,40CANVAS_ITEM_Z_MAX = 4096,41CANVAS_LAYER_MIN = -2147483648,42CANVAS_LAYER_MAX = 2147483647,43MAX_GLOW_LEVELS = 7,44MAX_CURSORS = 8,45MAX_2D_DIRECTIONAL_LIGHTS = 8,46MAX_MESH_SURFACES = 256,47};4849/* TEXTURE API */5051enum TextureType {52TEXTURE_TYPE_2D,53TEXTURE_TYPE_LAYERED,54TEXTURE_TYPE_3D,55};5657enum TextureLayeredType {58TEXTURE_LAYERED_2D_ARRAY,59TEXTURE_LAYERED_CUBEMAP,60TEXTURE_LAYERED_CUBEMAP_ARRAY,61};6263enum CubeMapLayer {64CUBEMAP_LAYER_LEFT,65CUBEMAP_LAYER_RIGHT,66CUBEMAP_LAYER_BOTTOM,67CUBEMAP_LAYER_TOP,68CUBEMAP_LAYER_FRONT,69CUBEMAP_LAYER_BACK,70};7172enum TextureDrawableFormat {73TEXTURE_DRAWABLE_FORMAT_RGBA8,74TEXTURE_DRAWABLE_FORMAT_RGBA8_SRGB, // Use this if you want to read the result from both 2D (non-hdr) and 3D.75TEXTURE_DRAWABLE_FORMAT_RGBAH,76TEXTURE_DRAWABLE_FORMAT_RGBAF,77};7879enum TextureDetectRoughnessChannel {80TEXTURE_DETECT_ROUGHNESS_R,81TEXTURE_DETECT_ROUGHNESS_G,82TEXTURE_DETECT_ROUGHNESS_B,83TEXTURE_DETECT_ROUGHNESS_A,84TEXTURE_DETECT_ROUGHNESS_GRAY,85};8687/* PIPELINES API */8889enum PipelineSource {90PIPELINE_SOURCE_CANVAS,91PIPELINE_SOURCE_MESH,92PIPELINE_SOURCE_SURFACE,93PIPELINE_SOURCE_DRAW,94PIPELINE_SOURCE_SPECIALIZATION,95PIPELINE_SOURCE_MAX,96};9798/* SHADER API */99100enum ShaderMode {101SHADER_SPATIAL,102SHADER_CANVAS_ITEM,103SHADER_PARTICLES,104SHADER_SKY,105SHADER_FOG,106SHADER_TEXTURE_BLIT,107SHADER_MAX,108};109110enum CullMode {111CULL_MODE_DISABLED,112CULL_MODE_FRONT,113CULL_MODE_BACK,114};115116/* COMMON MATERIAL API */117118enum {119MATERIAL_RENDER_PRIORITY_MIN = -128,120MATERIAL_RENDER_PRIORITY_MAX = 127,121};122123/* MESH API */124125enum ArrayType {126ARRAY_VERTEX = 0, // RG32F (2D), RGB32F, RGBA16 (compressed)127ARRAY_NORMAL = 1, // RG16128ARRAY_TANGENT = 2, // BA16 (with normal) or A16 (with vertex, when compressed)129ARRAY_COLOR = 3, // RGBA8130ARRAY_TEX_UV = 4, // RG32F or RG16131ARRAY_TEX_UV2 = 5, // RG32F or RG16132ARRAY_CUSTOM0 = 6, // Depends on ArrayCustomFormat.133ARRAY_CUSTOM1 = 7,134ARRAY_CUSTOM2 = 8,135ARRAY_CUSTOM3 = 9,136ARRAY_BONES = 10, // RGBA16UI (x2 if 8 weights)137ARRAY_WEIGHTS = 11, // RGBA16UNORM (x2 if 8 weights)138ARRAY_INDEX = 12, // 16 or 32 bits depending on length > 0xFFFF.139ARRAY_MAX = 13,140};141142enum {143ARRAY_CUSTOM_COUNT = ARRAY_BONES - ARRAY_CUSTOM0144};145146enum ArrayCustomFormat {147ARRAY_CUSTOM_RGBA8_UNORM,148ARRAY_CUSTOM_RGBA8_SNORM,149ARRAY_CUSTOM_RG_HALF,150ARRAY_CUSTOM_RGBA_HALF,151ARRAY_CUSTOM_R_FLOAT,152ARRAY_CUSTOM_RG_FLOAT,153ARRAY_CUSTOM_RGB_FLOAT,154ARRAY_CUSTOM_RGBA_FLOAT,155ARRAY_CUSTOM_MAX,156};157158enum ArrayFormat : uint64_t {159/* ARRAY FORMAT FLAGS */160ARRAY_FORMAT_VERTEX = 1 << ARRAY_VERTEX,161ARRAY_FORMAT_NORMAL = 1 << ARRAY_NORMAL,162ARRAY_FORMAT_TANGENT = 1 << ARRAY_TANGENT,163ARRAY_FORMAT_COLOR = 1 << ARRAY_COLOR,164ARRAY_FORMAT_TEX_UV = 1 << ARRAY_TEX_UV,165ARRAY_FORMAT_TEX_UV2 = 1 << ARRAY_TEX_UV2,166ARRAY_FORMAT_CUSTOM0 = 1 << ARRAY_CUSTOM0,167ARRAY_FORMAT_CUSTOM1 = 1 << ARRAY_CUSTOM1,168ARRAY_FORMAT_CUSTOM2 = 1 << ARRAY_CUSTOM2,169ARRAY_FORMAT_CUSTOM3 = 1 << ARRAY_CUSTOM3,170ARRAY_FORMAT_BONES = 1 << ARRAY_BONES,171ARRAY_FORMAT_WEIGHTS = 1 << ARRAY_WEIGHTS,172ARRAY_FORMAT_INDEX = 1 << ARRAY_INDEX,173174ARRAY_FORMAT_BLEND_SHAPE_MASK = ARRAY_FORMAT_VERTEX | ARRAY_FORMAT_NORMAL | ARRAY_FORMAT_TANGENT,175176ARRAY_FORMAT_CUSTOM_BASE = (ARRAY_INDEX + 1),177ARRAY_FORMAT_CUSTOM_BITS = 3,178ARRAY_FORMAT_CUSTOM_MASK = 0x7,179ARRAY_FORMAT_CUSTOM0_SHIFT = (ARRAY_FORMAT_CUSTOM_BASE + 0),180ARRAY_FORMAT_CUSTOM1_SHIFT = (ARRAY_FORMAT_CUSTOM_BASE + ARRAY_FORMAT_CUSTOM_BITS),181ARRAY_FORMAT_CUSTOM2_SHIFT = (ARRAY_FORMAT_CUSTOM_BASE + ARRAY_FORMAT_CUSTOM_BITS * 2),182ARRAY_FORMAT_CUSTOM3_SHIFT = (ARRAY_FORMAT_CUSTOM_BASE + ARRAY_FORMAT_CUSTOM_BITS * 3),183184ARRAY_COMPRESS_FLAGS_BASE = (ARRAY_INDEX + 1 + 12),185186ARRAY_FLAG_USE_2D_VERTICES = 1 << (ARRAY_COMPRESS_FLAGS_BASE + 0),187ARRAY_FLAG_USE_DYNAMIC_UPDATE = 1 << (ARRAY_COMPRESS_FLAGS_BASE + 1),188ARRAY_FLAG_USE_8_BONE_WEIGHTS = 1 << (ARRAY_COMPRESS_FLAGS_BASE + 2),189190ARRAY_FLAG_USES_EMPTY_VERTEX_ARRAY = 1 << (ARRAY_COMPRESS_FLAGS_BASE + 3),191192ARRAY_FLAG_COMPRESS_ATTRIBUTES = 1 << (ARRAY_COMPRESS_FLAGS_BASE + 4),193// We leave enough room for up to 5 more compression flags.194195ARRAY_FLAG_FORMAT_VERSION_BASE = ARRAY_COMPRESS_FLAGS_BASE + 10,196ARRAY_FLAG_FORMAT_VERSION_SHIFT = ARRAY_FLAG_FORMAT_VERSION_BASE,197// When changes are made to the mesh format, add a new version and use it for the CURRENT_VERSION.198ARRAY_FLAG_FORMAT_VERSION_1 = 0,199ARRAY_FLAG_FORMAT_VERSION_2 = 1ULL << ARRAY_FLAG_FORMAT_VERSION_SHIFT,200ARRAY_FLAG_FORMAT_CURRENT_VERSION = ARRAY_FLAG_FORMAT_VERSION_2,201ARRAY_FLAG_FORMAT_VERSION_MASK = 0xFF, // 8 bits version202};203204static_assert(sizeof(ArrayFormat) == 8, "ArrayFormat should be 64 bits long.");205206enum PrimitiveType {207PRIMITIVE_POINTS,208PRIMITIVE_LINES,209PRIMITIVE_LINE_STRIP,210PRIMITIVE_TRIANGLES,211PRIMITIVE_TRIANGLE_STRIP,212PRIMITIVE_MAX,213};214215enum BlendShapeMode {216BLEND_SHAPE_MODE_NORMALIZED,217BLEND_SHAPE_MODE_RELATIVE,218};219220/* MULTIMESH API */221222enum MultimeshTransformFormat {223MULTIMESH_TRANSFORM_2D,224MULTIMESH_TRANSFORM_3D,225};226227enum MultimeshPhysicsInterpolationQuality {228MULTIMESH_INTERP_QUALITY_FAST,229MULTIMESH_INTERP_QUALITY_HIGH,230};231232/* LIGHT API */233234enum LightType {235LIGHT_DIRECTIONAL,236LIGHT_OMNI,237LIGHT_SPOT,238};239240enum LightParam {241LIGHT_PARAM_ENERGY,242LIGHT_PARAM_INDIRECT_ENERGY,243LIGHT_PARAM_VOLUMETRIC_FOG_ENERGY,244LIGHT_PARAM_SPECULAR,245LIGHT_PARAM_RANGE,246LIGHT_PARAM_SIZE,247LIGHT_PARAM_ATTENUATION,248LIGHT_PARAM_SPOT_ANGLE,249LIGHT_PARAM_SPOT_ATTENUATION,250LIGHT_PARAM_SHADOW_MAX_DISTANCE,251LIGHT_PARAM_SHADOW_SPLIT_1_OFFSET,252LIGHT_PARAM_SHADOW_SPLIT_2_OFFSET,253LIGHT_PARAM_SHADOW_SPLIT_3_OFFSET,254LIGHT_PARAM_SHADOW_FADE_START,255LIGHT_PARAM_SHADOW_NORMAL_BIAS,256LIGHT_PARAM_SHADOW_BIAS,257LIGHT_PARAM_SHADOW_PANCAKE_SIZE,258LIGHT_PARAM_SHADOW_OPACITY,259LIGHT_PARAM_SHADOW_BLUR,260LIGHT_PARAM_TRANSMITTANCE_BIAS,261LIGHT_PARAM_INTENSITY,262LIGHT_PARAM_MAX,263};264265enum LightBakeMode {266LIGHT_BAKE_DISABLED,267LIGHT_BAKE_STATIC,268LIGHT_BAKE_DYNAMIC,269};270271enum LightOmniShadowMode {272LIGHT_OMNI_SHADOW_DUAL_PARABOLOID,273LIGHT_OMNI_SHADOW_CUBE,274};275276enum LightDirectionalShadowMode {277LIGHT_DIRECTIONAL_SHADOW_ORTHOGONAL,278LIGHT_DIRECTIONAL_SHADOW_PARALLEL_2_SPLITS,279LIGHT_DIRECTIONAL_SHADOW_PARALLEL_4_SPLITS,280};281282enum LightDirectionalSkyMode {283LIGHT_DIRECTIONAL_SKY_MODE_LIGHT_AND_SKY,284LIGHT_DIRECTIONAL_SKY_MODE_LIGHT_ONLY,285LIGHT_DIRECTIONAL_SKY_MODE_SKY_ONLY,286};287288enum ShadowQuality {289SHADOW_QUALITY_HARD,290SHADOW_QUALITY_SOFT_VERY_LOW,291SHADOW_QUALITY_SOFT_LOW,292SHADOW_QUALITY_SOFT_MEDIUM,293SHADOW_QUALITY_SOFT_HIGH,294SHADOW_QUALITY_SOFT_ULTRA,295SHADOW_QUALITY_MAX,296};297298enum LightProjectorFilter {299LIGHT_PROJECTOR_FILTER_NEAREST,300LIGHT_PROJECTOR_FILTER_LINEAR,301LIGHT_PROJECTOR_FILTER_NEAREST_MIPMAPS,302LIGHT_PROJECTOR_FILTER_LINEAR_MIPMAPS,303LIGHT_PROJECTOR_FILTER_NEAREST_MIPMAPS_ANISOTROPIC,304LIGHT_PROJECTOR_FILTER_LINEAR_MIPMAPS_ANISOTROPIC,305};306307/* REFLECTION PROBE API */308309enum ReflectionProbeUpdateMode {310REFLECTION_PROBE_UPDATE_ONCE,311REFLECTION_PROBE_UPDATE_ALWAYS,312};313314enum ReflectionProbeAmbientMode {315REFLECTION_PROBE_AMBIENT_DISABLED,316REFLECTION_PROBE_AMBIENT_ENVIRONMENT,317REFLECTION_PROBE_AMBIENT_COLOR,318};319320/* DECAL API */321322enum DecalTexture {323DECAL_TEXTURE_ALBEDO,324DECAL_TEXTURE_NORMAL,325DECAL_TEXTURE_ORM,326DECAL_TEXTURE_EMISSION,327DECAL_TEXTURE_MAX,328};329330enum DecalFilter {331DECAL_FILTER_NEAREST,332DECAL_FILTER_LINEAR,333DECAL_FILTER_NEAREST_MIPMAPS,334DECAL_FILTER_LINEAR_MIPMAPS,335DECAL_FILTER_NEAREST_MIPMAPS_ANISOTROPIC,336DECAL_FILTER_LINEAR_MIPMAPS_ANISOTROPIC,337};338339/* VOXEL GI API */340341enum VoxelGIQuality {342VOXEL_GI_QUALITY_LOW,343VOXEL_GI_QUALITY_HIGH,344};345346/* LIGHTMAP API */347348enum ShadowmaskMode {349SHADOWMASK_MODE_NONE,350SHADOWMASK_MODE_REPLACE,351SHADOWMASK_MODE_OVERLAY,352SHADOWMASK_MODE_ONLY,353};354355/* PARTICLES API */356357enum ParticlesMode {358PARTICLES_MODE_2D,359PARTICLES_MODE_3D,360};361362enum ParticlesTransformAlign {363PARTICLES_TRANSFORM_ALIGN_DISABLED,364PARTICLES_TRANSFORM_ALIGN_Z_BILLBOARD,365PARTICLES_TRANSFORM_ALIGN_Y_TO_VELOCITY,366PARTICLES_TRANSFORM_ALIGN_Z_BILLBOARD_Y_TO_VELOCITY,367PARTICLES_TRANSFORM_ALIGN_LOCAL_BILLBOARD,368};369370enum ParticlesEmitFlags {371PARTICLES_EMIT_FLAG_POSITION = 1,372PARTICLES_EMIT_FLAG_ROTATION_SCALE = 2,373PARTICLES_EMIT_FLAG_VELOCITY = 4,374PARTICLES_EMIT_FLAG_COLOR = 8,375PARTICLES_EMIT_FLAG_CUSTOM = 16,376};377378enum ParticlesDrawOrder {379PARTICLES_DRAW_ORDER_INDEX,380PARTICLES_DRAW_ORDER_LIFETIME,381PARTICLES_DRAW_ORDER_REVERSE_LIFETIME,382PARTICLES_DRAW_ORDER_VIEW_DEPTH,383};384385enum ParticlesTransformAlignCustomSrc {386PARTICLES_ALIGN_CHANNEL_FILTER_DISABLED,387PARTICLES_ALIGN_CHANNEL_FILTER_X,388PARTICLES_ALIGN_CHANNEL_FILTER_Y,389PARTICLES_ALIGN_CHANNEL_FILTER_Z,390PARTICLES_ALIGN_CHANNEL_FILTER_W,391PARTICLES_ALIGN_CHANNEL_FILTER_MAX,392};393394enum ParticlesTransformAlignAxis {395PARTICLES_ALIGN_AXIS_X,396PARTICLES_ALIGN_AXIS_Y,397PARTICLES_ALIGN_AXIS_MAX,398};399400/* PARTICLES COLLISION API */401402enum ParticlesCollisionType {403PARTICLES_COLLISION_TYPE_SPHERE_ATTRACT,404PARTICLES_COLLISION_TYPE_BOX_ATTRACT,405PARTICLES_COLLISION_TYPE_VECTOR_FIELD_ATTRACT,406PARTICLES_COLLISION_TYPE_SPHERE_COLLIDE,407PARTICLES_COLLISION_TYPE_BOX_COLLIDE,408PARTICLES_COLLISION_TYPE_SDF_COLLIDE,409PARTICLES_COLLISION_TYPE_HEIGHTFIELD_COLLIDE,410};411412enum ParticlesCollisionHeightfieldResolution { // Longest axis resolution.413PARTICLES_COLLISION_HEIGHTFIELD_RESOLUTION_256,414PARTICLES_COLLISION_HEIGHTFIELD_RESOLUTION_512,415PARTICLES_COLLISION_HEIGHTFIELD_RESOLUTION_1024,416PARTICLES_COLLISION_HEIGHTFIELD_RESOLUTION_2048,417PARTICLES_COLLISION_HEIGHTFIELD_RESOLUTION_4096,418PARTICLES_COLLISION_HEIGHTFIELD_RESOLUTION_8192,419PARTICLES_COLLISION_HEIGHTFIELD_RESOLUTION_MAX,420};421422/* FOG VOLUME API */423424enum FogVolumeShape {425FOG_VOLUME_SHAPE_ELLIPSOID,426FOG_VOLUME_SHAPE_CONE,427FOG_VOLUME_SHAPE_CYLINDER,428FOG_VOLUME_SHAPE_BOX,429FOG_VOLUME_SHAPE_WORLD,430FOG_VOLUME_SHAPE_MAX,431};432433/* VIEWPORT API */434435enum CanvasItemTextureFilter {436CANVAS_ITEM_TEXTURE_FILTER_DEFAULT, // Uses canvas item setting for draw command, uses global setting for canvas item.437CANVAS_ITEM_TEXTURE_FILTER_NEAREST,438CANVAS_ITEM_TEXTURE_FILTER_LINEAR,439CANVAS_ITEM_TEXTURE_FILTER_NEAREST_WITH_MIPMAPS,440CANVAS_ITEM_TEXTURE_FILTER_LINEAR_WITH_MIPMAPS,441CANVAS_ITEM_TEXTURE_FILTER_NEAREST_WITH_MIPMAPS_ANISOTROPIC,442CANVAS_ITEM_TEXTURE_FILTER_LINEAR_WITH_MIPMAPS_ANISOTROPIC,443CANVAS_ITEM_TEXTURE_FILTER_MAX,444};445446enum CanvasItemTextureRepeat {447CANVAS_ITEM_TEXTURE_REPEAT_DEFAULT, // Uses canvas item setting for draw command, uses global setting for canvas item.448CANVAS_ITEM_TEXTURE_REPEAT_DISABLED,449CANVAS_ITEM_TEXTURE_REPEAT_ENABLED,450CANVAS_ITEM_TEXTURE_REPEAT_MIRROR,451CANVAS_ITEM_TEXTURE_REPEAT_MAX,452};453454enum ViewportScaling3DMode {455VIEWPORT_SCALING_3D_MODE_BILINEAR,456VIEWPORT_SCALING_3D_MODE_FSR,457VIEWPORT_SCALING_3D_MODE_FSR2,458VIEWPORT_SCALING_3D_MODE_METALFX_SPATIAL,459VIEWPORT_SCALING_3D_MODE_METALFX_TEMPORAL,460VIEWPORT_SCALING_3D_MODE_NEAREST,461VIEWPORT_SCALING_3D_MODE_MAX,462VIEWPORT_SCALING_3D_MODE_OFF = 255, // for internal use only463};464465enum ViewportScaling3DType {466VIEWPORT_SCALING_3D_TYPE_NONE,467VIEWPORT_SCALING_3D_TYPE_TEMPORAL,468VIEWPORT_SCALING_3D_TYPE_SPATIAL,469VIEWPORT_SCALING_3D_TYPE_MAX,470};471472inline ViewportScaling3DType scaling_3d_mode_type(ViewportScaling3DMode p_mode) {473if (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) {474return VIEWPORT_SCALING_3D_TYPE_SPATIAL;475} else if (p_mode == VIEWPORT_SCALING_3D_MODE_FSR2 || p_mode == VIEWPORT_SCALING_3D_MODE_METALFX_TEMPORAL) {476return VIEWPORT_SCALING_3D_TYPE_TEMPORAL;477}478return VIEWPORT_SCALING_3D_TYPE_NONE;479}480481enum ViewportAnisotropicFiltering {482VIEWPORT_ANISOTROPY_DISABLED,483VIEWPORT_ANISOTROPY_2X,484VIEWPORT_ANISOTROPY_4X,485VIEWPORT_ANISOTROPY_8X,486VIEWPORT_ANISOTROPY_16X,487VIEWPORT_ANISOTROPY_MAX,488};489490enum ViewportUpdateMode {491VIEWPORT_UPDATE_DISABLED,492VIEWPORT_UPDATE_ONCE, // Then goes to disabled, must be manually updated.493VIEWPORT_UPDATE_WHEN_VISIBLE, // Default494VIEWPORT_UPDATE_WHEN_PARENT_VISIBLE,495VIEWPORT_UPDATE_ALWAYS,496};497498enum ViewportClearMode {499VIEWPORT_CLEAR_ALWAYS,500VIEWPORT_CLEAR_NEVER,501VIEWPORT_CLEAR_ONLY_NEXT_FRAME,502};503504enum ViewportEnvironmentMode {505VIEWPORT_ENVIRONMENT_DISABLED,506VIEWPORT_ENVIRONMENT_ENABLED,507VIEWPORT_ENVIRONMENT_INHERIT,508VIEWPORT_ENVIRONMENT_MAX,509};510511enum ViewportSDFOversize {512VIEWPORT_SDF_OVERSIZE_100_PERCENT,513VIEWPORT_SDF_OVERSIZE_120_PERCENT,514VIEWPORT_SDF_OVERSIZE_150_PERCENT,515VIEWPORT_SDF_OVERSIZE_200_PERCENT,516VIEWPORT_SDF_OVERSIZE_MAX,517};518519enum ViewportSDFScale {520VIEWPORT_SDF_SCALE_100_PERCENT,521VIEWPORT_SDF_SCALE_50_PERCENT,522VIEWPORT_SDF_SCALE_25_PERCENT,523VIEWPORT_SDF_SCALE_MAX,524};525526enum ViewportMSAA {527VIEWPORT_MSAA_DISABLED,528VIEWPORT_MSAA_2X,529VIEWPORT_MSAA_4X,530VIEWPORT_MSAA_8X,531VIEWPORT_MSAA_MAX,532};533534enum ViewportScreenSpaceAA {535VIEWPORT_SCREEN_SPACE_AA_DISABLED,536VIEWPORT_SCREEN_SPACE_AA_FXAA,537VIEWPORT_SCREEN_SPACE_AA_SMAA,538VIEWPORT_SCREEN_SPACE_AA_MAX,539};540541enum ViewportOcclusionCullingBuildQuality {542VIEWPORT_OCCLUSION_BUILD_QUALITY_LOW = 0,543VIEWPORT_OCCLUSION_BUILD_QUALITY_MEDIUM = 1,544VIEWPORT_OCCLUSION_BUILD_QUALITY_HIGH = 2,545};546547enum ViewportRenderInfo {548VIEWPORT_RENDER_INFO_OBJECTS_IN_FRAME,549VIEWPORT_RENDER_INFO_PRIMITIVES_IN_FRAME,550VIEWPORT_RENDER_INFO_DRAW_CALLS_IN_FRAME,551VIEWPORT_RENDER_INFO_MAX,552};553554enum ViewportRenderInfoType {555VIEWPORT_RENDER_INFO_TYPE_VISIBLE,556VIEWPORT_RENDER_INFO_TYPE_SHADOW,557VIEWPORT_RENDER_INFO_TYPE_CANVAS,558VIEWPORT_RENDER_INFO_TYPE_MAX,559};560561enum ViewportDebugDraw {562VIEWPORT_DEBUG_DRAW_DISABLED,563VIEWPORT_DEBUG_DRAW_UNSHADED,564VIEWPORT_DEBUG_DRAW_LIGHTING,565VIEWPORT_DEBUG_DRAW_OVERDRAW,566VIEWPORT_DEBUG_DRAW_WIREFRAME,567VIEWPORT_DEBUG_DRAW_NORMAL_BUFFER,568VIEWPORT_DEBUG_DRAW_VOXEL_GI_ALBEDO,569VIEWPORT_DEBUG_DRAW_VOXEL_GI_LIGHTING,570VIEWPORT_DEBUG_DRAW_VOXEL_GI_EMISSION,571VIEWPORT_DEBUG_DRAW_SHADOW_ATLAS,572VIEWPORT_DEBUG_DRAW_DIRECTIONAL_SHADOW_ATLAS,573VIEWPORT_DEBUG_DRAW_SCENE_LUMINANCE,574VIEWPORT_DEBUG_DRAW_SSAO,575VIEWPORT_DEBUG_DRAW_SSIL,576VIEWPORT_DEBUG_DRAW_PSSM_SPLITS,577VIEWPORT_DEBUG_DRAW_DECAL_ATLAS,578VIEWPORT_DEBUG_DRAW_SDFGI,579VIEWPORT_DEBUG_DRAW_SDFGI_PROBES,580VIEWPORT_DEBUG_DRAW_GI_BUFFER,581VIEWPORT_DEBUG_DRAW_DISABLE_LOD,582VIEWPORT_DEBUG_DRAW_CLUSTER_OMNI_LIGHTS,583VIEWPORT_DEBUG_DRAW_CLUSTER_SPOT_LIGHTS,584VIEWPORT_DEBUG_DRAW_CLUSTER_DECALS,585VIEWPORT_DEBUG_DRAW_CLUSTER_REFLECTION_PROBES,586VIEWPORT_DEBUG_DRAW_OCCLUDERS,587VIEWPORT_DEBUG_DRAW_MOTION_VECTORS,588VIEWPORT_DEBUG_DRAW_INTERNAL_BUFFER,589};590591enum ViewportVRSMode {592VIEWPORT_VRS_DISABLED,593VIEWPORT_VRS_TEXTURE,594VIEWPORT_VRS_XR,595VIEWPORT_VRS_MAX,596};597598enum ViewportVRSUpdateMode {599VIEWPORT_VRS_UPDATE_DISABLED,600VIEWPORT_VRS_UPDATE_ONCE,601VIEWPORT_VRS_UPDATE_ALWAYS,602VIEWPORT_VRS_UPDATE_MAX,603};604605/* SKY API */606607enum SkyMode {608SKY_MODE_AUTOMATIC,609SKY_MODE_QUALITY,610SKY_MODE_INCREMENTAL,611SKY_MODE_REALTIME,612};613614/* COMPOSITOR EFFECTS API */615616enum CompositorEffectFlags {617COMPOSITOR_EFFECT_FLAG_ACCESS_RESOLVED_COLOR = 1,618COMPOSITOR_EFFECT_FLAG_ACCESS_RESOLVED_DEPTH = 2,619COMPOSITOR_EFFECT_FLAG_NEEDS_MOTION_VECTORS = 4,620COMPOSITOR_EFFECT_FLAG_NEEDS_ROUGHNESS = 8,621COMPOSITOR_EFFECT_FLAG_NEEDS_SEPARATE_SPECULAR = 16,622};623624enum CompositorEffectCallbackType {625COMPOSITOR_EFFECT_CALLBACK_TYPE_PRE_OPAQUE,626COMPOSITOR_EFFECT_CALLBACK_TYPE_POST_OPAQUE,627COMPOSITOR_EFFECT_CALLBACK_TYPE_POST_SKY,628COMPOSITOR_EFFECT_CALLBACK_TYPE_PRE_TRANSPARENT,629COMPOSITOR_EFFECT_CALLBACK_TYPE_POST_TRANSPARENT,630COMPOSITOR_EFFECT_CALLBACK_TYPE_MAX,631COMPOSITOR_EFFECT_CALLBACK_TYPE_ANY = -1,632};633634/* ENVIRONMENT API */635636enum EnvironmentBG {637ENV_BG_CLEAR_COLOR,638ENV_BG_COLOR,639ENV_BG_SKY,640ENV_BG_CANVAS,641ENV_BG_KEEP,642ENV_BG_CAMERA_FEED,643ENV_BG_MAX,644};645646enum EnvironmentAmbientSource {647ENV_AMBIENT_SOURCE_BG,648ENV_AMBIENT_SOURCE_DISABLED,649ENV_AMBIENT_SOURCE_COLOR,650ENV_AMBIENT_SOURCE_SKY,651};652653enum EnvironmentReflectionSource {654ENV_REFLECTION_SOURCE_BG,655ENV_REFLECTION_SOURCE_DISABLED,656ENV_REFLECTION_SOURCE_SKY,657};658659enum EnvironmentGlowBlendMode {660ENV_GLOW_BLEND_MODE_ADDITIVE,661ENV_GLOW_BLEND_MODE_SCREEN,662ENV_GLOW_BLEND_MODE_SOFTLIGHT,663ENV_GLOW_BLEND_MODE_REPLACE,664ENV_GLOW_BLEND_MODE_MIX,665};666667enum EnvironmentToneMapper {668ENV_TONE_MAPPER_LINEAR,669ENV_TONE_MAPPER_REINHARD,670ENV_TONE_MAPPER_FILMIC,671ENV_TONE_MAPPER_ACES,672ENV_TONE_MAPPER_AGX,673};674675enum EnvironmentSSRRoughnessQuality {676ENV_SSR_ROUGHNESS_QUALITY_DISABLED,677ENV_SSR_ROUGHNESS_QUALITY_LOW,678ENV_SSR_ROUGHNESS_QUALITY_MEDIUM,679ENV_SSR_ROUGHNESS_QUALITY_HIGH,680};681682enum EnvironmentSSAOQuality {683ENV_SSAO_QUALITY_VERY_LOW,684ENV_SSAO_QUALITY_LOW,685ENV_SSAO_QUALITY_MEDIUM,686ENV_SSAO_QUALITY_HIGH,687ENV_SSAO_QUALITY_ULTRA,688};689690enum EnvironmentSSILQuality {691ENV_SSIL_QUALITY_VERY_LOW,692ENV_SSIL_QUALITY_LOW,693ENV_SSIL_QUALITY_MEDIUM,694ENV_SSIL_QUALITY_HIGH,695ENV_SSIL_QUALITY_ULTRA,696};697698enum EnvironmentSDFGIYScale {699ENV_SDFGI_Y_SCALE_50_PERCENT,700ENV_SDFGI_Y_SCALE_75_PERCENT,701ENV_SDFGI_Y_SCALE_100_PERCENT,702};703704enum EnvironmentSDFGIRayCount {705ENV_SDFGI_RAY_COUNT_4,706ENV_SDFGI_RAY_COUNT_8,707ENV_SDFGI_RAY_COUNT_16,708ENV_SDFGI_RAY_COUNT_32,709ENV_SDFGI_RAY_COUNT_64,710ENV_SDFGI_RAY_COUNT_96,711ENV_SDFGI_RAY_COUNT_128,712ENV_SDFGI_RAY_COUNT_MAX,713};714715enum EnvironmentSDFGIFramesToConverge {716ENV_SDFGI_CONVERGE_IN_5_FRAMES,717ENV_SDFGI_CONVERGE_IN_10_FRAMES,718ENV_SDFGI_CONVERGE_IN_15_FRAMES,719ENV_SDFGI_CONVERGE_IN_20_FRAMES,720ENV_SDFGI_CONVERGE_IN_25_FRAMES,721ENV_SDFGI_CONVERGE_IN_30_FRAMES,722ENV_SDFGI_CONVERGE_MAX723};724725enum EnvironmentSDFGIFramesToUpdateLight {726ENV_SDFGI_UPDATE_LIGHT_IN_1_FRAME,727ENV_SDFGI_UPDATE_LIGHT_IN_2_FRAMES,728ENV_SDFGI_UPDATE_LIGHT_IN_4_FRAMES,729ENV_SDFGI_UPDATE_LIGHT_IN_8_FRAMES,730ENV_SDFGI_UPDATE_LIGHT_IN_16_FRAMES,731ENV_SDFGI_UPDATE_LIGHT_MAX,732};733734enum EnvironmentFogMode {735ENV_FOG_MODE_EXPONENTIAL,736ENV_FOG_MODE_DEPTH,737};738739enum SubSurfaceScatteringQuality {740SUB_SURFACE_SCATTERING_QUALITY_DISABLED,741SUB_SURFACE_SCATTERING_QUALITY_LOW,742SUB_SURFACE_SCATTERING_QUALITY_MEDIUM,743SUB_SURFACE_SCATTERING_QUALITY_HIGH,744};745746/* CAMERA ATTRIBUTES API */747748enum DOFBlurQuality {749DOF_BLUR_QUALITY_VERY_LOW,750DOF_BLUR_QUALITY_LOW,751DOF_BLUR_QUALITY_MEDIUM,752DOF_BLUR_QUALITY_HIGH,753};754755enum DOFBokehShape {756DOF_BOKEH_BOX,757DOF_BOKEH_HEXAGON,758DOF_BOKEH_CIRCLE,759};760761/* INSTANCING API */762763enum InstanceType {764INSTANCE_NONE,765INSTANCE_MESH,766INSTANCE_MULTIMESH,767INSTANCE_PARTICLES,768INSTANCE_PARTICLES_COLLISION,769INSTANCE_LIGHT,770INSTANCE_REFLECTION_PROBE,771INSTANCE_DECAL,772INSTANCE_VOXEL_GI,773INSTANCE_LIGHTMAP,774INSTANCE_OCCLUDER,775INSTANCE_VISIBLITY_NOTIFIER, // TODO: Fix typo in "VISIBILITY" (in 5.0).776INSTANCE_FOG_VOLUME,777INSTANCE_MAX,778779INSTANCE_GEOMETRY_MASK = (1 << INSTANCE_MESH) | (1 << INSTANCE_MULTIMESH) | (1 << INSTANCE_PARTICLES)780};781782enum InstanceFlags {783INSTANCE_FLAG_USE_BAKED_LIGHT,784INSTANCE_FLAG_USE_DYNAMIC_GI,785INSTANCE_FLAG_DRAW_NEXT_FRAME_IF_VISIBLE,786INSTANCE_FLAG_IGNORE_OCCLUSION_CULLING,787INSTANCE_FLAG_MAX,788};789790enum ShadowCastingSetting {791SHADOW_CASTING_SETTING_OFF,792SHADOW_CASTING_SETTING_ON,793SHADOW_CASTING_SETTING_DOUBLE_SIDED,794SHADOW_CASTING_SETTING_SHADOWS_ONLY,795};796797enum VisibilityRangeFadeMode {798VISIBILITY_RANGE_FADE_DISABLED,799VISIBILITY_RANGE_FADE_SELF,800VISIBILITY_RANGE_FADE_DEPENDENCIES,801};802803/* BAKE API */804805enum BakeChannels {806BAKE_CHANNEL_ALBEDO_ALPHA,807BAKE_CHANNEL_NORMAL,808BAKE_CHANNEL_ORM,809BAKE_CHANNEL_EMISSION,810};811812/* CANVAS TEXTURE API */813814enum CanvasTextureChannel {815CANVAS_TEXTURE_CHANNEL_DIFFUSE,816CANVAS_TEXTURE_CHANNEL_NORMAL,817CANVAS_TEXTURE_CHANNEL_SPECULAR,818};819820/* CANVAS ITEM API */821822enum NinePatchAxisMode {823NINE_PATCH_STRETCH,824NINE_PATCH_TILE,825NINE_PATCH_TILE_FIT,826};827828enum CanvasGroupMode {829CANVAS_GROUP_MODE_DISABLED,830CANVAS_GROUP_MODE_CLIP_ONLY,831CANVAS_GROUP_MODE_CLIP_AND_DRAW,832CANVAS_GROUP_MODE_TRANSPARENT,833};834835/* CANVAS LIGHT API */836837enum CanvasLightMode {838CANVAS_LIGHT_MODE_POINT,839CANVAS_LIGHT_MODE_DIRECTIONAL,840};841842enum CanvasLightBlendMode {843CANVAS_LIGHT_BLEND_MODE_ADD,844CANVAS_LIGHT_BLEND_MODE_SUB,845CANVAS_LIGHT_BLEND_MODE_MIX,846};847848enum CanvasLightShadowFilter {849CANVAS_LIGHT_FILTER_NONE,850CANVAS_LIGHT_FILTER_PCF5,851CANVAS_LIGHT_FILTER_PCF13,852CANVAS_LIGHT_FILTER_MAX,853};854855/* CANVAS OCCLUDER POLYGON API */856857enum CanvasOccluderPolygonCullMode {858CANVAS_OCCLUDER_POLYGON_CULL_DISABLED,859CANVAS_OCCLUDER_POLYGON_CULL_CLOCKWISE,860CANVAS_OCCLUDER_POLYGON_CULL_COUNTER_CLOCKWISE,861};862863/* GLOBAL SHADER PARAMETERS API */864865enum GlobalShaderParameterType {866GLOBAL_VAR_TYPE_BOOL,867GLOBAL_VAR_TYPE_BVEC2,868GLOBAL_VAR_TYPE_BVEC3,869GLOBAL_VAR_TYPE_BVEC4,870GLOBAL_VAR_TYPE_INT,871GLOBAL_VAR_TYPE_IVEC2,872GLOBAL_VAR_TYPE_IVEC3,873GLOBAL_VAR_TYPE_IVEC4,874GLOBAL_VAR_TYPE_RECT2I,875GLOBAL_VAR_TYPE_UINT,876GLOBAL_VAR_TYPE_UVEC2,877GLOBAL_VAR_TYPE_UVEC3,878GLOBAL_VAR_TYPE_UVEC4,879GLOBAL_VAR_TYPE_FLOAT,880GLOBAL_VAR_TYPE_VEC2,881GLOBAL_VAR_TYPE_VEC3,882GLOBAL_VAR_TYPE_VEC4,883GLOBAL_VAR_TYPE_COLOR,884GLOBAL_VAR_TYPE_RECT2,885GLOBAL_VAR_TYPE_MAT2,886GLOBAL_VAR_TYPE_MAT3,887GLOBAL_VAR_TYPE_MAT4,888GLOBAL_VAR_TYPE_TRANSFORM_2D,889GLOBAL_VAR_TYPE_TRANSFORM,890GLOBAL_VAR_TYPE_SAMPLER2D,891GLOBAL_VAR_TYPE_SAMPLER2DARRAY,892GLOBAL_VAR_TYPE_SAMPLER3D,893GLOBAL_VAR_TYPE_SAMPLERCUBE,894GLOBAL_VAR_TYPE_SAMPLEREXT,895GLOBAL_VAR_TYPE_MAX,896};897898/* STATUS INFORMATION */899900enum RenderingInfo {901RENDERING_INFO_TOTAL_OBJECTS_IN_FRAME,902RENDERING_INFO_TOTAL_PRIMITIVES_IN_FRAME,903RENDERING_INFO_TOTAL_DRAW_CALLS_IN_FRAME,904RENDERING_INFO_TEXTURE_MEM_USED,905RENDERING_INFO_BUFFER_MEM_USED,906RENDERING_INFO_VIDEO_MEM_USED,907RENDERING_INFO_PIPELINE_COMPILATIONS_CANVAS,908RENDERING_INFO_PIPELINE_COMPILATIONS_MESH,909RENDERING_INFO_PIPELINE_COMPILATIONS_SURFACE,910RENDERING_INFO_PIPELINE_COMPILATIONS_DRAW,911RENDERING_INFO_PIPELINE_COMPILATIONS_SPECIALIZATION,912RENDERING_INFO_MAX,913};914915/* BACKGROUND */916917// If this is modified, review the conversion code in `project_settings.cpp`918// which is hardcoded to avoid coupling `core` with `servers`.919enum SplashStretchMode {920SPLASH_STRETCH_MODE_DISABLED,921SPLASH_STRETCH_MODE_KEEP,922SPLASH_STRETCH_MODE_KEEP_WIDTH,923SPLASH_STRETCH_MODE_KEEP_HEIGHT,924SPLASH_STRETCH_MODE_COVER,925SPLASH_STRETCH_MODE_IGNORE,926};927928/* MISC */929930#ifndef DISABLE_DEPRECATED931// Never actually used, should be removed when we can break compatibility.932enum Features {933FEATURE_SHADERS,934FEATURE_MULTITHREADED,935};936#endif937938} // namespace RenderingServerEnums939940// Alias to make it easier to use.941#define RSE RenderingServerEnums942943944