From fb2adfe52fddb987275a5e3f5e82243ae4a7f89f Mon Sep 17 00:00:00 2001 From: Unknown Date: Sun, 22 Oct 2017 12:05:44 +0200 Subject: [PATCH] Custom logic particles benchmark For now only with GDScript implementation. --- benchmarks/CustomLogicParticles/.gitignore | 9 + .../MultimeshParticles/MeshGlobalParticles.gd | 194 +++ .../MeshGlobalParticles.tscn | 31 + .../MultimeshParticlesGDScriptTest.gd | 60 + .../MultimeshParticlesGDScriptTest.tscn | 248 ++++ .../CustomParticles/assets/Material.material | Bin 0 -> 2121 bytes .../CustomParticles/assets/particle.blend | Bin 0 -> 451820 bytes .../CustomParticles/assets/particle.dae | 109 ++ .../assets/particle.dae.import | 1053 +++++++++++++++++ .../CustomParticles/assets/particle.mesh | Bin 0 -> 1462 bytes benchmarks/CustomLogicParticles/README.md | 1 + .../CustomLogicParticles/default_env.tres | 99 ++ benchmarks/CustomLogicParticles/icon.png | Bin 0 -> 3498 bytes .../CustomLogicParticles/icon.png.import | 24 + benchmarks/CustomLogicParticles/project.godot | 23 + 15 files changed, 1851 insertions(+) create mode 100644 benchmarks/CustomLogicParticles/.gitignore create mode 100644 benchmarks/CustomLogicParticles/CustomParticles/GDScript/MultimeshParticles/MeshGlobalParticles.gd create mode 100644 benchmarks/CustomLogicParticles/CustomParticles/GDScript/MultimeshParticles/MeshGlobalParticles.tscn create mode 100644 benchmarks/CustomLogicParticles/CustomParticles/GDScript/MultimeshParticlesGDScriptTest.gd create mode 100644 benchmarks/CustomLogicParticles/CustomParticles/GDScript/MultimeshParticlesGDScriptTest.tscn create mode 100644 benchmarks/CustomLogicParticles/CustomParticles/assets/Material.material create mode 100644 benchmarks/CustomLogicParticles/CustomParticles/assets/particle.blend create mode 100644 benchmarks/CustomLogicParticles/CustomParticles/assets/particle.dae create mode 100644 benchmarks/CustomLogicParticles/CustomParticles/assets/particle.dae.import create mode 100644 benchmarks/CustomLogicParticles/CustomParticles/assets/particle.mesh create mode 100644 benchmarks/CustomLogicParticles/README.md create mode 100644 benchmarks/CustomLogicParticles/default_env.tres create mode 100644 benchmarks/CustomLogicParticles/icon.png create mode 100644 benchmarks/CustomLogicParticles/icon.png.import create mode 100644 benchmarks/CustomLogicParticles/project.godot diff --git a/benchmarks/CustomLogicParticles/.gitignore b/benchmarks/CustomLogicParticles/.gitignore new file mode 100644 index 0000000..462f0c7 --- /dev/null +++ b/benchmarks/CustomLogicParticles/.gitignore @@ -0,0 +1,9 @@ +# Godot-specific ignores +.import/ +export.cfg +.fscache +logs/ + +# System/tool-specific ignores +.directory +*~ diff --git a/benchmarks/CustomLogicParticles/CustomParticles/GDScript/MultimeshParticles/MeshGlobalParticles.gd b/benchmarks/CustomLogicParticles/CustomParticles/GDScript/MultimeshParticles/MeshGlobalParticles.gd new file mode 100644 index 0000000..56034ca --- /dev/null +++ b/benchmarks/CustomLogicParticles/CustomParticles/GDScript/MultimeshParticles/MeshGlobalParticles.gd @@ -0,0 +1,194 @@ +extends Spatial +################################### R E A D M E ################################## +# +# Hints after first rework in 3.0: +# Main performance bottleneck is GDScript. I should rewrite those to shader at some point, but maybe it will be enough +# to have this code in c# or as gdnative. You can easily test this by emitting 4000 particles with current code, observe +# fps drop and then disable logic (but not the rendering!) disableLogic() +# + +################################################################################## +##### Variables (Constants, Export Variables, Node Vars, Normal variables) ##### +######################### var myvar setget myvar_set,myvar_get ################### +const NMB_OF_PARTICLES = 12000; #max amount. feel fry to increase if the language you are testing is able to reach the limit, but ensure you have similar results with visualisation off +const WHITE_COLOR = Color(1,1,1,1); + +export (Mesh) var particleMesh; + +var waitingParticles = PoolIntArray(); +var activeParticles = PoolIntArray(); + +#var particleGlobalPosRoots = Vector3Array(); +var particlesData = []; + +var multimeshInstance; + +################################################################################## +######### Init code ######### +################################################################################## +var firstTimeInReady = true; +func _notification(what): + if (what == NOTIFICATION_INSTANCED): + pass + elif(what == NOTIFICATION_READY): + if(firstTimeInReady): + firstTimeInReady = false; + initGlobalParticles(); + hide(); + set_process(false); + +func initGlobalParticles(): + multimeshInstance = get_node("MultiMeshInst"); + + var multimeshRes = MultiMesh.new(); + multimeshRes.transform_format = MultiMesh.TRANSFORM_3D; + multimeshRes.color_format = MultiMesh.COLOR_FLOAT; + multimeshRes.set_mesh(particleMesh); + multimeshRes.set_instance_count(NMB_OF_PARTICLES); + + multimeshInstance.set_multimesh(multimeshRes); + initParticlesData(); + +func initParticlesData(): + particlesData.resize(NMB_OF_PARTICLES); + for idx in range(NMB_OF_PARTICLES): + particlesData[idx] = ParticleData.new(); + + var multimesh = multimeshInstance.get_multimesh(); + var particlesCount = multimesh.get_instance_count(); + for idxParticle in range(particlesCount): + waitingParticles.append(idxParticle); + hideParticle(multimesh, idxParticle); + + multimesh.set_instance_color(idxParticle, WHITE_COLOR); + +################################################################################## +######### Getters and Setters ######### +################################################################################## +func getAmountOfActiveParticles(): + return activeParticles.size(); + +func isLogicEnabled(): + return is_processing(); + +################################################################################## +######### Should be implemented in inheritanced ######### +################################################################################## + +################################################################################## +######### Implemented from ancestor ######### +################################################################################## +func _process(delta): + + # + var multimesh = multimeshInstance.get_multimesh(); + + # + var nmbOfActiveParticles = activeParticles.size(); + for idxInActiveParticlesList in range(nmbOfActiveParticles): #nmbOfActiveParticles): + if(idxInActiveParticlesList>=activeParticles.size()): return; + var activeParticleIdx = activeParticles[idxInActiveParticlesList]; + var particleData = particlesData[activeParticleIdx]; + particleData.lifeTime += delta; + + # + var particlePercentLife = particleData.lifeTime / particleData.maxLifeTime; + + #life time end + if(particlePercentLife>1.0): + waitingParticles.append(activeParticleIdx); + activeParticles.remove(idxInActiveParticlesList); + nmbOfActiveParticles = nmbOfActiveParticles-1; + hideParticle(multimesh, activeParticleIdx, (nmbOfActiveParticles==0)); + + idxInActiveParticlesList = idxInActiveParticlesList-1; + continue; + + # + var currentLocalBasePos = multimesh.get_instance_transform(activeParticleIdx).origin; #get_global_transform().origin; + currentLocalBasePos = currentLocalBasePos + (particleData.direction*delta); + + var lscale; + if(particlePercentLife0; + +func emitParticle(inEmitPos, maxLifetime, maxScale = 1.0, direction = Vector3(0,1,0), rotationDirection = Vector3(0,1,0), + rotationSpeed = 0.0, inColor = Color()): + if(activeParticles.size() > NMB_OF_PARTICLES): return; + if(waitingParticles.size()<=0): return; + + var multimesh = multimeshInstance.get_multimesh(); + #get first free particle; + var freeParticleIdx = waitingParticles.size()-1; + var particleID = waitingParticles[freeParticleIdx]; + waitingParticles.remove(freeParticleIdx); + activeParticles.append(particleID); + + var particleData = particlesData[particleID]; + particleData.maxLifeTime = maxLifetime; + particleData.maxScale = maxScale; + particleData.direction = direction; + particleData.rot_direction = rotationDirection; + particleData.rot_speed = rotationSpeed; + particleData.lifeTime = 0.0; + particleData.rot_amount = randf() * 2 * PI; #0.0; + + showParticle(multimesh, particleID, inEmitPos, inColor); + +################################################################################## +######### Inner Methods ######### +################################################################################## + + + +#as far as I know similar method is now part of godot core. But hey! It's a language benchmark after all! +static func interpolateLinearBetween2Points( inP1, inP1Val, inP2, inP2Val, interpolationPoint): + return ((interpolationPoint * inP1Val) - (interpolationPoint * inP2Val) + (inP1 * inP2Val) - (inP2 * inP1Val))/ (inP1 - inP2); + + +################################################################################## +######### Inner Classes #########A +################################################################################## +class ParticleData: + var lifeTime = 0.0; + var maxLifeTime = 0.0; + var maxScale = 0.75; + var matureAtLifePercent = 0.005; + var direction = Vector3(); + var rot_direction = Vector3(); + var rot_amount = 0.0 + var rot_speed = 1.0; diff --git a/benchmarks/CustomLogicParticles/CustomParticles/GDScript/MultimeshParticles/MeshGlobalParticles.tscn b/benchmarks/CustomLogicParticles/CustomParticles/GDScript/MultimeshParticles/MeshGlobalParticles.tscn new file mode 100644 index 0000000..079907e --- /dev/null +++ b/benchmarks/CustomLogicParticles/CustomParticles/GDScript/MultimeshParticles/MeshGlobalParticles.tscn @@ -0,0 +1,31 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://CustomParticles/GDScript/MultimeshParticles/MeshGlobalParticles.gd" type="Script" id=1] +[ext_resource path="res://CustomParticles/assets/particle.mesh" type="ArrayMesh" id=2] + +[node name="MeshGlobalParticles" type="Spatial"] + +script = ExtResource( 1 ) +particleMesh = ExtResource( 2 ) + +[node name="MultiMeshInst" type="MultiMeshInstance" parent="."] + +layers = 1 +material_override = null +cast_shadow = 0 +extra_cull_margin = 0.0 +use_in_baked_light = false +lod_min_distance = 0.0 +lod_min_hysteresis = 0.0 +lod_max_distance = 0.0 +lod_max_hysteresis = 0.0 +multimesh = null + +[node name="Tween" type="Tween" parent="."] + +playback_process_mode = 1 +playback/active = false +playback/repeat = false +playback/speed = 1.0 + + diff --git a/benchmarks/CustomLogicParticles/CustomParticles/GDScript/MultimeshParticlesGDScriptTest.gd b/benchmarks/CustomLogicParticles/CustomParticles/GDScript/MultimeshParticlesGDScriptTest.gd new file mode 100644 index 0000000..f12a542 --- /dev/null +++ b/benchmarks/CustomLogicParticles/CustomParticles/GDScript/MultimeshParticlesGDScriptTest.gd @@ -0,0 +1,60 @@ +extends Node + +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# This is a language benchmark, not rendering one. Increased amount of particles should not have any +# influence on the fps change, since they are rendered even if not visible. +# The reason of fps drop is because computations are made for each single particle. +# When performance will drop for couple consecutive frames, the logic for particles will be turned off, +# so after that amount of fps should be the save as at the very beginning + + +const SPAWN_EXTENDS = Vector3(10,1,10) * 1.0; +const NMB_OF_MEASUREMENTS_BEFORE_TURN_OFF = 10; + +export var visualisation = true; +export var turnOffTheLogicBelowFps = 45; +export var amount2EmitInOneGameTick = 5; + +onready var particles = get_node("MeshGlobalParticles"); + +var delay = 0.0; +var nmbOfConsequentLowFpsFrames = 0; + +func _ready(): + set_process(false); + +func _process(delta): + var fps = round(1.0 / delta); #Engine.get_frames_per_second(); + var text = "fps: " + str(fps) + " | particles: " + str(particles.getAmountOfActiveParticles()); + get_node("Label").set_text(text); + + if(!particles.isLogicEnabled()): + get_node("Label").set_text(text + " | logic turned off below fps: " + str(turnOffTheLogicBelowFps)); + return + + if(fps < turnOffTheLogicBelowFps): + nmbOfConsequentLowFpsFrames+=1; + if(nmbOfConsequentLowFpsFrames>NMB_OF_MEASUREMENTS_BEFORE_TURN_OFF): + particles.disableLogic(); + else: + nmbOfConsequentLowFpsFrames = 0; + for idx in range(amount2EmitInOneGameTick): + emit(); + +func emit(): + var randPosition = Vector3(rand_range(-1.0,1.0)*SPAWN_EXTENDS.x, 1.0 + rand_range(-1.0,1.0)*SPAWN_EXTENDS.y, + rand_range(-1.0,1.0)*SPAWN_EXTENDS.z); + var lifetime = 500.0; + var maxScale = 0.1 + randf()*0.2; + var direction = Vector3(rand_range(-1.0, 1.0),1.0 + randf(),rand_range(-1.0, 1.0)).normalized() * (0.5 + randf() * 0.3); + var rotDirection = Vector3(rand_range(-1.0, 1.0),rand_range(-1.0, 1.0),rand_range(-1.0, 1.0)).normalized(); + var rotSpeed = randf(); + var color = Color(0.1+randf()*0.9,0.1+randf()*0.9,0.1+randf()*0.9,1.0); + particles.emitParticle(randPosition, lifetime, maxScale, direction, rotDirection, rotSpeed, color); + + +func _on_InitTimer_timeout(): + set_process(true); + particles.enableLogic(); + if(visualisation): + particles.show(); diff --git a/benchmarks/CustomLogicParticles/CustomParticles/GDScript/MultimeshParticlesGDScriptTest.tscn b/benchmarks/CustomLogicParticles/CustomParticles/GDScript/MultimeshParticlesGDScriptTest.tscn new file mode 100644 index 0000000..2bba418 --- /dev/null +++ b/benchmarks/CustomLogicParticles/CustomParticles/GDScript/MultimeshParticlesGDScriptTest.tscn @@ -0,0 +1,248 @@ +[gd_scene load_steps=7 format=2] + +[ext_resource path="res://CustomParticles/GDScript/MultimeshParticlesGDScriptTest.gd" type="Script" id=1] +[ext_resource path="res://CustomParticles/GDScript/MultimeshParticles/MeshGlobalParticles.tscn" type="PackedScene" id=2] + +[sub_resource type="SpatialMaterial" id=1] + +render_priority = 0 +flags_transparent = false +flags_unshaded = false +flags_vertex_lighting = false +flags_no_depth_test = false +flags_use_point_size = false +flags_world_triplanar = false +flags_fixed_size = false +vertex_color_use_as_albedo = false +vertex_color_is_srgb = false +params_diffuse_mode = 1 +params_specular_mode = 0 +params_blend_mode = 0 +params_cull_mode = 0 +params_depth_draw_mode = 0 +params_line_width = 1.0 +params_point_size = 1.0 +params_billboard_mode = 0 +params_grow = false +params_use_alpha_scissor = false +albedo_color = Color( 0.244995, 0.871094, 0.342823, 1 ) +metallic = 0.0 +metallic_specular = 0.5 +metallic_texture_channel = 0 +roughness = 0.0 +roughness_texture_channel = 0 +emission_enabled = false +normal_enabled = false +rim_enabled = false +clearcoat_enabled = false +anisotropy_enabled = false +ao_enabled = false +depth_enabled = false +subsurf_scatter_enabled = false +transmission_enabled = false +refraction_enabled = false +detail_enabled = false +uv1_scale = Vector3( 1, 1, 1 ) +uv1_offset = Vector3( 0, 0, 0 ) +uv1_triplanar = false +uv1_triplanar_sharpness = 1.0 +uv2_scale = Vector3( 1, 1, 1 ) +uv2_offset = Vector3( 0, 0, 0 ) +uv2_triplanar = false +uv2_triplanar_sharpness = 1.0 +proximity_fade_enable = false +proximity_fade_distance = 1.0 +distance_fade_enable = false +_sections_unfolded = [ "Albedo" ] + +[sub_resource type="PlaneMesh" id=2] + +material = SubResource( 1 ) +size = Vector2( 20, 20 ) +subdivide_width = 0 +subdivide_depth = 0 + +[sub_resource type="Animation" id=3] + +resource_name = "default" +length = 1.0 +loop = false +step = 0.1 +tracks/0/type = "value" +tracks/0/path = NodePath(".:translation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector3( 0, 10.6541, 13.7136 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath(".:rotation_deg") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector3( -39.5465, 0, 0 ) ] +} + +[sub_resource type="Animation" id=4] + +resource_name = "idle" +length = 10.0 +loop = true +step = 0.1 +tracks/0/type = "value" +tracks/0/path = NodePath(".:translation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/keys = { +"times": PoolRealArray( 0, 2.5, 5, 7.5 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector3( 0, 9.53792, 17.2225 ), Vector3( 16.6245, 8.50416, 10.3837 ), Vector3( 18.2209, 7.4704, -4.59814 ), Vector3( 16.6245, 8.50416, 10.3837 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath(".:rotation_deg") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/keys = { +"times": PoolRealArray( 0, 5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector3( -9.6413, 0, 0 ), Vector3( -4.32044, 104.559, 0 ) ] +} + +[node name="MultimeshParticlesGDScriptTest" type="Node"] + +script = ExtResource( 1 ) +visualisation = true +turnOffTheLogicBelowFps = 45 +amount2EmitInOneGameTick = 3 + +[node name="MeshGlobalParticles" parent="." instance=ExtResource( 2 )] + +[node name="StaticBody" type="StaticBody" parent="."] + +input_ray_pickable = true +input_capture_on_drag = false +collision_layer = 1 +collision_mask = 1 +friction = 1.0 +bounce = 0.0 +constant_linear_velocity = Vector3( 0, 0, 0 ) +constant_angular_velocity = Vector3( 0, 0, 0 ) + +[node name="MeshInstance" type="MeshInstance" parent="StaticBody"] + +layers = 1 +material_override = null +cast_shadow = 1 +extra_cull_margin = 0.0 +use_in_baked_light = false +lod_min_distance = 0.0 +lod_min_hysteresis = 0.0 +lod_max_distance = 0.0 +lod_max_hysteresis = 0.0 +mesh = SubResource( 2 ) +skeleton = NodePath("..") +material/0 = null +_sections_unfolded = [ "material" ] + +[node name="Label" type="Label" parent="."] + +anchor_left = 0.0 +anchor_top = 0.0 +anchor_right = 0.0 +anchor_bottom = 0.0 +margin_right = 233.0 +margin_bottom = 14.0 +rect_pivot_offset = Vector2( 0, 0 ) +rect_clip_content = false +mouse_filter = 2 +size_flags_horizontal = 1 +size_flags_vertical = 4 +custom_colors/font_color = Color( 1, 1, 1, 1 ) +custom_colors/font_color_shadow = Color( 0, 0, 0, 1 ) +percent_visible = 1.0 +lines_skipped = 0 +max_lines_visible = -1 +_sections_unfolded = [ "custom_colors", "custom_fonts", "custom_styles" ] + +[node name="camPos" type="Spatial" parent="."] + +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1.00759, 0 ) + +[node name="Camera" type="Camera" parent="camPos"] + +editor/display_folded = true +transform = Transform( 0.999334, -0.00604445, 0.0359856, 0, 0.986185, 0.165648, -0.0364897, -0.165538, 0.985529, 0.66498, 9.49656, 16.9489 ) +projection = 0 +fov = 72.0 +near = 0.1 +far = 100.0 +keep_aspect = 1 +current = true +cull_mask = 1048575 +environment = null +h_offset = 0.0 +v_offset = 0.0 +doppler/tracking = 0 +_sections_unfolded = [ "Transform" ] + +[node name="AnimationPlayer" type="AnimationPlayer" parent="camPos/Camera"] + +playback_process_mode = 1 +playback_default_blend_time = 0.0 +root_node = NodePath("..") +anims/default = SubResource( 3 ) +anims/idle = SubResource( 4 ) +playback/active = true +playback/speed = 0.2 +blend_times = [ ] +autoplay = "idle" +_sections_unfolded = [ "playback" ] + +[node name="DirectionalLight" type="DirectionalLight" parent="."] + +transform = Transform( 0.623013, -0.733525, 0.271654, 0.321394, 0.55667, 0.766044, -0.713134, -0.389948, 0.582563, 23.9795, 0, 0 ) +layers = 1 +light_color = Color( 1, 1, 1, 1 ) +light_energy = 2.0 +light_negative = false +light_specular = 0.5 +light_cull_mask = -1 +shadow_enabled = false +shadow_color = Color( 0, 0, 0, 1 ) +shadow_bias = 0.1 +shadow_contact = 0.0 +shadow_reverse_cull_face = false +editor_only = false +directional_shadow_mode = 2 +directional_shadow_split_1 = 0.1 +directional_shadow_split_2 = 0.2 +directional_shadow_split_3 = 0.5 +directional_shadow_blend_splits = false +directional_shadow_normal_bias = 0.8 +directional_shadow_bias_split_scale = 0.25 +directional_shadow_depth_range = 0 +directional_shadow_max_distance = 200.0 +_sections_unfolded = [ "Directional Shadow", "Light", "Shadow" ] + +[node name="InitTimer" type="Timer" parent="."] + +process_mode = 1 +wait_time = 0.2 +one_shot = true +autostart = true + +[connection signal="timeout" from="InitTimer" to="." method="_on_InitTimer_timeout"] + + diff --git a/benchmarks/CustomLogicParticles/CustomParticles/assets/Material.material b/benchmarks/CustomLogicParticles/CustomParticles/assets/Material.material new file mode 100644 index 0000000000000000000000000000000000000000..e31727fd7498defdfab3f97abbd9ee91056a4efb GIT binary patch literal 2121 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 P>}c!R^Jh*Yl>7S&cbfZ5 literal 0 HcmV?d00001 diff --git a/benchmarks/CustomLogicParticles/CustomParticles/assets/particle.dae b/benchmarks/CustomLogicParticles/CustomParticles/assets/particle.dae new file mode 100644 index 0000000..bb5bd65 --- /dev/null +++ b/benchmarks/CustomLogicParticles/CustomParticles/assets/particle.dae @@ -0,0 +1,109 @@ + + + + + Anonymous + Collada Exporter for Blender 2.6+, by Juan Linietsky (juan@codenix.com) + + 2017-10-21T17:17:57Z + 2017-10-21T17:17:57Z + + Z_UP + + + + + + + + 0.0 0.0 0.0 1.0 + + + 0.0 0.0 0.0 1.0 + + + 0.6400000190734865 0.6400000190734865 0.6400000190734865 1.0 + + + 0.5 0.5 0.5 1.0 + + + 50 + + + 1.0 1.0 1.0 1.0 + + + 4.0 + + + + + + + 0 + + + + + + + + + + + + + + + + 0.0 -0.19999998807907104 -0.2828426957130432 -0.28284263610839844 0.20000006258487701 -4.470348358154297e-08 0.0 0.19999997317790985 -0.2828426957130432 0.282842755317688 0.1999998837709427 -7.450580596923828e-08 -4.470348358154297e-08 -0.19999991357326508 0.282842755317688 0.28284260630607605 -0.2000001072883606 8.940696716308594e-08 0.282842755317688 0.1999998837709427 -7.450580596923828e-08 0.0 -0.19999998807907104 -0.2828426957130432 0.0 0.19999997317790985 -0.2828426957130432 0.28284260630607605 -0.2000001072883606 8.940696716308594e-08 -0.2828426957130432 -0.19999995827674866 1.4901161193847656e-08 0.0 -0.19999998807907104 -0.2828426957130432 -4.470348358154297e-08 -0.19999991357326508 0.282842755317688 -0.28284263610839844 0.20000006258487701 -4.470348358154297e-08 -0.2828426957130432 -0.19999995827674866 1.4901161193847656e-08 0.0 0.19999997317790985 -0.2828426957130432 1.4901161193847656e-08 0.19999998807907104 0.2828426957130432 0.282842755317688 0.1999998837709427 -7.450580596923828e-08 -0.04142136499285698 -0.34142133593559265 0.04142137989401817 -0.2999999523162842 0.14142130315303802 -0.10000009834766388 -0.10000002384185791 -0.1414213627576828 -0.29999998211860657 0.041421372443437576 0.34142133593559265 -0.04142138734459877 0.2999999225139618 -0.14142130315303802 0.10000016540288925 0.24142137169837952 0.05857850983738899 -0.24142131209373474 0.24142137169837952 0.05857850983738899 -0.24142131209373474 -0.04142136499285698 -0.34142133593559265 0.04142137989401817 -0.10000002384185791 -0.1414213627576828 -0.29999998211860657 0.2999999225139618 -0.14142130315303802 0.10000016540288925 -0.24142134189605713 -0.05857860669493675 0.24142134189605713 -0.04142136499285698 -0.34142133593559265 0.04142137989401817 0.09999997913837433 0.14142142236232758 0.2999999523162842 -0.2999999523162842 0.14142130315303802 -0.10000009834766388 -0.24142134189605713 -0.05857860669493675 0.24142134189605713 -0.10000002384185791 -0.1414213627576828 -0.29999998211860657 0.041421372443437576 0.34142133593559265 -0.04142138734459877 0.24142137169837952 0.05857850983738899 -0.24142131209373474 0.0 -0.19999998807907104 -0.2828426957130432 -0.2828426957130432 -0.19999995827674866 1.4901161193847656e-08 -0.28284263610839844 0.20000006258487701 -4.470348358154297e-08 0.282842755317688 0.1999998837709427 -7.450580596923828e-08 1.4901161193847656e-08 0.19999998807907104 0.2828426957130432 -4.470348358154297e-08 -0.19999991357326508 0.282842755317688 0.282842755317688 0.1999998837709427 -7.450580596923828e-08 0.28284260630607605 -0.2000001072883606 8.940696716308594e-08 0.0 -0.19999998807907104 -0.2828426957130432 0.28284260630607605 -0.2000001072883606 8.940696716308594e-08 -4.470348358154297e-08 -0.19999991357326508 0.282842755317688 -0.2828426957130432 -0.19999995827674866 1.4901161193847656e-08 -4.470348358154297e-08 -0.19999991357326508 0.282842755317688 1.4901161193847656e-08 0.19999998807907104 0.2828426957130432 -0.28284263610839844 0.20000006258487701 -4.470348358154297e-08 0.0 0.19999997317790985 -0.2828426957130432 -0.28284263610839844 0.20000006258487701 -4.470348358154297e-08 1.4901161193847656e-08 0.19999998807907104 0.2828426957130432 -0.04142136499285698 -0.34142133593559265 0.04142137989401817 -0.24142134189605713 -0.05857860669493675 0.24142134189605713 -0.2999999523162842 0.14142130315303802 -0.10000009834766388 0.041421372443437576 0.34142133593559265 -0.04142138734459877 0.09999997913837433 0.14142142236232758 0.2999999523162842 0.2999999225139618 -0.14142130315303802 0.10000016540288925 0.24142137169837952 0.05857850983738899 -0.24142131209373474 0.2999999225139618 -0.14142130315303802 0.10000016540288925 -0.04142136499285698 -0.34142133593559265 0.04142137989401817 0.2999999225139618 -0.14142130315303802 0.10000016540288925 0.09999997913837433 0.14142142236232758 0.2999999523162842 -0.24142134189605713 -0.05857860669493675 0.24142134189605713 0.09999997913837433 0.14142142236232758 0.2999999523162842 0.041421372443437576 0.34142133593559265 -0.04142138734459877 -0.2999999523162842 0.14142130315303802 -0.10000009834766388 -0.10000002384185791 -0.1414213627576828 -0.29999998211860657 -0.2999999523162842 0.14142130315303802 -0.10000009834766388 0.041421372443437576 0.34142133593559265 -0.04142138734459877 + + + + + + + + + + -0.7071068286895752 0.0 -0.7071067690849304 -0.7071068286895752 0.0 -0.7071067690849304 -0.7071068286895752 0.0 -0.7071067690849304 0.7071068286895752 9.313227877782992e-08 0.7071067690849304 0.7071068286895752 9.313227877782992e-08 0.7071067690849304 0.7071068286895752 9.313227877782992e-08 0.7071067690849304 0.7071066498756409 0.0 -0.7071068286895752 0.7071066498756409 0.0 -0.7071068286895752 0.7071066498756409 0.0 -0.7071068286895752 -2.63417859969195e-07 -1.0 -9.313227167240257e-08 -2.63417859969195e-07 -1.0 -9.313227167240257e-08 -2.63417859969195e-07 -1.0 -9.313227167240257e-08 -0.70710688829422 2.1073421407891146e-07 0.7071065902709961 -0.70710688829422 2.1073421407891146e-07 0.7071065902709961 -0.70710688829422 2.1073421407891146e-07 0.7071065902709961 3.424431156417995e-07 1.0 -4.6566128730773926e-08 3.424431156417995e-07 1.0 -4.6566128730773926e-08 3.424431156417995e-07 1.0 -4.6566128730773926e-08 -0.8535534143447876 -0.4999999403953552 -0.14644654095172882 -0.8535534143447876 -0.4999999403953552 -0.14644654095172882 -0.8535534143447876 -0.4999999403953552 -0.14644654095172882 0.8535534143447876 0.5 0.14644654095172882 0.8535534143447876 0.5 0.14644654095172882 0.8535534143447876 0.5 0.14644654095172882 0.4999997913837433 -0.7071070075035095 -0.4999999701976776 0.4999997913837433 -0.7071070075035095 -0.4999999701976776 0.4999997913837433 -0.7071070075035095 -0.4999999701976776 0.1464463770389557 -0.5000001192092896 0.8535534143447876 0.1464463770389557 -0.5000001192092896 0.8535534143447876 0.1464463770389557 -0.5000001192092896 0.8535534143447876 -0.5000001192092896 0.7071068286895752 0.4999997019767761 -0.5000001192092896 0.7071068286895752 0.4999997019767761 -0.5000001192092896 0.7071068286895752 0.4999997019767761 -0.14644622802734375 0.49999991059303284 -0.8535535335540771 -0.14644622802734375 0.49999991059303284 -0.8535535335540771 -0.14644622802734375 0.49999991059303284 -0.8535535335540771 -0.7071068286895752 2.2096436680385523e-08 -0.7071068286895752 -0.7071068286895752 2.2096436680385523e-08 -0.7071068286895752 -0.7071068286895752 2.2096436680385523e-08 -0.7071068286895752 0.70710688829422 1.110223194031746e-14 0.7071067690849304 0.70710688829422 1.110223194031746e-14 0.7071067690849304 0.70710688829422 1.110223194031746e-14 0.7071067690849304 0.7071070075035095 -5.587936584561248e-07 -0.7071065902709961 0.7071070075035095 -5.587936584561248e-07 -0.7071065902709961 0.7071070075035095 -5.587936584561248e-07 -0.7071065902709961 -2.6341791681261384e-07 -1.0 4.190952438420936e-07 -2.6341791681261384e-07 -1.0 4.190952438420936e-07 -2.6341791681261384e-07 -1.0 4.190952438420936e-07 -0.7071069478988647 1.8626457176651456e-07 0.7071065902709961 -0.7071069478988647 1.8626457176651456e-07 0.7071065902709961 -0.7071069478988647 1.8626457176651456e-07 0.7071065902709961 2.89759668703482e-07 1.0 4.656614294162864e-08 2.89759668703482e-07 1.0 4.656614294162864e-08 2.89759668703482e-07 1.0 4.656614294162864e-08 -0.8535534143447876 -0.4999999403953552 -0.14644649624824524 -0.8535534143447876 -0.4999999403953552 -0.14644649624824524 -0.8535534143447876 -0.4999999403953552 -0.14644649624824524 0.8535534143447876 0.4999999701976776 0.14644655585289001 0.8535534143447876 0.4999999701976776 0.14644655585289001 0.8535534143447876 0.4999999701976776 0.14644655585289001 0.5000003576278687 -0.7071070075035095 -0.49999934434890747 0.5000003576278687 -0.7071070075035095 -0.49999934434890747 0.5000003576278687 -0.7071070075035095 -0.49999934434890747 0.14644651114940643 -0.4999995827674866 0.8535535931587219 0.14644651114940643 -0.4999995827674866 0.8535535931587219 0.14644651114940643 -0.4999995827674866 0.8535535931587219 -0.5000001788139343 0.7071067690849304 0.4999998211860657 -0.5000001788139343 0.7071067690849304 0.4999998211860657 -0.5000001788139343 0.7071067690849304 0.4999998211860657 -0.14644639194011688 0.49999991059303284 -0.8535534143447876 -0.14644639194011688 0.49999991059303284 -0.8535534143447876 -0.14644639194011688 0.49999991059303284 -0.8535534143447876 + + + + + + + + + + + + + + +

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71

+
+
+
+
+ + + + 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 1.0 + + + + + + + + + + + + + + + +
diff --git a/benchmarks/CustomLogicParticles/CustomParticles/assets/particle.dae.import b/benchmarks/CustomLogicParticles/CustomParticles/assets/particle.dae.import new file mode 100644 index 0000000..2071e54 --- /dev/null +++ b/benchmarks/CustomLogicParticles/CustomParticles/assets/particle.dae.import @@ -0,0 +1,1053 @@ +[remap] + +importer="scene" +type="PackedScene" +path="res://.import/particle.dae-9ad1846314789d9d0cb6a301ad40c9af.scn" + +[params] + +nodes/root_type="Spatial" +nodes/root_name="Scene Root" +nodes/custom_script="" +nodes/storage=0 +materials/location=1 +materials/storage=1 +materials/keep_on_reimport=true +meshes/compress=true +meshes/ensure_tangents=true +meshes/storage=0 +external_files/store_in_subdir=false +animation/import=true +animation/fps=15 +animation/filter_script="" +animation/storage=false +animation/optimizer/enabled=true +animation/optimizer/max_linear_error=0.05 +animation/optimizer/max_angular_error=0.01 +animation/optimizer/max_angle=22 +animation/optimizer/remove_unused_tracks=true +animation/clips/amount=0 +animation/clip_1/name="" +animation/clip_1/start_frame=0 +animation/clip_1/end_frame=0 +animation/clip_1/loops=false +animation/clip_2/name="" +animation/clip_2/start_frame=0 +animation/clip_2/end_frame=0 +animation/clip_2/loops=false +animation/clip_3/name="" +animation/clip_3/start_frame=0 +animation/clip_3/end_frame=0 +animation/clip_3/loops=false +animation/clip_4/name="" +animation/clip_4/start_frame=0 +animation/clip_4/end_frame=0 +animation/clip_4/loops=false +animation/clip_5/name="" +animation/clip_5/start_frame=0 +animation/clip_5/end_frame=0 +animation/clip_5/loops=false +animation/clip_6/name="" +animation/clip_6/start_frame=0 +animation/clip_6/end_frame=0 +animation/clip_6/loops=false +animation/clip_7/name="" +animation/clip_7/start_frame=0 +animation/clip_7/end_frame=0 +animation/clip_7/loops=false +animation/clip_8/name="" +animation/clip_8/start_frame=0 +animation/clip_8/end_frame=0 +animation/clip_8/loops=false +animation/clip_9/name="" +animation/clip_9/start_frame=0 +animation/clip_9/end_frame=0 +animation/clip_9/loops=false +animation/clip_10/name="" +animation/clip_10/start_frame=0 +animation/clip_10/end_frame=0 +animation/clip_10/loops=false +animation/clip_11/name="" +animation/clip_11/start_frame=0 +animation/clip_11/end_frame=0 +animation/clip_11/loops=false +animation/clip_12/name="" +animation/clip_12/start_frame=0 +animation/clip_12/end_frame=0 +animation/clip_12/loops=false +animation/clip_13/name="" +animation/clip_13/start_frame=0 +animation/clip_13/end_frame=0 +animation/clip_13/loops=false +animation/clip_14/name="" +animation/clip_14/start_frame=0 +animation/clip_14/end_frame=0 +animation/clip_14/loops=false +animation/clip_15/name="" +animation/clip_15/start_frame=0 +animation/clip_15/end_frame=0 +animation/clip_15/loops=false +animation/clip_16/name="" +animation/clip_16/start_frame=0 +animation/clip_16/end_frame=0 +animation/clip_16/loops=false +animation/clip_17/name="" +animation/clip_17/start_frame=0 +animation/clip_17/end_frame=0 +animation/clip_17/loops=false +animation/clip_18/name="" +animation/clip_18/start_frame=0 +animation/clip_18/end_frame=0 +animation/clip_18/loops=false +animation/clip_19/name="" +animation/clip_19/start_frame=0 +animation/clip_19/end_frame=0 +animation/clip_19/loops=false +animation/clip_20/name="" +animation/clip_20/start_frame=0 +animation/clip_20/end_frame=0 +animation/clip_20/loops=false +animation/clip_21/name="" +animation/clip_21/start_frame=0 +animation/clip_21/end_frame=0 +animation/clip_21/loops=false +animation/clip_22/name="" +animation/clip_22/start_frame=0 +animation/clip_22/end_frame=0 +animation/clip_22/loops=false +animation/clip_23/name="" +animation/clip_23/start_frame=0 +animation/clip_23/end_frame=0 +animation/clip_23/loops=false +animation/clip_24/name="" +animation/clip_24/start_frame=0 +animation/clip_24/end_frame=0 +animation/clip_24/loops=false +animation/clip_25/name="" +animation/clip_25/start_frame=0 +animation/clip_25/end_frame=0 +animation/clip_25/loops=false +animation/clip_26/name="" +animation/clip_26/start_frame=0 +animation/clip_26/end_frame=0 +animation/clip_26/loops=false +animation/clip_27/name="" +animation/clip_27/start_frame=0 +animation/clip_27/end_frame=0 +animation/clip_27/loops=false +animation/clip_28/name="" +animation/clip_28/start_frame=0 +animation/clip_28/end_frame=0 +animation/clip_28/loops=false +animation/clip_29/name="" +animation/clip_29/start_frame=0 +animation/clip_29/end_frame=0 +animation/clip_29/loops=false +animation/clip_30/name="" +animation/clip_30/start_frame=0 +animation/clip_30/end_frame=0 +animation/clip_30/loops=false +animation/clip_31/name="" +animation/clip_31/start_frame=0 +animation/clip_31/end_frame=0 +animation/clip_31/loops=false +animation/clip_32/name="" +animation/clip_32/start_frame=0 +animation/clip_32/end_frame=0 +animation/clip_32/loops=false +animation/clip_33/name="" +animation/clip_33/start_frame=0 +animation/clip_33/end_frame=0 +animation/clip_33/loops=false +animation/clip_34/name="" +animation/clip_34/start_frame=0 +animation/clip_34/end_frame=0 +animation/clip_34/loops=false +animation/clip_35/name="" +animation/clip_35/start_frame=0 +animation/clip_35/end_frame=0 +animation/clip_35/loops=false +animation/clip_36/name="" +animation/clip_36/start_frame=0 +animation/clip_36/end_frame=0 +animation/clip_36/loops=false +animation/clip_37/name="" +animation/clip_37/start_frame=0 +animation/clip_37/end_frame=0 +animation/clip_37/loops=false +animation/clip_38/name="" +animation/clip_38/start_frame=0 +animation/clip_38/end_frame=0 +animation/clip_38/loops=false +animation/clip_39/name="" +animation/clip_39/start_frame=0 +animation/clip_39/end_frame=0 +animation/clip_39/loops=false +animation/clip_40/name="" +animation/clip_40/start_frame=0 +animation/clip_40/end_frame=0 +animation/clip_40/loops=false +animation/clip_41/name="" +animation/clip_41/start_frame=0 +animation/clip_41/end_frame=0 +animation/clip_41/loops=false +animation/clip_42/name="" +animation/clip_42/start_frame=0 +animation/clip_42/end_frame=0 +animation/clip_42/loops=false +animation/clip_43/name="" +animation/clip_43/start_frame=0 +animation/clip_43/end_frame=0 +animation/clip_43/loops=false +animation/clip_44/name="" +animation/clip_44/start_frame=0 +animation/clip_44/end_frame=0 +animation/clip_44/loops=false +animation/clip_45/name="" +animation/clip_45/start_frame=0 +animation/clip_45/end_frame=0 +animation/clip_45/loops=false +animation/clip_46/name="" +animation/clip_46/start_frame=0 +animation/clip_46/end_frame=0 +animation/clip_46/loops=false +animation/clip_47/name="" +animation/clip_47/start_frame=0 +animation/clip_47/end_frame=0 +animation/clip_47/loops=false +animation/clip_48/name="" +animation/clip_48/start_frame=0 +animation/clip_48/end_frame=0 +animation/clip_48/loops=false +animation/clip_49/name="" +animation/clip_49/start_frame=0 +animation/clip_49/end_frame=0 +animation/clip_49/loops=false +animation/clip_50/name="" +animation/clip_50/start_frame=0 +animation/clip_50/end_frame=0 +animation/clip_50/loops=false +animation/clip_51/name="" +animation/clip_51/start_frame=0 +animation/clip_51/end_frame=0 +animation/clip_51/loops=false +animation/clip_52/name="" +animation/clip_52/start_frame=0 +animation/clip_52/end_frame=0 +animation/clip_52/loops=false +animation/clip_53/name="" +animation/clip_53/start_frame=0 +animation/clip_53/end_frame=0 +animation/clip_53/loops=false +animation/clip_54/name="" +animation/clip_54/start_frame=0 +animation/clip_54/end_frame=0 +animation/clip_54/loops=false +animation/clip_55/name="" +animation/clip_55/start_frame=0 +animation/clip_55/end_frame=0 +animation/clip_55/loops=false +animation/clip_56/name="" +animation/clip_56/start_frame=0 +animation/clip_56/end_frame=0 +animation/clip_56/loops=false +animation/clip_57/name="" +animation/clip_57/start_frame=0 +animation/clip_57/end_frame=0 +animation/clip_57/loops=false +animation/clip_58/name="" +animation/clip_58/start_frame=0 +animation/clip_58/end_frame=0 +animation/clip_58/loops=false +animation/clip_59/name="" +animation/clip_59/start_frame=0 +animation/clip_59/end_frame=0 +animation/clip_59/loops=false +animation/clip_60/name="" +animation/clip_60/start_frame=0 +animation/clip_60/end_frame=0 +animation/clip_60/loops=false +animation/clip_61/name="" +animation/clip_61/start_frame=0 +animation/clip_61/end_frame=0 +animation/clip_61/loops=false +animation/clip_62/name="" +animation/clip_62/start_frame=0 +animation/clip_62/end_frame=0 +animation/clip_62/loops=false +animation/clip_63/name="" +animation/clip_63/start_frame=0 +animation/clip_63/end_frame=0 +animation/clip_63/loops=false +animation/clip_64/name="" +animation/clip_64/start_frame=0 +animation/clip_64/end_frame=0 +animation/clip_64/loops=false +animation/clip_65/name="" +animation/clip_65/start_frame=0 +animation/clip_65/end_frame=0 +animation/clip_65/loops=false +animation/clip_66/name="" +animation/clip_66/start_frame=0 +animation/clip_66/end_frame=0 +animation/clip_66/loops=false +animation/clip_67/name="" +animation/clip_67/start_frame=0 +animation/clip_67/end_frame=0 +animation/clip_67/loops=false +animation/clip_68/name="" +animation/clip_68/start_frame=0 +animation/clip_68/end_frame=0 +animation/clip_68/loops=false +animation/clip_69/name="" +animation/clip_69/start_frame=0 +animation/clip_69/end_frame=0 +animation/clip_69/loops=false +animation/clip_70/name="" +animation/clip_70/start_frame=0 +animation/clip_70/end_frame=0 +animation/clip_70/loops=false +animation/clip_71/name="" +animation/clip_71/start_frame=0 +animation/clip_71/end_frame=0 +animation/clip_71/loops=false +animation/clip_72/name="" +animation/clip_72/start_frame=0 +animation/clip_72/end_frame=0 +animation/clip_72/loops=false +animation/clip_73/name="" +animation/clip_73/start_frame=0 +animation/clip_73/end_frame=0 +animation/clip_73/loops=false +animation/clip_74/name="" +animation/clip_74/start_frame=0 +animation/clip_74/end_frame=0 +animation/clip_74/loops=false +animation/clip_75/name="" +animation/clip_75/start_frame=0 +animation/clip_75/end_frame=0 +animation/clip_75/loops=false +animation/clip_76/name="" +animation/clip_76/start_frame=0 +animation/clip_76/end_frame=0 +animation/clip_76/loops=false +animation/clip_77/name="" +animation/clip_77/start_frame=0 +animation/clip_77/end_frame=0 +animation/clip_77/loops=false +animation/clip_78/name="" +animation/clip_78/start_frame=0 +animation/clip_78/end_frame=0 +animation/clip_78/loops=false +animation/clip_79/name="" +animation/clip_79/start_frame=0 +animation/clip_79/end_frame=0 +animation/clip_79/loops=false +animation/clip_80/name="" +animation/clip_80/start_frame=0 +animation/clip_80/end_frame=0 +animation/clip_80/loops=false +animation/clip_81/name="" +animation/clip_81/start_frame=0 +animation/clip_81/end_frame=0 +animation/clip_81/loops=false +animation/clip_82/name="" +animation/clip_82/start_frame=0 +animation/clip_82/end_frame=0 +animation/clip_82/loops=false +animation/clip_83/name="" +animation/clip_83/start_frame=0 +animation/clip_83/end_frame=0 +animation/clip_83/loops=false +animation/clip_84/name="" +animation/clip_84/start_frame=0 +animation/clip_84/end_frame=0 +animation/clip_84/loops=false +animation/clip_85/name="" +animation/clip_85/start_frame=0 +animation/clip_85/end_frame=0 +animation/clip_85/loops=false +animation/clip_86/name="" +animation/clip_86/start_frame=0 +animation/clip_86/end_frame=0 +animation/clip_86/loops=false +animation/clip_87/name="" +animation/clip_87/start_frame=0 +animation/clip_87/end_frame=0 +animation/clip_87/loops=false +animation/clip_88/name="" +animation/clip_88/start_frame=0 +animation/clip_88/end_frame=0 +animation/clip_88/loops=false +animation/clip_89/name="" +animation/clip_89/start_frame=0 +animation/clip_89/end_frame=0 +animation/clip_89/loops=false +animation/clip_90/name="" +animation/clip_90/start_frame=0 +animation/clip_90/end_frame=0 +animation/clip_90/loops=false +animation/clip_91/name="" +animation/clip_91/start_frame=0 +animation/clip_91/end_frame=0 +animation/clip_91/loops=false +animation/clip_92/name="" +animation/clip_92/start_frame=0 +animation/clip_92/end_frame=0 +animation/clip_92/loops=false +animation/clip_93/name="" +animation/clip_93/start_frame=0 +animation/clip_93/end_frame=0 +animation/clip_93/loops=false +animation/clip_94/name="" +animation/clip_94/start_frame=0 +animation/clip_94/end_frame=0 +animation/clip_94/loops=false +animation/clip_95/name="" +animation/clip_95/start_frame=0 +animation/clip_95/end_frame=0 +animation/clip_95/loops=false +animation/clip_96/name="" +animation/clip_96/start_frame=0 +animation/clip_96/end_frame=0 +animation/clip_96/loops=false +animation/clip_97/name="" +animation/clip_97/start_frame=0 +animation/clip_97/end_frame=0 +animation/clip_97/loops=false +animation/clip_98/name="" +animation/clip_98/start_frame=0 +animation/clip_98/end_frame=0 +animation/clip_98/loops=false +animation/clip_99/name="" +animation/clip_99/start_frame=0 +animation/clip_99/end_frame=0 +animation/clip_99/loops=false +animation/clip_100/name="" +animation/clip_100/start_frame=0 +animation/clip_100/end_frame=0 +animation/clip_100/loops=false +animation/clip_101/name="" +animation/clip_101/start_frame=0 +animation/clip_101/end_frame=0 +animation/clip_101/loops=false +animation/clip_102/name="" +animation/clip_102/start_frame=0 +animation/clip_102/end_frame=0 +animation/clip_102/loops=false +animation/clip_103/name="" +animation/clip_103/start_frame=0 +animation/clip_103/end_frame=0 +animation/clip_103/loops=false +animation/clip_104/name="" +animation/clip_104/start_frame=0 +animation/clip_104/end_frame=0 +animation/clip_104/loops=false +animation/clip_105/name="" +animation/clip_105/start_frame=0 +animation/clip_105/end_frame=0 +animation/clip_105/loops=false +animation/clip_106/name="" +animation/clip_106/start_frame=0 +animation/clip_106/end_frame=0 +animation/clip_106/loops=false +animation/clip_107/name="" +animation/clip_107/start_frame=0 +animation/clip_107/end_frame=0 +animation/clip_107/loops=false +animation/clip_108/name="" +animation/clip_108/start_frame=0 +animation/clip_108/end_frame=0 +animation/clip_108/loops=false +animation/clip_109/name="" +animation/clip_109/start_frame=0 +animation/clip_109/end_frame=0 +animation/clip_109/loops=false +animation/clip_110/name="" +animation/clip_110/start_frame=0 +animation/clip_110/end_frame=0 +animation/clip_110/loops=false +animation/clip_111/name="" +animation/clip_111/start_frame=0 +animation/clip_111/end_frame=0 +animation/clip_111/loops=false +animation/clip_112/name="" +animation/clip_112/start_frame=0 +animation/clip_112/end_frame=0 +animation/clip_112/loops=false +animation/clip_113/name="" +animation/clip_113/start_frame=0 +animation/clip_113/end_frame=0 +animation/clip_113/loops=false +animation/clip_114/name="" +animation/clip_114/start_frame=0 +animation/clip_114/end_frame=0 +animation/clip_114/loops=false +animation/clip_115/name="" +animation/clip_115/start_frame=0 +animation/clip_115/end_frame=0 +animation/clip_115/loops=false +animation/clip_116/name="" +animation/clip_116/start_frame=0 +animation/clip_116/end_frame=0 +animation/clip_116/loops=false +animation/clip_117/name="" +animation/clip_117/start_frame=0 +animation/clip_117/end_frame=0 +animation/clip_117/loops=false +animation/clip_118/name="" +animation/clip_118/start_frame=0 +animation/clip_118/end_frame=0 +animation/clip_118/loops=false +animation/clip_119/name="" +animation/clip_119/start_frame=0 +animation/clip_119/end_frame=0 +animation/clip_119/loops=false +animation/clip_120/name="" +animation/clip_120/start_frame=0 +animation/clip_120/end_frame=0 +animation/clip_120/loops=false +animation/clip_121/name="" +animation/clip_121/start_frame=0 +animation/clip_121/end_frame=0 +animation/clip_121/loops=false +animation/clip_122/name="" +animation/clip_122/start_frame=0 +animation/clip_122/end_frame=0 +animation/clip_122/loops=false +animation/clip_123/name="" +animation/clip_123/start_frame=0 +animation/clip_123/end_frame=0 +animation/clip_123/loops=false +animation/clip_124/name="" +animation/clip_124/start_frame=0 +animation/clip_124/end_frame=0 +animation/clip_124/loops=false +animation/clip_125/name="" +animation/clip_125/start_frame=0 +animation/clip_125/end_frame=0 +animation/clip_125/loops=false +animation/clip_126/name="" +animation/clip_126/start_frame=0 +animation/clip_126/end_frame=0 +animation/clip_126/loops=false +animation/clip_127/name="" +animation/clip_127/start_frame=0 +animation/clip_127/end_frame=0 +animation/clip_127/loops=false +animation/clip_128/name="" +animation/clip_128/start_frame=0 +animation/clip_128/end_frame=0 +animation/clip_128/loops=false +animation/clip_129/name="" +animation/clip_129/start_frame=0 +animation/clip_129/end_frame=0 +animation/clip_129/loops=false +animation/clip_130/name="" +animation/clip_130/start_frame=0 +animation/clip_130/end_frame=0 +animation/clip_130/loops=false +animation/clip_131/name="" +animation/clip_131/start_frame=0 +animation/clip_131/end_frame=0 +animation/clip_131/loops=false +animation/clip_132/name="" +animation/clip_132/start_frame=0 +animation/clip_132/end_frame=0 +animation/clip_132/loops=false +animation/clip_133/name="" +animation/clip_133/start_frame=0 +animation/clip_133/end_frame=0 +animation/clip_133/loops=false +animation/clip_134/name="" +animation/clip_134/start_frame=0 +animation/clip_134/end_frame=0 +animation/clip_134/loops=false +animation/clip_135/name="" +animation/clip_135/start_frame=0 +animation/clip_135/end_frame=0 +animation/clip_135/loops=false +animation/clip_136/name="" +animation/clip_136/start_frame=0 +animation/clip_136/end_frame=0 +animation/clip_136/loops=false +animation/clip_137/name="" +animation/clip_137/start_frame=0 +animation/clip_137/end_frame=0 +animation/clip_137/loops=false +animation/clip_138/name="" +animation/clip_138/start_frame=0 +animation/clip_138/end_frame=0 +animation/clip_138/loops=false +animation/clip_139/name="" +animation/clip_139/start_frame=0 +animation/clip_139/end_frame=0 +animation/clip_139/loops=false +animation/clip_140/name="" +animation/clip_140/start_frame=0 +animation/clip_140/end_frame=0 +animation/clip_140/loops=false +animation/clip_141/name="" +animation/clip_141/start_frame=0 +animation/clip_141/end_frame=0 +animation/clip_141/loops=false +animation/clip_142/name="" +animation/clip_142/start_frame=0 +animation/clip_142/end_frame=0 +animation/clip_142/loops=false +animation/clip_143/name="" +animation/clip_143/start_frame=0 +animation/clip_143/end_frame=0 +animation/clip_143/loops=false +animation/clip_144/name="" +animation/clip_144/start_frame=0 +animation/clip_144/end_frame=0 +animation/clip_144/loops=false +animation/clip_145/name="" +animation/clip_145/start_frame=0 +animation/clip_145/end_frame=0 +animation/clip_145/loops=false +animation/clip_146/name="" +animation/clip_146/start_frame=0 +animation/clip_146/end_frame=0 +animation/clip_146/loops=false +animation/clip_147/name="" +animation/clip_147/start_frame=0 +animation/clip_147/end_frame=0 +animation/clip_147/loops=false +animation/clip_148/name="" +animation/clip_148/start_frame=0 +animation/clip_148/end_frame=0 +animation/clip_148/loops=false +animation/clip_149/name="" +animation/clip_149/start_frame=0 +animation/clip_149/end_frame=0 +animation/clip_149/loops=false +animation/clip_150/name="" +animation/clip_150/start_frame=0 +animation/clip_150/end_frame=0 +animation/clip_150/loops=false +animation/clip_151/name="" +animation/clip_151/start_frame=0 +animation/clip_151/end_frame=0 +animation/clip_151/loops=false +animation/clip_152/name="" +animation/clip_152/start_frame=0 +animation/clip_152/end_frame=0 +animation/clip_152/loops=false +animation/clip_153/name="" +animation/clip_153/start_frame=0 +animation/clip_153/end_frame=0 +animation/clip_153/loops=false +animation/clip_154/name="" +animation/clip_154/start_frame=0 +animation/clip_154/end_frame=0 +animation/clip_154/loops=false +animation/clip_155/name="" +animation/clip_155/start_frame=0 +animation/clip_155/end_frame=0 +animation/clip_155/loops=false +animation/clip_156/name="" +animation/clip_156/start_frame=0 +animation/clip_156/end_frame=0 +animation/clip_156/loops=false +animation/clip_157/name="" +animation/clip_157/start_frame=0 +animation/clip_157/end_frame=0 +animation/clip_157/loops=false +animation/clip_158/name="" +animation/clip_158/start_frame=0 +animation/clip_158/end_frame=0 +animation/clip_158/loops=false +animation/clip_159/name="" +animation/clip_159/start_frame=0 +animation/clip_159/end_frame=0 +animation/clip_159/loops=false +animation/clip_160/name="" +animation/clip_160/start_frame=0 +animation/clip_160/end_frame=0 +animation/clip_160/loops=false +animation/clip_161/name="" +animation/clip_161/start_frame=0 +animation/clip_161/end_frame=0 +animation/clip_161/loops=false +animation/clip_162/name="" +animation/clip_162/start_frame=0 +animation/clip_162/end_frame=0 +animation/clip_162/loops=false +animation/clip_163/name="" +animation/clip_163/start_frame=0 +animation/clip_163/end_frame=0 +animation/clip_163/loops=false +animation/clip_164/name="" +animation/clip_164/start_frame=0 +animation/clip_164/end_frame=0 +animation/clip_164/loops=false +animation/clip_165/name="" +animation/clip_165/start_frame=0 +animation/clip_165/end_frame=0 +animation/clip_165/loops=false +animation/clip_166/name="" +animation/clip_166/start_frame=0 +animation/clip_166/end_frame=0 +animation/clip_166/loops=false +animation/clip_167/name="" +animation/clip_167/start_frame=0 +animation/clip_167/end_frame=0 +animation/clip_167/loops=false +animation/clip_168/name="" +animation/clip_168/start_frame=0 +animation/clip_168/end_frame=0 +animation/clip_168/loops=false +animation/clip_169/name="" +animation/clip_169/start_frame=0 +animation/clip_169/end_frame=0 +animation/clip_169/loops=false +animation/clip_170/name="" +animation/clip_170/start_frame=0 +animation/clip_170/end_frame=0 +animation/clip_170/loops=false +animation/clip_171/name="" +animation/clip_171/start_frame=0 +animation/clip_171/end_frame=0 +animation/clip_171/loops=false +animation/clip_172/name="" +animation/clip_172/start_frame=0 +animation/clip_172/end_frame=0 +animation/clip_172/loops=false +animation/clip_173/name="" +animation/clip_173/start_frame=0 +animation/clip_173/end_frame=0 +animation/clip_173/loops=false +animation/clip_174/name="" +animation/clip_174/start_frame=0 +animation/clip_174/end_frame=0 +animation/clip_174/loops=false +animation/clip_175/name="" +animation/clip_175/start_frame=0 +animation/clip_175/end_frame=0 +animation/clip_175/loops=false +animation/clip_176/name="" +animation/clip_176/start_frame=0 +animation/clip_176/end_frame=0 +animation/clip_176/loops=false +animation/clip_177/name="" +animation/clip_177/start_frame=0 +animation/clip_177/end_frame=0 +animation/clip_177/loops=false +animation/clip_178/name="" +animation/clip_178/start_frame=0 +animation/clip_178/end_frame=0 +animation/clip_178/loops=false +animation/clip_179/name="" +animation/clip_179/start_frame=0 +animation/clip_179/end_frame=0 +animation/clip_179/loops=false +animation/clip_180/name="" +animation/clip_180/start_frame=0 +animation/clip_180/end_frame=0 +animation/clip_180/loops=false +animation/clip_181/name="" +animation/clip_181/start_frame=0 +animation/clip_181/end_frame=0 +animation/clip_181/loops=false +animation/clip_182/name="" +animation/clip_182/start_frame=0 +animation/clip_182/end_frame=0 +animation/clip_182/loops=false +animation/clip_183/name="" +animation/clip_183/start_frame=0 +animation/clip_183/end_frame=0 +animation/clip_183/loops=false +animation/clip_184/name="" +animation/clip_184/start_frame=0 +animation/clip_184/end_frame=0 +animation/clip_184/loops=false +animation/clip_185/name="" +animation/clip_185/start_frame=0 +animation/clip_185/end_frame=0 +animation/clip_185/loops=false +animation/clip_186/name="" +animation/clip_186/start_frame=0 +animation/clip_186/end_frame=0 +animation/clip_186/loops=false +animation/clip_187/name="" +animation/clip_187/start_frame=0 +animation/clip_187/end_frame=0 +animation/clip_187/loops=false +animation/clip_188/name="" +animation/clip_188/start_frame=0 +animation/clip_188/end_frame=0 +animation/clip_188/loops=false +animation/clip_189/name="" +animation/clip_189/start_frame=0 +animation/clip_189/end_frame=0 +animation/clip_189/loops=false +animation/clip_190/name="" +animation/clip_190/start_frame=0 +animation/clip_190/end_frame=0 +animation/clip_190/loops=false +animation/clip_191/name="" +animation/clip_191/start_frame=0 +animation/clip_191/end_frame=0 +animation/clip_191/loops=false +animation/clip_192/name="" +animation/clip_192/start_frame=0 +animation/clip_192/end_frame=0 +animation/clip_192/loops=false +animation/clip_193/name="" +animation/clip_193/start_frame=0 +animation/clip_193/end_frame=0 +animation/clip_193/loops=false +animation/clip_194/name="" +animation/clip_194/start_frame=0 +animation/clip_194/end_frame=0 +animation/clip_194/loops=false +animation/clip_195/name="" +animation/clip_195/start_frame=0 +animation/clip_195/end_frame=0 +animation/clip_195/loops=false +animation/clip_196/name="" +animation/clip_196/start_frame=0 +animation/clip_196/end_frame=0 +animation/clip_196/loops=false +animation/clip_197/name="" +animation/clip_197/start_frame=0 +animation/clip_197/end_frame=0 +animation/clip_197/loops=false +animation/clip_198/name="" +animation/clip_198/start_frame=0 +animation/clip_198/end_frame=0 +animation/clip_198/loops=false +animation/clip_199/name="" +animation/clip_199/start_frame=0 +animation/clip_199/end_frame=0 +animation/clip_199/loops=false +animation/clip_200/name="" +animation/clip_200/start_frame=0 +animation/clip_200/end_frame=0 +animation/clip_200/loops=false +animation/clip_201/name="" +animation/clip_201/start_frame=0 +animation/clip_201/end_frame=0 +animation/clip_201/loops=false +animation/clip_202/name="" +animation/clip_202/start_frame=0 +animation/clip_202/end_frame=0 +animation/clip_202/loops=false +animation/clip_203/name="" +animation/clip_203/start_frame=0 +animation/clip_203/end_frame=0 +animation/clip_203/loops=false +animation/clip_204/name="" +animation/clip_204/start_frame=0 +animation/clip_204/end_frame=0 +animation/clip_204/loops=false +animation/clip_205/name="" +animation/clip_205/start_frame=0 +animation/clip_205/end_frame=0 +animation/clip_205/loops=false +animation/clip_206/name="" +animation/clip_206/start_frame=0 +animation/clip_206/end_frame=0 +animation/clip_206/loops=false +animation/clip_207/name="" +animation/clip_207/start_frame=0 +animation/clip_207/end_frame=0 +animation/clip_207/loops=false +animation/clip_208/name="" +animation/clip_208/start_frame=0 +animation/clip_208/end_frame=0 +animation/clip_208/loops=false +animation/clip_209/name="" +animation/clip_209/start_frame=0 +animation/clip_209/end_frame=0 +animation/clip_209/loops=false +animation/clip_210/name="" +animation/clip_210/start_frame=0 +animation/clip_210/end_frame=0 +animation/clip_210/loops=false +animation/clip_211/name="" +animation/clip_211/start_frame=0 +animation/clip_211/end_frame=0 +animation/clip_211/loops=false +animation/clip_212/name="" +animation/clip_212/start_frame=0 +animation/clip_212/end_frame=0 +animation/clip_212/loops=false +animation/clip_213/name="" +animation/clip_213/start_frame=0 +animation/clip_213/end_frame=0 +animation/clip_213/loops=false +animation/clip_214/name="" +animation/clip_214/start_frame=0 +animation/clip_214/end_frame=0 +animation/clip_214/loops=false +animation/clip_215/name="" +animation/clip_215/start_frame=0 +animation/clip_215/end_frame=0 +animation/clip_215/loops=false +animation/clip_216/name="" +animation/clip_216/start_frame=0 +animation/clip_216/end_frame=0 +animation/clip_216/loops=false +animation/clip_217/name="" +animation/clip_217/start_frame=0 +animation/clip_217/end_frame=0 +animation/clip_217/loops=false +animation/clip_218/name="" +animation/clip_218/start_frame=0 +animation/clip_218/end_frame=0 +animation/clip_218/loops=false +animation/clip_219/name="" +animation/clip_219/start_frame=0 +animation/clip_219/end_frame=0 +animation/clip_219/loops=false +animation/clip_220/name="" +animation/clip_220/start_frame=0 +animation/clip_220/end_frame=0 +animation/clip_220/loops=false +animation/clip_221/name="" +animation/clip_221/start_frame=0 +animation/clip_221/end_frame=0 +animation/clip_221/loops=false +animation/clip_222/name="" +animation/clip_222/start_frame=0 +animation/clip_222/end_frame=0 +animation/clip_222/loops=false +animation/clip_223/name="" +animation/clip_223/start_frame=0 +animation/clip_223/end_frame=0 +animation/clip_223/loops=false +animation/clip_224/name="" +animation/clip_224/start_frame=0 +animation/clip_224/end_frame=0 +animation/clip_224/loops=false +animation/clip_225/name="" +animation/clip_225/start_frame=0 +animation/clip_225/end_frame=0 +animation/clip_225/loops=false +animation/clip_226/name="" +animation/clip_226/start_frame=0 +animation/clip_226/end_frame=0 +animation/clip_226/loops=false +animation/clip_227/name="" +animation/clip_227/start_frame=0 +animation/clip_227/end_frame=0 +animation/clip_227/loops=false +animation/clip_228/name="" +animation/clip_228/start_frame=0 +animation/clip_228/end_frame=0 +animation/clip_228/loops=false +animation/clip_229/name="" +animation/clip_229/start_frame=0 +animation/clip_229/end_frame=0 +animation/clip_229/loops=false +animation/clip_230/name="" +animation/clip_230/start_frame=0 +animation/clip_230/end_frame=0 +animation/clip_230/loops=false +animation/clip_231/name="" +animation/clip_231/start_frame=0 +animation/clip_231/end_frame=0 +animation/clip_231/loops=false +animation/clip_232/name="" +animation/clip_232/start_frame=0 +animation/clip_232/end_frame=0 +animation/clip_232/loops=false +animation/clip_233/name="" +animation/clip_233/start_frame=0 +animation/clip_233/end_frame=0 +animation/clip_233/loops=false +animation/clip_234/name="" +animation/clip_234/start_frame=0 +animation/clip_234/end_frame=0 +animation/clip_234/loops=false +animation/clip_235/name="" +animation/clip_235/start_frame=0 +animation/clip_235/end_frame=0 +animation/clip_235/loops=false +animation/clip_236/name="" +animation/clip_236/start_frame=0 +animation/clip_236/end_frame=0 +animation/clip_236/loops=false +animation/clip_237/name="" +animation/clip_237/start_frame=0 +animation/clip_237/end_frame=0 +animation/clip_237/loops=false +animation/clip_238/name="" +animation/clip_238/start_frame=0 +animation/clip_238/end_frame=0 +animation/clip_238/loops=false +animation/clip_239/name="" +animation/clip_239/start_frame=0 +animation/clip_239/end_frame=0 +animation/clip_239/loops=false +animation/clip_240/name="" +animation/clip_240/start_frame=0 +animation/clip_240/end_frame=0 +animation/clip_240/loops=false +animation/clip_241/name="" +animation/clip_241/start_frame=0 +animation/clip_241/end_frame=0 +animation/clip_241/loops=false +animation/clip_242/name="" +animation/clip_242/start_frame=0 +animation/clip_242/end_frame=0 +animation/clip_242/loops=false +animation/clip_243/name="" +animation/clip_243/start_frame=0 +animation/clip_243/end_frame=0 +animation/clip_243/loops=false +animation/clip_244/name="" +animation/clip_244/start_frame=0 +animation/clip_244/end_frame=0 +animation/clip_244/loops=false +animation/clip_245/name="" +animation/clip_245/start_frame=0 +animation/clip_245/end_frame=0 +animation/clip_245/loops=false +animation/clip_246/name="" +animation/clip_246/start_frame=0 +animation/clip_246/end_frame=0 +animation/clip_246/loops=false +animation/clip_247/name="" +animation/clip_247/start_frame=0 +animation/clip_247/end_frame=0 +animation/clip_247/loops=false +animation/clip_248/name="" +animation/clip_248/start_frame=0 +animation/clip_248/end_frame=0 +animation/clip_248/loops=false +animation/clip_249/name="" +animation/clip_249/start_frame=0 +animation/clip_249/end_frame=0 +animation/clip_249/loops=false +animation/clip_250/name="" +animation/clip_250/start_frame=0 +animation/clip_250/end_frame=0 +animation/clip_250/loops=false +animation/clip_251/name="" +animation/clip_251/start_frame=0 +animation/clip_251/end_frame=0 +animation/clip_251/loops=false +animation/clip_252/name="" +animation/clip_252/start_frame=0 +animation/clip_252/end_frame=0 +animation/clip_252/loops=false +animation/clip_253/name="" +animation/clip_253/start_frame=0 +animation/clip_253/end_frame=0 +animation/clip_253/loops=false +animation/clip_254/name="" +animation/clip_254/start_frame=0 +animation/clip_254/end_frame=0 +animation/clip_254/loops=false +animation/clip_255/name="" +animation/clip_255/start_frame=0 +animation/clip_255/end_frame=0 +animation/clip_255/loops=false +animation/clip_256/name="" +animation/clip_256/start_frame=0 +animation/clip_256/end_frame=0 +animation/clip_256/loops=false diff --git a/benchmarks/CustomLogicParticles/CustomParticles/assets/particle.mesh b/benchmarks/CustomLogicParticles/CustomParticles/assets/particle.mesh new file mode 100644 index 0000000000000000000000000000000000000000..6a75ced4d4a2e64b0619acd0d346ee369f6875a3 GIT binary patch literal 1462 zcmV;n1xfl+Q$s@n000005C8yj4gdh21pojjwJ-f(at);{0A{jaV71 zW=tZ1e-wSbM^+q5fXh&f&cO_($*=7TTi5Fi(rI$mjJL=w`!JuqwEGgF(UN2V7{@>6hUmLgHn1inyyXc}7C6!90yvi*L zQ*K+1qb*~4zR0(?t8wMJ*1nfD3%UB)?6dUa<zN5mCmhY#vvs!{|k7f)<(@jZh4Yb?n5gJq%zHFTVKyP1(P;L982|H3=_baYxoaLD;@ zVMc~RDh39%GVwA&0tkc$E)E(nSfC&Qf|dgYRvs`;1qiULtge!Ra$-`lGVz~AL_$g+ zA08bX8~;lIG)#Ayx#U>;@{Z(q*$ct3qI>aB_O`W*vMsfED}T^Ip=xYLxCV;Hpinia zEaN&LLV$P-^eCNXC#7qTTlSOQmR-W)j1YR^%$Q=}j1c-UdLi^OQelc=^g`$-%UGiX zl);(0C*Ih_>T!67Z@A7iJi~FG^VMyBbJc5(;WW4K3$JjQ&z!p3^5!(0Plk%|T-i%tP4-P7k*GK(p$Om5*QzaVA0 zG%GRwS5-W!Zt|A$%@tCYezqZvf0xYEn$<>z`r4O-dE{9+{!*`)5}%s0qoi$qO^B$D+SU;)r-sdpmIl0A-h(HWbdp z122KA+_Vp88C2Qi{}c*FO|bYeG{lXr;`w(sM;es&6*kca|a`q*$AE;fxs;=tp#nk$$-xUKKps3PARZ1Ql_L(#s{F8}}l literal 0 HcmV?d00001 diff --git a/benchmarks/CustomLogicParticles/README.md b/benchmarks/CustomLogicParticles/README.md new file mode 100644 index 0000000..25ed908 --- /dev/null +++ b/benchmarks/CustomLogicParticles/README.md @@ -0,0 +1 @@ +CustomParticlesBenchmark diff --git a/benchmarks/CustomLogicParticles/default_env.tres b/benchmarks/CustomLogicParticles/default_env.tres new file mode 100644 index 0000000..0dd9084 --- /dev/null +++ b/benchmarks/CustomLogicParticles/default_env.tres @@ -0,0 +1,99 @@ +[gd_resource type="Environment" load_steps=2 format=2] + +[sub_resource type="ProceduralSky" id=1] + +radiance_size = 4 +sky_top_color = Color( 0.0470588, 0.454902, 0.976471, 1 ) +sky_horizon_color = Color( 0.556863, 0.823529, 0.909804, 1 ) +sky_curve = 0.25 +sky_energy = 1.0 +ground_bottom_color = Color( 0.101961, 0.145098, 0.188235, 1 ) +ground_horizon_color = Color( 0.482353, 0.788235, 0.952941, 1 ) +ground_curve = 0.01 +ground_energy = 1.0 +sun_color = Color( 1, 1, 1, 1 ) +sun_latitude = 35.0 +sun_longitude = 0.0 +sun_angle_min = 1.0 +sun_angle_max = 100.0 +sun_curve = 0.05 +sun_energy = 16.0 +texture_size = 2 + +[resource] + +background_mode = 2 +background_sky = SubResource( 1 ) +background_sky_custom_fov = 0.0 +background_color = Color( 0, 0, 0, 1 ) +background_energy = 1.0 +background_canvas_max_layer = 0 +ambient_light_color = Color( 0, 0, 0, 1 ) +ambient_light_energy = 1.0 +ambient_light_sky_contribution = 1.0 +fog_enabled = false +fog_color = Color( 0.5, 0.6, 0.7, 1 ) +fog_sun_color = Color( 1, 0.9, 0.7, 1 ) +fog_sun_amount = 0.0 +fog_depth_enabled = true +fog_depth_begin = 10.0 +fog_depth_curve = 1.0 +fog_transmit_enabled = false +fog_transmit_curve = 1.0 +fog_height_enabled = false +fog_height_min = 0.0 +fog_height_max = 100.0 +fog_height_curve = 1.0 +tonemap_mode = 0 +tonemap_exposure = 1.0 +tonemap_white = 1.0 +auto_exposure_enabled = false +auto_exposure_scale = 0.4 +auto_exposure_min_luma = 0.05 +auto_exposure_max_luma = 8.0 +auto_exposure_speed = 0.5 +ss_reflections_enabled = false +ss_reflections_max_steps = 64 +ss_reflections_fade_in = 0.15 +ss_reflections_fade_out = 2.0 +ss_reflections_depth_tolerance = 0.2 +ss_reflections_roughness = true +ssao_enabled = false +ssao_radius = 1.0 +ssao_intensity = 1.0 +ssao_radius2 = 0.0 +ssao_intensity2 = 1.0 +ssao_bias = 0.01 +ssao_light_affect = 0.0 +ssao_color = Color( 0, 0, 0, 1 ) +ssao_blur = true +dof_blur_far_enabled = false +dof_blur_far_distance = 10.0 +dof_blur_far_transition = 5.0 +dof_blur_far_amount = 0.1 +dof_blur_far_quality = 1 +dof_blur_near_enabled = false +dof_blur_near_distance = 2.0 +dof_blur_near_transition = 1.0 +dof_blur_near_amount = 0.1 +dof_blur_near_quality = 1 +glow_enabled = false +glow_levels/1 = false +glow_levels/2 = false +glow_levels/3 = true +glow_levels/4 = false +glow_levels/5 = true +glow_levels/6 = false +glow_levels/7 = false +glow_intensity = 0.8 +glow_strength = 1.0 +glow_bloom = 0.0 +glow_blend_mode = 2 +glow_hdr_threshold = 1.0 +glow_hdr_scale = 2.0 +glow_bicubic_upscale = false +adjustment_enabled = false +adjustment_brightness = 1.0 +adjustment_contrast = 1.0 +adjustment_saturation = 1.0 + diff --git a/benchmarks/CustomLogicParticles/icon.png b/benchmarks/CustomLogicParticles/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..a0b64eee944cb4cfb2aa8dc0d8d78faf6ca44dc1 GIT binary patch literal 3498 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 Y|LV|6es%hBO8@`>07*qoM6N<$f`}~Z-v9sr literal 0 HcmV?d00001 diff --git a/benchmarks/CustomLogicParticles/icon.png.import b/benchmarks/CustomLogicParticles/icon.png.import new file mode 100644 index 0000000..42e94a3 --- /dev/null +++ b/benchmarks/CustomLogicParticles/icon.png.import @@ -0,0 +1,24 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex" + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/benchmarks/CustomLogicParticles/project.godot b/benchmarks/CustomLogicParticles/project.godot new file mode 100644 index 0000000..9efe4cc --- /dev/null +++ b/benchmarks/CustomLogicParticles/project.godot @@ -0,0 +1,23 @@ +; Engine configuration file. +; It's best edited using the editor UI and not directly, +; since the parameters that go here are not all obvious. +; +; Format: +; [section] ; section goes between [] +; param=value ; assign values to parameters + +config_version=3 + +[application] + +config/name="Multimesh particles custom logic benchmark" +run/main_scene="res://CustomParticles/GDScript/MultimeshParticlesGDScriptTest.tscn" +config/icon="res://icon.png" + +[gdnative] + +singletons=[ ] + +[rendering] + +environment/default_environment="res://default_env.tres"