PerformanceMonitor.vue 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. <script setup lang="ts">
  2. import { useDevtoolsHook } from '../composables/useDevtoolsHook'
  3. import { bytesToKB } from '../utils'
  4. const { fps, memory, renderer } = useDevtoolsHook()
  5. </script>
  6. <template>
  7. <div class="grid grid-cols-2 gap-4">
  8. <NCard
  9. class="col-span-1"
  10. n="green"
  11. >
  12. <Graph
  13. :points="fps.accumulator"
  14. :value="fps.value"
  15. color="green"
  16. n="green"
  17. unit="FPS"
  18. label="FPS"
  19. />
  20. </NCard>
  21. <NCard
  22. class="col-span-1"
  23. n="green"
  24. >
  25. <Graph
  26. :points="memory.accumulator"
  27. :value="memory.currentMem"
  28. color="yellow"
  29. n="yellow"
  30. unit="MB"
  31. label="memory"
  32. />
  33. </NCard>
  34. <Pane title="Memory ">
  35. <div class="flex p4 justify-around w-full">
  36. <div class="flex flex-col items-center gap-2">
  37. <div class="flex items-center font-mono gap-2">
  38. {{ renderer.info?.memory?.geometries || 0 }}
  39. <i class="i-iconoir-box-3d-three-points" />
  40. </div>
  41. <span class="text-xs text-gray-500">Geometries</span>
  42. </div>
  43. <div class="flex flex-col items-center gap-2">
  44. <div class="flex items-center font-mono gap-2">
  45. {{ renderer.info?.memory?.textures || 0 }}
  46. <i class="i-iconoir-select-face-3d" />
  47. </div>
  48. <span class="text-xs text-gray-500">Textures</span>
  49. </div>
  50. </div>
  51. <div class="p4">
  52. <NTip class="text-sm">
  53. <Icon
  54. class="mr2"
  55. name="carbon:information"
  56. />Memory allocated by objects is aprox <strong>{{ bytesToKB(memory.allocatedMem) }} KB </strong>
  57. </NTip>
  58. </div>
  59. </Pane>
  60. <Pane title="Render">
  61. <div class="grid grid-cols-2 p4 justify-around w-full">
  62. <div class="flex flex-col items-center gap-2 mb4">
  63. <div class="flex items-center font-mono gap-2">
  64. {{ renderer?.info?.render?.calls || 0 }}
  65. <i class="i-iconoir-comp-align-left" />
  66. </div>
  67. <span class="text-xs text-gray-500">Calls</span>
  68. </div>
  69. <div class="flex flex-col items-center gap-2 mb4">
  70. <div class="flex items-center font-mono gap-2">
  71. {{ renderer?.info?.render?.triangles || 0 }}
  72. <i class="i-iconoir-triangle" />
  73. </div>
  74. <span class="text-xs text-gray-500">Triangles</span>
  75. </div>
  76. <div class="flex flex-col items-center gap-2 mb4">
  77. <div class="flex items-center font-mono gap-2">
  78. {{ renderer?.info?.render?.points || 0 }}
  79. <i class="i-iconoir-one-point-circle" />
  80. </div>
  81. <span class="text-xs text-gray-500">Points</span>
  82. </div>
  83. <div class="flex flex-col items-center gap-2 mb4">
  84. <div class="flex items-center font-mono gap-2">
  85. {{ renderer?.info?.render?.lines || 0 }}
  86. <i class="i-iconoir-linear" />
  87. </div>
  88. <span class="text-xs text-gray-500">Lines</span>
  89. </div>
  90. </div>
  91. </Pane>
  92. </div>
  93. <div class="">
  94. <Pane title="Programs">
  95. <ProgramsModule />
  96. </Pane>
  97. </div>
  98. </template>