Server for anything visible.
Server for anything visible. The visual server is the API backend for everything visible. The whole scene system mounts on it to display.
The visual server is completely opaque, the internals are entirely implementation specific and cannot be accessed.
The visual server can be used to bypass the scene system entirely.
Resources are created using the [code]*_create[/code] functions.
All objects are drawn to a viewport. You can use the [Viewport] attached to the [SceneTree] or you can create one yourself with [method viewport_create]. When using a custom scenario or canvas, the scenario or canvas needs to be attached to the viewport using [method viewport_set_scenario] or [method viewport_attach_canvas].
In 3D, all visual objects must be associated with a scenario. The scenario is a visual representation of the world. If accessing the visual server from a running game, the scenario can be accessed from the scene tree from any [Spatial] node with [method Spatial.get_world]. Otherwise, a scenario can be created with [method scenario_create].
Similarly, in 2D, a canvas is needed to draw all canvas items.
In 3D, all visible objects are comprised of a resource and an instance. A resource can be a mesh, a particle system, a light, or any other 3D object. In order to be visible resources must be attached to an instance using [method instance_set_base]. The instance must also be attached to the scenario using [method instance_set_scenario] in order to be visible.
In 2D, all visible objects are some form of canvas item. In order to be visible, a canvas item needs to be the child of a canvas attached to a viewport, or it needs to be the child of another canvas item that is eventually attached to the canvas.
$DOCS_URL/tutorials/performance/using_servers.md
Sets images to be rendered in the window margin.
Sets margin size, where black bars (or images, if [method black_bars_set_images] was used) are rendered.
Creates a canvas and returns the assigned [RID]. It can be accessed with the RID that is returned. This RID will be used in all [code]canvas_*[/code] RenderingServer functions.
Once finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] static method.
Adds a circle command to the [CanvasItem]'s draw commands.
If ignore is [code]true[/code], the RenderingServer does not perform clipping.
Adds a line command to the [CanvasItem]'s draw commands.
Adds a mesh command to the [CanvasItem]'s draw commands.
Adds a [MultiMesh] to the [CanvasItem]'s draw commands. Only affects its aabb at the moment.
Adds a nine patch image to the [CanvasItem]'s draw commands.
See [NinePatchRect] for more explanation.
Adds a polygon to the [CanvasItem]'s draw commands.
Adds a polyline, which is a line from multiple points with a width, to the [CanvasItem]'s draw commands.
Adds a primitive to the [CanvasItem]'s draw commands.
Adds a rectangle to the [CanvasItem]'s draw commands.
Adds a [Transform2D] command to the [CanvasItem]'s draw commands.
This sets the extra_matrix uniform when executed. This affects the later commands of the canvas item.
Adds a textured rect to the [CanvasItem]'s draw commands.
Adds a texture rect with region setting to the [CanvasItem]'s draw commands.
Adds a triangle array to the [CanvasItem]'s draw commands.
Clears the [CanvasItem] and removes all commands in it.
Creates a new [CanvasItem] and returns its [RID]. It can be accessed with the RID that is returned. This RID will be used in all [code]canvas_item_*[/code] RenderingServer functions.
Once finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] static method.
Sets clipping for the [CanvasItem].
Sets the [CanvasItem] to copy a rect to the backbuffer.
Defines a custom drawing rectangle for the [CanvasItem].
Enables the use of distance fields for GUI elements that are rendering distance field based fonts.
Sets [CanvasItem] to be drawn behind its parent.
Sets the index for the [CanvasItem].
The light mask. See [LightOccluder2D] for more information on light masks.
Sets a new material to the [CanvasItem].
Sets the color that modulates the [CanvasItem] and its children.
Sets the parent for the [CanvasItem]. The parent can be another canvas item, or it can be the root canvas that is attached to the viewport.
Sets the color that modulates the [CanvasItem] without children.
Sets if [CanvasItem]'s children should be sorted by y-position.
Sets the [CanvasItem]'s [Transform2D].
Sets if the [CanvasItem] uses its parent's material.
Sets if the canvas item (including its children) is visible.
If this is enabled, the Z index of the parent will be added to the children's Z index.
Sets the [CanvasItem]'s Z index, i.e. its draw order (lower indexes are drawn first).
A copy of the canvas item will be drawn with a local offset of the mirroring [Vector2].
Modulates all colors in the given canvas.
Returns the bounding rectangle for a canvas item and its descendants in local space, as calculated by the renderer. This bound is used internally for culling.
[b]Warning:[/b] This function is intended for debugging in the editor, and will pass through and return a zero [Rect2] in exported projects.
Returns the bounding rectangle for a canvas item in local space, as calculated by the renderer. This bound is used internally for culling.
[b]Warning:[/b] This function is intended for debugging in the editor, and will pass through and return a zero [Rect2] in exported projects.
Draws a frame. [i]This method is deprecated[/i], please use [method force_draw] instead.
Removes buffers and clears testcubes.
Forces a frame to be drawn when the function is called. Drawing a frame updates all [Viewport]s that are set to update. Use with extreme caution.
Synchronizes threads.
Tries to free an object in the RenderingServer.
Returns a certain information, see [enum RenderInfo] for options.
Returns the id of the test cube. Creates one if none exists.
Returns the id of the test texture. Creates one if none exists.
Returns the name of the video adapter (e.g. "GeForce GTX 1080/PCIe/SSE2").
[b]Note:[/b] When running a headless or server binary, this function returns an empty string.
Returns the vendor of the video adapter (e.g. "NVIDIA Corporation").
[b]Note:[/b] When running a headless or server binary, this function returns an empty string.
Returns the id of a white texture. Creates one if none exists.
Returns [code]true[/code] if changes have been made to the RenderingServer's data. [method draw] is usually called if this happens.
As changes are registered as either high or low priority (e.g. dynamic shaders), this function takes an optional argument to query either low or high priority changes, or any changes.
Not yet implemented. Always returns [code]false[/code].
Returns [code]true[/code] if the OS supports a certain feature. Features might be [code]s3tc[/code], [code]etc[/code], [code]etc2[/code], [code]pvrtc[/code] and [code]skinning_fallback[/code].
When rendering with GLES2, returns [code]true[/code] with [code]skinning_fallback[/code] in case the hardware doesn't support the default GPU skinning process.
Initializes the visual server. This function is called internally by platform-dependent code during engine initialization. If called from a running game, it will not do anything.
Returns a mesh of a sphere with the given amount of horizontal and vertical subdivisions.
Creates an empty material and adds it to the RenderingServer. It can be accessed with the RID that is returned. This RID will be used in all [code]material_*[/code] RenderingServer functions.
Once finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] static method.
Returns the shader of a certain material's shader. Returns an empty RID if the material doesn't have a shader.
Sets a material's line width.
Sets an object's next material.
Sets a material's render priority.
Sets a shader material's shader.
Adds a surface generated from the Arrays to a mesh. See [enum PrimitiveType] constants for types.
Removes all surfaces from a mesh.
Creates a new mesh and adds it to the RenderingServer. It can be accessed with the RID that is returned. This RID will be used in all [code]mesh_*[/code] RenderingServer functions.
Once finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] static method.
To place in a scene, attach this mesh to an instance using [method instance_set_base] using the returned RID.
Returns a mesh's blend shape count.
Returns a mesh's blend shape mode.
Returns a mesh's custom aabb.
Returns a mesh's number of surfaces.
Removes a mesh's surface.
Sets a mesh's blend shape count.
Sets a mesh's blend shape mode.
Sets a mesh's custom aabb.
Returns a mesh's surface's aabb.
Returns a mesh's surface's vertex buffer.
Returns a mesh's surface's amount of indices.
Returns a mesh's surface's amount of vertices.
Returns a mesh's surface's buffer arrays.
Returns a mesh's surface's arrays for blend shapes.
Returns the format of a mesh's surface.
Function is unused in Godot 3.x.
Returns a mesh's surface's index buffer.
Returns a mesh's surface's material.
Returns the primitive type of a mesh's surface.
Sets a mesh's surface's material.
Updates a specific region of a vertex buffer for the specified surface. Warning: this function alters the vertex buffer directly with no safety mechanisms, you can easily corrupt your mesh.
Allocates space for the multimesh data. Format parameters determine how the data will be stored by OpenGL. See [enum MultimeshTransformFormat], [enum MultimeshColorFormat], and [enum MultimeshCustomDataFormat] for usage. Equivalent to [member MultiMesh.instance_count].
Creates a new multimesh on the RenderingServer and returns an [RID] handle. This RID will be used in all [code]multimesh_*[/code] RenderingServer functions.
Once finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] static method.
To place in a scene, attach this multimesh to an instance using [method instance_set_base] using the returned RID.
Calculates and returns the axis-aligned bounding box that encloses all instances within the multimesh.
Returns the number of instances allocated for this multimesh.
Returns the RID of the mesh that will be used in drawing this multimesh.
Returns the number of visible instances for this multimesh.
Returns the color by which the specified instance will be modulated.
Returns the custom data associated with the specified instance.
Returns the [Transform] of the specified instance.
Returns the [Transform2D] of the specified instance. For use when the multimesh is set to use 2D transforms.
Prevents physics interpolation for the specified instance during the current physics tick.
This is useful when moving an instance to a new location, to give an instantaneous change rather than interpolation from the previous location.
Sets the color by which this instance will be modulated. Equivalent to [method MultiMesh.set_instance_color].
Sets the custom data for this instance. Custom data is passed as a [Color], but is interpreted as a [code]vec4[/code] in the shader. Equivalent to [method MultiMesh.set_instance_custom_data].
Sets the [Transform] for this instance. Equivalent to [method MultiMesh.set_instance_transform].
Sets the [Transform2D] for this instance. For use when multimesh is used in 2D. Equivalent to [method MultiMesh.set_instance_transform_2d].
Sets all data related to the instances in one go. This is especially useful when loading the data from disk or preparing the data from GDNative.
All data is packed in one large float array. An array may look like this: Transform for instance 1, color data for instance 1, custom data for instance 1, transform for instance 2, color data for instance 2, etc.
[Transform] is stored as 12 floats, [Transform2D] is stored as 8 floats, [code]COLOR_8BIT[/code] / [code]CUSTOM_DATA_8BIT[/code] is stored as 1 float (4 bytes as is) and [code]COLOR_FLOAT[/code] / [code]CUSTOM_DATA_FLOAT[/code] is stored as 4 floats.
Alternative version of [method multimesh_set_as_bulk_array] for use with physics interpolation.
Takes both an array of current data and an array of data for the previous physics tick.
Sets the mesh to be drawn by the multimesh. Equivalent to [member MultiMesh.mesh].
Turns on and off physics interpolation for the [MultiMesh].
Sets the physics interpolation quality for the [MultiMesh].
A value of [code]0[/code] gives fast but low quality interpolation, a value of [code]1[/code] gives slower but higher quality interpolation.
Sets the number of instances visible at a given time. If -1, all instances that have been allocated are drawn. Equivalent to [member MultiMesh.visible_instance_count].
Sets a boot image. The color defines the background color. If [code]scale[/code] is [code]true[/code], the image will be scaled to fit the screen size. If [code]use_filter[/code] is [code]true[/code], the image will be scaled with linear interpolation. If [code]use_filter[/code] is [code]false[/code], the image will be scaled with nearest-neighbor interpolation.
If [code]true[/code], the engine will generate wireframes for use with the wireframe debug mode.
Sets the default clear color which is used when a specific clear color has not been selected.
If asynchronous shader compilation is enabled, this controls whether [constant SpatialMaterial.ASYNC_MODE_HIDDEN] is obeyed.
For instance, you may want to enable this temporarily before taking a screenshot. This ensures everything is visible even if shaders with async mode [i]hidden[/i] are not ready yet.
Reflection probes use this internally to ensure they capture everything regardless the shaders are ready or not.
Sets the scale to apply to the passage of time for the shaders' [code]TIME[/code] builtin.
The default value is [code]1.0[/code], which means [code]TIME[/code] will count the real time as it goes by, without narrowing or stretching it.
Creates an empty shader and adds it to the RenderingServer. It can be accessed with the RID that is returned. This RID will be used in all [code]shader_*[/code] RenderingServer functions.
Once finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] static method.
Returns a shader's code.
Returns the parameters of a shader.
Sets a shader's code.
Not implemented in Godot 3.x.
Allocates the GPU memory for the texture.
Binds the texture to a texture slot.
Creates an empty texture and adds it to the RenderingServer. It can be accessed with the RID that is returned. This RID will be used in all [code]texture_*[/code] RenderingServer functions.
Once finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] static method.
Creates a texture, allocates the space for an image, and fills in the image.
Returns a list of all the textures and their information.
Returns a copy of a texture's image unless it's a CubeMap, in which case it returns the [RID] of the image at one of the cubes sides.
Returns the depth of the texture.
Returns the flags of a texture.
Returns the format of the texture's image.
Returns the texture's height.
Returns the texture's path.
Returns the opengl id of the texture's image.
Returns the type of the texture, can be any of the [enum TextureType].
Returns the texture's width.
Sets the texture's image data. If it's a CubeMap, it sets the image data at a cube side.
Sets a part of the data for a texture. Warning: this function calls the underlying graphics API directly and may corrupt your texture if used improperly.
Sets the texture's flags. See [enum TextureFlags] for options.
Sets the texture's path.
Creates an update link between two textures, similar to how [ViewportTexture]s operate. When the base texture is the texture of a [Viewport], every time the viewport renders a new frame, the proxy texture automatically receives an update.
For example, this code links a generic [ImageTexture] to the texture output of the [Viewport] using the RenderingServer API:
[codeblock]
func _ready():
var viewport_rid = get_viewport().get_viewport_rid()
var viewport_texture_rid = RenderingServer.viewport_get_texture(viewport_rid)
var proxy_texture = ImageTexture.new()
var viewport_texture_image_data = RenderingServer.texture_get_data(viewport_texture_rid)
proxy_texture.create_from_image(viewport_texture_image_data)
var proxy_texture_rid = proxy_texture.get_rid()
RenderingServer.texture_set_proxy(proxy_texture_rid, viewport_texture_rid)
$TextureRect.texture = proxy_texture
[/codeblock]
If [code]true[/code], sets internal processes to shrink all image data to half the size.
Resizes the texture to the specified dimensions.
If [code]true[/code], the image will be stored in the texture's images array if overwritten.
Sets a viewport's canvas.
Copies viewport to a region of the screen specified by [code]rect[/code]. If [member Viewport.render_direct_to_screen] is [code]true[/code], then viewport does not use a framebuffer and the contents of the viewport are rendered directly to screen. However, note that the root viewport is drawn last, therefore it will draw over the screen. Accordingly, you must set the root viewport to an area that does not cover the area that you have attached this viewport to.
For example, you can set the root viewport to not render at all with the following code:
[codeblock]
func _ready():
get_viewport().set_attach_to_screen_rect(Rect2())
$Viewport.set_attach_to_screen_rect(Rect2(0, 0, 600, 600))
[/codeblock]
Using this can result in significant optimization, especially on lower-end devices. However, it comes at the cost of having to manage your viewports manually. For a further optimization see, [method viewport_set_render_direct_to_screen].
Creates an empty viewport and adds it to the RenderingServer. It can be accessed with the RID that is returned. This RID will be used in all [code]viewport_*[/code] RenderingServer functions.
Once finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] static method.
Detaches the viewport from the screen.
Returns a viewport's render information. For options, see the [enum ViewportRenderInfo] constants.
Returns the viewport's last rendered frame.
Detaches a viewport from a canvas and vice versa.
If [code]true[/code], sets the viewport active, else sets it inactive.
Sets the stacking order for a viewport's canvas.
[code]layer[/code] is the actual canvas layer, while [code]sublayer[/code] specifies the stacking order of the canvas among those in the same layer.
Sets the transformation of a viewport's canvas.
Sets the clear mode of a viewport. See [enum ViewportClearMode] for options.
Sets the debug draw mode of a viewport. See [enum ViewportDebugDraw] for options.
Sets the viewport's global transformation matrix.
If [code]true[/code], the viewport renders to high dynamic range (HDR) instead of standard dynamic range (SDR). See also [method viewport_set_use_32_bpc_depth].
[b]Note:[/b] Only available on the GLES3 backend.
If [code]true[/code], the viewport's canvas is not rendered.
Sets the anti-aliasing mode. See [enum ViewportMSAA] for options.
Sets the viewport's parent to another viewport.
If [code]true[/code], render the contents of the viewport directly to screen. This allows a low-level optimization where you can skip drawing a viewport to the root viewport. While this optimization can result in a significant increase in speed (especially on older devices), it comes at a cost of usability. When this is enabled, you cannot read from the viewport or from the [code]SCREEN_TEXTURE[/code]. You also lose the benefit of certain window settings, such as the various stretch modes. Another consequence to be aware of is that in 2D the rendering happens in window coordinates, so if you have a viewport that is double the size of the window, and you set this, then only the portion that fits within the window will be drawn, no automatic scaling is possible, even if your game scene is significantly larger than the window size.
Sets the sharpening [code]intensity[/code] for the [code]viewport[/code]. If set to a value greater than [code]0.0[/code], contrast-adaptive sharpening will be applied to the 3D viewport. This has a low performance cost and can be used to recover some of the sharpness lost from using FXAA. Values around [code]0.5[/code] generally give the best results. See also [method viewport_set_use_fxaa].
Sets the viewport's width and height.
If [code]true[/code], the viewport renders its background as transparent.
Sets when the viewport should be updated. See [enum ViewportUpdateMode] constants for options.
Sets the viewport's 2D/3D mode. See [enum ViewportUsage] constants for options.
If [code]true[/code], allocates the viewport's framebuffer with full floating-point precision (32-bit) instead of half floating-point precision (16-bit). Only effective if [method viewport_set_use_32_bpc_depth] is used on the same [Viewport] to set HDR to [code]true[/code].
[b]Note:[/b] Only available on the GLES3 backend.
If [code]true[/code], uses a fast post-processing filter to make banding significantly less visible. In some cases, debanding may introduce a slightly noticeable dithering pattern. It's recommended to enable debanding only when actually needed since the dithering pattern will make lossless-compressed screenshots larger.
[b]Note:[/b] Only available on the GLES3 backend. [member Viewport.hdr] must also be [code]true[/code] for debanding to be effective.
Enables fast approximate antialiasing for this viewport. FXAA is a popular screen-space antialiasing method, which is fast but will make the image look blurry, especially at lower resolutions. It can still work relatively well at large resolutions such as 1440p and 4K. Some of the lost sharpness can be recovered by enabling contrast-adaptive sharpening (see [method viewport_set_sharpen_intensity]).
If [code]true[/code], the viewport's rendering is flipped vertically.
If [code]false[/code], disables rendering completely, but the engine logic is still being processed. You can call [method force_draw] to draw a frame even with rendering disabled.
Emitted at the end of the frame, after the RenderingServer has finished updating all the Viewports.
Emitted at the beginning of the frame, before the RenderingServer updates all the Viewports.
Marks an error that shows that the index array is empty.
Number of weights/bones per vertex.
The minimum Z-layer for canvas items.
The maximum Z-layer for canvas items.
Max number of glow levels that can be used with glow post-process effect.
Unused enum in Godot 3.x.
The minimum renderpriority of all materials.
The maximum renderpriority of all materials.
Marks the left side of a cubemap.
Marks the right side of a cubemap.
Marks the bottom side of a cubemap.
Marks the top side of a cubemap.
Marks the front side of a cubemap.
Marks the back side of a cubemap.
Normal texture with 2 dimensions, width and height.
Texture made up of six faces, can be looked up with a [code]vec3[/code] in shader.
An array of 2-dimensional textures.
A 3-dimensional texture with width, height, and depth.
Generates mipmaps, which are smaller versions of the same texture to use when zoomed out, keeping the aspect ratio.
Repeats the texture (instead of clamp to edge).
Uses a magnifying filter, to enable smooth zooming in of the texture.
Uses anisotropic mipmap filtering. Generates smaller versions of the same texture with different aspect ratios.
This results in better-looking textures when viewed from oblique angles.
Converts the texture to the sRGB color space.
Repeats the texture with alternate sections mirrored.
Texture is a video surface.
Default flags. [constant TEXTURE_FLAG_MIPMAPS], [constant TEXTURE_FLAG_REPEAT] and [constant TEXTURE_FLAG_FILTER] are enabled.
Shader is a 2D shader.
Represents the size of the [enum ShaderMode] enum.
Array is a vertex array.
Array is a normal array.
Array is a tangent array.
Array is a color array.
Array is an UV coordinates array.
Array is an UV coordinates array for the second UV coordinates.
Array is index array.
Represents the size of the [enum ArrayType] enum.
Flag used to mark a vertex array.
Flag used to mark a normal array.
Flag used to mark a tangent array.
Flag used to mark a color array.
Flag used to mark an UV coordinates array.
Flag used to mark an UV coordinates array for the second UV coordinates.
Flag used to mark an index array.
Flag used to mark a compressed (half float) vertex array.
Flag used to mark a compressed (half float) normal array.
Flag used to mark a compressed (half float) tangent array.
Flag used to mark a compressed (half float) color array.
Flag used to mark a compressed (half float) UV coordinates array.
Flag used to mark a compressed (half float) UV coordinates array for the second UV coordinates.
Flag used to mark a compressed index array.
Flag used to mark that the array contains 2D vertices.
Used to set flags [constant ARRAY_COMPRESS_NORMAL], [constant ARRAY_COMPRESS_TANGENT], [constant ARRAY_COMPRESS_COLOR], [constant ARRAY_COMPRESS_TEX_UV], [constant ARRAY_COMPRESS_TEX_UV2], [constant ARRAY_COMPRESS_WEIGHTS], and [constant ARRAY_FLAG_USE_OCTAHEDRAL_COMPRESSION] quickly.
Primitive to draw consists of points.
Primitive to draw consists of lines.
Primitive to draw consists of a line strip from start to end.
Primitive to draw consists of a line loop (a line strip with a line between the last and the first vertex).
Primitive to draw consists of triangles.
Primitive to draw consists of a triangle strip (the last 3 vertices are always combined to make a triangle).
Primitive to draw consists of a triangle strip (the last 2 vertices are always combined with the first to make a triangle).
Represents the size of the [enum PrimitiveType] enum.
Blend shapes are normalized.
Blend shapes are relative to base weight.
Do not update the viewport.
Update the viewport once then set to disabled.
Update the viewport whenever it is visible.
Always update the viewport.
The viewport is always cleared before drawing.
The viewport is never cleared before drawing.
The viewport is cleared once, then the clear mode is set to [constant VIEWPORT_CLEAR_NEVER].
Multisample antialiasing is disabled.
Multisample antialiasing is set to 2×.
Multisample antialiasing is set to 4×.
Multisample antialiasing is set to 8×.
Multisample antialiasing is set to 16×.
Multisample antialiasing is set to 2× on external texture. Special mode for GLES2 Android VR (Oculus Quest and Go).
Multisample antialiasing is set to 4× on external texture. Special mode for GLES2 Android VR (Oculus Quest and Go).
The Viewport does not render 3D but samples.
The Viewport does not render 3D and does not sample.
Number of objects drawn in a single frame.
Number of vertices drawn in a single frame.
Number of material changes during this frame.
Number of shader changes during this frame.
Number of surface changes during this frame.
Number of draw calls during this frame.
Number of 2d items drawn this frame.
Number of 2d draw calls during this frame.
Represents the size of the [enum ViewportRenderInfo] enum.
Debug draw is disabled. Default setting.
Debug draw sets objects to unshaded.
Overwrites clear color to [code](0,0,0,0)[/code].
Debug draw draws objects in wireframe.
The instance does not have a type.
The instance is a mesh.
The instance is a multimesh.
Represents the size of the [enum InstanceType] enum.
A combination of the flags of geometry instances (mesh, multimesh, immediate and particles).
When set, manually requests to draw geometry on next frame.
Represents the size of the [enum InstanceFlags] enum.
The nine patch gets stretched where needed.
The nine patch gets filled with tiles where needed.
The nine patch gets filled with tiles where needed and stretches them a bit if needed.
The amount of objects in the frame.
The amount of vertices in the frame.
The amount of modified materials in the frame.
The amount of shader rebinds in the frame.
The peak amount of shaders that have been under compilation in the frame.
This is useful to know when asynchronous shader compilation has finished for the current shaders on screen.
[b]Note:[/b] For complete certainty, only assume there are no outstanding compilations when this value is zero for at least two frames in a row.
Unimplemented in the GLES2 rendering backend, always returns 0.
The amount of surface changes in the frame.
The amount of draw calls in frame.
The amount of 2d items in the frame.
The amount of 2d draw calls in frame.
Unimplemented in the GLES2 and GLES3 rendering backends, always returns 0.
The amount of video memory used, i.e. texture and vertex memory combined.
The amount of texture memory used.
The amount of vertex memory used.
Hardware supports shaders. This enum is currently unused in Godot 3.x.
Hardware supports multithreading. This enum is currently unused in Godot 3.x.
Use [Transform2D] to store MultiMesh transform.
Use [Transform] to store MultiMesh transform.
MultiMesh does not use per-instance color.
MultiMesh color uses 8 bits per component. This packs the color into a single float.
MultiMesh color uses a float per channel.
MultiMesh does not use custom data.
MultiMesh custom data uses 8 bits per component. This packs the 4-component custom data into a single float.
MultiMesh custom data uses a float per component.
MultiMesh physics interpolation favours speed over quality.
MultiMesh physics interpolation favours quality over speed.
Used to query for any changes that request a redraw, whatever the priority.
Registered changes which have low priority can be optionally prevented from causing editor redraws. Examples might include dynamic shaders (typically using the [code]TIME[/code] built-in).
Registered changes which can cause a redraw default to high priority.