Consolidate benchmarks and port to new API

This commit is contained in:
myaaaaaaaaa
2023-02-04 22:14:35 -05:00
parent 0fedc97bb1
commit 640199c78d
41 changed files with 306 additions and 643 deletions

View File

@@ -0,0 +1,57 @@
extends Benchmark
const ITERATIONS = 80_000
# Benchmark various array types by:
# 1) Inserting ITERATIONS elements from the back
# 2) Updating all ITERATIONS elements
# 3) Popping all ITERATIONS elements from the front (non-constant complexity)
func benchmark_typed_int_array():
var array: Array[int] = []
for i in ITERATIONS:
array.push_back(i)
for i in ITERATIONS:
array[i] = 0
for i in ITERATIONS:
array.remove_at(0)
func benchmark_untyped_int_array():
var array = []
for i in ITERATIONS:
array.push_back(i)
for i in ITERATIONS:
array[i] = 0
for i in ITERATIONS:
array.remove_at(0)
func benchmark_packed_string_array():
var array := PackedStringArray()
for i in ITERATIONS:
array.push_back(str("Godot ", i))
for i in ITERATIONS:
array[i] = ""
for i in ITERATIONS:
array.remove_at(0)
func benchmark_typed_string_array():
var array: Array[String] = []
for i in ITERATIONS:
array.push_back(str("Godot ", i))
for i in ITERATIONS:
array[i] = ""
for i in ITERATIONS:
array.remove_at(0)
func benchmark_untyped_string_array():
var array = []
for i in ITERATIONS:
array.push_back(str("Godot ", i))
for i in ITERATIONS:
array[i] = ""
for i in ITERATIONS:
array.remove_at(0)

View File

@@ -1,20 +0,0 @@
extends Node
const ITERATIONS = 80_000
func _ready() -> void:
var array := PackedStringArray()
for i in ITERATIONS:
# Insert elements.
array.push_back(str("Godot ", i))
for i in ITERATIONS:
# Update elements in order.
array[i] = ""
for _i in ITERATIONS:
# Delete elements from the front (non-constant complexity).
array.remove_at(0)
Manager.end_test()

View File

@@ -1,13 +0,0 @@
[gd_scene load_steps=3 format=3 uid="uid://dyo16udaurxui"]
[ext_resource type="Script" path="res://benchmark.gd" id="1"]
[ext_resource type="Script" path="res://benchmarks/gdscript/packed_string_array.gd" id="2"]
[node name="PackedStringArray" type="Node"]
script = ExtResource("2")
[node name="Benchmark" type="Label" parent="."]
offset_right = 40.0
offset_bottom = 14.0
script = ExtResource("1")
time_limit = false

View File

@@ -1,20 +0,0 @@
extends Node
const ITERATIONS = 80_000
func _ready():
var array: Array[int] = []
for i in ITERATIONS:
# Insert elements.
array.push_back(i)
for i in ITERATIONS:
# Update elements in order.
array[i] = 0
for i in ITERATIONS:
# Delete elements from the front (non-constant complexity).
array.pop_front()
Manager.end_test()

View File

@@ -1,13 +0,0 @@
[gd_scene load_steps=3 format=3 uid="uid://7qhexqvebn6s"]
[ext_resource type="Script" path="res://benchmark.gd" id="1"]
[ext_resource type="Script" path="res://benchmarks/gdscript/typed_int_array.gd" id="2"]
[node name="TypedIntArray" type="Node"]
script = ExtResource("2")
[node name="Benchmark" type="Label" parent="."]
offset_right = 40.0
offset_bottom = 14.0
script = ExtResource("1")
time_limit = false

View File

@@ -1,20 +0,0 @@
extends Node
const ITERATIONS = 80_000
func _ready():
var array: Array[String] = []
for i in ITERATIONS:
# Insert elements.
array.push_back(str("Godot ", i))
for i in ITERATIONS:
# Update elements in order.
array[i] = ""
for _i in ITERATIONS:
# Delete elements from the front (non-constant complexity).
array.pop_front()
Manager.end_test()

View File

@@ -1,13 +0,0 @@
[gd_scene load_steps=3 format=3 uid="uid://bcrdxqm7xedqd"]
[ext_resource type="Script" path="res://benchmark.gd" id="1"]
[ext_resource type="Script" path="res://benchmarks/gdscript/typed_string_array.gd" id="2"]
[node name="TypedStringArray" type="Node"]
script = ExtResource("2")
[node name="Benchmark" type="Label" parent="."]
offset_right = 40.0
offset_bottom = 14.0
script = ExtResource("1")
time_limit = false

View File

@@ -1,20 +0,0 @@
extends Node
const ITERATIONS = 80_000
func _ready():
var array = []
for i in ITERATIONS:
# Insert elements.
array.push_back(i)
for i in 50_000:
# Update elements in order.
array[i] = 0
for _i in ITERATIONS:
# Delete elements from the front (non-constant complexity).
array.pop_front()
Manager.end_test()

View File

@@ -1,13 +0,0 @@
[gd_scene load_steps=3 format=3 uid="uid://b88jxheg5d2dp"]
[ext_resource type="Script" path="res://benchmark.gd" id="1"]
[ext_resource type="Script" path="res://benchmarks/gdscript/untyped_int_array.gd" id="2"]
[node name="UntypedIntArray" type="Node"]
script = ExtResource("2")
[node name="Benchmark" type="Label" parent="."]
offset_right = 40.0
offset_bottom = 14.0
script = ExtResource("1")
time_limit = false

View File

@@ -1,20 +0,0 @@
extends Node
const ITERATIONS = 80_000
func _ready():
var array = []
for i in ITERATIONS:
# Insert elements.
array.push_back(str("Godot ", i))
for i in ITERATIONS:
# Update elements in order.
array[i] = ""
for _i in ITERATIONS:
# Delete elements from the front (non-constant complexity).
array.pop_front()
Manager.end_test()

View File

@@ -1,13 +0,0 @@
[gd_scene load_steps=3 format=3 uid="uid://bqtiknifdkwms"]
[ext_resource type="Script" path="res://benchmark.gd" id="1"]
[ext_resource type="Script" path="res://benchmarks/gdscript/untyped_string_array.gd" id="2"]
[node name="UntypedStringArray" type="Node"]
script = ExtResource("2")
[node name="Benchmark" type="Label" parent="."]
offset_right = 40.0
offset_bottom = 14.0
script = ExtResource("1")
time_limit = false

View File

@@ -0,0 +1,178 @@
extends Benchmark
const NUMBER_OF_OBJECTS = 10_000
const NUMBER_OF_OMNI_LIGHTS = 100
func _init() -> void:
test_render_cpu = true
test_render_gpu = true
class TestScene extends Node3D:
var objects := []
var object_xforms := []
var lights := []
var light_instances := []
var light_instance_xforms := []
var meshes := []
var cam := Camera3D.new()
var dynamic_instances
var dynamic_instances_xforms
var time_accum := 0.0
var unshaded := false
var use_shadows := false
var fill_with_objects := false
var fill_with_omni_lights := false
func _init():
cam.far = 200.0
cam.transform.origin.z = 0.873609
add_child(cam)
func _ready():
cam.make_current()
if fill_with_objects:
do_fill_with_objects()
if fill_with_omni_lights:
do_fill_with_omni_lights()
func do_fill_with_objects() -> void:
meshes.append(BoxMesh.new())
meshes.append(SphereMesh.new())
meshes.append(CapsuleMesh.new())
meshes.append(CylinderMesh.new())
meshes.append(PrismMesh.new())
for mesh in meshes:
var shader := Shader.new()
var shader_string := """
shader_type spatial;
%s
void fragment() {
ALBEDO = vec3(%s, %s, %s);
}
""" % [
"render_mode unshaded;\n" if unshaded else "",
str(randf()).pad_decimals(3),
str(randf()).pad_decimals(3),
str(randf()).pad_decimals(3),
]
shader.code = shader_string
var material := ShaderMaterial.new()
material.shader = shader
mesh.material = material
var zn := 2
var zextent := cam.far - zn
var ss := get_tree().root.size
var from := cam.project_position(Vector2(0, ss.y), zextent)
var extents := cam.project_position(Vector2(ss.x, 0), zextent) - from
for i in NUMBER_OF_OBJECTS:
var xf := Transform3D()
xf.origin = Vector3(from.x + randf() * extents.x,from.y + randf() * extents.y, - (zn + zextent * randf()))
var ins := RenderingServer.instance_create()
RenderingServer.instance_set_base(ins, meshes[i % meshes.size()].get_rid())
RenderingServer.instance_set_scenario(ins, get_world_3d().scenario)
RenderingServer.instance_set_transform(ins, xf)
objects.append(ins)
object_xforms.append(xf)
func do_fill_with_omni_lights() -> void:
var zn := 2
var zextent := cam.far - zn
var ss := get_tree().root.size
var from := cam.project_position(Vector2(0,ss.y),zextent)
var extents := cam.project_position(Vector2(ss.x,0),zextent) - from
var light := RenderingServer.omni_light_create()
RenderingServer.light_set_param(light, RenderingServer.LIGHT_PARAM_RANGE,10)
RenderingServer.light_set_shadow(light, use_shadows)
# Dual parabolid shadows are faster than cubemap shadows.
RenderingServer.light_omni_set_shadow_mode(light, RenderingServer.LIGHT_OMNI_SHADOW_DUAL_PARABOLOID)
lights.append(light)
for i in NUMBER_OF_OMNI_LIGHTS:
var xf := Transform3D()
xf.origin = Vector3(from.x + randf() * extents.x,from.y + randf() * extents.y, - (zn + zextent * randf()))
var ins := RenderingServer.instance_create()
RenderingServer.instance_set_base(ins, light)
RenderingServer.instance_set_scenario(ins,get_world_3d().scenario)
RenderingServer.instance_set_transform(ins,xf)
light_instances.append(ins)
light_instance_xforms.append(xf)
func _exit_tree() -> void:
for object in objects:
RenderingServer.free_rid(object)
for light in lights:
RenderingServer.free_rid(light)
for light_instance in light_instances:
RenderingServer.free_rid(light_instance)
meshes.clear()
func _process(delta: float) -> void:
if not (dynamic_instances and dynamic_instances_xforms):
return
time_accum += delta * 4.0
for i in dynamic_instances.size():
var xf = dynamic_instances_xforms[i]
var angle = i * PI * 2.0 / dynamic_instances.size()
xf.origin += Vector3(sin(angle), cos(angle), 0.0) * sin(time_accum) * 2.0
RenderingServer.instance_set_transform(dynamic_instances[i], xf)
func benchmark_basic_cull():
var rv := TestScene.new()
rv.fill_with_objects = true
rv.unshaded = true
return rv
func benchmark_directional_light_cull():
var rv := TestScene.new()
rv.fill_with_objects = true
var light := DirectionalLight3D.new()
light.shadow_enabled = true
light.rotation = Vector3(-0.6, 0.3, -0.3)
light.position.x = 2
rv.add_child(light)
return rv
func benchmark_dynamic_cull():
var rv := TestScene.new()
rv.fill_with_objects = true
rv.dynamic_instances = rv.objects
rv.dynamic_instances_xforms = rv.object_xforms
return rv
func benchmark_dynamic_light_cull():
var rv := TestScene.new()
rv.fill_with_objects = true
rv.fill_with_omni_lights = true
rv.dynamic_instances = rv.light_instances
rv.dynamic_instances_xforms = rv.light_instance_xforms
return rv
func benchmark_dynamic_light_cull_with_shadows():
var rv := TestScene.new()
rv.fill_with_objects = true
rv.fill_with_omni_lights = true
rv.use_shadows = true
rv.dynamic_instances = rv.light_instances
rv.dynamic_instances_xforms = rv.light_instance_xforms
return rv
func benchmark_static_light_cull():
var rv := TestScene.new()
rv.fill_with_objects = true
rv.fill_with_omni_lights = true
return rv

View File

@@ -1,7 +0,0 @@
extends "res://benchmarks/rendering/culling/culling_base.gd"
const NUMBER_OF_OBJECTS = 10_000
func _ready() -> void:
fill_with_objects(NUMBER_OF_OBJECTS, true)

View File

@@ -1,19 +0,0 @@
[gd_scene load_steps=3 format=3 uid="uid://u718n0qh57cd"]
[ext_resource type="Script" path="res://benchmarks/rendering/culling/basic_cull.gd" id="1"]
[ext_resource type="Script" path="res://benchmark.gd" id="2"]
[node name="Node3D" type="Node3D"]
script = ExtResource("1")
[node name="Benchmark" type="Label" parent="."]
offset_right = 40.0
offset_bottom = 40.0
script = ExtResource("2")
test_render_cpu = true
test_render_gpu = true
[node name="Camera3D" type="Camera3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.873609)
current = true
far = 200.0

View File

@@ -1,93 +0,0 @@
extends Node3D
var objects := []
var object_xforms := []
var lights := []
var light_instances := []
var light_instance_xforms := []
var meshes := []
func fill_with_objects(object_amount: int, unshaded: bool = false) -> void:
meshes.append(BoxMesh.new())
meshes.append(SphereMesh.new())
meshes.append(CapsuleMesh.new())
meshes.append(CylinderMesh.new())
meshes.append(PrismMesh.new())
for mesh in meshes:
var shader := Shader.new()
var shader_string := """
shader_type spatial;
%s
void fragment() {
ALBEDO = vec3(%s, %s, %s);
}
""" % [
"render_mode unshaded;\n" if unshaded else "",
str(randf()).pad_decimals(3),
str(randf()).pad_decimals(3),
str(randf()).pad_decimals(3),
]
shader.code = shader_string
var material := ShaderMaterial.new()
material.shader = shader
mesh.material = material
var cam := $Camera3D as Camera3D
var zn := 2
var zextent := cam.far - zn
var ss := get_tree().root.size
var from := cam.project_position(Vector2(0, ss.y), zextent)
var extents := cam.project_position(Vector2(ss.x, 0), zextent) - from
for i in object_amount:
var xf := Transform3D()
xf.origin = Vector3(from.x + randf() * extents.x,from.y + randf() * extents.y, - (zn + zextent * randf()))
var ins := RenderingServer.instance_create()
RenderingServer.instance_set_base(ins, meshes[i % meshes.size()].get_rid())
RenderingServer.instance_set_scenario(ins, get_world_3d().scenario)
RenderingServer.instance_set_transform(ins, xf)
objects.append(ins)
object_xforms.append(xf)
func fill_with_omni_lights(amount: int, use_shadows: bool) -> void:
var cam := $Camera3D as Camera3D
var zn := 2
var zextent := cam.far - zn
var ss := get_tree().root.size
var from := cam.project_position(Vector2(0,ss.y),zextent)
var extents := cam.project_position(Vector2(ss.x,0),zextent) - from
var light := RenderingServer.omni_light_create()
RenderingServer.light_set_param(light, RenderingServer.LIGHT_PARAM_RANGE,10)
RenderingServer.light_set_shadow(light, use_shadows)
# Dual parabolid shadows are faster than cubemap shadows.
RenderingServer.light_omni_set_shadow_mode(light, RenderingServer.LIGHT_OMNI_SHADOW_DUAL_PARABOLOID)
lights.append(light)
for i in amount:
var xf := Transform3D()
xf.origin = Vector3(from.x + randf() * extents.x,from.y + randf() * extents.y, - (zn + zextent * randf()))
var ins := RenderingServer.instance_create()
RenderingServer.instance_set_base(ins, light)
RenderingServer.instance_set_scenario(ins,get_world_3d().scenario)
RenderingServer.instance_set_transform(ins,xf)
light_instances.append(ins)
light_instance_xforms.append(xf)
func _exit_tree() -> void:
for object in objects:
RenderingServer.free_rid(object)
for light in lights:
RenderingServer.free_rid(light)
for light_instance in light_instances:
RenderingServer.free_rid(light_instance)
meshes.clear()

View File

@@ -1,8 +0,0 @@
extends "res://benchmarks/rendering/culling/culling_base.gd"
const NUMBER_OF_OBJECTS = 10_000
func _ready() -> void:
fill_with_objects(NUMBER_OF_OBJECTS)

View File

@@ -1,24 +0,0 @@
[gd_scene load_steps=3 format=3 uid="uid://8owc7v5tw052"]
[ext_resource type="Script" path="res://benchmarks/rendering/culling/directional_light_cull.gd" id="1"]
[ext_resource type="Script" path="res://benchmark.gd" id="2"]
[node name="Node3D" type="Node3D"]
script = ExtResource("1")
[node name="Benchmark" type="Label" parent="."]
offset_right = 40.0
offset_bottom = 40.0
theme_override_font_sizes/font_size = 16
script = ExtResource("2")
test_render_cpu = true
test_render_gpu = true
[node name="Camera3D" type="Camera3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.873609)
current = true
far = 200.0
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
transform = Transform3D(0.933154, 0, 0.359476, -0.242196, 0.738961, 0.628711, -0.265639, -0.673748, 0.689565, 2.09069, 0, 0)
shadow_enabled = true

View File

@@ -1,19 +0,0 @@
extends "res://benchmarks/rendering/culling/culling_base.gd"
const NUMBER_OF_OBJECTS = 10_000
var time_accum := 0.0
func _ready() -> void:
fill_with_objects(NUMBER_OF_OBJECTS)
func _process(delta: float) -> void:
time_accum += delta * 4.0
for i in objects.size():
var xf = object_xforms[i]
var angle = i * PI * 2.0 / objects.size()
xf.origin += Vector3(sin(angle), cos(angle), 0.0) * sin(time_accum) * 2.0
RenderingServer.instance_set_transform(objects[i], xf)

View File

@@ -1,19 +0,0 @@
[gd_scene load_steps=3 format=3 uid="uid://ddecopbjk0pd3"]
[ext_resource type="Script" path="res://benchmarks/rendering/culling/dynamic_cull.gd" id="1"]
[ext_resource type="Script" path="res://benchmark.gd" id="2"]
[node name="Node3D" type="Node3D"]
script = ExtResource("1")
[node name="Benchmark" type="Label" parent="."]
offset_right = 40.0
offset_bottom = 40.0
script = ExtResource("2")
test_render_cpu = true
test_render_gpu = true
[node name="Camera3D" type="Camera3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.873609)
current = true
far = 200.0

View File

@@ -1,23 +0,0 @@
extends "res://benchmarks/rendering/culling/culling_base.gd"
const NUMBER_OF_OBJECTS = 10_000
const NUMBER_OF_OMNI_LIGHTS = 100
@export var use_shadows := false
var time_accum := 0.0
func _ready() -> void:
fill_with_objects(NUMBER_OF_OBJECTS)
fill_with_omni_lights(NUMBER_OF_OMNI_LIGHTS, use_shadows)
func _process(delta: float) -> void:
time_accum += delta * 4.0
for i in light_instances.size():
var xf = light_instance_xforms[i]
var angle = i * PI * 2.0 / light_instances.size()
xf.origin += Vector3(sin(angle), cos(angle), 0.0) * sin(time_accum) * 2.0
RenderingServer.instance_set_transform(light_instances[i], xf)

View File

@@ -1,19 +0,0 @@
[gd_scene load_steps=3 format=3 uid="uid://caal1eu6emwn1"]
[ext_resource type="Script" path="res://benchmark.gd" id="1"]
[ext_resource type="Script" path="res://benchmarks/rendering/culling/dynamic_light_cull.gd" id="2"]
[node name="Node3D" type="Node3D"]
script = ExtResource("2")
[node name="Benchmark" type="Label" parent="."]
offset_right = 40.0
offset_bottom = 40.0
script = ExtResource("1")
test_render_cpu = true
test_render_gpu = true
[node name="Camera3D" type="Camera3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.873609)
current = true
far = 200.0

View File

@@ -1,20 +0,0 @@
[gd_scene load_steps=3 format=3 uid="uid://d3rchghob37sn"]
[ext_resource type="Script" path="res://benchmarks/rendering/culling/dynamic_light_cull.gd" id="1_d0xom"]
[ext_resource type="Script" path="res://benchmark.gd" id="2_txiip"]
[node name="Node3D" type="Node3D"]
script = ExtResource("1_d0xom")
use_shadows = true
[node name="Benchmark" type="Label" parent="."]
offset_right = 40.0
offset_bottom = 40.0
script = ExtResource("2_txiip")
test_render_cpu = true
test_render_gpu = true
[node name="Camera3D" type="Camera3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.873609)
current = true
far = 200.0

View File

@@ -1,9 +0,0 @@
extends "res://benchmarks/rendering/culling/culling_base.gd"
const NUMBER_OF_OBJECTS = 10_000
const NUMBER_OF_OMNI_LIGHTS = 100
func _ready() -> void:
fill_with_objects(NUMBER_OF_OBJECTS)
fill_with_omni_lights(NUMBER_OF_OMNI_LIGHTS, false)

View File

@@ -1,19 +0,0 @@
[gd_scene load_steps=3 format=3 uid="uid://bceclc3bopcwu"]
[ext_resource type="Script" path="res://benchmarks/rendering/culling/static_light_cull.gd" id="1"]
[ext_resource type="Script" path="res://benchmark.gd" id="2"]
[node name="Node3D" type="Node3D"]
script = ExtResource("1")
[node name="Benchmark" type="Label" parent="."]
offset_right = 40.0
offset_bottom = 40.0
script = ExtResource("2")
test_render_cpu = true
test_render_gpu = true
[node name="Camera3D" type="Camera3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.873609)
current = true
far = 200.0

View File

@@ -0,0 +1,71 @@
extends Benchmark
func _init() -> void:
test_render_cpu = true
test_render_gpu = true
class TestScene extends Node2D:
var cam := Camera2D.new()
var instances := []
var instance_xforms := []
var instance_amount := 0
func _init(_instance_amount: int):
instance_amount = _instance_amount
add_child(cam)
func _ready() -> void:
var ss := get_tree().root.size
var center := cam.get_screen_center_position()
for i in instance_amount:
var xf := Transform2D()
xf.origin = Vector2(center.x + randf() * ss.x, center.y + randf() * ss.y)
var new_instance := create_instance()
call_deferred("add_child", new_instance)
new_instance.set_global_transform(xf)
instances.append(new_instance)
instance_xforms.append(xf)
func create_instance() -> Node:
return null
func _exit_tree() -> void:
for instance in instances:
instance.queue_free()
class TestPolygon extends TestScene:
func create_instance() -> Node:
var new_polygon := Polygon2D.new()
var vertices := PackedVector2Array()
var p_scale = randf_range(30,50)
for i in 32:
vertices.append(Vector2(p_scale*cos(i * PI / 16),p_scale*sin(i * PI / 16)))
new_polygon.polygon = vertices
return new_polygon
class TestSprite extends TestScene:
var sprite_texture := preload("res://icon.png")
func create_instance() -> Node:
var new_sprite := Sprite2D.new()
new_sprite.texture = sprite_texture
return new_sprite
func benchmark_10_polygon_2d():
return TestPolygon.new(10)
func benchmark_100_polygon_2d():
return TestPolygon.new(100)
func benchmark_1000_polygon_2d():
return TestPolygon.new(1000)
func benchmark_50_sprite_2d():
return TestSprite.new(50)
func benchmark_500_sprite_2d():
return TestSprite.new(500)
func benchmark_5000_sprite_2d():
return TestSprite.new(5000)

View File

@@ -1,7 +0,0 @@
extends "res://benchmarks/rendering/polygon_2d/polygon_2d_base.gd"
const NUMBER_OF_POLYGONS := 1000
func _ready() -> void:
fill_with_polygons(NUMBER_OF_POLYGONS)

View File

@@ -1,16 +0,0 @@
[gd_scene load_steps=3 format=3 uid="uid://ch84o31eohli0"]
[ext_resource type="Script" path="res://benchmarks/rendering/polygon_2d/1000_polygon_2d.gd" id="1_4vuxe"]
[ext_resource type="Script" path="res://benchmark.gd" id="1_evy4a"]
[node name="Node2D" type="Node2D"]
script = ExtResource("1_4vuxe")
[node name="Benchmark" type="Label" parent="."]
offset_right = 40.0
offset_bottom = 34.0
script = ExtResource("1_evy4a")
test_render_cpu = true
test_render_gpu = true
[node name="Camera2D" type="Camera2D" parent="."]

View File

@@ -1,7 +0,0 @@
extends "res://benchmarks/rendering/polygon_2d/polygon_2d_base.gd"
const NUMBER_OF_POLYGONS := 100
func _ready() -> void:
fill_with_polygons(NUMBER_OF_POLYGONS)

View File

@@ -1,16 +0,0 @@
[gd_scene load_steps=3 format=3 uid="uid://baaw7jdfbtm21"]
[ext_resource type="Script" path="res://benchmarks/rendering/polygon_2d/100_polygon_2d.gd" id="1_26bs8"]
[ext_resource type="Script" path="res://benchmark.gd" id="1_64c3n"]
[node name="Node2D" type="Node2D"]
script = ExtResource("1_26bs8")
[node name="Benchmark" type="Label" parent="."]
offset_right = 40.0
offset_bottom = 34.0
script = ExtResource("1_64c3n")
test_render_cpu = true
test_render_gpu = true
[node name="Camera2D" type="Camera2D" parent="."]

View File

@@ -1,7 +0,0 @@
extends "res://benchmarks/rendering/polygon_2d/polygon_2d_base.gd"
const NUMBER_OF_POLYGONS := 10
func _ready() -> void:
fill_with_polygons(NUMBER_OF_POLYGONS)

View File

@@ -1,16 +0,0 @@
[gd_scene load_steps=3 format=3 uid="uid://3tlrhlepn5um"]
[ext_resource type="Script" path="res://benchmark.gd" id="1_51qmg"]
[ext_resource type="Script" path="res://benchmarks/rendering/polygon_2d/10_polygon_2d.gd" id="1_kcy1r"]
[node name="Node2D" type="Node2D"]
script = ExtResource("1_kcy1r")
[node name="Benchmark" type="Label" parent="."]
offset_right = 40.0
offset_bottom = 34.0
script = ExtResource("1_51qmg")
test_render_cpu = true
test_render_gpu = true
[node name="Camera2D" type="Camera2D" parent="."]

View File

@@ -1,3 +0,0 @@
[gd_scene format=3 uid="uid://bgrrel3janaoj"]
[node name="Polygon2D" type="Polygon2D"]

View File

@@ -1,28 +0,0 @@
extends Node2D
var Polygon := preload("res://benchmarks/rendering/polygon_2d/_polygon_2d.tscn") as PackedScene
var polygons := []
var polygon_xforms := []
func fill_with_polygons(polygon_amount: int) -> void:
var cam := $Camera2D as Camera2D
var ss := get_tree().root.size
var center := cam.get_screen_center_position()
for polygon in polygon_amount:
var xf := Transform2D()
xf.origin = Vector2(center.x + randf() * ss.x, center.y + randf() * ss.y)
var new_polygon = Polygon.instantiate() as Polygon2D
var vertices := PackedVector2Array()
var p_scale = randf_range(30,50)
for i in 32:
vertices.append(Vector2(p_scale*cos(i * PI / 16),p_scale*sin(i * PI / 16)))
new_polygon.polygon = vertices
call_deferred("add_child", new_polygon)
new_polygon.set_global_transform(xf)
polygons.append(new_polygon)
polygon_xforms.append(xf)
func _exit_tree() -> void:
for polygon in polygons:
polygon.queue_free()

View File

@@ -1,7 +0,0 @@
extends "res://benchmarks/rendering/sprite_2d/sprite_2d_base.gd"
const NUMBER_OF_SPRITES = 5_000
func _ready() -> void:
fill_with_sprites(NUMBER_OF_SPRITES)

View File

@@ -1,16 +0,0 @@
[gd_scene load_steps=3 format=3 uid="uid://cygi7awmf5lba"]
[ext_resource type="Script" path="res://benchmark.gd" id="1_hf23d"]
[ext_resource type="Script" path="res://benchmarks/rendering/sprite_2d/5000_sprite_2d.gd" id="1_prwy7"]
[node name="Node2D" type="Node2D"]
script = ExtResource("1_prwy7")
[node name="Benchmark" type="Label" parent="."]
offset_right = 40.0
offset_bottom = 34.0
script = ExtResource("1_hf23d")
test_render_cpu = true
test_render_gpu = true
[node name="Camera2D" type="Camera2D" parent="."]

View File

@@ -1,7 +0,0 @@
extends "res://benchmarks/rendering/sprite_2d/sprite_2d_base.gd"
const NUMBER_OF_SPRITES = 500
func _ready() -> void:
fill_with_sprites(NUMBER_OF_SPRITES)

View File

@@ -1,16 +0,0 @@
[gd_scene load_steps=3 format=3 uid="uid://b3lmnvs17yqrq"]
[ext_resource type="Script" path="res://benchmark.gd" id="1_h5bfr"]
[ext_resource type="Script" path="res://benchmarks/rendering/sprite_2d/500_sprite_2d.gd" id="1_jqpyn"]
[node name="Node2D" type="Node2D"]
script = ExtResource("1_jqpyn")
[node name="Benchmark" type="Label" parent="."]
offset_right = 40.0
offset_bottom = 34.0
script = ExtResource("1_h5bfr")
test_render_cpu = true
test_render_gpu = true
[node name="Camera2D" type="Camera2D" parent="."]

View File

@@ -1,7 +0,0 @@
extends "res://benchmarks/rendering/sprite_2d/sprite_2d_base.gd"
const NUMBER_OF_SPRITES = 50
func _ready() -> void:
fill_with_sprites(NUMBER_OF_SPRITES)

View File

@@ -1,16 +0,0 @@
[gd_scene load_steps=3 format=3 uid="uid://dlmdxgjc64h6r"]
[ext_resource type="Script" path="res://benchmarks/rendering/sprite_2d/50_sprite_2d.gd" id="1_rmwpg"]
[ext_resource type="Script" path="res://benchmark.gd" id="2_itud2"]
[node name="Node2D" type="Node2D"]
script = ExtResource("1_rmwpg")
[node name="Benchmark" type="Label" parent="."]
offset_right = 40.0
offset_bottom = 34.0
script = ExtResource("2_itud2")
test_render_cpu = true
test_render_gpu = true
[node name="Camera2D" type="Camera2D" parent="."]

View File

@@ -1,6 +0,0 @@
[gd_scene load_steps=2 format=3 uid="uid://cqyl0oui300bb"]
[ext_resource type="Texture2D" uid="uid://cg50cee5knm3h" path="res://icon.png" id="1_8dwnt"]
[node name="Sprite2D" type="Sprite2D"]
texture = ExtResource("1_8dwnt")

View File

@@ -1,24 +0,0 @@
extends Node2D
var Sprite := preload("res://benchmarks/rendering/sprite_2d/_sprite.tscn") as PackedScene
var sprites := []
var sprite_xforms := []
func fill_with_sprites(sprite_amount: int) -> void:
var cam := $Camera2D as Camera2D
var ss := get_tree().root.size
var center := cam.get_screen_center_position()
for i in sprite_amount:
var xf := Transform2D()
xf.origin = Vector2(center.x + randf() * ss.x, center.y + randf() * ss.y)
var new_sprite = Sprite.instantiate() as Sprite2D
call_deferred("add_child", new_sprite)
new_sprite.set_global_transform(xf)
sprites.append(new_sprite)
sprite_xforms.append(xf)
func _exit_tree() -> void:
for sprite in sprites:
sprite.queue_free()