summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/classes/RichTextLabel.xml27
-rw-r--r--doc/classes/VisualServer.xml126
-rw-r--r--drivers/dummy/rasterizer_dummy.h2
-rw-r--r--drivers/gles2/rasterizer_gles2.cpp3
-rw-r--r--drivers/gles2/rasterizer_storage_gles2.cpp10
-rw-r--r--drivers/gles2/rasterizer_storage_gles2.h2
-rw-r--r--drivers/gles3/rasterizer_gles3.cpp3
-rw-r--r--drivers/gles3/rasterizer_storage_gles3.cpp10
-rw-r--r--drivers/gles3/rasterizer_storage_gles3.h2
-rw-r--r--scene/3d/physics_body.cpp11
-rw-r--r--scene/gui/label.cpp18
-rw-r--r--servers/visual/rasterizer.h2
-rw-r--r--servers/visual/visual_server_raster.cpp10
-rw-r--r--servers/visual/visual_server_raster.h2
-rw-r--r--servers/visual/visual_server_wrap_mt.h8
-rw-r--r--servers/visual_server.cpp2
-rw-r--r--servers/visual_server.h2
17 files changed, 209 insertions, 31 deletions
diff --git a/doc/classes/RichTextLabel.xml b/doc/classes/RichTextLabel.xml
index 2567b64c03..0e53490681 100644
--- a/doc/classes/RichTextLabel.xml
+++ b/doc/classes/RichTextLabel.xml
@@ -91,6 +91,7 @@
<argument index="0" name="effect" type="Variant">
</argument>
<description>
+ Installs a custom effect. [code]effect[/code] should be a valid [RichTextEffect].
</description>
</method>
<method name="newline">
@@ -115,6 +116,7 @@
<argument index="0" name="expressions" type="PoolStringArray">
</argument>
<description>
+ Parses BBCode parameter [code]expressions[/code] into a dictionary.
</description>
</method>
<method name="pop">
@@ -137,12 +139,14 @@
<return type="void">
</return>
<description>
+ Adds a [code][font][/code] tag with a bold font to the tag stack. This is the same as adding a [code][b][/code] tag if not currently in a [code][i][/code] tag.
</description>
</method>
<method name="push_bold_italics">
<return type="void">
</return>
<description>
+ Adds a [code][font][/code] tag with a bold italics font to the tag stack.
</description>
</method>
<method name="push_cell">
@@ -176,13 +180,14 @@
<argument index="0" name="level" type="int">
</argument>
<description>
- Adds an [code][indent][/code] tag to the tag stack. Multiplies "level" by current tab_size to determine new margin length.
+ Adds an [code][indent][/code] tag to the tag stack. Multiplies [code]level[/code] by current [member tab_size] to determine new margin length.
</description>
</method>
<method name="push_italics">
<return type="void">
</return>
<description>
+ Adds a [code][font][/code] tag with a italics font to the tag stack. This is the same as adding a [code][i][/code] tag if not currently in a [code][b][/code] tag.
</description>
</method>
<method name="push_list">
@@ -207,12 +212,14 @@
<return type="void">
</return>
<description>
+ Adds a [code][font][/code] tag with a monospace font to the tag stack.
</description>
</method>
<method name="push_normal">
<return type="void">
</return>
<description>
+ Adds a [code][font][/code] tag with a normal font to the tag stack.
</description>
</method>
<method name="push_strikethrough">
@@ -244,7 +251,7 @@
<argument index="0" name="line" type="int">
</argument>
<description>
- Removes a line of content from the label. Returns [code]true[/code] if the line exists.
+ Removes the [code]line[/code]th line of content from the label. Returns [code]true[/code] if the line exists.
</description>
</method>
<method name="scroll_to_line">
@@ -281,6 +288,8 @@
[b]Note:[/b] It is unadvised to use [code]+=[/code] operator with [code]bbcode_text[/code] (e.g. [code]bbcode_text += "some string"[/code]) as it replaces the whole text and can cause slowdowns. Use [method append_bbcode] for adding text instead.
</member>
<member name="custom_effects" type="Array" setter="set_effects" getter="get_effects" default="[ ]">
+ The currently installed custom effects. This is an array of [RichTextEffect]s.
+ To add a custom effect, it's more convenient to use [method install_effect].
</member>
<member name="meta_underlined" type="bool" setter="set_meta_underline" getter="is_meta_underlined" default="true">
If [code]true[/code], the label underlines meta tags such as [code][url]{text}[/url][/code].
@@ -289,11 +298,12 @@
If [code]true[/code], the label uses the custom font color.
</member>
<member name="percent_visible" type="float" setter="set_percent_visible" getter="get_percent_visible" default="1.0">
- The text's visibility, as a [float] between 0.0 and 1.0.
+ The range of characters to display, as a [float] between 0.0 and 1.0. When assigned an out of range value, it's the same as assigning 1.0.
+ [b]Note:[/b] Setting this property updates [member visible_characters] based on current [method get_total_character_count].
</member>
<member name="rect_clip_content" type="bool" setter="set_clip_contents" getter="is_clipping_contents" override="true" default="true" />
<member name="scroll_active" type="bool" setter="set_scroll_active" getter="is_scroll_active" default="true">
- If [code]true[/code], the scrollbar is visible. Does not block scrolling completely. See [method scroll_to_line].
+ If [code]true[/code], the scrollbar is visible. Setting this to [code]false[/code] does not block scrolling completely. See [method scroll_to_line].
</member>
<member name="scroll_following" type="bool" setter="set_scroll_follow" getter="is_scroll_following" default="false">
If [code]true[/code], the window scrolls down to display new content automatically.
@@ -317,7 +327,7 @@
<argument index="0" name="meta" type="Nil">
</argument>
<description>
- Triggered when the user clicks on content between [code][url][/code] tags. If the meta is defined in text, e.g. [code][url={"data"="hi"}]hi[/url][/code], then the parameter for this signal will be a [String] type. If a particular type or an object is desired, the [method push_meta] method must be used to manually insert the data into the tag stack.
+ Triggered when the user clicks on content between meta tags. If the meta is defined in text, e.g. [code][url={"data"="hi"}]hi[/url][/code], then the parameter for this signal will be a [String] type. If a particular type or an object is desired, the [method push_meta] method must be used to manually insert the data into the tag stack.
</description>
</signal>
<signal name="meta_hover_ended">
@@ -337,18 +347,25 @@
</signals>
<constants>
<constant name="ALIGN_LEFT" value="0" enum="Align">
+ Makes text left aligned.
</constant>
<constant name="ALIGN_CENTER" value="1" enum="Align">
+ Makes text centered.
</constant>
<constant name="ALIGN_RIGHT" value="2" enum="Align">
+ Makes text right aligned.
</constant>
<constant name="ALIGN_FILL" value="3" enum="Align">
+ Makes text fill width.
</constant>
<constant name="LIST_NUMBERS" value="0" enum="ListType">
+ Each list item has a number marker.
</constant>
<constant name="LIST_LETTERS" value="1" enum="ListType">
+ Each list item has a letter marker.
</constant>
<constant name="LIST_DOTS" value="2" enum="ListType">
+ Each list item has a filled circle marker.
</constant>
<constant name="ITEM_FRAME" value="0" enum="ItemType">
</constant>
diff --git a/doc/classes/VisualServer.xml b/doc/classes/VisualServer.xml
index 5c29601134..181a980881 100644
--- a/doc/classes/VisualServer.xml
+++ b/doc/classes/VisualServer.xml
@@ -1397,6 +1397,22 @@
Returns the id of the test texture. Creates one if none exists.
</description>
</method>
+ <method name="get_video_adapter_name" qualifiers="const">
+ <return type="String">
+ </return>
+ <description>
+ 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.
+ </description>
+ </method>
+ <method name="get_video_adapter_vendor" qualifiers="const">
+ <return type="String">
+ </return>
+ <description>
+ 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.
+ </description>
+ </method>
<method name="get_white_texture">
<return type="RID">
</return>
@@ -1419,6 +1435,7 @@
<argument index="0" name="probe" type="RID">
</argument>
<description>
+ Returns the bias value for the GI probe. Bias is used to avoid self occlusion. Equivalent to [member GIProbeData.bias].
</description>
</method>
<method name="gi_probe_get_bounds" qualifiers="const">
@@ -1427,6 +1444,7 @@
<argument index="0" name="probe" type="RID">
</argument>
<description>
+ Returns the axis-aligned bounding box that covers the full extent of the GI probe.
</description>
</method>
<method name="gi_probe_get_cell_size" qualifiers="const">
@@ -1435,6 +1453,7 @@
<argument index="0" name="probe" type="RID">
</argument>
<description>
+ Returns the cell size set by [method gi_probe_set_cell_size].
</description>
</method>
<method name="gi_probe_get_dynamic_data" qualifiers="const">
@@ -1443,6 +1462,7 @@
<argument index="0" name="probe" type="RID">
</argument>
<description>
+ Returns the data used by the GI probe.
</description>
</method>
<method name="gi_probe_get_dynamic_range" qualifiers="const">
@@ -1451,6 +1471,7 @@
<argument index="0" name="probe" type="RID">
</argument>
<description>
+ Returns the dynamic range set for this GI probe. Equivalent to [member GIProbe.dynamic_range].
</description>
</method>
<method name="gi_probe_get_energy" qualifiers="const">
@@ -1459,6 +1480,7 @@
<argument index="0" name="probe" type="RID">
</argument>
<description>
+ Returns the energy multiplier for this GI probe. Equivalent to [member GIProbe.energy].
</description>
</method>
<method name="gi_probe_get_normal_bias" qualifiers="const">
@@ -1467,6 +1489,7 @@
<argument index="0" name="probe" type="RID">
</argument>
<description>
+ Returns the normal bias for this GI probe. Equivalent to [member GIProbe.normal_bias].
</description>
</method>
<method name="gi_probe_get_propagation" qualifiers="const">
@@ -1475,6 +1498,7 @@
<argument index="0" name="probe" type="RID">
</argument>
<description>
+ Returns the propagation value for this GI probe. Equivalent to [member GIProbe.propagation].
</description>
</method>
<method name="gi_probe_get_to_cell_xform" qualifiers="const">
@@ -1483,6 +1507,7 @@
<argument index="0" name="probe" type="RID">
</argument>
<description>
+ Returns the Transform set by [method gi_probe_set_to_cell_xform].
</description>
</method>
<method name="gi_probe_is_compressed" qualifiers="const">
@@ -1491,6 +1516,7 @@
<argument index="0" name="probe" type="RID">
</argument>
<description>
+ Returns [code]true[/code] if the GI probe data associated with this GI probe is compressed. Equivalent to [member GIProbe.compress].
</description>
</method>
<method name="gi_probe_is_interior" qualifiers="const">
@@ -1499,6 +1525,7 @@
<argument index="0" name="probe" type="RID">
</argument>
<description>
+ Returns [code]true[/code] if the GI probe is set to interior, meaning it does not account for sky light. Equivalent to [member GIProbe.interior].
</description>
</method>
<method name="gi_probe_set_bias">
@@ -1509,6 +1536,7 @@
<argument index="1" name="bias" type="float">
</argument>
<description>
+ Sets the bias value to avoid self-occlusion. Equivalent to [member GIProbe.bias].
</description>
</method>
<method name="gi_probe_set_bounds">
@@ -1519,6 +1547,7 @@
<argument index="1" name="bounds" type="AABB">
</argument>
<description>
+ Sets the axis-aligned bounding box that covers the extent of the GI probe.
</description>
</method>
<method name="gi_probe_set_cell_size">
@@ -1529,6 +1558,7 @@
<argument index="1" name="range" type="float">
</argument>
<description>
+ Sets the size of individual cells within the GI probe.
</description>
</method>
<method name="gi_probe_set_compress">
@@ -1539,6 +1569,7 @@
<argument index="1" name="enable" type="bool">
</argument>
<description>
+ Sets the compression setting for the GI probe data. Compressed data will take up less space but may look worse. Equivalent to [member GIProbe.compress].
</description>
</method>
<method name="gi_probe_set_dynamic_data">
@@ -1549,6 +1580,7 @@
<argument index="1" name="data" type="PoolIntArray">
</argument>
<description>
+ Sets the data to be used in the GI probe for lighting calculations. Normally this is created and called internally within the [GIProbe] node. You should not try to set this yourself.
</description>
</method>
<method name="gi_probe_set_dynamic_range">
@@ -1559,6 +1591,7 @@
<argument index="1" name="range" type="int">
</argument>
<description>
+ Sets the dynamic range of the GI probe. Dynamic range sets the limit for how bright lights can be. A smaller range captures greater detail but limits how bright lights can be. Equivalent to [member GIProbe.dynamic_range].
</description>
</method>
<method name="gi_probe_set_energy">
@@ -1569,6 +1602,7 @@
<argument index="1" name="energy" type="float">
</argument>
<description>
+ Sets the energy multiplier for this GI probe. A higher energy makes the indirect light from the GI probe brighter. Equivalent to [member GIProbe.energy].
</description>
</method>
<method name="gi_probe_set_interior">
@@ -1579,6 +1613,7 @@
<argument index="1" name="enable" type="bool">
</argument>
<description>
+ Sets the interior value of this GI probe. A GI probe set to interior does not include the sky when calculating lighting. Equivalent to [member GIProbe.interior].
</description>
</method>
<method name="gi_probe_set_normal_bias">
@@ -1589,6 +1624,7 @@
<argument index="1" name="bias" type="float">
</argument>
<description>
+ Sets the normal bias for this GI probe. Normal bias behaves similar to the other form of bias and may help reduce self-occlusion. Equivalent to [member GIProbe.normal_bias].
</description>
</method>
<method name="gi_probe_set_propagation">
@@ -1599,6 +1635,7 @@
<argument index="1" name="propagation" type="float">
</argument>
<description>
+ Sets the propagation of light within this GI probe. Equivalent to [member GIProbe.propagation].
</description>
</method>
<method name="gi_probe_set_to_cell_xform">
@@ -1609,6 +1646,7 @@
<argument index="1" name="xform" type="Transform">
</argument>
<description>
+ Sets the to cell [Transform] for this GI probe.
</description>
</method>
<method name="has_changed" qualifiers="const">
@@ -2021,7 +2059,7 @@
<argument index="1" name="scenario" type="RID">
</argument>
<description>
- Returns an array of object IDs intersecting with the provided AABB. Only visual 3D nodes are considered, such as [MeshInstance] or [DirectionalLight]. Use [method @GDScript.instance_from_id] to obtain the actual nodes. A scenario RID must be provided, which is available in the [World] you want to query.
+ Returns an array of object IDs intersecting with the provided AABB. Only visual 3D nodes are considered, such as [MeshInstance] or [DirectionalLight]. Use [method @GDScript.instance_from_id] to obtain the actual nodes. A scenario RID must be provided, which is available in the [World] you want to query. This forces an update for all resources queued to update.
[b]Warning:[/b] This function is primarily intended for editor usage. For in-game use cases, prefer physics collision.
</description>
</method>
@@ -2033,7 +2071,7 @@
<argument index="1" name="scenario" type="RID">
</argument>
<description>
- Returns an array of object IDs intersecting with the provided convex shape. Only visual 3D nodes are considered, such as [MeshInstance] or [DirectionalLight]. Use [method @GDScript.instance_from_id] to obtain the actual nodes. A scenario RID must be provided, which is available in the [World] you want to query.
+ Returns an array of object IDs intersecting with the provided convex shape. Only visual 3D nodes are considered, such as [MeshInstance] or [DirectionalLight]. Use [method @GDScript.instance_from_id] to obtain the actual nodes. A scenario RID must be provided, which is available in the [World] you want to query. This forces an update for all resources queued to update.
[b]Warning:[/b] This function is primarily intended for editor usage. For in-game use cases, prefer physics collision.
</description>
</method>
@@ -2047,7 +2085,7 @@
<argument index="2" name="scenario" type="RID">
</argument>
<description>
- Returns an array of object IDs intersecting with the provided 3D ray. Only visual 3D nodes are considered, such as [MeshInstance] or [DirectionalLight]. Use [method @GDScript.instance_from_id] to obtain the actual nodes. A scenario RID must be provided, which is available in the [World] you want to query.
+ Returns an array of object IDs intersecting with the provided 3D ray. Only visual 3D nodes are considered, such as [MeshInstance] or [DirectionalLight]. Use [method @GDScript.instance_from_id] to obtain the actual nodes. A scenario RID must be provided, which is available in the [World] you want to query. This forces an update for all resources queued to update.
[b]Warning:[/b] This function is primarily intended for editor usage. For in-game use cases, prefer physics collision.
</description>
</method>
@@ -2059,6 +2097,7 @@
<argument index="1" name="enable" type="bool">
</argument>
<description>
+ If [code]true[/code], this directional light will blend between shadow map splits resulting in a smoother transition between them. Equivalent to [member DirectionalLight.directional_shadow_blend_splits].
</description>
</method>
<method name="light_directional_set_shadow_depth_range_mode">
@@ -2069,6 +2108,7 @@
<argument index="1" name="range_mode" type="int" enum="VisualServer.LightDirectionalShadowDepthRangeMode">
</argument>
<description>
+ Sets the shadow depth range mode for this directional light. Equivalent to [member DirectionalLight.directional_shadow_depth_range]. See [enum LightDirectionalShadowDepthRangeMode] for options.
</description>
</method>
<method name="light_directional_set_shadow_mode">
@@ -2079,6 +2119,7 @@
<argument index="1" name="mode" type="int" enum="VisualServer.LightDirectionalShadowMode">
</argument>
<description>
+ Sets the shadow mode for this directional light. Equivalent to [member DirectionalLight.directional_shadow_mode]. See [enum LightDirectionalShadowMode] for options.
</description>
</method>
<method name="light_omni_set_shadow_detail">
@@ -2089,6 +2130,7 @@
<argument index="1" name="detail" type="int" enum="VisualServer.LightOmniShadowDetail">
</argument>
<description>
+ Sets whether to use vertical or horizontal detail for this omni light. This can be used to alleviate artifacts in the shadow map. Equivalent to [member OmniLight.omni_shadow_detail].
</description>
</method>
<method name="light_omni_set_shadow_mode">
@@ -2099,6 +2141,7 @@
<argument index="1" name="mode" type="int" enum="VisualServer.LightOmniShadowMode">
</argument>
<description>
+ Sets whether to use a dual paraboloid or a cubemap for the shadow map. Dual paraboloid is faster but may suffer from artifacts. Equivalent to [member OmniLight.omni_shadow_mode].
</description>
</method>
<method name="light_set_color">
@@ -2109,6 +2152,7 @@
<argument index="1" name="color" type="Color">
</argument>
<description>
+ Sets the color of the light. Equivalent to [member Light.light_color].
</description>
</method>
<method name="light_set_cull_mask">
@@ -2119,6 +2163,7 @@
<argument index="1" name="mask" type="int">
</argument>
<description>
+ Sets the cull mask for this Light. Lights only affect objects in the selected layers. Equivalent to [member Light.light_cull_mask].
</description>
</method>
<method name="light_set_negative">
@@ -2129,6 +2174,7 @@
<argument index="1" name="enable" type="bool">
</argument>
<description>
+ If [code]true[/code], light will subtract light instead of adding light. Equivalent to [member Light.light_negative].
</description>
</method>
<method name="light_set_param">
@@ -2141,6 +2187,7 @@
<argument index="2" name="value" type="float">
</argument>
<description>
+ Sets the specified light parameter. See [enum LightParam] for options. Equivalent to [method Light.set_param].
</description>
</method>
<method name="light_set_projector">
@@ -2151,6 +2198,7 @@
<argument index="1" name="texture" type="RID">
</argument>
<description>
+ Not implemented in Godot 3.x.
</description>
</method>
<method name="light_set_reverse_cull_face_mode">
@@ -2161,6 +2209,7 @@
<argument index="1" name="enabled" type="bool">
</argument>
<description>
+ If [code]true[/code], reverses the backface culling of the mesh. This can be useful when you have a flat mesh that has a light behind it. If you need to cast a shadow on both sides of the mesh, set the mesh to use double sided shadows with [method instance_geometry_set_cast_shadows_setting]. Equivalent to [member Light.shadow_reverse_cull_face].
</description>
</method>
<method name="light_set_shadow">
@@ -2171,6 +2220,7 @@
<argument index="1" name="enabled" type="bool">
</argument>
<description>
+ If [code]true[/code], light will cast shadows. Equivalent to [member Light.shadow_enabled].
</description>
</method>
<method name="light_set_shadow_color">
@@ -2181,6 +2231,7 @@
<argument index="1" name="color" type="Color">
</argument>
<description>
+ Sets the color of the shadow cast by the light. Equivalent to [member Light.shadow_color].
</description>
</method>
<method name="light_set_use_gi">
@@ -2333,6 +2384,7 @@
<argument index="1" name="parameter" type="String">
</argument>
<description>
+ Returns the default value for the param if available. Otherwise returns an empty [Variant].
</description>
</method>
<method name="material_get_shader" qualifiers="const">
@@ -2605,6 +2657,7 @@
<argument index="3" name="array_index" type="int">
</argument>
<description>
+ Function is unused in Godot 3.x.
</description>
</method>
<method name="mesh_surface_get_format_stride" qualifiers="const">
@@ -2617,6 +2670,7 @@
<argument index="2" name="index_len" type="int">
</argument>
<description>
+ Function is unused in Godot 3.x.
</description>
</method>
<method name="mesh_surface_get_index_array" qualifiers="const">
@@ -2688,6 +2742,7 @@
<argument index="3" name="data" type="PoolByteArray">
</argument>
<description>
+ 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.
</description>
</method>
<method name="multimesh_allocate">
@@ -2704,6 +2759,7 @@
<argument index="4" name="custom_data_format" type="int" enum="VisualServer.MultimeshCustomDataFormat" default="0">
</argument>
<description>
+ 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].
</description>
</method>
<method name="multimesh_create">
@@ -2721,6 +2777,7 @@
<argument index="0" name="multimesh" type="RID">
</argument>
<description>
+ Calculates and returns the axis-aligned bounding box that encloses all instances within the multimesh.
</description>
</method>
<method name="multimesh_get_instance_count" qualifiers="const">
@@ -2729,6 +2786,7 @@
<argument index="0" name="multimesh" type="RID">
</argument>
<description>
+ Returns the number of instances allocated for this multimesh.
</description>
</method>
<method name="multimesh_get_mesh" qualifiers="const">
@@ -2737,6 +2795,7 @@
<argument index="0" name="multimesh" type="RID">
</argument>
<description>
+ Returns the RID of the mesh that will be used in drawing this multimesh.
</description>
</method>
<method name="multimesh_get_visible_instances" qualifiers="const">
@@ -2745,6 +2804,7 @@
<argument index="0" name="multimesh" type="RID">
</argument>
<description>
+ Returns the number of visible instances for this multimesh.
</description>
</method>
<method name="multimesh_instance_get_color" qualifiers="const">
@@ -2755,6 +2815,7 @@
<argument index="1" name="index" type="int">
</argument>
<description>
+ Returns the color by which the specified instance will be modulated.
</description>
</method>
<method name="multimesh_instance_get_custom_data" qualifiers="const">
@@ -2765,6 +2826,7 @@
<argument index="1" name="index" type="int">
</argument>
<description>
+ Returns the custom data associated with the specified instance.
</description>
</method>
<method name="multimesh_instance_get_transform" qualifiers="const">
@@ -2775,6 +2837,7 @@
<argument index="1" name="index" type="int">
</argument>
<description>
+ Returns the [Transform] of the specified instance.
</description>
</method>
<method name="multimesh_instance_get_transform_2d" qualifiers="const">
@@ -2785,6 +2848,7 @@
<argument index="1" name="index" type="int">
</argument>
<description>
+ Returns the [Transform2D] of the specified instance. For use when the multimesh is set to use 2D transforms.
</description>
</method>
<method name="multimesh_instance_set_color">
@@ -2797,6 +2861,7 @@
<argument index="2" name="color" type="Color">
</argument>
<description>
+ Sets the color by which this instance will be modulated. Equivalent to [method MultiMesh.set_instance_color].
</description>
</method>
<method name="multimesh_instance_set_custom_data">
@@ -2809,6 +2874,7 @@
<argument index="2" name="custom_data" type="Color">
</argument>
<description>
+ 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].
</description>
</method>
<method name="multimesh_instance_set_transform">
@@ -2821,6 +2887,7 @@
<argument index="2" name="transform" type="Transform">
</argument>
<description>
+ Sets the [Transform] for this instance. Equivalent to [method MultiMesh.set_instance_transform].
</description>
</method>
<method name="multimesh_instance_set_transform_2d">
@@ -2833,6 +2900,7 @@
<argument index="2" name="transform" type="Transform2D">
</argument>
<description>
+ Sets the [Transform2D] for this instance. For use when multimesh is used in 2D. Equivalent to [method MultiMesh.set_instance_transform_2d].
</description>
</method>
<method name="multimesh_set_as_bulk_array">
@@ -2843,6 +2911,11 @@
<argument index="1" name="array" type="PoolRealArray">
</argument>
<description>
+ 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.
</description>
</method>
<method name="multimesh_set_mesh">
@@ -2853,6 +2926,7 @@
<argument index="1" name="mesh" type="RID">
</argument>
<description>
+ Sets the mesh to be drawn by the multimesh. Equivalent to [member MultiMesh.mesh].
</description>
</method>
<method name="multimesh_set_visible_instances">
@@ -2863,6 +2937,7 @@
<argument index="1" name="visible" type="int">
</argument>
<description>
+ 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].
</description>
</method>
<method name="omni_light_create">
@@ -2889,6 +2964,7 @@
<argument index="0" name="particles" type="RID">
</argument>
<description>
+ Calculates and returns the axis-aligned bounding box that contains all the particles. Equivalent to [method Particles.capture_aabb].
</description>
</method>
<method name="particles_get_emitting">
@@ -2897,6 +2973,7 @@
<argument index="0" name="particles" type="RID">
</argument>
<description>
+ Returns [code]true[/code] if particles are currently set to emitting.
</description>
</method>
<method name="particles_is_inactive">
@@ -2905,6 +2982,7 @@
<argument index="0" name="particles" type="RID">
</argument>
<description>
+ Returns [code]true[/code] if particles are not emitting and particles are set to inactive.
</description>
</method>
<method name="particles_request_process">
@@ -2913,6 +2991,7 @@
<argument index="0" name="particles" type="RID">
</argument>
<description>
+ Add particle system to list of particle systems that need to be updated. Update will take place on the next frame, or on the next call to [method instances_cull_aabb], [method instances_cull_convex], or [method instances_cull_ray].
</description>
</method>
<method name="particles_restart">
@@ -2921,6 +3000,7 @@
<argument index="0" name="particles" type="RID">
</argument>
<description>
+ Reset the particles on the next update. Equivalent to [method Particles.restart]
</description>
</method>
<method name="particles_set_amount">
@@ -2931,6 +3011,7 @@
<argument index="1" name="amount" type="int">
</argument>
<description>
+ Sets the number of particles to be drawn and allocates the memory for them. Equivalent to [member Particles.amount].
</description>
</method>
<method name="particles_set_custom_aabb">
@@ -2941,6 +3022,7 @@
<argument index="1" name="aabb" type="AABB">
</argument>
<description>
+ Sets a custom axis-aligned bounding box for the particle system. Equivalent to [member Particles.visibility_aabb].
</description>
</method>
<method name="particles_set_draw_order">
@@ -2951,6 +3033,7 @@
<argument index="1" name="order" type="int" enum="VisualServer.ParticlesDrawOrder">
</argument>
<description>
+ Sets the draw order of the particles to one of the named enums from [enum ParticlesDrawOrder]. See [enum ParticlesDrawOrder] for options. Equivalent to [member Particles.draw_order].
</description>
</method>
<method name="particles_set_draw_pass_mesh">
@@ -2963,6 +3046,7 @@
<argument index="2" name="mesh" type="RID">
</argument>
<description>
+ Sets the mesh to be used for the specified draw pass. Equivalent to [member Particles.draw_pass_1], [member Particles.draw_pass_2], [member Particles.draw_pass_3], and [member Particles.draw_pass_4].
</description>
</method>
<method name="particles_set_draw_passes">
@@ -2973,6 +3057,7 @@
<argument index="1" name="count" type="int">
</argument>
<description>
+ Sets the number of draw passes to use. Equivalent to [member Particles.draw_passes].
</description>
</method>
<method name="particles_set_emission_transform">
@@ -2983,6 +3068,7 @@
<argument index="1" name="transform" type="Transform">
</argument>
<description>
+ Sets the [Transform] that will be used by the particles when they first emit.
</description>
</method>
<method name="particles_set_emitting">
@@ -2993,6 +3079,7 @@
<argument index="1" name="emitting" type="bool">
</argument>
<description>
+ If [code]true[/code], particles will emit over time. Setting to false does not reset the particles, but only stops their emission. Equivalent to [member Particles.emitting].
</description>
</method>
<method name="particles_set_explosiveness_ratio">
@@ -3003,6 +3090,7 @@
<argument index="1" name="ratio" type="float">
</argument>
<description>
+ Sets the explosiveness ratio. Equivalent to [member Particles.explosiveness].
</description>
</method>
<method name="particles_set_fixed_fps">
@@ -3013,6 +3101,7 @@
<argument index="1" name="fps" type="int">
</argument>
<description>
+ Sets the frame rate that the particle system rendering will be fixed to. Equivalent to [member Particles.fixed_fps].
</description>
</method>
<method name="particles_set_fractional_delta">
@@ -3023,6 +3112,7 @@
<argument index="1" name="enable" type="bool">
</argument>
<description>
+ If [code]true[/code], uses fractional delta which smooths the movement of the particles. Equivalent to [member Particles.fract_delta].
</description>
</method>
<method name="particles_set_lifetime">
@@ -3033,6 +3123,7 @@
<argument index="1" name="lifetime" type="float">
</argument>
<description>
+ Sets the lifetime of each particle in the system. Equivalent to [member Particles.lifetime].
</description>
</method>
<method name="particles_set_one_shot">
@@ -3043,6 +3134,7 @@
<argument index="1" name="one_shot" type="bool">
</argument>
<description>
+ If [code]true[/code], particles will emit once and then stop. Equivalent to [member Particles.one_shot].
</description>
</method>
<method name="particles_set_pre_process_time">
@@ -3053,6 +3145,7 @@
<argument index="1" name="time" type="float">
</argument>
<description>
+ Sets the preprocess time for the particles animation. This lets you delay starting an animation until after the particles have begun emitting. Equivalent to [member Particles.preprocess].
</description>
</method>
<method name="particles_set_process_material">
@@ -3063,6 +3156,7 @@
<argument index="1" name="material" type="RID">
</argument>
<description>
+ Sets the material for processing the particles. Note: this is not the material used to draw the materials. Equivalent to [member Particles.process_material].
</description>
</method>
<method name="particles_set_randomness_ratio">
@@ -3073,6 +3167,7 @@
<argument index="1" name="ratio" type="float">
</argument>
<description>
+ Sets the emission randomness ratio. This randomizes the emission of particles within their phase. Equivalent to [member Particles.randomness].
</description>
</method>
<method name="particles_set_speed_scale">
@@ -3083,6 +3178,7 @@
<argument index="1" name="scale" type="float">
</argument>
<description>
+ Sets the speed scale of the particle system. Equivalent to [member Particles.speed_scale].
</description>
</method>
<method name="particles_set_use_local_coordinates">
@@ -3093,6 +3189,7 @@
<argument index="1" name="enable" type="bool">
</argument>
<description>
+ If [code]true[/code], particles use local coordinates. If [code]false[/code] they use global coordinates. Equivalent to [member Particles.local_coords].
</description>
</method>
<method name="reflection_probe_create">
@@ -3255,6 +3352,7 @@
<argument index="1" name="debug_mode" type="int" enum="VisualServer.ScenarioDebugMode">
</argument>
<description>
+ Sets the [enum ScenarioDebugMode] for this scenario. See [enum ScenarioDebugMode] for options.
</description>
</method>
<method name="scenario_set_environment">
@@ -3265,6 +3363,7 @@
<argument index="1" name="environment" type="RID">
</argument>
<description>
+ Sets the environment that will be used with this scenario.
</description>
</method>
<method name="scenario_set_fallback_environment">
@@ -3275,6 +3374,7 @@
<argument index="1" name="environment" type="RID">
</argument>
<description>
+ Sets the fallback environment to be used by this scenario. The fallback environment is used if no environment is set. Internally, this is used by the editor to provide a default environment.
</description>
</method>
<method name="scenario_set_reflection_atlas_size">
@@ -3287,6 +3387,7 @@
<argument index="2" name="subdiv" type="int">
</argument>
<description>
+ Sets the size of the reflection atlas shared by all reflection probes in this scenario.
</description>
</method>
<method name="set_boot_image">
@@ -3310,6 +3411,7 @@
<argument index="0" name="generate" type="bool">
</argument>
<description>
+ If [code]true[/code], the engine will generate wireframes for use with the wireframe debug mode.
</description>
</method>
<method name="set_default_clear_color">
@@ -3318,6 +3420,7 @@
<argument index="0" name="color" type="Color">
</argument>
<description>
+ Sets the default clear color which is used when a specific clear color has not been selected.
</description>
</method>
<method name="shader_create">
@@ -3487,6 +3590,7 @@
<return type="void">
</return>
<description>
+ Not implemented in Godot 3.x.
</description>
</method>
<method name="texture_allocate">
@@ -3507,6 +3611,7 @@
<argument index="6" name="flags" type="int" default="7">
</argument>
<description>
+ Allocates the GPU memory for the texture.
</description>
</method>
<method name="texture_bind">
@@ -3563,6 +3668,7 @@
<argument index="0" name="texture" type="RID">
</argument>
<description>
+ Returns the depth of the texture.
</description>
</method>
<method name="texture_get_flags" qualifiers="const">
@@ -3616,6 +3722,7 @@
<argument index="0" name="texture" type="RID">
</argument>
<description>
+ Returns the type of the texture, can be any of the [enum TextureType].
</description>
</method>
<method name="texture_get_width" qualifiers="const">
@@ -3664,6 +3771,7 @@
<argument index="9" name="layer" type="int" default="0">
</argument>
<description>
+ 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.
</description>
</method>
<method name="texture_set_flags">
@@ -3709,6 +3817,7 @@
<argument index="3" name="depth" type="int">
</argument>
<description>
+ Resizes the texture to the specified dimensions.
</description>
</method>
<method name="textures_keep_original">
@@ -4461,10 +4570,13 @@
The instance is a light.
</constant>
<constant name="INSTANCE_REFLECTION_PROBE" value="6" enum="InstanceType">
+ The instance is a reflection probe.
</constant>
<constant name="INSTANCE_GI_PROBE" value="7" enum="InstanceType">
+ The instance is a GI probe.
</constant>
<constant name="INSTANCE_LIGHTMAP_CAPTURE" value="8" enum="InstanceType">
+ The instance is a lightmap capture.
</constant>
<constant name="INSTANCE_MAX" value="9" enum="InstanceType">
Represents the size of the [enum InstanceType] enum.
@@ -4570,20 +4682,28 @@
<constant name="FEATURE_MULTITHREADED" value="1" enum="Features">
</constant>
<constant name="MULTIMESH_TRANSFORM_2D" value="0" enum="MultimeshTransformFormat">
+ Use [Transform2D] to store MultiMesh transform.
</constant>
<constant name="MULTIMESH_TRANSFORM_3D" value="1" enum="MultimeshTransformFormat">
+ Use [Transform] to store MultiMesh transform.
</constant>
<constant name="MULTIMESH_COLOR_NONE" value="0" enum="MultimeshColorFormat">
+ MultiMesh does not use per-instance color.
</constant>
<constant name="MULTIMESH_COLOR_8BIT" value="1" enum="MultimeshColorFormat">
+ MultiMesh color uses 8 bits per component. This packs the color into a single float.
</constant>
<constant name="MULTIMESH_COLOR_FLOAT" value="2" enum="MultimeshColorFormat">
+ MultiMesh color uses a float per channel.
</constant>
<constant name="MULTIMESH_CUSTOM_DATA_NONE" value="0" enum="MultimeshCustomDataFormat">
+ MultiMesh does not use custom data.
</constant>
<constant name="MULTIMESH_CUSTOM_DATA_8BIT" value="1" enum="MultimeshCustomDataFormat">
+ MultiMesh custom data uses 8 bits per component. This packs the 4-component custom data into a single float.
</constant>
<constant name="MULTIMESH_CUSTOM_DATA_FLOAT" value="2" enum="MultimeshCustomDataFormat">
+ MultiMesh custom data uses a float per component.
</constant>
<constant name="REFLECTION_PROBE_UPDATE_ONCE" value="0" enum="ReflectionProbeUpdateMode">
</constant>
diff --git a/drivers/dummy/rasterizer_dummy.h b/drivers/dummy/rasterizer_dummy.h
index 167159c7e9..00758a73a4 100644
--- a/drivers/dummy/rasterizer_dummy.h
+++ b/drivers/dummy/rasterizer_dummy.h
@@ -742,6 +742,8 @@ public:
int get_captured_render_info(VS::RenderInfo p_info) { return 0; }
int get_render_info(VS::RenderInfo p_info) { return 0; }
+ String get_video_adapter_name() const { return String(); }
+ String get_video_adapter_vendor() const { return String(); }
static RasterizerStorage *base_singleton;
diff --git a/drivers/gles2/rasterizer_gles2.cpp b/drivers/gles2/rasterizer_gles2.cpp
index cac124ff5f..c4e9541a36 100644
--- a/drivers/gles2/rasterizer_gles2.cpp
+++ b/drivers/gles2/rasterizer_gles2.cpp
@@ -263,8 +263,7 @@ void RasterizerGLES2::initialize() {
#endif // GLES_OVER_GL
#endif // CAN_DEBUG
- const GLubyte *renderer = glGetString(GL_RENDERER);
- print_line("OpenGL ES 2.0 Renderer: " + String((const char *)renderer));
+ print_line("OpenGL ES 2.0 Renderer: " + VisualServer::get_singleton()->get_video_adapter_name());
storage->initialize();
canvas->initialize();
scene->initialize();
diff --git a/drivers/gles2/rasterizer_storage_gles2.cpp b/drivers/gles2/rasterizer_storage_gles2.cpp
index 94a7d4e1b5..bb087a7f47 100644
--- a/drivers/gles2/rasterizer_storage_gles2.cpp
+++ b/drivers/gles2/rasterizer_storage_gles2.cpp
@@ -5766,6 +5766,16 @@ int RasterizerStorageGLES2::get_render_info(VS::RenderInfo p_info) {
}
}
+String RasterizerStorageGLES2::get_video_adapter_name() const {
+
+ return (const char *)glGetString(GL_RENDERER);
+}
+
+String RasterizerStorageGLES2::get_video_adapter_vendor() const {
+
+ return (const char *)glGetString(GL_VENDOR);
+}
+
void RasterizerStorageGLES2::initialize() {
RasterizerStorageGLES2::system_fbo = 0;
diff --git a/drivers/gles2/rasterizer_storage_gles2.h b/drivers/gles2/rasterizer_storage_gles2.h
index 62926ce713..83697b9872 100644
--- a/drivers/gles2/rasterizer_storage_gles2.h
+++ b/drivers/gles2/rasterizer_storage_gles2.h
@@ -1307,6 +1307,8 @@ public:
virtual int get_captured_render_info(VS::RenderInfo p_info);
virtual int get_render_info(VS::RenderInfo p_info);
+ virtual String get_video_adapter_name() const;
+ virtual String get_video_adapter_vendor() const;
RasterizerStorageGLES2();
};
diff --git a/drivers/gles3/rasterizer_gles3.cpp b/drivers/gles3/rasterizer_gles3.cpp
index d428fe33ee..ef2c318807 100644
--- a/drivers/gles3/rasterizer_gles3.cpp
+++ b/drivers/gles3/rasterizer_gles3.cpp
@@ -186,8 +186,7 @@ void RasterizerGLES3::initialize() {
}
*/
- const GLubyte *renderer = glGetString(GL_RENDERER);
- print_line("OpenGL ES 3.0 Renderer: " + String((const char *)renderer));
+ print_line("OpenGL ES 3.0 Renderer: " + VisualServer::get_singleton()->get_video_adapter_name());
storage->initialize();
canvas->initialize();
scene->initialize();
diff --git a/drivers/gles3/rasterizer_storage_gles3.cpp b/drivers/gles3/rasterizer_storage_gles3.cpp
index bf742f4d25..c02f17ab95 100644
--- a/drivers/gles3/rasterizer_storage_gles3.cpp
+++ b/drivers/gles3/rasterizer_storage_gles3.cpp
@@ -8095,6 +8095,16 @@ int RasterizerStorageGLES3::get_render_info(VS::RenderInfo p_info) {
}
}
+String RasterizerStorageGLES3::get_video_adapter_name() const {
+
+ return (const char *)glGetString(GL_RENDERER);
+}
+
+String RasterizerStorageGLES3::get_video_adapter_vendor() const {
+
+ return (const char *)glGetString(GL_VENDOR);
+}
+
void RasterizerStorageGLES3::initialize() {
RasterizerStorageGLES3::system_fbo = 0;
diff --git a/drivers/gles3/rasterizer_storage_gles3.h b/drivers/gles3/rasterizer_storage_gles3.h
index 833cdb4a94..bd853852fe 100644
--- a/drivers/gles3/rasterizer_storage_gles3.h
+++ b/drivers/gles3/rasterizer_storage_gles3.h
@@ -1467,6 +1467,8 @@ public:
virtual int get_captured_render_info(VS::RenderInfo p_info);
virtual int get_render_info(VS::RenderInfo p_info);
+ virtual String get_video_adapter_name() const;
+ virtual String get_video_adapter_vendor() const;
RasterizerStorageGLES3();
};
diff --git a/scene/3d/physics_body.cpp b/scene/3d/physics_body.cpp
index 44dc3d0c26..c2860c25d8 100644
--- a/scene/3d/physics_body.cpp
+++ b/scene/3d/physics_body.cpp
@@ -1151,17 +1151,8 @@ Vector3 KinematicBody::move_and_slide(const Vector3 &p_linear_velocity, const Ve
}
}
- Vector3 current_floor_velocity = floor_velocity;
- if (on_floor && on_floor_body.is_valid()) {
- //this approach makes sure there is less delay between the actual body velocity and the one we saved
- PhysicsDirectBodyState *bs = PhysicsServer::get_singleton()->body_get_direct_state(on_floor_body);
- if (bs) {
- current_floor_velocity = bs->get_linear_velocity();
- }
- }
-
// Hack in order to work with calling from _process as well as from _physics_process; calling from thread is risky
- Vector3 motion = (current_floor_velocity + body_velocity) * (Engine::get_singleton()->is_in_physics_frame() ? get_physics_process_delta_time() : get_process_delta_time());
+ Vector3 motion = (floor_velocity + body_velocity) * (Engine::get_singleton()->is_in_physics_frame() ? get_physics_process_delta_time() : get_process_delta_time());
on_floor = false;
on_floor_body = RID();
diff --git a/scene/gui/label.cpp b/scene/gui/label.cpp
index 11172ac7a9..fa795361a8 100644
--- a/scene/gui/label.cpp
+++ b/scene/gui/label.cpp
@@ -313,8 +313,8 @@ Size2 Label::get_minimum_size() const {
int Label::get_longest_line_width() const {
Ref<Font> font = get_font("font");
- int max_line_width = 0;
- int line_width = 0;
+ real_t max_line_width = 0;
+ real_t line_width = 0;
for (int i = 0; i < xl_text.size(); i++) {
@@ -332,8 +332,7 @@ int Label::get_longest_line_width() const {
}
} else {
- // ceiling to ensure autowrapping does not cut text
- int char_width = Math::ceil(font->get_char_size(current, xl_text[i + 1]).width);
+ real_t char_width = font->get_char_size(current, xl_text[i + 1]).width;
line_width += char_width;
}
}
@@ -341,7 +340,8 @@ int Label::get_longest_line_width() const {
if (line_width > max_line_width)
max_line_width = line_width;
- return max_line_width;
+ // ceiling to ensure autowrapping does not cut text
+ return Math::ceil(max_line_width);
}
int Label::get_line_count() const {
@@ -388,7 +388,7 @@ void Label::regenerate_word_cache() {
Ref<Font> font = get_font("font");
- int current_word_size = 0;
+ real_t current_word_size = 0;
int word_pos = 0;
int line_width = 0;
int space_count = 0;
@@ -413,7 +413,7 @@ void Label::regenerate_word_cache() {
bool separatable = (current >= 0x2E08 && current <= 0xFAFF) || (current >= 0xFE30 && current <= 0xFE4F);
//current>=33 && (current < 65||current >90) && (current<97||current>122) && (current<48||current>57);
bool insert_newline = false;
- int char_width = 0;
+ real_t char_width = 0;
if (current < 33) {
@@ -455,9 +455,9 @@ void Label::regenerate_word_cache() {
word_pos = i;
}
// ceiling to ensure autowrapping does not cut text
- char_width = Math::ceil(font->get_char_size(current, xl_text[i + 1]).width);
+ char_width = font->get_char_size(current, xl_text[i + 1]).width;
current_word_size += char_width;
- line_width += char_width;
+ line_width += Math::ceil(char_width);
total_char_cache++;
// allow autowrap to cut words when they exceed line width
diff --git a/servers/visual/rasterizer.h b/servers/visual/rasterizer.h
index 74741a946c..0008b809b7 100644
--- a/servers/visual/rasterizer.h
+++ b/servers/visual/rasterizer.h
@@ -588,6 +588,8 @@ public:
virtual int get_captured_render_info(VS::RenderInfo p_info) = 0;
virtual int get_render_info(VS::RenderInfo p_info) = 0;
+ virtual String get_video_adapter_name() const = 0;
+ virtual String get_video_adapter_vendor() const = 0;
static RasterizerStorage *base_singleton;
RasterizerStorage();
diff --git a/servers/visual/visual_server_raster.cpp b/servers/visual/visual_server_raster.cpp
index 4d680667cb..23736b5e63 100644
--- a/servers/visual/visual_server_raster.cpp
+++ b/servers/visual/visual_server_raster.cpp
@@ -153,6 +153,16 @@ int VisualServerRaster::get_render_info(RenderInfo p_info) {
return VSG::storage->get_render_info(p_info);
}
+String VisualServerRaster::get_video_adapter_name() const {
+
+ return VSG::storage->get_video_adapter_name();
+}
+
+String VisualServerRaster::get_video_adapter_vendor() const {
+
+ return VSG::storage->get_video_adapter_vendor();
+}
+
/* TESTING */
void VisualServerRaster::set_boot_image(const Ref<Image> &p_image, const Color &p_color, bool p_scale, bool p_use_filter) {
diff --git a/servers/visual/visual_server_raster.h b/servers/visual/visual_server_raster.h
index 54c46b1812..1a1e86833e 100644
--- a/servers/visual/visual_server_raster.h
+++ b/servers/visual/visual_server_raster.h
@@ -680,6 +680,8 @@ public:
/* STATUS INFORMATION */
virtual int get_render_info(RenderInfo p_info);
+ virtual String get_video_adapter_name() const;
+ virtual String get_video_adapter_vendor() const;
virtual RID get_test_cube();
diff --git a/servers/visual/visual_server_wrap_mt.h b/servers/visual/visual_server_wrap_mt.h
index f5875f4fad..9535c7f50d 100644
--- a/servers/visual/visual_server_wrap_mt.h
+++ b/servers/visual/visual_server_wrap_mt.h
@@ -602,6 +602,14 @@ public:
return visual_server->get_render_info(p_info);
}
+ virtual String get_video_adapter_name() const {
+ return visual_server->get_video_adapter_name();
+ }
+
+ virtual String get_video_adapter_vendor() const {
+ return visual_server->get_video_adapter_vendor();
+ }
+
FUNC4(set_boot_image, const Ref<Image> &, const Color &, bool, bool)
FUNC1(set_default_clear_color, const Color &)
diff --git a/servers/visual_server.cpp b/servers/visual_server.cpp
index 1f72848b15..b9b492e758 100644
--- a/servers/visual_server.cpp
+++ b/servers/visual_server.cpp
@@ -2032,6 +2032,8 @@ void VisualServer::_bind_methods() {
ClassDB::bind_method(D_METHOD("init"), &VisualServer::init);
ClassDB::bind_method(D_METHOD("finish"), &VisualServer::finish);
ClassDB::bind_method(D_METHOD("get_render_info", "info"), &VisualServer::get_render_info);
+ ClassDB::bind_method(D_METHOD("get_video_adapter_name"), &VisualServer::get_video_adapter_name);
+ ClassDB::bind_method(D_METHOD("get_video_adapter_vendor"), &VisualServer::get_video_adapter_vendor);
#ifndef _3D_DISABLED
ClassDB::bind_method(D_METHOD("make_sphere_mesh", "latitudes", "longitudes", "radius"), &VisualServer::make_sphere_mesh);
diff --git a/servers/visual_server.h b/servers/visual_server.h
index 9aeee731b3..33a9e8d72b 100644
--- a/servers/visual_server.h
+++ b/servers/visual_server.h
@@ -1017,6 +1017,8 @@ public:
};
virtual int get_render_info(RenderInfo p_info) = 0;
+ virtual String get_video_adapter_name() const = 0;
+ virtual String get_video_adapter_vendor() const = 0;
/* Materials for 2D on 3D */