Compare commits
2 Commits
078caadd0c
...
5613ae1d8c
| Author | SHA1 | Date | |
|---|---|---|---|
| 5613ae1d8c | |||
| c0db909092 |
Binary file not shown.
@@ -1,101 +0,0 @@
|
||||
extends Node
|
||||
|
||||
## VRAM/Texture Memory Measurement Tool
|
||||
## Add this as an autoload to measure memory usage at startup
|
||||
|
||||
var measurements := {}
|
||||
var start_time := 0.0
|
||||
|
||||
func _ready():
|
||||
start_time = Time.get_ticks_msec()
|
||||
|
||||
# Initial measurement (before anything loads)
|
||||
_record_measurement("initial")
|
||||
|
||||
# Wait for scene tree to be ready
|
||||
await get_tree().process_frame
|
||||
_record_measurement("after_tree_ready")
|
||||
|
||||
# Wait for main scene to fully load
|
||||
await get_tree().process_frame
|
||||
_record_measurement("after_main_scene_loaded")
|
||||
|
||||
# Give textures time to upload to GPU
|
||||
await get_tree().process_frame
|
||||
await get_tree().process_frame
|
||||
_record_measurement("after_gpu_upload")
|
||||
|
||||
# Print final report
|
||||
await get_tree().process_frame
|
||||
_print_report()
|
||||
|
||||
func _record_measurement(label: String):
|
||||
var elapsed_ms = Time.get_ticks_msec() - start_time
|
||||
var tex_mem = Performance.get_monitor(Performance.VIEWER_TEXTURE_MEMORY)
|
||||
var obj_count = Performance.get_monitor(Performance.OBJECT_COUNT)
|
||||
var node_count = Performance.get_monitor(Performance.OBJECT_NODE_COUNT)
|
||||
|
||||
measurements[label] = {
|
||||
"elapsed_ms": elapsed_ms,
|
||||
"texture_memory_bytes": tex_mem,
|
||||
"texture_memory_mb": tex_mem / (1024.0 * 1024.0),
|
||||
"object_count": obj_count,
|
||||
"node_count": node_count
|
||||
}
|
||||
|
||||
print("[%.2f ms] %s: VRAM=%.2f MB, Objects=%d, Nodes=%d" % [
|
||||
elapsed_ms / 1000.0,
|
||||
label,
|
||||
tex_mem / (1024.0 * 1024.0),
|
||||
obj_count,
|
||||
node_count
|
||||
])
|
||||
|
||||
func _print_report():
|
||||
print("\n" + "=" * 60)
|
||||
print("VRAM USAGE REPORT")
|
||||
print("=" * 60)
|
||||
|
||||
var total_elapsed = Time.get_ticks_msec() - start_time
|
||||
|
||||
for label in measurements:
|
||||
var m = measurements[label]
|
||||
print("\n[%s]" % label)
|
||||
print(" Elapsed: %.3f s" % (m.elapsed_ms / 1000.0))
|
||||
print(" Texture Memory: %.2f MB (%.2f KB)" % [m.texture_memory_mb, m.texture_memory_bytes / 1024.0])
|
||||
print(" Object Count: %d" % m.object_count)
|
||||
print(" Node Count: %d" % m.node_count)
|
||||
|
||||
print("\n" + "=" * 60)
|
||||
print("TOTAL STARTUP TIME: %.3f s" % (total_elapsed / 1000.0))
|
||||
print("=" * 60)
|
||||
|
||||
# Save to file if we have write access
|
||||
var file_path = "user://vram_measurement_%s.txt" % Time.get_datetime_string_from_system(false, true).replace(":", "-")
|
||||
var file = FileAccess.open(file_path, FileAccess.WRITE)
|
||||
if file:
|
||||
file.store_string("VRAM Measurement Report\n")
|
||||
file.store_string("Generated: %s\n\n" % Time.get_datetime_string_from_system())
|
||||
for label in measurements:
|
||||
var m = measurements[label]
|
||||
file.store_string("[%s]\n" % label)
|
||||
file.store_string(" Elapsed: %.3f s\n" % (m.elapsed_ms / 1000.0))
|
||||
file.store_string(" Texture Memory: %.2f MB\n" % m.texture_memory_mb)
|
||||
file.store_string(" Object Count: %d\n" % m.object_count)
|
||||
file.store_string(" Node Count: %d\n\n" % m.node_count)
|
||||
file.close()
|
||||
print("\nReport saved to: %s" % file_path)
|
||||
|
||||
## Call this manually at any point to get current VRAM usage
|
||||
func get_current_vram_mb() -> float:
|
||||
return Performance.get_monitor(Performance.VIEWER_TEXTURE_MEMORY) / (1024.0 * 1024.0)
|
||||
|
||||
## Get detailed breakdown
|
||||
func get_memory_stats() -> Dictionary:
|
||||
return {
|
||||
"texture_memory_mb": get_current_vram_mb(),
|
||||
"object_count": Performance.get_monitor(Performance.OBJECT_COUNT),
|
||||
"node_count": Performance.get_monitor(Performance.OBJECT_NODE_COUNT),
|
||||
"physics_objects_2d": Performance.get_monitor(Performance.PHYSICS_2D_OBJECT_COUNT),
|
||||
"physics_objects_3d": Performance.get_monitor(Performance.PHYSICS_3D_OBJECT_COUNT),
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
uid://bulo3frhvr27e
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user