ruby_rpg 0.0.4 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (564) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +22 -0
  3. data/bin/build.bash +1 -1
  4. data/bin/import +11 -1
  5. data/ext/gl_native/extconf.rb +20 -0
  6. data/ext/gl_native/gl_native.c +563 -0
  7. data/ext/glfw_native/extconf.rb +18 -0
  8. data/ext/glfw_native/glfw_native.c +451 -0
  9. data/lib/engine/assets/_imported/cube.index_data +36 -0
  10. data/lib/engine/assets/_imported/cube.vertex_data +720 -0
  11. data/lib/engine/assets/_imported/plane.index_data +6 -0
  12. data/lib/engine/assets/_imported/plane.vertex_data +120 -0
  13. data/lib/engine/assets/_imported/sphere.index_data +2880 -0
  14. data/lib/engine/assets/_imported/sphere.vertex_data +57600 -0
  15. data/lib/engine/assets/cube.obj +46 -0
  16. data/lib/engine/assets/plane.obj +16 -0
  17. data/lib/engine/assets/sphere.obj +2488 -0
  18. data/lib/engine/component.rb +2 -0
  19. data/lib/engine/components/audio_source.rb +6 -4
  20. data/lib/engine/components/direction_light.rb +83 -4
  21. data/lib/engine/components/orthographic_camera.rb +31 -25
  22. data/lib/engine/components/perspective_camera.rb +35 -12
  23. data/lib/engine/components/point_light.rb +61 -5
  24. data/lib/engine/components/renderers/font_renderer.rb +19 -0
  25. data/lib/engine/components/renderers/font_renderer_base.rb +134 -0
  26. data/lib/engine/components/renderers/mesh_renderer.rb +41 -0
  27. data/lib/engine/components/renderers/sprite_renderer.rb +46 -0
  28. data/lib/engine/components/spot_light.rb +90 -0
  29. data/lib/engine/components/sprite_animator.rb +42 -0
  30. data/lib/engine/components/ui/flex/layout.rb +94 -0
  31. data/lib/engine/components/ui/flex/pack_layout.rb +65 -0
  32. data/lib/engine/components/ui/flex/stretch_layout.rb +52 -0
  33. data/lib/engine/components/ui/flex.rb +60 -0
  34. data/lib/engine/components/ui/font_renderer.rb +57 -0
  35. data/lib/engine/components/ui/rect.rb +117 -0
  36. data/lib/engine/components/ui/sprite_clickbox.rb +47 -0
  37. data/lib/engine/components/ui/sprite_renderer.rb +117 -0
  38. data/lib/engine/compute_shader.rb +14 -0
  39. data/lib/engine/compute_texture.rb +13 -0
  40. data/lib/engine/debugging.rb +4 -4
  41. data/lib/engine/engine.rb +8 -12
  42. data/lib/engine/font.rb +29 -4
  43. data/lib/engine/game_object.rb +121 -49
  44. data/lib/engine/gl.rb +439 -0
  45. data/lib/engine/glfw.rb +151 -0
  46. data/lib/engine/input.rb +115 -7
  47. data/lib/engine/material.rb +146 -11
  48. data/lib/engine/matrix_helpers.rb +38 -0
  49. data/lib/engine/mesh.rb +41 -16
  50. data/lib/engine/metal/compute_shader.rb +118 -0
  51. data/lib/engine/metal/compute_texture.rb +176 -0
  52. data/lib/engine/metal/device.rb +98 -0
  53. data/lib/engine/metal/metal_bindings.rb +126 -0
  54. data/lib/engine/opengl/compute_shader.rb +77 -0
  55. data/lib/engine/opengl/compute_texture.rb +31 -0
  56. data/lib/engine/physics/components/rigidbody.rb +23 -20
  57. data/lib/engine/physics/components/sphere_collider.rb +13 -3
  58. data/lib/engine/physics/physics_resolver.rb +24 -12
  59. data/lib/engine/rendering/cubemap_shadow_map_array.rb +77 -0
  60. data/lib/engine/rendering/gpu_timer.rb +68 -0
  61. data/lib/engine/rendering/instance_renderer.rb +140 -61
  62. data/lib/engine/rendering/post_processing/bloom_effect.rb +87 -0
  63. data/lib/engine/rendering/post_processing/depth_debug_effect.rb +17 -0
  64. data/lib/engine/rendering/post_processing/depth_of_field_effect.rb +52 -0
  65. data/lib/engine/rendering/post_processing/effect.rb +11 -0
  66. data/lib/engine/rendering/post_processing/post_processing_effect.rb +86 -0
  67. data/lib/engine/rendering/post_processing/single_pass_effect.rb +19 -0
  68. data/lib/engine/rendering/post_processing/ssao_effect.rb +182 -0
  69. data/lib/engine/rendering/post_processing/ssr_effect.rb +89 -0
  70. data/lib/engine/rendering/post_processing/tint_effect.rb +18 -0
  71. data/lib/engine/rendering/render_pipeline.rb +238 -6
  72. data/lib/engine/rendering/render_texture.rb +118 -0
  73. data/lib/engine/rendering/screen_quad.rb +64 -0
  74. data/lib/engine/rendering/shadow_map_array.rb +72 -0
  75. data/lib/engine/rendering/skybox_cubemap.rb +119 -0
  76. data/lib/engine/rendering/skybox_renderer.rb +64 -0
  77. data/lib/engine/rendering/ui/stencil_manager.rb +69 -0
  78. data/lib/engine/screenshoter.rb +1 -1
  79. data/lib/engine/serialization/graph_serializer.rb +74 -0
  80. data/lib/engine/serialization/object_serializer.rb +98 -0
  81. data/lib/engine/serialization/serializable.rb +78 -0
  82. data/lib/engine/serialization/yaml_persistence.rb +45 -0
  83. data/lib/engine/shader.rb +149 -25
  84. data/lib/engine/shaders/colour_frag.glsl +9 -1
  85. data/lib/engine/shaders/colour_vertex.glsl +12 -5
  86. data/lib/engine/shaders/fullscreen_frag.glsl +11 -0
  87. data/lib/engine/shaders/fullscreen_vertex.glsl +12 -0
  88. data/lib/engine/shaders/instanced_sprite_frag.glsl +21 -0
  89. data/lib/engine/shaders/{skybox_vert.glsl → instanced_sprite_vertex.glsl} +3 -2
  90. data/lib/engine/shaders/lighting/directional_light.glsl +49 -0
  91. data/lib/engine/shaders/lighting/lighting.glsl +33 -0
  92. data/lib/engine/shaders/lighting/lighting_common.glsl +13 -0
  93. data/lib/engine/shaders/lighting/point_light.glsl +46 -0
  94. data/lib/engine/shaders/lighting/spot_light.glsl +80 -0
  95. data/lib/engine/shaders/mesh_frag.glsl +28 -77
  96. data/lib/engine/shaders/mesh_vertex.glsl +5 -5
  97. data/lib/engine/shaders/point_shadow_frag.glsl +12 -0
  98. data/lib/engine/shaders/point_shadow_vertex.glsl +15 -0
  99. data/lib/engine/shaders/post_process/bloom_blur_frag.glsl +25 -0
  100. data/lib/engine/shaders/post_process/bloom_combine_frag.glsl +19 -0
  101. data/lib/engine/shaders/post_process/bloom_threshold_frag.glsl +19 -0
  102. data/lib/engine/shaders/post_process/debug_normals_frag.glsl +21 -0
  103. data/lib/engine/shaders/post_process/depth_debug_frag.glsl +17 -0
  104. data/lib/engine/shaders/post_process/dof_blur_frag.glsl +52 -0
  105. data/lib/engine/shaders/post_process/skybox_frag.glsl +29 -0
  106. data/lib/engine/shaders/post_process/ssao/blur_frag.glsl +50 -0
  107. data/lib/engine/shaders/post_process/ssao/combine_frag.glsl +15 -0
  108. data/lib/engine/shaders/post_process/ssao/frag.glsl +99 -0
  109. data/lib/engine/shaders/post_process/ssr/combine_frag.glsl +16 -0
  110. data/lib/engine/shaders/post_process/ssr/frag.glsl +118 -0
  111. data/lib/engine/shaders/post_process/tint_frag.glsl +14 -0
  112. data/lib/engine/shaders/shadow_frag.glsl +6 -0
  113. data/lib/engine/shaders/shadow_vertex.glsl +11 -0
  114. data/lib/engine/shaders/skybox_cubemap_frag.glsl +46 -0
  115. data/lib/engine/shaders/vertex_lit_frag.glsl +10 -66
  116. data/lib/engine/shaders/vertex_lit_vertex.glsl +1 -1
  117. data/lib/engine/standard_meshes/quad_mesh.rb +26 -0
  118. data/lib/engine/standard_objects/cube.rb +23 -0
  119. data/lib/engine/standard_objects/default_material.rb +20 -0
  120. data/lib/engine/standard_objects/plane.rb +23 -0
  121. data/lib/engine/standard_objects/sphere.rb +23 -0
  122. data/lib/engine/texture.rb +28 -19
  123. data/lib/engine/ui/rect.rb +16 -0
  124. data/lib/engine/window.rb +2 -2
  125. data/lib/ruby_rpg.rb +69 -9
  126. data/vendor/glew-2.2.0-win32/LICENSE.txt +73 -0
  127. data/vendor/glew-2.2.0-win32/bin/Release/x64/glew32.dll +0 -0
  128. data/vendor/glew-2.2.0-win32/include/GL/glew.h +26427 -0
  129. data/vendor/glew-2.2.0-win32/lib/Release/x64/glew32.lib +0 -0
  130. metadata +124 -466
  131. data/glfw-3.3.9.bin.MACOS/README.md +0 -5
  132. data/glfw-3.3.9.bin.MACOS/docs/html/bc_s.png +0 -0
  133. data/glfw-3.3.9.bin.MACOS/docs/html/bc_sd.png +0 -0
  134. data/glfw-3.3.9.bin.MACOS/docs/html/build_8dox.html +0 -81
  135. data/glfw-3.3.9.bin.MACOS/docs/html/build_guide.html +0 -199
  136. data/glfw-3.3.9.bin.MACOS/docs/html/closed.png +0 -0
  137. data/glfw-3.3.9.bin.MACOS/docs/html/compat_8dox.html +0 -81
  138. data/glfw-3.3.9.bin.MACOS/docs/html/compat_guide.html +0 -153
  139. data/glfw-3.3.9.bin.MACOS/docs/html/compile_8dox.html +0 -81
  140. data/glfw-3.3.9.bin.MACOS/docs/html/compile_guide.html +0 -223
  141. data/glfw-3.3.9.bin.MACOS/docs/html/context_8dox.html +0 -81
  142. data/glfw-3.3.9.bin.MACOS/docs/html/context_guide.html +0 -259
  143. data/glfw-3.3.9.bin.MACOS/docs/html/deprecated.html +0 -88
  144. data/glfw-3.3.9.bin.MACOS/docs/html/dir_08423ce7729c4554356a7de7171ba263.html +0 -85
  145. data/glfw-3.3.9.bin.MACOS/docs/html/dir_2dcebcdf14b42e92a6ed85c61bda6b9d.html +0 -93
  146. data/glfw-3.3.9.bin.MACOS/docs/html/dir_62ce056722ee97c199075aa1d6eca309.html +0 -95
  147. data/glfw-3.3.9.bin.MACOS/docs/html/dir_dddf4cf62655095a666cf715de3a31a2.html +0 -91
  148. data/glfw-3.3.9.bin.MACOS/docs/html/doc.svg +0 -12
  149. data/glfw-3.3.9.bin.MACOS/docs/html/docd.svg +0 -12
  150. data/glfw-3.3.9.bin.MACOS/docs/html/doxygen.css +0 -1685
  151. data/glfw-3.3.9.bin.MACOS/docs/html/doxygen.svg +0 -28
  152. data/glfw-3.3.9.bin.MACOS/docs/html/dynsections.js +0 -192
  153. data/glfw-3.3.9.bin.MACOS/docs/html/extra.css +0 -1
  154. data/glfw-3.3.9.bin.MACOS/docs/html/files.html +0 -91
  155. data/glfw-3.3.9.bin.MACOS/docs/html/folderclosed.svg +0 -11
  156. data/glfw-3.3.9.bin.MACOS/docs/html/folderclosedd.svg +0 -11
  157. data/glfw-3.3.9.bin.MACOS/docs/html/folderopen.svg +0 -17
  158. data/glfw-3.3.9.bin.MACOS/docs/html/folderopend.svg +0 -12
  159. data/glfw-3.3.9.bin.MACOS/docs/html/glfw3_8h.html +0 -1661
  160. data/glfw-3.3.9.bin.MACOS/docs/html/glfw3_8h_source.html +0 -1175
  161. data/glfw-3.3.9.bin.MACOS/docs/html/glfw3native_8h.html +0 -167
  162. data/glfw-3.3.9.bin.MACOS/docs/html/glfw3native_8h_source.html +0 -303
  163. data/glfw-3.3.9.bin.MACOS/docs/html/group__buttons.html +0 -282
  164. data/glfw-3.3.9.bin.MACOS/docs/html/group__context.html +0 -304
  165. data/glfw-3.3.9.bin.MACOS/docs/html/group__errors.html +0 -304
  166. data/glfw-3.3.9.bin.MACOS/docs/html/group__gamepad__axes.html +0 -202
  167. data/glfw-3.3.9.bin.MACOS/docs/html/group__gamepad__buttons.html +0 -410
  168. data/glfw-3.3.9.bin.MACOS/docs/html/group__hat__state.html +0 -234
  169. data/glfw-3.3.9.bin.MACOS/docs/html/group__init.html +0 -570
  170. data/glfw-3.3.9.bin.MACOS/docs/html/group__input.html +0 -2255
  171. data/glfw-3.3.9.bin.MACOS/docs/html/group__joysticks.html +0 -362
  172. data/glfw-3.3.9.bin.MACOS/docs/html/group__keys.html +0 -2034
  173. data/glfw-3.3.9.bin.MACOS/docs/html/group__mods.html +0 -198
  174. data/glfw-3.3.9.bin.MACOS/docs/html/group__monitor.html +0 -848
  175. data/glfw-3.3.9.bin.MACOS/docs/html/group__native.html +0 -812
  176. data/glfw-3.3.9.bin.MACOS/docs/html/group__shapes.html +0 -198
  177. data/glfw-3.3.9.bin.MACOS/docs/html/group__vulkan.html +0 -359
  178. data/glfw-3.3.9.bin.MACOS/docs/html/group__window.html +0 -3434
  179. data/glfw-3.3.9.bin.MACOS/docs/html/index.html +0 -100
  180. data/glfw-3.3.9.bin.MACOS/docs/html/input_8dox.html +0 -81
  181. data/glfw-3.3.9.bin.MACOS/docs/html/input_guide.html +0 -570
  182. data/glfw-3.3.9.bin.MACOS/docs/html/internal_8dox.html +0 -81
  183. data/glfw-3.3.9.bin.MACOS/docs/html/internals_guide.html +0 -132
  184. data/glfw-3.3.9.bin.MACOS/docs/html/intro_8dox.html +0 -81
  185. data/glfw-3.3.9.bin.MACOS/docs/html/intro_guide.html +0 -351
  186. data/glfw-3.3.9.bin.MACOS/docs/html/jquery.js +0 -34
  187. data/glfw-3.3.9.bin.MACOS/docs/html/main_8dox.html +0 -81
  188. data/glfw-3.3.9.bin.MACOS/docs/html/menu.js +0 -136
  189. data/glfw-3.3.9.bin.MACOS/docs/html/menudata.js +0 -29
  190. data/glfw-3.3.9.bin.MACOS/docs/html/minus.svg +0 -8
  191. data/glfw-3.3.9.bin.MACOS/docs/html/minusd.svg +0 -8
  192. data/glfw-3.3.9.bin.MACOS/docs/html/monitor_8dox.html +0 -81
  193. data/glfw-3.3.9.bin.MACOS/docs/html/monitor_guide.html +0 -229
  194. data/glfw-3.3.9.bin.MACOS/docs/html/moving_8dox.html +0 -81
  195. data/glfw-3.3.9.bin.MACOS/docs/html/moving_guide.html +0 -374
  196. data/glfw-3.3.9.bin.MACOS/docs/html/nav_f.png +0 -0
  197. data/glfw-3.3.9.bin.MACOS/docs/html/nav_fd.png +0 -0
  198. data/glfw-3.3.9.bin.MACOS/docs/html/nav_g.png +0 -0
  199. data/glfw-3.3.9.bin.MACOS/docs/html/nav_h.png +0 -0
  200. data/glfw-3.3.9.bin.MACOS/docs/html/nav_hd.png +0 -0
  201. data/glfw-3.3.9.bin.MACOS/docs/html/news.html +0 -634
  202. data/glfw-3.3.9.bin.MACOS/docs/html/news_8dox.html +0 -81
  203. data/glfw-3.3.9.bin.MACOS/docs/html/open.png +0 -0
  204. data/glfw-3.3.9.bin.MACOS/docs/html/pages.html +0 -99
  205. data/glfw-3.3.9.bin.MACOS/docs/html/plus.svg +0 -9
  206. data/glfw-3.3.9.bin.MACOS/docs/html/plusd.svg +0 -9
  207. data/glfw-3.3.9.bin.MACOS/docs/html/quick_8dox.html +0 -81
  208. data/glfw-3.3.9.bin.MACOS/docs/html/quick_guide.html +0 -397
  209. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_0.js +0 -5
  210. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_1.js +0 -4
  211. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_10.js +0 -65
  212. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_11.js +0 -26
  213. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_12.js +0 -44
  214. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_13.js +0 -34
  215. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_14.js +0 -12
  216. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_15.js +0 -52
  217. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_16.js +0 -69
  218. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_17.js +0 -51
  219. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_18.js +0 -14
  220. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_19.js +0 -36
  221. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_1a.js +0 -98
  222. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_1b.js +0 -12
  223. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_2.js +0 -6
  224. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_3.js +0 -9
  225. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_4.js +0 -57
  226. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_5.js +0 -22
  227. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_6.js +0 -103
  228. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_7.js +0 -23
  229. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_8.js +0 -35
  230. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_9.js +0 -63
  231. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_a.js +0 -505
  232. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_b.js +0 -24
  233. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_c.js +0 -50
  234. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_d.js +0 -17
  235. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_e.js +0 -12
  236. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_f.js +0 -35
  237. data/glfw-3.3.9.bin.MACOS/docs/html/search/classes_0.js +0 -7
  238. data/glfw-3.3.9.bin.MACOS/docs/html/search/close.svg +0 -18
  239. data/glfw-3.3.9.bin.MACOS/docs/html/search/defines_0.js +0 -34
  240. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_0.js +0 -4
  241. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_1.js +0 -6
  242. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_2.js +0 -5
  243. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_3.js +0 -6
  244. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_4.js +0 -6
  245. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_5.js +0 -4
  246. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_6.js +0 -4
  247. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_7.js +0 -4
  248. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_8.js +0 -4
  249. data/glfw-3.3.9.bin.MACOS/docs/html/search/functions_0.js +0 -146
  250. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_0.js +0 -6
  251. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_1.js +0 -4
  252. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_10.js +0 -4
  253. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_2.js +0 -6
  254. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_3.js +0 -5
  255. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_4.js +0 -4
  256. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_5.js +0 -5
  257. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_6.js +0 -4
  258. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_7.js +0 -5
  259. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_8.js +0 -5
  260. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_9.js +0 -6
  261. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_a.js +0 -6
  262. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_b.js +0 -4
  263. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_c.js +0 -4
  264. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_d.js +0 -7
  265. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_e.js +0 -4
  266. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_f.js +0 -5
  267. data/glfw-3.3.9.bin.MACOS/docs/html/search/mag.svg +0 -24
  268. data/glfw-3.3.9.bin.MACOS/docs/html/search/mag_d.svg +0 -24
  269. data/glfw-3.3.9.bin.MACOS/docs/html/search/mag_sel.svg +0 -31
  270. data/glfw-3.3.9.bin.MACOS/docs/html/search/mag_seld.svg +0 -31
  271. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_0.js +0 -4
  272. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_1.js +0 -4
  273. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_10.js +0 -4
  274. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_2.js +0 -5
  275. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_3.js +0 -4
  276. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_4.js +0 -6
  277. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_5.js +0 -4
  278. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_6.js +0 -4
  279. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_7.js +0 -7
  280. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_8.js +0 -6
  281. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_9.js +0 -4
  282. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_a.js +0 -5
  283. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_b.js +0 -5
  284. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_c.js +0 -4
  285. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_d.js +0 -6
  286. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_e.js +0 -6
  287. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_f.js +0 -4
  288. data/glfw-3.3.9.bin.MACOS/docs/html/search/search.css +0 -291
  289. data/glfw-3.3.9.bin.MACOS/docs/html/search/search.js +0 -840
  290. data/glfw-3.3.9.bin.MACOS/docs/html/search/searchdata.js +0 -39
  291. data/glfw-3.3.9.bin.MACOS/docs/html/search/typedefs_0.js +0 -32
  292. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_0.js +0 -4
  293. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_1.js +0 -6
  294. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_2.js +0 -5
  295. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_3.js +0 -4
  296. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_4.js +0 -4
  297. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_5.js +0 -6
  298. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_6.js +0 -4
  299. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_7.js +0 -4
  300. data/glfw-3.3.9.bin.MACOS/docs/html/spaces.svg +0 -877
  301. data/glfw-3.3.9.bin.MACOS/docs/html/splitbar.png +0 -0
  302. data/glfw-3.3.9.bin.MACOS/docs/html/splitbard.png +0 -0
  303. data/glfw-3.3.9.bin.MACOS/docs/html/struct_g_l_f_wgamepadstate.html +0 -134
  304. data/glfw-3.3.9.bin.MACOS/docs/html/struct_g_l_f_wgammaramp.html +0 -170
  305. data/glfw-3.3.9.bin.MACOS/docs/html/struct_g_l_f_wimage.html +0 -151
  306. data/glfw-3.3.9.bin.MACOS/docs/html/struct_g_l_f_wvidmode.html +0 -204
  307. data/glfw-3.3.9.bin.MACOS/docs/html/sync_off.png +0 -0
  308. data/glfw-3.3.9.bin.MACOS/docs/html/sync_on.png +0 -0
  309. data/glfw-3.3.9.bin.MACOS/docs/html/tab_a.png +0 -0
  310. data/glfw-3.3.9.bin.MACOS/docs/html/tab_ad.png +0 -0
  311. data/glfw-3.3.9.bin.MACOS/docs/html/tab_b.png +0 -0
  312. data/glfw-3.3.9.bin.MACOS/docs/html/tab_bd.png +0 -0
  313. data/glfw-3.3.9.bin.MACOS/docs/html/tab_h.png +0 -0
  314. data/glfw-3.3.9.bin.MACOS/docs/html/tab_hd.png +0 -0
  315. data/glfw-3.3.9.bin.MACOS/docs/html/tab_s.png +0 -0
  316. data/glfw-3.3.9.bin.MACOS/docs/html/tab_sd.png +0 -0
  317. data/glfw-3.3.9.bin.MACOS/docs/html/tabs.css +0 -1
  318. data/glfw-3.3.9.bin.MACOS/docs/html/vulkan_8dox.html +0 -81
  319. data/glfw-3.3.9.bin.MACOS/docs/html/vulkan_guide.html +0 -196
  320. data/glfw-3.3.9.bin.MACOS/docs/html/window_8dox.html +0 -81
  321. data/glfw-3.3.9.bin.MACOS/docs/html/window_guide.html +0 -763
  322. data/glfw-3.3.9.bin.MACOS/include/GLFW/glfw3.h +0 -5932
  323. data/glfw-3.3.9.bin.MACOS/include/GLFW/glfw3native.h +0 -634
  324. data/glfw-3.3.9.bin.MACOS/lib-arm64/libglfw3.a +0 -0
  325. data/glfw-3.3.9.bin.MACOS/lib-universal/libglfw.3.dylib +0 -0
  326. data/glfw-3.3.9.bin.MACOS/lib-universal/libglfw3.a +0 -0
  327. data/glfw-3.3.9.bin.MACOS/lib-x86_64/libglfw.3.dylib +0 -0
  328. data/glfw-3.3.9.bin.MACOS/lib-x86_64/libglfw3.a +0 -0
  329. data/glfw-3.4.bin.WIN64/README.md +0 -70
  330. data/glfw-3.4.bin.WIN64/docs/html/bc_s.png +0 -0
  331. data/glfw-3.4.bin.WIN64/docs/html/bc_sd.png +0 -0
  332. data/glfw-3.4.bin.WIN64/docs/html/build_8md.html +0 -81
  333. data/glfw-3.4.bin.WIN64/docs/html/build_guide.html +0 -217
  334. data/glfw-3.4.bin.WIN64/docs/html/closed.png +0 -0
  335. data/glfw-3.4.bin.WIN64/docs/html/compat_8md.html +0 -81
  336. data/glfw-3.4.bin.WIN64/docs/html/compat_guide.html +0 -156
  337. data/glfw-3.4.bin.WIN64/docs/html/compile_8md.html +0 -81
  338. data/glfw-3.4.bin.WIN64/docs/html/compile_guide.html +0 -219
  339. data/glfw-3.4.bin.WIN64/docs/html/context_8md.html +0 -81
  340. data/glfw-3.4.bin.WIN64/docs/html/context_guide.html +0 -258
  341. data/glfw-3.4.bin.WIN64/docs/html/deprecated.html +0 -88
  342. data/glfw-3.4.bin.WIN64/docs/html/dir_13577e2d8b9423099662de029791bd7d.html +0 -93
  343. data/glfw-3.4.bin.WIN64/docs/html/dir_7f92719a7fe62e5b064f87d7a3c220b1.html +0 -95
  344. data/glfw-3.4.bin.WIN64/docs/html/dir_a788ef6c2b1e5b367804e0b6ccfd6f11.html +0 -85
  345. data/glfw-3.4.bin.WIN64/docs/html/dir_b11153cd0f4fd04a7564cc166f482635.html +0 -91
  346. data/glfw-3.4.bin.WIN64/docs/html/doc.svg +0 -12
  347. data/glfw-3.4.bin.WIN64/docs/html/docd.svg +0 -12
  348. data/glfw-3.4.bin.WIN64/docs/html/doxygen.css +0 -1685
  349. data/glfw-3.4.bin.WIN64/docs/html/doxygen.svg +0 -28
  350. data/glfw-3.4.bin.WIN64/docs/html/dynsections.js +0 -192
  351. data/glfw-3.4.bin.WIN64/docs/html/extra.css +0 -2
  352. data/glfw-3.4.bin.WIN64/docs/html/files.html +0 -91
  353. data/glfw-3.4.bin.WIN64/docs/html/folderclosed.svg +0 -11
  354. data/glfw-3.4.bin.WIN64/docs/html/folderclosedd.svg +0 -11
  355. data/glfw-3.4.bin.WIN64/docs/html/folderopen.svg +0 -17
  356. data/glfw-3.4.bin.WIN64/docs/html/folderopend.svg +0 -12
  357. data/glfw-3.4.bin.WIN64/docs/html/glfw3_8h.html +0 -1910
  358. data/glfw-3.4.bin.WIN64/docs/html/glfw3_8h_source.html +0 -1260
  359. data/glfw-3.4.bin.WIN64/docs/html/glfw3native_8h.html +0 -170
  360. data/glfw-3.4.bin.WIN64/docs/html/glfw3native_8h_source.html +0 -306
  361. data/glfw-3.4.bin.WIN64/docs/html/group__buttons.html +0 -282
  362. data/glfw-3.4.bin.WIN64/docs/html/group__context.html +0 -304
  363. data/glfw-3.4.bin.WIN64/docs/html/group__errors.html +0 -384
  364. data/glfw-3.4.bin.WIN64/docs/html/group__gamepad__axes.html +0 -202
  365. data/glfw-3.4.bin.WIN64/docs/html/group__gamepad__buttons.html +0 -410
  366. data/glfw-3.4.bin.WIN64/docs/html/group__hat__state.html +0 -234
  367. data/glfw-3.4.bin.WIN64/docs/html/group__init.html +0 -1015
  368. data/glfw-3.4.bin.WIN64/docs/html/group__input.html +0 -2285
  369. data/glfw-3.4.bin.WIN64/docs/html/group__joysticks.html +0 -362
  370. data/glfw-3.4.bin.WIN64/docs/html/group__keys.html +0 -2034
  371. data/glfw-3.4.bin.WIN64/docs/html/group__mods.html +0 -198
  372. data/glfw-3.4.bin.WIN64/docs/html/group__monitor.html +0 -849
  373. data/glfw-3.4.bin.WIN64/docs/html/group__native.html +0 -837
  374. data/glfw-3.4.bin.WIN64/docs/html/group__shapes.html +0 -337
  375. data/glfw-3.4.bin.WIN64/docs/html/group__vulkan.html +0 -361
  376. data/glfw-3.4.bin.WIN64/docs/html/group__window.html +0 -3608
  377. data/glfw-3.4.bin.WIN64/docs/html/index.html +0 -100
  378. data/glfw-3.4.bin.WIN64/docs/html/input_8md.html +0 -81
  379. data/glfw-3.4.bin.WIN64/docs/html/input_guide.html +0 -576
  380. data/glfw-3.4.bin.WIN64/docs/html/internal_8md.html +0 -81
  381. data/glfw-3.4.bin.WIN64/docs/html/internals_guide.html +0 -135
  382. data/glfw-3.4.bin.WIN64/docs/html/intro_8md.html +0 -81
  383. data/glfw-3.4.bin.WIN64/docs/html/intro_guide.html +0 -429
  384. data/glfw-3.4.bin.WIN64/docs/html/jquery.js +0 -34
  385. data/glfw-3.4.bin.WIN64/docs/html/main_8md.html +0 -81
  386. data/glfw-3.4.bin.WIN64/docs/html/menu.js +0 -136
  387. data/glfw-3.4.bin.WIN64/docs/html/menudata.js +0 -30
  388. data/glfw-3.4.bin.WIN64/docs/html/minus.svg +0 -8
  389. data/glfw-3.4.bin.WIN64/docs/html/minusd.svg +0 -8
  390. data/glfw-3.4.bin.WIN64/docs/html/monitor_8md.html +0 -81
  391. data/glfw-3.4.bin.WIN64/docs/html/monitor_guide.html +0 -228
  392. data/glfw-3.4.bin.WIN64/docs/html/moving_8md.html +0 -81
  393. data/glfw-3.4.bin.WIN64/docs/html/moving_guide.html +0 -360
  394. data/glfw-3.4.bin.WIN64/docs/html/nav_f.png +0 -0
  395. data/glfw-3.4.bin.WIN64/docs/html/nav_fd.png +0 -0
  396. data/glfw-3.4.bin.WIN64/docs/html/nav_g.png +0 -0
  397. data/glfw-3.4.bin.WIN64/docs/html/nav_h.png +0 -0
  398. data/glfw-3.4.bin.WIN64/docs/html/nav_hd.png +0 -0
  399. data/glfw-3.4.bin.WIN64/docs/html/news.html +0 -336
  400. data/glfw-3.4.bin.WIN64/docs/html/news_8md.html +0 -81
  401. data/glfw-3.4.bin.WIN64/docs/html/open.png +0 -0
  402. data/glfw-3.4.bin.WIN64/docs/html/pages.html +0 -99
  403. data/glfw-3.4.bin.WIN64/docs/html/plus.svg +0 -9
  404. data/glfw-3.4.bin.WIN64/docs/html/plusd.svg +0 -9
  405. data/glfw-3.4.bin.WIN64/docs/html/quick_8md.html +0 -81
  406. data/glfw-3.4.bin.WIN64/docs/html/quick_guide.html +0 -406
  407. data/glfw-3.4.bin.WIN64/docs/html/search/all_0.js +0 -4
  408. data/glfw-3.4.bin.WIN64/docs/html/search/all_1.js +0 -4
  409. data/glfw-3.4.bin.WIN64/docs/html/search/all_10.js +0 -13
  410. data/glfw-3.4.bin.WIN64/docs/html/search/all_11.js +0 -11
  411. data/glfw-3.4.bin.WIN64/docs/html/search/all_12.js +0 -26
  412. data/glfw-3.4.bin.WIN64/docs/html/search/all_13.js +0 -51
  413. data/glfw-3.4.bin.WIN64/docs/html/search/all_14.js +0 -22
  414. data/glfw-3.4.bin.WIN64/docs/html/search/all_15.js +0 -35
  415. data/glfw-3.4.bin.WIN64/docs/html/search/all_16.js +0 -29
  416. data/glfw-3.4.bin.WIN64/docs/html/search/all_17.js +0 -8
  417. data/glfw-3.4.bin.WIN64/docs/html/search/all_18.js +0 -44
  418. data/glfw-3.4.bin.WIN64/docs/html/search/all_19.js +0 -60
  419. data/glfw-3.4.bin.WIN64/docs/html/search/all_1a.js +0 -39
  420. data/glfw-3.4.bin.WIN64/docs/html/search/all_1b.js +0 -8
  421. data/glfw-3.4.bin.WIN64/docs/html/search/all_1c.js +0 -32
  422. data/glfw-3.4.bin.WIN64/docs/html/search/all_1d.js +0 -84
  423. data/glfw-3.4.bin.WIN64/docs/html/search/all_1e.js +0 -13
  424. data/glfw-3.4.bin.WIN64/docs/html/search/all_1f.js +0 -4
  425. data/glfw-3.4.bin.WIN64/docs/html/search/all_2.js +0 -5
  426. data/glfw-3.4.bin.WIN64/docs/html/search/all_3.js +0 -4
  427. data/glfw-3.4.bin.WIN64/docs/html/search/all_4.js +0 -4
  428. data/glfw-3.4.bin.WIN64/docs/html/search/all_5.js +0 -4
  429. data/glfw-3.4.bin.WIN64/docs/html/search/all_6.js +0 -4
  430. data/glfw-3.4.bin.WIN64/docs/html/search/all_7.js +0 -58
  431. data/glfw-3.4.bin.WIN64/docs/html/search/all_8.js +0 -21
  432. data/glfw-3.4.bin.WIN64/docs/html/search/all_9.js +0 -82
  433. data/glfw-3.4.bin.WIN64/docs/html/search/all_a.js +0 -20
  434. data/glfw-3.4.bin.WIN64/docs/html/search/all_b.js +0 -26
  435. data/glfw-3.4.bin.WIN64/docs/html/search/all_c.js +0 -35
  436. data/glfw-3.4.bin.WIN64/docs/html/search/all_d.js +0 -555
  437. data/glfw-3.4.bin.WIN64/docs/html/search/all_e.js +0 -23
  438. data/glfw-3.4.bin.WIN64/docs/html/search/all_f.js +0 -40
  439. data/glfw-3.4.bin.WIN64/docs/html/search/classes_0.js +0 -8
  440. data/glfw-3.4.bin.WIN64/docs/html/search/close.svg +0 -18
  441. data/glfw-3.4.bin.WIN64/docs/html/search/defines_0.js +0 -43
  442. data/glfw-3.4.bin.WIN64/docs/html/search/files_0.js +0 -4
  443. data/glfw-3.4.bin.WIN64/docs/html/search/files_1.js +0 -6
  444. data/glfw-3.4.bin.WIN64/docs/html/search/files_2.js +0 -5
  445. data/glfw-3.4.bin.WIN64/docs/html/search/files_3.js +0 -6
  446. data/glfw-3.4.bin.WIN64/docs/html/search/files_4.js +0 -6
  447. data/glfw-3.4.bin.WIN64/docs/html/search/files_5.js +0 -4
  448. data/glfw-3.4.bin.WIN64/docs/html/search/files_6.js +0 -4
  449. data/glfw-3.4.bin.WIN64/docs/html/search/files_7.js +0 -4
  450. data/glfw-3.4.bin.WIN64/docs/html/search/files_8.js +0 -4
  451. data/glfw-3.4.bin.WIN64/docs/html/search/functions_0.js +0 -152
  452. data/glfw-3.4.bin.WIN64/docs/html/search/groups_0.js +0 -6
  453. data/glfw-3.4.bin.WIN64/docs/html/search/groups_1.js +0 -4
  454. data/glfw-3.4.bin.WIN64/docs/html/search/groups_10.js +0 -4
  455. data/glfw-3.4.bin.WIN64/docs/html/search/groups_2.js +0 -6
  456. data/glfw-3.4.bin.WIN64/docs/html/search/groups_3.js +0 -5
  457. data/glfw-3.4.bin.WIN64/docs/html/search/groups_4.js +0 -4
  458. data/glfw-3.4.bin.WIN64/docs/html/search/groups_5.js +0 -5
  459. data/glfw-3.4.bin.WIN64/docs/html/search/groups_6.js +0 -4
  460. data/glfw-3.4.bin.WIN64/docs/html/search/groups_7.js +0 -5
  461. data/glfw-3.4.bin.WIN64/docs/html/search/groups_8.js +0 -5
  462. data/glfw-3.4.bin.WIN64/docs/html/search/groups_9.js +0 -6
  463. data/glfw-3.4.bin.WIN64/docs/html/search/groups_a.js +0 -6
  464. data/glfw-3.4.bin.WIN64/docs/html/search/groups_b.js +0 -4
  465. data/glfw-3.4.bin.WIN64/docs/html/search/groups_c.js +0 -4
  466. data/glfw-3.4.bin.WIN64/docs/html/search/groups_d.js +0 -7
  467. data/glfw-3.4.bin.WIN64/docs/html/search/groups_e.js +0 -4
  468. data/glfw-3.4.bin.WIN64/docs/html/search/groups_f.js +0 -5
  469. data/glfw-3.4.bin.WIN64/docs/html/search/mag.svg +0 -24
  470. data/glfw-3.4.bin.WIN64/docs/html/search/mag_d.svg +0 -24
  471. data/glfw-3.4.bin.WIN64/docs/html/search/mag_sel.svg +0 -31
  472. data/glfw-3.4.bin.WIN64/docs/html/search/mag_seld.svg +0 -31
  473. data/glfw-3.4.bin.WIN64/docs/html/search/pages_0.js +0 -4
  474. data/glfw-3.4.bin.WIN64/docs/html/search/pages_1.js +0 -5
  475. data/glfw-3.4.bin.WIN64/docs/html/search/pages_10.js +0 -5
  476. data/glfw-3.4.bin.WIN64/docs/html/search/pages_11.js +0 -4
  477. data/glfw-3.4.bin.WIN64/docs/html/search/pages_2.js +0 -4
  478. data/glfw-3.4.bin.WIN64/docs/html/search/pages_3.js +0 -5
  479. data/glfw-3.4.bin.WIN64/docs/html/search/pages_4.js +0 -4
  480. data/glfw-3.4.bin.WIN64/docs/html/search/pages_5.js +0 -6
  481. data/glfw-3.4.bin.WIN64/docs/html/search/pages_6.js +0 -4
  482. data/glfw-3.4.bin.WIN64/docs/html/search/pages_7.js +0 -5
  483. data/glfw-3.4.bin.WIN64/docs/html/search/pages_8.js +0 -7
  484. data/glfw-3.4.bin.WIN64/docs/html/search/pages_9.js +0 -7
  485. data/glfw-3.4.bin.WIN64/docs/html/search/pages_a.js +0 -4
  486. data/glfw-3.4.bin.WIN64/docs/html/search/pages_b.js +0 -5
  487. data/glfw-3.4.bin.WIN64/docs/html/search/pages_c.js +0 -4
  488. data/glfw-3.4.bin.WIN64/docs/html/search/pages_d.js +0 -4
  489. data/glfw-3.4.bin.WIN64/docs/html/search/pages_e.js +0 -6
  490. data/glfw-3.4.bin.WIN64/docs/html/search/pages_f.js +0 -6
  491. data/glfw-3.4.bin.WIN64/docs/html/search/search.css +0 -291
  492. data/glfw-3.4.bin.WIN64/docs/html/search/search.js +0 -840
  493. data/glfw-3.4.bin.WIN64/docs/html/search/searchdata.js +0 -39
  494. data/glfw-3.4.bin.WIN64/docs/html/search/typedefs_0.js +0 -36
  495. data/glfw-3.4.bin.WIN64/docs/html/search/variables_0.js +0 -5
  496. data/glfw-3.4.bin.WIN64/docs/html/search/variables_1.js +0 -6
  497. data/glfw-3.4.bin.WIN64/docs/html/search/variables_2.js +0 -4
  498. data/glfw-3.4.bin.WIN64/docs/html/search/variables_3.js +0 -5
  499. data/glfw-3.4.bin.WIN64/docs/html/search/variables_4.js +0 -4
  500. data/glfw-3.4.bin.WIN64/docs/html/search/variables_5.js +0 -4
  501. data/glfw-3.4.bin.WIN64/docs/html/search/variables_6.js +0 -7
  502. data/glfw-3.4.bin.WIN64/docs/html/search/variables_7.js +0 -4
  503. data/glfw-3.4.bin.WIN64/docs/html/search/variables_8.js +0 -4
  504. data/glfw-3.4.bin.WIN64/docs/html/search/variables_9.js +0 -4
  505. data/glfw-3.4.bin.WIN64/docs/html/spaces.svg +0 -877
  506. data/glfw-3.4.bin.WIN64/docs/html/splitbar.png +0 -0
  507. data/glfw-3.4.bin.WIN64/docs/html/splitbard.png +0 -0
  508. data/glfw-3.4.bin.WIN64/docs/html/struct_g_l_f_wallocator.html +0 -168
  509. data/glfw-3.4.bin.WIN64/docs/html/struct_g_l_f_wgamepadstate.html +0 -134
  510. data/glfw-3.4.bin.WIN64/docs/html/struct_g_l_f_wgammaramp.html +0 -170
  511. data/glfw-3.4.bin.WIN64/docs/html/struct_g_l_f_wimage.html +0 -151
  512. data/glfw-3.4.bin.WIN64/docs/html/struct_g_l_f_wvidmode.html +0 -204
  513. data/glfw-3.4.bin.WIN64/docs/html/sync_off.png +0 -0
  514. data/glfw-3.4.bin.WIN64/docs/html/sync_on.png +0 -0
  515. data/glfw-3.4.bin.WIN64/docs/html/tab_a.png +0 -0
  516. data/glfw-3.4.bin.WIN64/docs/html/tab_ad.png +0 -0
  517. data/glfw-3.4.bin.WIN64/docs/html/tab_b.png +0 -0
  518. data/glfw-3.4.bin.WIN64/docs/html/tab_bd.png +0 -0
  519. data/glfw-3.4.bin.WIN64/docs/html/tab_h.png +0 -0
  520. data/glfw-3.4.bin.WIN64/docs/html/tab_hd.png +0 -0
  521. data/glfw-3.4.bin.WIN64/docs/html/tab_s.png +0 -0
  522. data/glfw-3.4.bin.WIN64/docs/html/tab_sd.png +0 -0
  523. data/glfw-3.4.bin.WIN64/docs/html/tabs.css +0 -1
  524. data/glfw-3.4.bin.WIN64/docs/html/topics.html +0 -101
  525. data/glfw-3.4.bin.WIN64/docs/html/vulkan_8md.html +0 -81
  526. data/glfw-3.4.bin.WIN64/docs/html/vulkan_guide.html +0 -206
  527. data/glfw-3.4.bin.WIN64/docs/html/window_8md.html +0 -81
  528. data/glfw-3.4.bin.WIN64/docs/html/window_guide.html +0 -806
  529. data/glfw-3.4.bin.WIN64/include/GLFW/glfw3.h +0 -6547
  530. data/glfw-3.4.bin.WIN64/include/GLFW/glfw3native.h +0 -663
  531. data/glfw-3.4.bin.WIN64/lib-mingw-w64/glfw3.dll +0 -0
  532. data/glfw-3.4.bin.WIN64/lib-mingw-w64/libglfw3.a +0 -0
  533. data/glfw-3.4.bin.WIN64/lib-mingw-w64/libglfw3dll.a +0 -0
  534. data/glfw-3.4.bin.WIN64/lib-static-ucrt/glfw3dll.lib +0 -0
  535. data/glfw-3.4.bin.WIN64/lib-vc2013/glfw3.dll +0 -0
  536. data/glfw-3.4.bin.WIN64/lib-vc2013/glfw3.lib +0 -0
  537. data/glfw-3.4.bin.WIN64/lib-vc2013/glfw3_mt.lib +0 -0
  538. data/glfw-3.4.bin.WIN64/lib-vc2013/glfw3dll.lib +0 -0
  539. data/glfw-3.4.bin.WIN64/lib-vc2015/glfw3.dll +0 -0
  540. data/glfw-3.4.bin.WIN64/lib-vc2015/glfw3.lib +0 -0
  541. data/glfw-3.4.bin.WIN64/lib-vc2015/glfw3_mt.lib +0 -0
  542. data/glfw-3.4.bin.WIN64/lib-vc2015/glfw3dll.lib +0 -0
  543. data/glfw-3.4.bin.WIN64/lib-vc2017/glfw3.dll +0 -0
  544. data/glfw-3.4.bin.WIN64/lib-vc2017/glfw3.lib +0 -0
  545. data/glfw-3.4.bin.WIN64/lib-vc2017/glfw3_mt.lib +0 -0
  546. data/glfw-3.4.bin.WIN64/lib-vc2017/glfw3dll.lib +0 -0
  547. data/glfw-3.4.bin.WIN64/lib-vc2019/glfw3.dll +0 -0
  548. data/glfw-3.4.bin.WIN64/lib-vc2019/glfw3.lib +0 -0
  549. data/glfw-3.4.bin.WIN64/lib-vc2019/glfw3_mt.lib +0 -0
  550. data/glfw-3.4.bin.WIN64/lib-vc2019/glfw3dll.lib +0 -0
  551. data/glfw-3.4.bin.WIN64/lib-vc2022/glfw3.dll +0 -0
  552. data/glfw-3.4.bin.WIN64/lib-vc2022/glfw3.lib +0 -0
  553. data/glfw-3.4.bin.WIN64/lib-vc2022/glfw3_mt.lib +0 -0
  554. data/glfw-3.4.bin.WIN64/lib-vc2022/glfw3dll.lib +0 -0
  555. data/lib/engine/components/font_renderer.rb +0 -134
  556. data/lib/engine/components/mesh_renderer.rb +0 -31
  557. data/lib/engine/components/sprite_renderer.rb +0 -141
  558. data/lib/engine/components/ui_font_renderer.rb +0 -140
  559. data/lib/engine/components/ui_sprite_renderer.rb +0 -101
  560. data/lib/engine/shaders/skybox_frag.glsl +0 -12
  561. /data/{glfw-3.3.9.bin.MACOS → vendor/glfw-3.3.9.bin.MACOS}/LICENSE.md +0 -0
  562. /data/{glfw-3.3.9.bin.MACOS → vendor/glfw-3.3.9.bin.MACOS}/lib-arm64/libglfw.3.dylib +0 -0
  563. /data/{glfw-3.4.bin.WIN64 → vendor/glfw-3.4.bin.WIN64}/LICENSE.md +0 -0
  564. /data/{glfw-3.4.bin.WIN64 → vendor/glfw-3.4.bin.WIN64}/lib-static-ucrt/glfw3.dll +0 -0
@@ -0,0 +1,176 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'metal_bindings'
4
+ require_relative 'device'
5
+
6
+ module Engine
7
+ module Metal
8
+ class ComputeTexture
9
+ include Fiddle
10
+
11
+ attr_reader :width, :height, :gl_texture, :metal_texture
12
+
13
+ # IOSurface property keys
14
+ IOSURFACE_WIDTH = 'IOSurfaceWidth'
15
+ IOSURFACE_HEIGHT = 'IOSurfaceHeight'
16
+ IOSURFACE_BYTES_PER_ELEMENT = 'IOSurfaceBytesPerElement'
17
+ IOSURFACE_BYTES_PER_ROW = 'IOSurfaceBytesPerRow'
18
+ IOSURFACE_ALLOC_SIZE = 'IOSurfaceAllocSize'
19
+ IOSURFACE_PIXEL_FORMAT = 'IOSurfacePixelFormat'
20
+
21
+ # Pixel format for RGBA32F
22
+ PIXEL_FORMAT_RGBA32F = 0x52474241 # 'RGBA' as 32-bit int
23
+
24
+ def initialize(width, height)
25
+ @width = width
26
+ @height = height
27
+ @device = Device.instance
28
+
29
+ create_iosurface
30
+ create_metal_texture
31
+ create_gl_rect_texture
32
+ create_gl_2d_texture
33
+ setup_blit_fbo
34
+ end
35
+
36
+ def sync
37
+ Engine::GL.BindFramebuffer(Engine::GL::READ_FRAMEBUFFER, @read_fbo)
38
+ Engine::GL.BindFramebuffer(Engine::GL::DRAW_FRAMEBUFFER, @draw_fbo)
39
+
40
+ Engine::GL.BlitFramebuffer(
41
+ 0, 0, @width, @height,
42
+ 0, 0, @width, @height,
43
+ Engine::GL::COLOR_BUFFER_BIT,
44
+ Engine::GL::NEAREST
45
+ )
46
+
47
+ Engine::GL.BindFramebuffer(Engine::GL::FRAMEBUFFER, 0)
48
+ Engine::GL.Finish
49
+ end
50
+
51
+ private
52
+
53
+ def create_iosurface
54
+ props = create_iosurface_properties
55
+ @iosurface = IOSurfaceFramework.IOSurfaceCreate(props)
56
+
57
+ if @iosurface.null? || @iosurface.to_i == 0
58
+ raise "Failed to create IOSurface"
59
+ end
60
+
61
+ CoreFoundation.CFRelease(props)
62
+ end
63
+
64
+ def create_iosurface_properties
65
+ dict = CoreFoundation.CFDictionaryCreateMutable(nil, 0, nil, nil)
66
+
67
+ bytes_per_element = 16 # 4 floats * 4 bytes
68
+ bytes_per_row = @width * bytes_per_element
69
+ alloc_size = bytes_per_row * @height
70
+
71
+ set_dict_int(dict, IOSURFACE_WIDTH, @width)
72
+ set_dict_int(dict, IOSURFACE_HEIGHT, @height)
73
+ set_dict_int(dict, IOSURFACE_BYTES_PER_ELEMENT, bytes_per_element)
74
+ set_dict_int(dict, IOSURFACE_BYTES_PER_ROW, bytes_per_row)
75
+ set_dict_int(dict, IOSURFACE_ALLOC_SIZE, alloc_size)
76
+ set_dict_int(dict, IOSURFACE_PIXEL_FORMAT, PIXEL_FORMAT_RGBA32F)
77
+
78
+ dict
79
+ end
80
+
81
+ def set_dict_int(dict, key, value)
82
+ key_str = ObjC.msg(ObjC.cls('NSString'), 'stringWithUTF8String:', key)
83
+ num = CoreFoundation.create_int(value)
84
+ CoreFoundation.CFDictionarySetValue(dict, key_str, num)
85
+ end
86
+
87
+ def create_metal_texture
88
+ descriptor = ObjC.msg(ObjC.cls('MTLTextureDescriptor'), 'new')
89
+
90
+ # MTLPixelFormatRGBA32Float = 125
91
+ ObjC.msg(descriptor, 'setPixelFormat:', 125)
92
+ ObjC.msg(descriptor, 'setWidth:', @width)
93
+ ObjC.msg(descriptor, 'setHeight:', @height)
94
+ # MTLTextureUsageShaderRead | MTLTextureUsageShaderWrite = 1 | 2 = 3
95
+ ObjC.msg(descriptor, 'setUsage:', 3)
96
+ # MTLStorageModeShared = 0
97
+ ObjC.msg(descriptor, 'setStorageMode:', 0)
98
+
99
+ @metal_texture = ObjC.msg(
100
+ @device.device,
101
+ 'newTextureWithDescriptor:iosurface:plane:',
102
+ descriptor,
103
+ @iosurface,
104
+ 0
105
+ )
106
+
107
+ if @metal_texture.null? || @metal_texture.to_i == 0
108
+ raise "Failed to create Metal texture from IOSurface"
109
+ end
110
+ end
111
+
112
+ def create_gl_rect_texture
113
+ tex_buf = ' ' * 4
114
+ Engine::GL.GenTextures(1, tex_buf)
115
+ @gl_texture_rect = tex_buf.unpack('L')[0]
116
+
117
+ Engine::GL.BindTexture(Engine::GL::TEXTURE_RECTANGLE, @gl_texture_rect)
118
+ Engine::GL.TexParameteri(Engine::GL::TEXTURE_RECTANGLE, Engine::GL::TEXTURE_MIN_FILTER, Engine::GL::LINEAR)
119
+ Engine::GL.TexParameteri(Engine::GL::TEXTURE_RECTANGLE, Engine::GL::TEXTURE_MAG_FILTER, Engine::GL::LINEAR)
120
+ Engine::GL.TexParameteri(Engine::GL::TEXTURE_RECTANGLE, Engine::GL::TEXTURE_WRAP_S, Engine::GL::CLAMP_TO_EDGE)
121
+ Engine::GL.TexParameteri(Engine::GL::TEXTURE_RECTANGLE, Engine::GL::TEXTURE_WRAP_T, Engine::GL::CLAMP_TO_EDGE)
122
+
123
+ cgl_context = OpenGLBridge.CGLGetCurrentContext()
124
+
125
+ result = OpenGLBridge.CGLTexImageIOSurface2D(
126
+ cgl_context,
127
+ Engine::GL::TEXTURE_RECTANGLE,
128
+ Engine::GL::RGBA32F,
129
+ @width,
130
+ @height,
131
+ Engine::GL::RGBA,
132
+ Engine::GL::FLOAT,
133
+ @iosurface,
134
+ 0
135
+ )
136
+
137
+ raise "Failed to bind IOSurface to GL texture: #{result}" unless result == 0
138
+
139
+ Engine::GL.BindTexture(Engine::GL::TEXTURE_RECTANGLE, 0)
140
+ end
141
+
142
+ def create_gl_2d_texture
143
+ tex_buf = ' ' * 4
144
+ Engine::GL.GenTextures(1, tex_buf)
145
+ @gl_texture = tex_buf.unpack('L')[0]
146
+
147
+ Engine::GL.BindTexture(Engine::GL::TEXTURE_2D, @gl_texture)
148
+ Engine::GL.TexParameteri(Engine::GL::TEXTURE_2D, Engine::GL::TEXTURE_MIN_FILTER, Engine::GL::LINEAR)
149
+ Engine::GL.TexParameteri(Engine::GL::TEXTURE_2D, Engine::GL::TEXTURE_MAG_FILTER, Engine::GL::LINEAR)
150
+ Engine::GL.TexParameteri(Engine::GL::TEXTURE_2D, Engine::GL::TEXTURE_WRAP_S, Engine::GL::REPEAT)
151
+ Engine::GL.TexParameteri(Engine::GL::TEXTURE_2D, Engine::GL::TEXTURE_WRAP_T, Engine::GL::REPEAT)
152
+
153
+ Engine::GL.TexImage2D(Engine::GL::TEXTURE_2D, 0, Engine::GL::RGBA32F, @width, @height, 0, Engine::GL::RGBA, Engine::GL::FLOAT, nil)
154
+ Engine::GL.BindTexture(Engine::GL::TEXTURE_2D, 0)
155
+ end
156
+
157
+ def setup_blit_fbo
158
+ read_fbo_buf = ' ' * 4
159
+ Engine::GL.GenFramebuffers(1, read_fbo_buf)
160
+ @read_fbo = read_fbo_buf.unpack('L')[0]
161
+
162
+ Engine::GL.BindFramebuffer(Engine::GL::FRAMEBUFFER, @read_fbo)
163
+ Engine::GL.FramebufferTexture2D(Engine::GL::FRAMEBUFFER, Engine::GL::COLOR_ATTACHMENT0, Engine::GL::TEXTURE_RECTANGLE, @gl_texture_rect, 0)
164
+
165
+ draw_fbo_buf = ' ' * 4
166
+ Engine::GL.GenFramebuffers(1, draw_fbo_buf)
167
+ @draw_fbo = draw_fbo_buf.unpack('L')[0]
168
+
169
+ Engine::GL.BindFramebuffer(Engine::GL::FRAMEBUFFER, @draw_fbo)
170
+ Engine::GL.FramebufferTexture2D(Engine::GL::FRAMEBUFFER, Engine::GL::COLOR_ATTACHMENT0, Engine::GL::TEXTURE_2D, @gl_texture, 0)
171
+
172
+ Engine::GL.BindFramebuffer(Engine::GL::FRAMEBUFFER, 0)
173
+ end
174
+ end
175
+ end
176
+ end
@@ -0,0 +1,98 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'metal_bindings'
4
+
5
+ module Engine
6
+ module Metal
7
+ class Device
8
+ include Fiddle
9
+
10
+ attr_reader :device, :command_queue
11
+
12
+ def self.instance
13
+ @instance ||= new
14
+ end
15
+
16
+ def initialize
17
+ @device = MetalFramework.create_system_default_device
18
+ raise "Failed to create Metal device" if @device.null?
19
+
20
+ @command_queue = ObjC.msg(@device, 'newCommandQueue')
21
+ raise "Failed to create command queue" if @command_queue.null?
22
+ end
23
+
24
+ def new_library_with_source(source)
25
+ # Create NSString from source
26
+ ns_string_class = ObjC.cls('NSString')
27
+ source_nsstring = ObjC.msg(
28
+ ns_string_class,
29
+ 'stringWithUTF8String:',
30
+ source
31
+ )
32
+
33
+ # Create error pointer
34
+ error_ptr = Pointer.malloc(8)
35
+ error_ptr[0, 8] = [0].pack('Q')
36
+
37
+ # Compile the library
38
+ library = ObjC.msg(
39
+ @device,
40
+ 'newLibraryWithSource:options:error:',
41
+ source_nsstring,
42
+ nil,
43
+ error_ptr
44
+ )
45
+
46
+ if library.null?
47
+ error = Pointer.new(error_ptr[0, 8].unpack('Q')[0])
48
+ unless error.null?
49
+ desc = ObjC.msg(error, 'localizedDescription')
50
+ utf8 = ObjC.msg(desc, 'UTF8String')
51
+ raise "Metal shader compilation failed: #{utf8.to_s}"
52
+ end
53
+ raise "Metal shader compilation failed with unknown error"
54
+ end
55
+
56
+ library
57
+ end
58
+
59
+ def new_compute_pipeline(library, function_name)
60
+ # Get function from library
61
+ func_name_nsstring = ObjC.msg(
62
+ ObjC.cls('NSString'),
63
+ 'stringWithUTF8String:',
64
+ function_name
65
+ )
66
+ function = ObjC.msg(library, 'newFunctionWithName:', func_name_nsstring)
67
+ raise "Failed to find function '#{function_name}'" if function.null?
68
+
69
+ # Create compute pipeline
70
+ error_ptr = Pointer.malloc(8)
71
+ error_ptr[0, 8] = [0].pack('Q')
72
+
73
+ pipeline = ObjC.msg(
74
+ @device,
75
+ 'newComputePipelineStateWithFunction:error:',
76
+ function,
77
+ error_ptr
78
+ )
79
+
80
+ if pipeline.null?
81
+ error = Pointer.new(error_ptr[0, 8].unpack('Q')[0])
82
+ unless error.null?
83
+ desc = ObjC.msg(error, 'localizedDescription')
84
+ utf8 = ObjC.msg(desc, 'UTF8String')
85
+ raise "Failed to create compute pipeline: #{utf8.to_s}"
86
+ end
87
+ raise "Failed to create compute pipeline with unknown error"
88
+ end
89
+
90
+ pipeline
91
+ end
92
+
93
+ def new_command_buffer
94
+ ObjC.msg(@command_queue, 'commandBuffer')
95
+ end
96
+ end
97
+ end
98
+ end
@@ -0,0 +1,126 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'fiddle'
4
+ require 'fiddle/import'
5
+
6
+ module Engine
7
+ module Metal
8
+ module ObjC
9
+ extend Fiddle::Importer
10
+ dlload '/usr/lib/libobjc.A.dylib'
11
+
12
+ extern 'void* objc_getClass(const char*)'
13
+ extern 'void* sel_registerName(const char*)'
14
+
15
+ # We need to handle objc_msgSend manually for variadic args
16
+ OBJC_LIB = Fiddle.dlopen('/usr/lib/libobjc.A.dylib')
17
+ OBJC_MSGSEND_ADDR = OBJC_LIB['objc_msgSend']
18
+
19
+ def self.cls(name)
20
+ objc_getClass(name)
21
+ end
22
+
23
+ def self.sel(name)
24
+ sel_registerName(name)
25
+ end
26
+
27
+ def self.msg(obj, selector, *args)
28
+ sel_ptr = sel(selector)
29
+
30
+ # Build argument types: obj, sel, then args
31
+ arg_types = [Fiddle::TYPE_VOIDP, Fiddle::TYPE_VOIDP]
32
+ call_args = [obj, sel_ptr]
33
+
34
+ args.each do |arg|
35
+ case arg
36
+ when Integer
37
+ arg_types << Fiddle::TYPE_LONG
38
+ call_args << arg
39
+ when Float
40
+ arg_types << Fiddle::TYPE_DOUBLE
41
+ call_args << arg
42
+ when String
43
+ arg_types << Fiddle::TYPE_VOIDP
44
+ call_args << Fiddle::Pointer[arg]
45
+ when Fiddle::Pointer
46
+ arg_types << Fiddle::TYPE_VOIDP
47
+ call_args << arg
48
+ when nil
49
+ arg_types << Fiddle::TYPE_VOIDP
50
+ call_args << Fiddle::Pointer.new(0)
51
+ else
52
+ # Assume it's a pointer-like thing
53
+ arg_types << Fiddle::TYPE_VOIDP
54
+ call_args << arg
55
+ end
56
+ end
57
+
58
+ func = Fiddle::Function.new(OBJC_MSGSEND_ADDR, arg_types, Fiddle::TYPE_VOIDP)
59
+ result = func.call(*call_args)
60
+ Fiddle::Pointer.new(result)
61
+ end
62
+ end
63
+
64
+ module MetalFramework
65
+ extend Fiddle::Importer
66
+ dlload '/System/Library/Frameworks/Metal.framework/Metal'
67
+ dlload '/System/Library/Frameworks/CoreGraphics.framework/CoreGraphics'
68
+
69
+ # Get default device via Objective-C runtime instead of C function
70
+ def self.create_system_default_device
71
+ # MTLCopyAllDevices returns an NSArray of devices, first one is default
72
+ devices = ObjC.msg(ObjC.cls('MTLCopyAllDevicesWithObserver'), 'alloc')
73
+ # Simpler: use the class method on MTLDevice protocol
74
+ # Actually, let's just call the C function through a different approach
75
+ metal_lib = Fiddle.dlopen('/System/Library/Frameworks/Metal.framework/Metal')
76
+ create_device = Fiddle::Function.new(
77
+ metal_lib['MTLCreateSystemDefaultDevice'],
78
+ [],
79
+ Fiddle::TYPE_VOIDP
80
+ )
81
+ create_device.call
82
+ end
83
+ end
84
+
85
+ module IOSurfaceFramework
86
+ extend Fiddle::Importer
87
+ dlload '/System/Library/Frameworks/IOSurface.framework/IOSurface'
88
+
89
+ extern 'void* IOSurfaceCreate(void*)'
90
+ extern 'int IOSurfaceLock(void*, int, void*)'
91
+ extern 'int IOSurfaceUnlock(void*, int, void*)'
92
+ extern 'void* IOSurfaceGetBaseAddress(void*)'
93
+ extern 'int IOSurfaceGetWidth(void*)'
94
+ extern 'int IOSurfaceGetHeight(void*)'
95
+ extern 'int IOSurfaceGetBytesPerRow(void*)'
96
+ end
97
+
98
+ module CoreFoundation
99
+ extend Fiddle::Importer
100
+ dlload '/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation'
101
+
102
+ extern 'void* CFDictionaryCreateMutable(void*, long, void*, void*)'
103
+ extern 'void CFDictionarySetValue(void*, void*, void*)'
104
+ extern 'void* CFNumberCreate(void*, int, void*)'
105
+ extern 'void CFRelease(void*)'
106
+
107
+ # CFNumber types
108
+ CFNUMBER_INT_TYPE = 9
109
+ CFNUMBER_FLOAT_TYPE = 12
110
+
111
+ def self.create_int(value)
112
+ ptr = Fiddle::Pointer.malloc(4)
113
+ ptr[0, 4] = [value].pack('i')
114
+ CFNumberCreate(nil, CFNUMBER_INT_TYPE, ptr)
115
+ end
116
+ end
117
+
118
+ module OpenGLBridge
119
+ extend Fiddle::Importer
120
+ dlload '/System/Library/Frameworks/OpenGL.framework/OpenGL'
121
+
122
+ extern 'int CGLTexImageIOSurface2D(void*, int, int, int, int, int, int, void*, int)'
123
+ extern 'void* CGLGetCurrentContext()'
124
+ end
125
+ end
126
+ end
@@ -0,0 +1,77 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Engine
4
+ module OpenGL
5
+ class ComputeShader
6
+ def initialize(shader_path)
7
+ @uniform_locations = {}
8
+ @compute_shader = compile_shader(shader_path)
9
+ @program = Engine::GL.CreateProgram
10
+ Engine::GL.AttachShader(@program, @compute_shader)
11
+ Engine::GL.LinkProgram(@program)
12
+
13
+ linked_buf = ' ' * 4
14
+ Engine::GL.GetProgramiv(@program, Engine::GL::LINK_STATUS, linked_buf)
15
+ linked = linked_buf.unpack('L')[0]
16
+ if linked == 0
17
+ compile_log = ' ' * 1024
18
+ Engine::GL.GetProgramInfoLog(@program, 1023, nil, compile_log)
19
+ compute_log = ' ' * 1024
20
+ Engine::GL.GetShaderInfoLog(@compute_shader, 1023, nil, compute_log)
21
+ raise "Shader program failed to link:\n#{compile_log.strip}\n#{compute_log.strip}"
22
+ end
23
+ @uniform_cache = {}
24
+ @uniform_locations = {}
25
+ end
26
+
27
+ def dispatch(width, height, depth, textures: [], floats: {}, ints: {})
28
+ # Extract gl_texture from ComputeTexture objects
29
+ textures.each_with_index do |texture, slot|
30
+ gl_tex = texture.respond_to?(:gl_texture) ? texture.gl_texture : texture
31
+ set_texture(slot, gl_tex)
32
+ end
33
+
34
+ Engine::GL.UseProgram(@program)
35
+
36
+ floats.each { |name, value| set_float(name, value) }
37
+ ints.each { |name, value| set_int(name, value) }
38
+
39
+ Engine::GL.DispatchCompute(width, height, depth)
40
+ Engine::GL.MemoryBarrier(Engine::GL::SHADER_IMAGE_ACCESS_BARRIER_BIT)
41
+ end
42
+
43
+ private
44
+
45
+ def compile_shader(shader_path)
46
+ handle = Engine::GL.CreateShader(Engine::GL::COMPUTE_SHADER)
47
+ path = File.expand_path(File.join(GAME_DIR, shader_path))
48
+ s_srcs = [File.read(path)].pack('p')
49
+ s_lens = [File.size(path)].pack('I')
50
+ Engine::GL.ShaderSource(handle, 1, s_srcs, s_lens)
51
+ Engine::GL.CompileShader(handle)
52
+ handle
53
+ end
54
+
55
+ def set_float(name, float)
56
+ Engine::GL.Uniform1f(uniform_location(name), float)
57
+ end
58
+
59
+ def set_texture(slot, texture)
60
+ Engine::GL.ActiveTexture(Object.const_get("Engine::GL::TEXTURE#{slot}"))
61
+ if texture
62
+ Engine::GL.BindImageTexture(slot, texture, 0, Engine::GL::FALSE, 0, Engine::GL::READ_WRITE, Engine::GL::RGBA32F)
63
+ else
64
+ Engine::GL.BindImageTexture(slot, 0, 0, Engine::GL::FALSE, 0, Engine::GL::READ_WRITE, Engine::GL::RGBA32F)
65
+ end
66
+ end
67
+
68
+ def set_int(name, int)
69
+ Engine::GL.Uniform1i(uniform_location(name), int)
70
+ end
71
+
72
+ def uniform_location(name)
73
+ @uniform_locations[name] ||= Engine::GL.GetUniformLocation(@program, name)
74
+ end
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Engine
4
+ module OpenGL
5
+ class ComputeTexture
6
+ attr_reader :width, :height, :gl_texture
7
+
8
+ def initialize(width, height)
9
+ @width = width
10
+ @height = height
11
+ create_texture
12
+ end
13
+
14
+ private
15
+
16
+ def create_texture
17
+ tex_buf = ' ' * 4
18
+ Engine::GL.GenTextures(1, tex_buf)
19
+ @gl_texture = tex_buf.unpack('L')[0]
20
+
21
+ Engine::GL.BindTexture(Engine::GL::TEXTURE_2D, @gl_texture)
22
+ Engine::GL.TexParameteri(Engine::GL::TEXTURE_2D, Engine::GL::TEXTURE_WRAP_S, Engine::GL::REPEAT)
23
+ Engine::GL.TexParameteri(Engine::GL::TEXTURE_2D, Engine::GL::TEXTURE_WRAP_T, Engine::GL::REPEAT)
24
+ Engine::GL.TexParameteri(Engine::GL::TEXTURE_2D, Engine::GL::TEXTURE_MIN_FILTER, Engine::GL::LINEAR)
25
+ Engine::GL.TexParameteri(Engine::GL::TEXTURE_2D, Engine::GL::TEXTURE_MAG_FILTER, Engine::GL::LINEAR)
26
+ Engine::GL.TexImage2D(Engine::GL::TEXTURE_2D, 0, Engine::GL::RGBA32F, @width, @height, 0, Engine::GL::RGBA, Engine::GL::FLOAT, nil)
27
+ Engine::GL.BindTexture(Engine::GL::TEXTURE_2D, 0)
28
+ end
29
+ end
30
+ end
31
+ end
@@ -2,6 +2,9 @@
2
2
 
3
3
  module Engine::Physics::Components
4
4
  class Rigidbody < Engine::Component
5
+ serialize :velocity, :angular_velocity, :mass, :inertia_tensor, :gravity,
6
+ :coefficient_of_restitution, :coefficient_of_friction
7
+
5
8
  attr_accessor :velocity,
6
9
  :angular_velocity,
7
10
  :force,
@@ -10,29 +13,29 @@ module Engine::Physics::Components
10
13
  :coefficient_of_restitution,
11
14
  :coefficient_of_friction
12
15
 
13
- def initialize(
14
- velocity: Vector[0, 0, 0],
15
- angular_velocity: Vector[0, 0, 0],
16
- mass: 1,
17
- inertia_tensor: nil,
18
- gravity: Vector[0, -9.81, 0],
19
- coefficient_of_restitution: 1,
20
- coefficient_of_friction: 0
21
- )
22
- @velocity = velocity
23
- @angular_velocity = angular_velocity
24
- @force = gravity * mass
25
- @gravity = gravity
26
- @impulses = []
27
- @angular_impulses = []
28
- @mass = mass
29
- @inertia_tensor = inertia_tensor || Matrix[
16
+ def awake
17
+ @velocity ||= Vector[0, 0, 0]
18
+ @angular_velocity ||= Vector[0, 0, 0]
19
+ @mass ||= 1
20
+ @gravity ||= Vector[0, -9.81, 0]
21
+ @coefficient_of_restitution ||= 1
22
+ @coefficient_of_friction ||= 0
23
+ @inertia_tensor ||= Matrix[
30
24
  [1, 0, 0],
31
25
  [0, 1, 0],
32
26
  [0, 0, 1]
33
- ] * mass
34
- @coefficient_of_restitution = coefficient_of_restitution
35
- @coefficient_of_friction = coefficient_of_friction
27
+ ] * @mass
28
+ @force = @gravity * @mass
29
+ @impulses = []
30
+ @angular_impulses = []
31
+ end
32
+
33
+ def start
34
+ Engine::Physics::PhysicsResolver.register_rigidbody(self)
35
+ end
36
+
37
+ def destroy
38
+ Engine::Physics::PhysicsResolver.unregister_rigidbody(self)
36
39
  end
37
40
 
38
41
  def update(delta_time)
@@ -2,10 +2,20 @@
2
2
 
3
3
  module Engine::Physics::Components
4
4
  class SphereCollider < Engine::Component
5
+ serialize :radius
6
+
5
7
  attr_accessor :radius
6
8
 
7
- def initialize(radius)
8
- @radius = radius
9
+ def awake
10
+ @radius ||= 1
11
+ end
12
+
13
+ def start
14
+ Engine::Physics::PhysicsResolver.register_collider(self)
15
+ end
16
+
17
+ def destroy
18
+ Engine::Physics::PhysicsResolver.unregister_collider(self)
9
19
  end
10
20
 
11
21
  def collision_for(other_collider)
@@ -43,7 +53,7 @@ module Engine::Physics::Components
43
53
  end
44
54
 
45
55
  def rigidbody
46
- game_object.components.find { |c| c.is_a?(Rigidbody) }
56
+ game_object.component(Rigidbody)
47
57
  end
48
58
 
49
59
  private
@@ -8,6 +8,30 @@ module Engine::Physics
8
8
  end
9
9
  end
10
10
 
11
+ def self.rigidbodies
12
+ @cached_rigidbodies ||= []
13
+ end
14
+
15
+ def self.colliders
16
+ @cached_colliders ||= []
17
+ end
18
+
19
+ def self.register_rigidbody(rigidbody)
20
+ rigidbodies << rigidbody
21
+ end
22
+
23
+ def self.unregister_rigidbody(rigidbody)
24
+ rigidbodies.delete(rigidbody)
25
+ end
26
+
27
+ def self.register_collider(collider)
28
+ colliders << collider
29
+ end
30
+
31
+ def self.unregister_collider(collider)
32
+ colliders.delete(collider)
33
+ end
34
+
11
35
  private
12
36
 
13
37
  def self.apply_collisions(rigidbody)
@@ -21,17 +45,5 @@ module Engine::Physics
21
45
  rigidbody.apply_impulse(collision.impulse, collision.point)
22
46
  end
23
47
  end
24
-
25
- def self.rigidbodies
26
- Engine::GameObject.objects.map do |go|
27
- go.components.find { |c| c.is_a?(Engine::Physics::Components::Rigidbody) }
28
- end.compact
29
- end
30
-
31
- def self.colliders
32
- Engine::GameObject.objects.map do |go|
33
- go.components.select { |c| c.is_a?(Components::SphereCollider) }
34
- end.flatten
35
- end
36
48
  end
37
49
  end