ruby_rpg 0.0.5 → 0.1.1

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 (606) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +43 -21
  3. data/THIRD_PARTY_NOTICES.md +61 -0
  4. data/bin/build.bash +13 -13
  5. data/bin/import +54 -44
  6. data/ext/gl_native/extconf.rb +20 -0
  7. data/ext/gl_native/gl_native.c +563 -0
  8. data/ext/glfw_native/extconf.rb +18 -0
  9. data/ext/glfw_native/glfw_native.c +451 -0
  10. data/lib/engine/assets/Bangers-Regular.ttf +0 -0
  11. data/lib/engine/assets/Caveat-Regular.ttf +0 -0
  12. data/lib/engine/assets/JetBrainsMono-Regular.ttf +0 -0
  13. data/lib/engine/assets/NotoSerif-Regular.ttf +0 -0
  14. data/lib/engine/assets/OpenSans-Regular.ttf +0 -0
  15. data/lib/engine/assets/Oswald-Regular.ttf +0 -0
  16. data/lib/engine/assets/PressStart2P-Regular.ttf +0 -0
  17. data/lib/engine/assets/_imported/Bangers-Regular.json +1 -0
  18. data/lib/engine/assets/_imported/Bangers-Regular.png +0 -0
  19. data/lib/engine/assets/_imported/Caveat-Regular.json +1 -0
  20. data/lib/engine/assets/_imported/Caveat-Regular.png +0 -0
  21. data/lib/engine/assets/_imported/JetBrainsMono-Regular.json +1 -0
  22. data/lib/engine/assets/_imported/JetBrainsMono-Regular.png +0 -0
  23. data/lib/engine/assets/_imported/NotoSerif-Regular.json +1 -0
  24. data/lib/engine/assets/_imported/NotoSerif-Regular.png +0 -0
  25. data/lib/engine/assets/_imported/OpenSans-Regular.json +1 -0
  26. data/lib/engine/assets/_imported/OpenSans-Regular.png +0 -0
  27. data/lib/engine/assets/_imported/Oswald-Regular.json +1 -0
  28. data/lib/engine/assets/_imported/Oswald-Regular.png +0 -0
  29. data/lib/engine/assets/_imported/PressStart2P-Regular.json +1 -0
  30. data/lib/engine/assets/_imported/PressStart2P-Regular.png +0 -0
  31. data/lib/engine/assets/_imported/cube.index_data +36 -0
  32. data/lib/engine/assets/_imported/cube.vertex_data +720 -0
  33. data/lib/engine/assets/_imported/plane.index_data +6 -0
  34. data/lib/engine/assets/_imported/plane.vertex_data +120 -0
  35. data/lib/engine/assets/_imported/sphere.index_data +2880 -0
  36. data/lib/engine/assets/_imported/sphere.vertex_data +57600 -0
  37. data/lib/engine/assets/cube.obj +46 -0
  38. data/lib/engine/assets/plane.obj +16 -0
  39. data/lib/engine/assets/sphere.obj +2488 -0
  40. data/lib/engine/autoloader.rb +11 -11
  41. data/lib/engine/camera.rb +12 -12
  42. data/lib/engine/component.rb +65 -63
  43. data/lib/engine/components/audio_source.rb +43 -41
  44. data/lib/engine/components/direction_light.rb +102 -23
  45. data/lib/engine/components/orthographic_camera.rb +60 -54
  46. data/lib/engine/components/perspective_camera.rb +76 -53
  47. data/lib/engine/components/point_light.rb +80 -24
  48. data/lib/engine/components/renderers/font_renderer.rb +19 -0
  49. data/lib/engine/components/renderers/font_renderer_base.rb +134 -0
  50. data/lib/engine/components/renderers/mesh_renderer.rb +41 -0
  51. data/lib/engine/components/renderers/sprite_renderer.rb +46 -0
  52. data/lib/engine/components/spot_light.rb +90 -0
  53. data/lib/engine/components/sprite_animator.rb +42 -0
  54. data/lib/engine/components/ui/flex/layout.rb +94 -0
  55. data/lib/engine/components/ui/flex/pack_layout.rb +65 -0
  56. data/lib/engine/components/ui/flex/stretch_layout.rb +52 -0
  57. data/lib/engine/components/ui/flex.rb +60 -0
  58. data/lib/engine/components/ui/font_renderer.rb +57 -0
  59. data/lib/engine/components/ui/rect.rb +117 -0
  60. data/lib/engine/components/ui/sprite_clickbox.rb +47 -0
  61. data/lib/engine/components/ui/sprite_renderer.rb +117 -0
  62. data/lib/engine/compute_shader.rb +14 -93
  63. data/lib/engine/compute_texture.rb +13 -0
  64. data/lib/engine/cursor.rb +43 -43
  65. data/lib/engine/debugging.rb +41 -41
  66. data/lib/engine/engine.rb +127 -131
  67. data/lib/engine/font.rb +127 -74
  68. data/lib/engine/game_object.rb +306 -234
  69. data/lib/engine/gl.rb +439 -0
  70. data/lib/engine/glfw.rb +151 -0
  71. data/lib/engine/importers/font_importer.rb +69 -69
  72. data/lib/engine/importers/obj_file.rb +244 -244
  73. data/lib/engine/importers/obj_importer.rb +33 -33
  74. data/lib/engine/input.rb +212 -105
  75. data/lib/engine/material.rb +214 -79
  76. data/lib/engine/matrix_helpers.rb +38 -0
  77. data/lib/engine/mesh.rb +68 -43
  78. data/lib/engine/metal/compute_shader.rb +118 -0
  79. data/lib/engine/metal/compute_texture.rb +176 -0
  80. data/lib/engine/metal/device.rb +98 -0
  81. data/lib/engine/metal/metal_bindings.rb +126 -0
  82. data/lib/engine/opengl/compute_shader.rb +77 -0
  83. data/lib/engine/opengl/compute_texture.rb +31 -0
  84. data/lib/engine/path.rb +92 -92
  85. data/lib/engine/physics/collision.rb +12 -12
  86. data/lib/engine/physics/components/cube_collider.rb +6 -6
  87. data/lib/engine/physics/components/rigidbody.rb +106 -103
  88. data/lib/engine/physics/components/sphere_collider.rb +103 -93
  89. data/lib/engine/physics/physics_resolver.rb +49 -37
  90. data/lib/engine/polygon_mesh.rb +45 -45
  91. data/lib/engine/quaternion.rb +234 -234
  92. data/lib/engine/rendering/cubemap_shadow_map_array.rb +77 -0
  93. data/lib/engine/rendering/gpu_timer.rb +68 -0
  94. data/lib/engine/rendering/instance_renderer.rb +232 -153
  95. data/lib/engine/rendering/post_processing/bloom_effect.rb +87 -0
  96. data/lib/engine/rendering/post_processing/depth_debug_effect.rb +17 -0
  97. data/lib/engine/rendering/post_processing/depth_of_field_effect.rb +52 -0
  98. data/lib/engine/rendering/post_processing/effect.rb +11 -0
  99. data/lib/engine/rendering/post_processing/post_processing_effect.rb +86 -0
  100. data/lib/engine/rendering/post_processing/single_pass_effect.rb +19 -0
  101. data/lib/engine/rendering/post_processing/ssao_effect.rb +182 -0
  102. data/lib/engine/rendering/post_processing/ssr_effect.rb +89 -0
  103. data/lib/engine/rendering/post_processing/tint_effect.rb +18 -0
  104. data/lib/engine/rendering/render_pipeline.rb +267 -35
  105. data/lib/engine/rendering/render_texture.rb +118 -0
  106. data/lib/engine/rendering/screen_quad.rb +64 -0
  107. data/lib/engine/rendering/shadow_map_array.rb +72 -0
  108. data/lib/engine/rendering/skybox_cubemap.rb +119 -0
  109. data/lib/engine/rendering/skybox_renderer.rb +64 -0
  110. data/lib/engine/rendering/ui/stencil_manager.rb +69 -0
  111. data/lib/engine/screenshoter.rb +34 -34
  112. data/lib/engine/serialization/graph_serializer.rb +74 -0
  113. data/lib/engine/serialization/object_serializer.rb +98 -0
  114. data/lib/engine/serialization/serializable.rb +78 -0
  115. data/lib/engine/serialization/yaml_persistence.rb +45 -0
  116. data/lib/engine/shader.rb +215 -119
  117. data/lib/engine/shaders/colour_frag.glsl +16 -8
  118. data/lib/engine/shaders/colour_vertex.glsl +20 -13
  119. data/lib/engine/shaders/fullscreen_frag.glsl +11 -0
  120. data/lib/engine/shaders/fullscreen_vertex.glsl +12 -0
  121. data/lib/engine/shaders/instanced_sprite_frag.glsl +21 -0
  122. data/lib/engine/shaders/{skybox_vert.glsl → instanced_sprite_vertex.glsl} +15 -14
  123. data/lib/engine/shaders/lighting/directional_light.glsl +49 -0
  124. data/lib/engine/shaders/lighting/lighting.glsl +33 -0
  125. data/lib/engine/shaders/lighting/lighting_common.glsl +13 -0
  126. data/lib/engine/shaders/lighting/point_light.glsl +46 -0
  127. data/lib/engine/shaders/lighting/spot_light.glsl +80 -0
  128. data/lib/engine/shaders/mesh_frag.glsl +53 -102
  129. data/lib/engine/shaders/mesh_vertex.glsl +25 -25
  130. data/lib/engine/shaders/point_shadow_frag.glsl +12 -0
  131. data/lib/engine/shaders/point_shadow_vertex.glsl +15 -0
  132. data/lib/engine/shaders/post_process/bloom_blur_frag.glsl +25 -0
  133. data/lib/engine/shaders/post_process/bloom_combine_frag.glsl +19 -0
  134. data/lib/engine/shaders/post_process/bloom_threshold_frag.glsl +19 -0
  135. data/lib/engine/shaders/post_process/debug_normals_frag.glsl +21 -0
  136. data/lib/engine/shaders/post_process/depth_debug_frag.glsl +17 -0
  137. data/lib/engine/shaders/post_process/dof_blur_frag.glsl +52 -0
  138. data/lib/engine/shaders/post_process/skybox_frag.glsl +29 -0
  139. data/lib/engine/shaders/post_process/ssao/blur_frag.glsl +50 -0
  140. data/lib/engine/shaders/post_process/ssao/combine_frag.glsl +15 -0
  141. data/lib/engine/shaders/post_process/ssao/frag.glsl +99 -0
  142. data/lib/engine/shaders/post_process/ssr/combine_frag.glsl +16 -0
  143. data/lib/engine/shaders/post_process/ssr/frag.glsl +118 -0
  144. data/lib/engine/shaders/post_process/tint_frag.glsl +14 -0
  145. data/lib/engine/shaders/shadow_frag.glsl +6 -0
  146. data/lib/engine/shaders/shadow_vertex.glsl +11 -0
  147. data/lib/engine/shaders/skybox_cubemap_frag.glsl +46 -0
  148. data/lib/engine/shaders/sprite_frag.glsl +17 -17
  149. data/lib/engine/shaders/sprite_vertex.glsl +15 -15
  150. data/lib/engine/shaders/text_frag.glsl +15 -15
  151. data/lib/engine/shaders/text_vertex.glsl +31 -31
  152. data/lib/engine/shaders/ui_sprite_frag.glsl +15 -15
  153. data/lib/engine/shaders/ui_sprite_vertex.glsl +15 -15
  154. data/lib/engine/shaders/vertex_lit_frag.glsl +33 -89
  155. data/lib/engine/shaders/vertex_lit_vertex.glsl +28 -28
  156. data/lib/engine/standard_meshes/quad_mesh.rb +26 -0
  157. data/lib/engine/standard_objects/cube.rb +23 -0
  158. data/lib/engine/standard_objects/default_material.rb +20 -0
  159. data/lib/engine/standard_objects/plane.rb +23 -0
  160. data/lib/engine/standard_objects/sphere.rb +23 -0
  161. data/lib/engine/tangent_calculator.rb +42 -42
  162. data/lib/engine/texture.rb +62 -53
  163. data/lib/engine/ui/rect.rb +16 -0
  164. data/lib/engine/video_mode.rb +37 -37
  165. data/lib/engine/window.rb +126 -126
  166. data/lib/ruby_rpg.rb +116 -58
  167. data/vendor/glew-2.2.0-win32/LICENSE.txt +73 -0
  168. data/vendor/glew-2.2.0-win32/bin/Release/x64/glew32.dll +0 -0
  169. data/vendor/glew-2.2.0-win32/include/GL/glew.h +26427 -0
  170. data/vendor/glew-2.2.0-win32/lib/Release/x64/glew32.lib +0 -0
  171. data/{glfw-3.3.9.bin.MACOS → vendor/glfw-3.3.9.bin.MACOS}/lib-arm64/libglfw.3.dylib +0 -0
  172. data/{glfw-3.3.9.bin.MACOS → vendor/glfw-3.4.bin.WIN64}/LICENSE.md +23 -23
  173. metadata +144 -463
  174. data/glfw-3.3.9.bin.MACOS/README.md +0 -5
  175. data/glfw-3.3.9.bin.MACOS/docs/html/bc_s.png +0 -0
  176. data/glfw-3.3.9.bin.MACOS/docs/html/bc_sd.png +0 -0
  177. data/glfw-3.3.9.bin.MACOS/docs/html/build_8dox.html +0 -81
  178. data/glfw-3.3.9.bin.MACOS/docs/html/build_guide.html +0 -199
  179. data/glfw-3.3.9.bin.MACOS/docs/html/closed.png +0 -0
  180. data/glfw-3.3.9.bin.MACOS/docs/html/compat_8dox.html +0 -81
  181. data/glfw-3.3.9.bin.MACOS/docs/html/compat_guide.html +0 -153
  182. data/glfw-3.3.9.bin.MACOS/docs/html/compile_8dox.html +0 -81
  183. data/glfw-3.3.9.bin.MACOS/docs/html/compile_guide.html +0 -223
  184. data/glfw-3.3.9.bin.MACOS/docs/html/context_8dox.html +0 -81
  185. data/glfw-3.3.9.bin.MACOS/docs/html/context_guide.html +0 -259
  186. data/glfw-3.3.9.bin.MACOS/docs/html/deprecated.html +0 -88
  187. data/glfw-3.3.9.bin.MACOS/docs/html/dir_08423ce7729c4554356a7de7171ba263.html +0 -85
  188. data/glfw-3.3.9.bin.MACOS/docs/html/dir_2dcebcdf14b42e92a6ed85c61bda6b9d.html +0 -93
  189. data/glfw-3.3.9.bin.MACOS/docs/html/dir_62ce056722ee97c199075aa1d6eca309.html +0 -95
  190. data/glfw-3.3.9.bin.MACOS/docs/html/dir_dddf4cf62655095a666cf715de3a31a2.html +0 -91
  191. data/glfw-3.3.9.bin.MACOS/docs/html/doc.svg +0 -12
  192. data/glfw-3.3.9.bin.MACOS/docs/html/docd.svg +0 -12
  193. data/glfw-3.3.9.bin.MACOS/docs/html/doxygen.css +0 -1685
  194. data/glfw-3.3.9.bin.MACOS/docs/html/doxygen.svg +0 -28
  195. data/glfw-3.3.9.bin.MACOS/docs/html/dynsections.js +0 -192
  196. data/glfw-3.3.9.bin.MACOS/docs/html/extra.css +0 -1
  197. data/glfw-3.3.9.bin.MACOS/docs/html/files.html +0 -91
  198. data/glfw-3.3.9.bin.MACOS/docs/html/folderclosed.svg +0 -11
  199. data/glfw-3.3.9.bin.MACOS/docs/html/folderclosedd.svg +0 -11
  200. data/glfw-3.3.9.bin.MACOS/docs/html/folderopen.svg +0 -17
  201. data/glfw-3.3.9.bin.MACOS/docs/html/folderopend.svg +0 -12
  202. data/glfw-3.3.9.bin.MACOS/docs/html/glfw3_8h.html +0 -1661
  203. data/glfw-3.3.9.bin.MACOS/docs/html/glfw3_8h_source.html +0 -1175
  204. data/glfw-3.3.9.bin.MACOS/docs/html/glfw3native_8h.html +0 -167
  205. data/glfw-3.3.9.bin.MACOS/docs/html/glfw3native_8h_source.html +0 -303
  206. data/glfw-3.3.9.bin.MACOS/docs/html/group__buttons.html +0 -282
  207. data/glfw-3.3.9.bin.MACOS/docs/html/group__context.html +0 -304
  208. data/glfw-3.3.9.bin.MACOS/docs/html/group__errors.html +0 -304
  209. data/glfw-3.3.9.bin.MACOS/docs/html/group__gamepad__axes.html +0 -202
  210. data/glfw-3.3.9.bin.MACOS/docs/html/group__gamepad__buttons.html +0 -410
  211. data/glfw-3.3.9.bin.MACOS/docs/html/group__hat__state.html +0 -234
  212. data/glfw-3.3.9.bin.MACOS/docs/html/group__init.html +0 -570
  213. data/glfw-3.3.9.bin.MACOS/docs/html/group__input.html +0 -2255
  214. data/glfw-3.3.9.bin.MACOS/docs/html/group__joysticks.html +0 -362
  215. data/glfw-3.3.9.bin.MACOS/docs/html/group__keys.html +0 -2034
  216. data/glfw-3.3.9.bin.MACOS/docs/html/group__mods.html +0 -198
  217. data/glfw-3.3.9.bin.MACOS/docs/html/group__monitor.html +0 -848
  218. data/glfw-3.3.9.bin.MACOS/docs/html/group__native.html +0 -812
  219. data/glfw-3.3.9.bin.MACOS/docs/html/group__shapes.html +0 -198
  220. data/glfw-3.3.9.bin.MACOS/docs/html/group__vulkan.html +0 -359
  221. data/glfw-3.3.9.bin.MACOS/docs/html/group__window.html +0 -3434
  222. data/glfw-3.3.9.bin.MACOS/docs/html/index.html +0 -100
  223. data/glfw-3.3.9.bin.MACOS/docs/html/input_8dox.html +0 -81
  224. data/glfw-3.3.9.bin.MACOS/docs/html/input_guide.html +0 -570
  225. data/glfw-3.3.9.bin.MACOS/docs/html/internal_8dox.html +0 -81
  226. data/glfw-3.3.9.bin.MACOS/docs/html/internals_guide.html +0 -132
  227. data/glfw-3.3.9.bin.MACOS/docs/html/intro_8dox.html +0 -81
  228. data/glfw-3.3.9.bin.MACOS/docs/html/intro_guide.html +0 -351
  229. data/glfw-3.3.9.bin.MACOS/docs/html/jquery.js +0 -34
  230. data/glfw-3.3.9.bin.MACOS/docs/html/main_8dox.html +0 -81
  231. data/glfw-3.3.9.bin.MACOS/docs/html/menu.js +0 -136
  232. data/glfw-3.3.9.bin.MACOS/docs/html/menudata.js +0 -29
  233. data/glfw-3.3.9.bin.MACOS/docs/html/minus.svg +0 -8
  234. data/glfw-3.3.9.bin.MACOS/docs/html/minusd.svg +0 -8
  235. data/glfw-3.3.9.bin.MACOS/docs/html/monitor_8dox.html +0 -81
  236. data/glfw-3.3.9.bin.MACOS/docs/html/monitor_guide.html +0 -229
  237. data/glfw-3.3.9.bin.MACOS/docs/html/moving_8dox.html +0 -81
  238. data/glfw-3.3.9.bin.MACOS/docs/html/moving_guide.html +0 -374
  239. data/glfw-3.3.9.bin.MACOS/docs/html/nav_f.png +0 -0
  240. data/glfw-3.3.9.bin.MACOS/docs/html/nav_fd.png +0 -0
  241. data/glfw-3.3.9.bin.MACOS/docs/html/nav_g.png +0 -0
  242. data/glfw-3.3.9.bin.MACOS/docs/html/nav_h.png +0 -0
  243. data/glfw-3.3.9.bin.MACOS/docs/html/nav_hd.png +0 -0
  244. data/glfw-3.3.9.bin.MACOS/docs/html/news.html +0 -634
  245. data/glfw-3.3.9.bin.MACOS/docs/html/news_8dox.html +0 -81
  246. data/glfw-3.3.9.bin.MACOS/docs/html/open.png +0 -0
  247. data/glfw-3.3.9.bin.MACOS/docs/html/pages.html +0 -99
  248. data/glfw-3.3.9.bin.MACOS/docs/html/plus.svg +0 -9
  249. data/glfw-3.3.9.bin.MACOS/docs/html/plusd.svg +0 -9
  250. data/glfw-3.3.9.bin.MACOS/docs/html/quick_8dox.html +0 -81
  251. data/glfw-3.3.9.bin.MACOS/docs/html/quick_guide.html +0 -397
  252. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_0.js +0 -5
  253. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_1.js +0 -4
  254. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_10.js +0 -65
  255. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_11.js +0 -26
  256. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_12.js +0 -44
  257. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_13.js +0 -34
  258. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_14.js +0 -12
  259. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_15.js +0 -52
  260. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_16.js +0 -69
  261. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_17.js +0 -51
  262. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_18.js +0 -14
  263. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_19.js +0 -36
  264. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_1a.js +0 -98
  265. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_1b.js +0 -12
  266. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_2.js +0 -6
  267. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_3.js +0 -9
  268. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_4.js +0 -57
  269. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_5.js +0 -22
  270. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_6.js +0 -103
  271. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_7.js +0 -23
  272. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_8.js +0 -35
  273. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_9.js +0 -63
  274. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_a.js +0 -505
  275. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_b.js +0 -24
  276. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_c.js +0 -50
  277. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_d.js +0 -17
  278. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_e.js +0 -12
  279. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_f.js +0 -35
  280. data/glfw-3.3.9.bin.MACOS/docs/html/search/classes_0.js +0 -7
  281. data/glfw-3.3.9.bin.MACOS/docs/html/search/close.svg +0 -18
  282. data/glfw-3.3.9.bin.MACOS/docs/html/search/defines_0.js +0 -34
  283. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_0.js +0 -4
  284. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_1.js +0 -6
  285. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_2.js +0 -5
  286. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_3.js +0 -6
  287. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_4.js +0 -6
  288. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_5.js +0 -4
  289. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_6.js +0 -4
  290. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_7.js +0 -4
  291. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_8.js +0 -4
  292. data/glfw-3.3.9.bin.MACOS/docs/html/search/functions_0.js +0 -146
  293. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_0.js +0 -6
  294. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_1.js +0 -4
  295. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_10.js +0 -4
  296. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_2.js +0 -6
  297. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_3.js +0 -5
  298. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_4.js +0 -4
  299. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_5.js +0 -5
  300. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_6.js +0 -4
  301. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_7.js +0 -5
  302. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_8.js +0 -5
  303. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_9.js +0 -6
  304. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_a.js +0 -6
  305. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_b.js +0 -4
  306. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_c.js +0 -4
  307. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_d.js +0 -7
  308. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_e.js +0 -4
  309. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_f.js +0 -5
  310. data/glfw-3.3.9.bin.MACOS/docs/html/search/mag.svg +0 -24
  311. data/glfw-3.3.9.bin.MACOS/docs/html/search/mag_d.svg +0 -24
  312. data/glfw-3.3.9.bin.MACOS/docs/html/search/mag_sel.svg +0 -31
  313. data/glfw-3.3.9.bin.MACOS/docs/html/search/mag_seld.svg +0 -31
  314. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_0.js +0 -4
  315. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_1.js +0 -4
  316. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_10.js +0 -4
  317. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_2.js +0 -5
  318. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_3.js +0 -4
  319. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_4.js +0 -6
  320. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_5.js +0 -4
  321. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_6.js +0 -4
  322. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_7.js +0 -7
  323. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_8.js +0 -6
  324. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_9.js +0 -4
  325. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_a.js +0 -5
  326. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_b.js +0 -5
  327. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_c.js +0 -4
  328. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_d.js +0 -6
  329. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_e.js +0 -6
  330. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_f.js +0 -4
  331. data/glfw-3.3.9.bin.MACOS/docs/html/search/search.css +0 -291
  332. data/glfw-3.3.9.bin.MACOS/docs/html/search/search.js +0 -840
  333. data/glfw-3.3.9.bin.MACOS/docs/html/search/searchdata.js +0 -39
  334. data/glfw-3.3.9.bin.MACOS/docs/html/search/typedefs_0.js +0 -32
  335. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_0.js +0 -4
  336. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_1.js +0 -6
  337. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_2.js +0 -5
  338. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_3.js +0 -4
  339. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_4.js +0 -4
  340. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_5.js +0 -6
  341. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_6.js +0 -4
  342. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_7.js +0 -4
  343. data/glfw-3.3.9.bin.MACOS/docs/html/spaces.svg +0 -877
  344. data/glfw-3.3.9.bin.MACOS/docs/html/splitbar.png +0 -0
  345. data/glfw-3.3.9.bin.MACOS/docs/html/splitbard.png +0 -0
  346. data/glfw-3.3.9.bin.MACOS/docs/html/struct_g_l_f_wgamepadstate.html +0 -134
  347. data/glfw-3.3.9.bin.MACOS/docs/html/struct_g_l_f_wgammaramp.html +0 -170
  348. data/glfw-3.3.9.bin.MACOS/docs/html/struct_g_l_f_wimage.html +0 -151
  349. data/glfw-3.3.9.bin.MACOS/docs/html/struct_g_l_f_wvidmode.html +0 -204
  350. data/glfw-3.3.9.bin.MACOS/docs/html/sync_off.png +0 -0
  351. data/glfw-3.3.9.bin.MACOS/docs/html/sync_on.png +0 -0
  352. data/glfw-3.3.9.bin.MACOS/docs/html/tab_a.png +0 -0
  353. data/glfw-3.3.9.bin.MACOS/docs/html/tab_ad.png +0 -0
  354. data/glfw-3.3.9.bin.MACOS/docs/html/tab_b.png +0 -0
  355. data/glfw-3.3.9.bin.MACOS/docs/html/tab_bd.png +0 -0
  356. data/glfw-3.3.9.bin.MACOS/docs/html/tab_h.png +0 -0
  357. data/glfw-3.3.9.bin.MACOS/docs/html/tab_hd.png +0 -0
  358. data/glfw-3.3.9.bin.MACOS/docs/html/tab_s.png +0 -0
  359. data/glfw-3.3.9.bin.MACOS/docs/html/tab_sd.png +0 -0
  360. data/glfw-3.3.9.bin.MACOS/docs/html/tabs.css +0 -1
  361. data/glfw-3.3.9.bin.MACOS/docs/html/vulkan_8dox.html +0 -81
  362. data/glfw-3.3.9.bin.MACOS/docs/html/vulkan_guide.html +0 -196
  363. data/glfw-3.3.9.bin.MACOS/docs/html/window_8dox.html +0 -81
  364. data/glfw-3.3.9.bin.MACOS/docs/html/window_guide.html +0 -763
  365. data/glfw-3.3.9.bin.MACOS/include/GLFW/glfw3.h +0 -5932
  366. data/glfw-3.3.9.bin.MACOS/include/GLFW/glfw3native.h +0 -634
  367. data/glfw-3.3.9.bin.MACOS/lib-arm64/libglfw3.a +0 -0
  368. data/glfw-3.3.9.bin.MACOS/lib-universal/libglfw.3.dylib +0 -0
  369. data/glfw-3.3.9.bin.MACOS/lib-universal/libglfw3.a +0 -0
  370. data/glfw-3.3.9.bin.MACOS/lib-x86_64/libglfw.3.dylib +0 -0
  371. data/glfw-3.3.9.bin.MACOS/lib-x86_64/libglfw3.a +0 -0
  372. data/glfw-3.4.bin.WIN64/README.md +0 -70
  373. data/glfw-3.4.bin.WIN64/docs/html/bc_s.png +0 -0
  374. data/glfw-3.4.bin.WIN64/docs/html/bc_sd.png +0 -0
  375. data/glfw-3.4.bin.WIN64/docs/html/build_8md.html +0 -81
  376. data/glfw-3.4.bin.WIN64/docs/html/build_guide.html +0 -217
  377. data/glfw-3.4.bin.WIN64/docs/html/closed.png +0 -0
  378. data/glfw-3.4.bin.WIN64/docs/html/compat_8md.html +0 -81
  379. data/glfw-3.4.bin.WIN64/docs/html/compat_guide.html +0 -156
  380. data/glfw-3.4.bin.WIN64/docs/html/compile_8md.html +0 -81
  381. data/glfw-3.4.bin.WIN64/docs/html/compile_guide.html +0 -219
  382. data/glfw-3.4.bin.WIN64/docs/html/context_8md.html +0 -81
  383. data/glfw-3.4.bin.WIN64/docs/html/context_guide.html +0 -258
  384. data/glfw-3.4.bin.WIN64/docs/html/deprecated.html +0 -88
  385. data/glfw-3.4.bin.WIN64/docs/html/dir_13577e2d8b9423099662de029791bd7d.html +0 -93
  386. data/glfw-3.4.bin.WIN64/docs/html/dir_7f92719a7fe62e5b064f87d7a3c220b1.html +0 -95
  387. data/glfw-3.4.bin.WIN64/docs/html/dir_a788ef6c2b1e5b367804e0b6ccfd6f11.html +0 -85
  388. data/glfw-3.4.bin.WIN64/docs/html/dir_b11153cd0f4fd04a7564cc166f482635.html +0 -91
  389. data/glfw-3.4.bin.WIN64/docs/html/doc.svg +0 -12
  390. data/glfw-3.4.bin.WIN64/docs/html/docd.svg +0 -12
  391. data/glfw-3.4.bin.WIN64/docs/html/doxygen.css +0 -1685
  392. data/glfw-3.4.bin.WIN64/docs/html/doxygen.svg +0 -28
  393. data/glfw-3.4.bin.WIN64/docs/html/dynsections.js +0 -192
  394. data/glfw-3.4.bin.WIN64/docs/html/extra.css +0 -2
  395. data/glfw-3.4.bin.WIN64/docs/html/files.html +0 -91
  396. data/glfw-3.4.bin.WIN64/docs/html/folderclosed.svg +0 -11
  397. data/glfw-3.4.bin.WIN64/docs/html/folderclosedd.svg +0 -11
  398. data/glfw-3.4.bin.WIN64/docs/html/folderopen.svg +0 -17
  399. data/glfw-3.4.bin.WIN64/docs/html/folderopend.svg +0 -12
  400. data/glfw-3.4.bin.WIN64/docs/html/glfw3_8h.html +0 -1910
  401. data/glfw-3.4.bin.WIN64/docs/html/glfw3_8h_source.html +0 -1260
  402. data/glfw-3.4.bin.WIN64/docs/html/glfw3native_8h.html +0 -170
  403. data/glfw-3.4.bin.WIN64/docs/html/glfw3native_8h_source.html +0 -306
  404. data/glfw-3.4.bin.WIN64/docs/html/group__buttons.html +0 -282
  405. data/glfw-3.4.bin.WIN64/docs/html/group__context.html +0 -304
  406. data/glfw-3.4.bin.WIN64/docs/html/group__errors.html +0 -384
  407. data/glfw-3.4.bin.WIN64/docs/html/group__gamepad__axes.html +0 -202
  408. data/glfw-3.4.bin.WIN64/docs/html/group__gamepad__buttons.html +0 -410
  409. data/glfw-3.4.bin.WIN64/docs/html/group__hat__state.html +0 -234
  410. data/glfw-3.4.bin.WIN64/docs/html/group__init.html +0 -1015
  411. data/glfw-3.4.bin.WIN64/docs/html/group__input.html +0 -2285
  412. data/glfw-3.4.bin.WIN64/docs/html/group__joysticks.html +0 -362
  413. data/glfw-3.4.bin.WIN64/docs/html/group__keys.html +0 -2034
  414. data/glfw-3.4.bin.WIN64/docs/html/group__mods.html +0 -198
  415. data/glfw-3.4.bin.WIN64/docs/html/group__monitor.html +0 -849
  416. data/glfw-3.4.bin.WIN64/docs/html/group__native.html +0 -837
  417. data/glfw-3.4.bin.WIN64/docs/html/group__shapes.html +0 -337
  418. data/glfw-3.4.bin.WIN64/docs/html/group__vulkan.html +0 -361
  419. data/glfw-3.4.bin.WIN64/docs/html/group__window.html +0 -3608
  420. data/glfw-3.4.bin.WIN64/docs/html/index.html +0 -100
  421. data/glfw-3.4.bin.WIN64/docs/html/input_8md.html +0 -81
  422. data/glfw-3.4.bin.WIN64/docs/html/input_guide.html +0 -576
  423. data/glfw-3.4.bin.WIN64/docs/html/internal_8md.html +0 -81
  424. data/glfw-3.4.bin.WIN64/docs/html/internals_guide.html +0 -135
  425. data/glfw-3.4.bin.WIN64/docs/html/intro_8md.html +0 -81
  426. data/glfw-3.4.bin.WIN64/docs/html/intro_guide.html +0 -429
  427. data/glfw-3.4.bin.WIN64/docs/html/jquery.js +0 -34
  428. data/glfw-3.4.bin.WIN64/docs/html/main_8md.html +0 -81
  429. data/glfw-3.4.bin.WIN64/docs/html/menu.js +0 -136
  430. data/glfw-3.4.bin.WIN64/docs/html/menudata.js +0 -30
  431. data/glfw-3.4.bin.WIN64/docs/html/minus.svg +0 -8
  432. data/glfw-3.4.bin.WIN64/docs/html/minusd.svg +0 -8
  433. data/glfw-3.4.bin.WIN64/docs/html/monitor_8md.html +0 -81
  434. data/glfw-3.4.bin.WIN64/docs/html/monitor_guide.html +0 -228
  435. data/glfw-3.4.bin.WIN64/docs/html/moving_8md.html +0 -81
  436. data/glfw-3.4.bin.WIN64/docs/html/moving_guide.html +0 -360
  437. data/glfw-3.4.bin.WIN64/docs/html/nav_f.png +0 -0
  438. data/glfw-3.4.bin.WIN64/docs/html/nav_fd.png +0 -0
  439. data/glfw-3.4.bin.WIN64/docs/html/nav_g.png +0 -0
  440. data/glfw-3.4.bin.WIN64/docs/html/nav_h.png +0 -0
  441. data/glfw-3.4.bin.WIN64/docs/html/nav_hd.png +0 -0
  442. data/glfw-3.4.bin.WIN64/docs/html/news.html +0 -336
  443. data/glfw-3.4.bin.WIN64/docs/html/news_8md.html +0 -81
  444. data/glfw-3.4.bin.WIN64/docs/html/open.png +0 -0
  445. data/glfw-3.4.bin.WIN64/docs/html/pages.html +0 -99
  446. data/glfw-3.4.bin.WIN64/docs/html/plus.svg +0 -9
  447. data/glfw-3.4.bin.WIN64/docs/html/plusd.svg +0 -9
  448. data/glfw-3.4.bin.WIN64/docs/html/quick_8md.html +0 -81
  449. data/glfw-3.4.bin.WIN64/docs/html/quick_guide.html +0 -406
  450. data/glfw-3.4.bin.WIN64/docs/html/search/all_0.js +0 -4
  451. data/glfw-3.4.bin.WIN64/docs/html/search/all_1.js +0 -4
  452. data/glfw-3.4.bin.WIN64/docs/html/search/all_10.js +0 -13
  453. data/glfw-3.4.bin.WIN64/docs/html/search/all_11.js +0 -11
  454. data/glfw-3.4.bin.WIN64/docs/html/search/all_12.js +0 -26
  455. data/glfw-3.4.bin.WIN64/docs/html/search/all_13.js +0 -51
  456. data/glfw-3.4.bin.WIN64/docs/html/search/all_14.js +0 -22
  457. data/glfw-3.4.bin.WIN64/docs/html/search/all_15.js +0 -35
  458. data/glfw-3.4.bin.WIN64/docs/html/search/all_16.js +0 -29
  459. data/glfw-3.4.bin.WIN64/docs/html/search/all_17.js +0 -8
  460. data/glfw-3.4.bin.WIN64/docs/html/search/all_18.js +0 -44
  461. data/glfw-3.4.bin.WIN64/docs/html/search/all_19.js +0 -60
  462. data/glfw-3.4.bin.WIN64/docs/html/search/all_1a.js +0 -39
  463. data/glfw-3.4.bin.WIN64/docs/html/search/all_1b.js +0 -8
  464. data/glfw-3.4.bin.WIN64/docs/html/search/all_1c.js +0 -32
  465. data/glfw-3.4.bin.WIN64/docs/html/search/all_1d.js +0 -84
  466. data/glfw-3.4.bin.WIN64/docs/html/search/all_1e.js +0 -13
  467. data/glfw-3.4.bin.WIN64/docs/html/search/all_1f.js +0 -4
  468. data/glfw-3.4.bin.WIN64/docs/html/search/all_2.js +0 -5
  469. data/glfw-3.4.bin.WIN64/docs/html/search/all_3.js +0 -4
  470. data/glfw-3.4.bin.WIN64/docs/html/search/all_4.js +0 -4
  471. data/glfw-3.4.bin.WIN64/docs/html/search/all_5.js +0 -4
  472. data/glfw-3.4.bin.WIN64/docs/html/search/all_6.js +0 -4
  473. data/glfw-3.4.bin.WIN64/docs/html/search/all_7.js +0 -58
  474. data/glfw-3.4.bin.WIN64/docs/html/search/all_8.js +0 -21
  475. data/glfw-3.4.bin.WIN64/docs/html/search/all_9.js +0 -82
  476. data/glfw-3.4.bin.WIN64/docs/html/search/all_a.js +0 -20
  477. data/glfw-3.4.bin.WIN64/docs/html/search/all_b.js +0 -26
  478. data/glfw-3.4.bin.WIN64/docs/html/search/all_c.js +0 -35
  479. data/glfw-3.4.bin.WIN64/docs/html/search/all_d.js +0 -555
  480. data/glfw-3.4.bin.WIN64/docs/html/search/all_e.js +0 -23
  481. data/glfw-3.4.bin.WIN64/docs/html/search/all_f.js +0 -40
  482. data/glfw-3.4.bin.WIN64/docs/html/search/classes_0.js +0 -8
  483. data/glfw-3.4.bin.WIN64/docs/html/search/close.svg +0 -18
  484. data/glfw-3.4.bin.WIN64/docs/html/search/defines_0.js +0 -43
  485. data/glfw-3.4.bin.WIN64/docs/html/search/files_0.js +0 -4
  486. data/glfw-3.4.bin.WIN64/docs/html/search/files_1.js +0 -6
  487. data/glfw-3.4.bin.WIN64/docs/html/search/files_2.js +0 -5
  488. data/glfw-3.4.bin.WIN64/docs/html/search/files_3.js +0 -6
  489. data/glfw-3.4.bin.WIN64/docs/html/search/files_4.js +0 -6
  490. data/glfw-3.4.bin.WIN64/docs/html/search/files_5.js +0 -4
  491. data/glfw-3.4.bin.WIN64/docs/html/search/files_6.js +0 -4
  492. data/glfw-3.4.bin.WIN64/docs/html/search/files_7.js +0 -4
  493. data/glfw-3.4.bin.WIN64/docs/html/search/files_8.js +0 -4
  494. data/glfw-3.4.bin.WIN64/docs/html/search/functions_0.js +0 -152
  495. data/glfw-3.4.bin.WIN64/docs/html/search/groups_0.js +0 -6
  496. data/glfw-3.4.bin.WIN64/docs/html/search/groups_1.js +0 -4
  497. data/glfw-3.4.bin.WIN64/docs/html/search/groups_10.js +0 -4
  498. data/glfw-3.4.bin.WIN64/docs/html/search/groups_2.js +0 -6
  499. data/glfw-3.4.bin.WIN64/docs/html/search/groups_3.js +0 -5
  500. data/glfw-3.4.bin.WIN64/docs/html/search/groups_4.js +0 -4
  501. data/glfw-3.4.bin.WIN64/docs/html/search/groups_5.js +0 -5
  502. data/glfw-3.4.bin.WIN64/docs/html/search/groups_6.js +0 -4
  503. data/glfw-3.4.bin.WIN64/docs/html/search/groups_7.js +0 -5
  504. data/glfw-3.4.bin.WIN64/docs/html/search/groups_8.js +0 -5
  505. data/glfw-3.4.bin.WIN64/docs/html/search/groups_9.js +0 -6
  506. data/glfw-3.4.bin.WIN64/docs/html/search/groups_a.js +0 -6
  507. data/glfw-3.4.bin.WIN64/docs/html/search/groups_b.js +0 -4
  508. data/glfw-3.4.bin.WIN64/docs/html/search/groups_c.js +0 -4
  509. data/glfw-3.4.bin.WIN64/docs/html/search/groups_d.js +0 -7
  510. data/glfw-3.4.bin.WIN64/docs/html/search/groups_e.js +0 -4
  511. data/glfw-3.4.bin.WIN64/docs/html/search/groups_f.js +0 -5
  512. data/glfw-3.4.bin.WIN64/docs/html/search/mag.svg +0 -24
  513. data/glfw-3.4.bin.WIN64/docs/html/search/mag_d.svg +0 -24
  514. data/glfw-3.4.bin.WIN64/docs/html/search/mag_sel.svg +0 -31
  515. data/glfw-3.4.bin.WIN64/docs/html/search/mag_seld.svg +0 -31
  516. data/glfw-3.4.bin.WIN64/docs/html/search/pages_0.js +0 -4
  517. data/glfw-3.4.bin.WIN64/docs/html/search/pages_1.js +0 -5
  518. data/glfw-3.4.bin.WIN64/docs/html/search/pages_10.js +0 -5
  519. data/glfw-3.4.bin.WIN64/docs/html/search/pages_11.js +0 -4
  520. data/glfw-3.4.bin.WIN64/docs/html/search/pages_2.js +0 -4
  521. data/glfw-3.4.bin.WIN64/docs/html/search/pages_3.js +0 -5
  522. data/glfw-3.4.bin.WIN64/docs/html/search/pages_4.js +0 -4
  523. data/glfw-3.4.bin.WIN64/docs/html/search/pages_5.js +0 -6
  524. data/glfw-3.4.bin.WIN64/docs/html/search/pages_6.js +0 -4
  525. data/glfw-3.4.bin.WIN64/docs/html/search/pages_7.js +0 -5
  526. data/glfw-3.4.bin.WIN64/docs/html/search/pages_8.js +0 -7
  527. data/glfw-3.4.bin.WIN64/docs/html/search/pages_9.js +0 -7
  528. data/glfw-3.4.bin.WIN64/docs/html/search/pages_a.js +0 -4
  529. data/glfw-3.4.bin.WIN64/docs/html/search/pages_b.js +0 -5
  530. data/glfw-3.4.bin.WIN64/docs/html/search/pages_c.js +0 -4
  531. data/glfw-3.4.bin.WIN64/docs/html/search/pages_d.js +0 -4
  532. data/glfw-3.4.bin.WIN64/docs/html/search/pages_e.js +0 -6
  533. data/glfw-3.4.bin.WIN64/docs/html/search/pages_f.js +0 -6
  534. data/glfw-3.4.bin.WIN64/docs/html/search/search.css +0 -291
  535. data/glfw-3.4.bin.WIN64/docs/html/search/search.js +0 -840
  536. data/glfw-3.4.bin.WIN64/docs/html/search/searchdata.js +0 -39
  537. data/glfw-3.4.bin.WIN64/docs/html/search/typedefs_0.js +0 -36
  538. data/glfw-3.4.bin.WIN64/docs/html/search/variables_0.js +0 -5
  539. data/glfw-3.4.bin.WIN64/docs/html/search/variables_1.js +0 -6
  540. data/glfw-3.4.bin.WIN64/docs/html/search/variables_2.js +0 -4
  541. data/glfw-3.4.bin.WIN64/docs/html/search/variables_3.js +0 -5
  542. data/glfw-3.4.bin.WIN64/docs/html/search/variables_4.js +0 -4
  543. data/glfw-3.4.bin.WIN64/docs/html/search/variables_5.js +0 -4
  544. data/glfw-3.4.bin.WIN64/docs/html/search/variables_6.js +0 -7
  545. data/glfw-3.4.bin.WIN64/docs/html/search/variables_7.js +0 -4
  546. data/glfw-3.4.bin.WIN64/docs/html/search/variables_8.js +0 -4
  547. data/glfw-3.4.bin.WIN64/docs/html/search/variables_9.js +0 -4
  548. data/glfw-3.4.bin.WIN64/docs/html/spaces.svg +0 -877
  549. data/glfw-3.4.bin.WIN64/docs/html/splitbar.png +0 -0
  550. data/glfw-3.4.bin.WIN64/docs/html/splitbard.png +0 -0
  551. data/glfw-3.4.bin.WIN64/docs/html/struct_g_l_f_wallocator.html +0 -168
  552. data/glfw-3.4.bin.WIN64/docs/html/struct_g_l_f_wgamepadstate.html +0 -134
  553. data/glfw-3.4.bin.WIN64/docs/html/struct_g_l_f_wgammaramp.html +0 -170
  554. data/glfw-3.4.bin.WIN64/docs/html/struct_g_l_f_wimage.html +0 -151
  555. data/glfw-3.4.bin.WIN64/docs/html/struct_g_l_f_wvidmode.html +0 -204
  556. data/glfw-3.4.bin.WIN64/docs/html/sync_off.png +0 -0
  557. data/glfw-3.4.bin.WIN64/docs/html/sync_on.png +0 -0
  558. data/glfw-3.4.bin.WIN64/docs/html/tab_a.png +0 -0
  559. data/glfw-3.4.bin.WIN64/docs/html/tab_ad.png +0 -0
  560. data/glfw-3.4.bin.WIN64/docs/html/tab_b.png +0 -0
  561. data/glfw-3.4.bin.WIN64/docs/html/tab_bd.png +0 -0
  562. data/glfw-3.4.bin.WIN64/docs/html/tab_h.png +0 -0
  563. data/glfw-3.4.bin.WIN64/docs/html/tab_hd.png +0 -0
  564. data/glfw-3.4.bin.WIN64/docs/html/tab_s.png +0 -0
  565. data/glfw-3.4.bin.WIN64/docs/html/tab_sd.png +0 -0
  566. data/glfw-3.4.bin.WIN64/docs/html/tabs.css +0 -1
  567. data/glfw-3.4.bin.WIN64/docs/html/topics.html +0 -101
  568. data/glfw-3.4.bin.WIN64/docs/html/vulkan_8md.html +0 -81
  569. data/glfw-3.4.bin.WIN64/docs/html/vulkan_guide.html +0 -206
  570. data/glfw-3.4.bin.WIN64/docs/html/window_8md.html +0 -81
  571. data/glfw-3.4.bin.WIN64/docs/html/window_guide.html +0 -806
  572. data/glfw-3.4.bin.WIN64/include/GLFW/glfw3.h +0 -6547
  573. data/glfw-3.4.bin.WIN64/include/GLFW/glfw3native.h +0 -663
  574. data/glfw-3.4.bin.WIN64/lib-mingw-w64/glfw3.dll +0 -0
  575. data/glfw-3.4.bin.WIN64/lib-mingw-w64/libglfw3.a +0 -0
  576. data/glfw-3.4.bin.WIN64/lib-mingw-w64/libglfw3dll.a +0 -0
  577. data/glfw-3.4.bin.WIN64/lib-static-ucrt/glfw3dll.lib +0 -0
  578. data/glfw-3.4.bin.WIN64/lib-vc2013/glfw3.dll +0 -0
  579. data/glfw-3.4.bin.WIN64/lib-vc2013/glfw3.lib +0 -0
  580. data/glfw-3.4.bin.WIN64/lib-vc2013/glfw3_mt.lib +0 -0
  581. data/glfw-3.4.bin.WIN64/lib-vc2013/glfw3dll.lib +0 -0
  582. data/glfw-3.4.bin.WIN64/lib-vc2015/glfw3.dll +0 -0
  583. data/glfw-3.4.bin.WIN64/lib-vc2015/glfw3.lib +0 -0
  584. data/glfw-3.4.bin.WIN64/lib-vc2015/glfw3_mt.lib +0 -0
  585. data/glfw-3.4.bin.WIN64/lib-vc2015/glfw3dll.lib +0 -0
  586. data/glfw-3.4.bin.WIN64/lib-vc2017/glfw3.dll +0 -0
  587. data/glfw-3.4.bin.WIN64/lib-vc2017/glfw3.lib +0 -0
  588. data/glfw-3.4.bin.WIN64/lib-vc2017/glfw3_mt.lib +0 -0
  589. data/glfw-3.4.bin.WIN64/lib-vc2017/glfw3dll.lib +0 -0
  590. data/glfw-3.4.bin.WIN64/lib-vc2019/glfw3.dll +0 -0
  591. data/glfw-3.4.bin.WIN64/lib-vc2019/glfw3.lib +0 -0
  592. data/glfw-3.4.bin.WIN64/lib-vc2019/glfw3_mt.lib +0 -0
  593. data/glfw-3.4.bin.WIN64/lib-vc2019/glfw3dll.lib +0 -0
  594. data/glfw-3.4.bin.WIN64/lib-vc2022/glfw3.dll +0 -0
  595. data/glfw-3.4.bin.WIN64/lib-vc2022/glfw3.lib +0 -0
  596. data/glfw-3.4.bin.WIN64/lib-vc2022/glfw3_mt.lib +0 -0
  597. data/glfw-3.4.bin.WIN64/lib-vc2022/glfw3dll.lib +0 -0
  598. data/lib/engine/components/font_renderer.rb +0 -134
  599. data/lib/engine/components/mesh_renderer.rb +0 -31
  600. data/lib/engine/components/sprite_renderer.rb +0 -141
  601. data/lib/engine/components/ui_font_renderer.rb +0 -140
  602. data/lib/engine/components/ui_sprite_clickbox.rb +0 -62
  603. data/lib/engine/components/ui_sprite_renderer.rb +0 -101
  604. data/lib/engine/shaders/skybox_frag.glsl +0 -12
  605. /data/{glfw-3.4.bin.WIN64 → vendor/glfw-3.3.9.bin.MACOS}/LICENSE.md +0 -0
  606. /data/{glfw-3.4.bin.WIN64 → vendor/glfw-3.4.bin.WIN64}/lib-static-ucrt/glfw3.dll +0 -0
@@ -0,0 +1,118 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rendering
4
+ class RenderTexture
5
+ attr_reader :width, :height, :framebuffer, :depth_stencil_texture, :color_textures
6
+
7
+ def initialize(width, height, num_color_attachments: 1)
8
+ @width = width
9
+ @height = height
10
+ @num_color_attachments = num_color_attachments
11
+ @color_textures = []
12
+ create_framebuffer
13
+ create_color_textures
14
+ create_depth_stencil_texture
15
+ attach_to_framebuffer
16
+ check_framebuffer_complete
17
+ end
18
+
19
+ def color_texture
20
+ @color_textures[0]
21
+ end
22
+
23
+ # Accessor for normal+roughness texture (second attachment)
24
+ def normal_texture
25
+ @color_textures[1]
26
+ end
27
+
28
+ # Alias for backward compatibility (depth can still be sampled from depth-stencil)
29
+ alias depth_texture depth_stencil_texture
30
+
31
+ def bind
32
+ Engine::GL.BindFramebuffer(Engine::GL::FRAMEBUFFER, @framebuffer)
33
+ Engine::GL.Viewport(0, 0, @width, @height)
34
+ end
35
+
36
+ def resize(width, height)
37
+ return if width == @width && height == @height
38
+
39
+ @width = width
40
+ @height = height
41
+
42
+ @color_textures.each do |tex|
43
+ Engine::GL.BindTexture(Engine::GL::TEXTURE_2D, tex)
44
+ Engine::GL.TexImage2D(Engine::GL::TEXTURE_2D, 0, Engine::GL::RGBA16F, @width, @height, 0, Engine::GL::RGBA, Engine::GL::FLOAT, nil)
45
+ end
46
+
47
+ Engine::GL.BindTexture(Engine::GL::TEXTURE_2D, @depth_stencil_texture)
48
+ Engine::GL.TexImage2D(Engine::GL::TEXTURE_2D, 0, Engine::GL::DEPTH24_STENCIL8, @width, @height, 0, Engine::GL::DEPTH_STENCIL, Engine::GL::UNSIGNED_INT_24_8, nil)
49
+ end
50
+
51
+ private
52
+
53
+ def create_framebuffer
54
+ fbo_buf = ' ' * 4
55
+ Engine::GL.GenFramebuffers(1, fbo_buf)
56
+ @framebuffer = fbo_buf.unpack1('L')
57
+ end
58
+
59
+ def create_color_textures
60
+ @num_color_attachments.times do
61
+ tex_buf = ' ' * 4
62
+ Engine::GL.GenTextures(1, tex_buf)
63
+ texture = tex_buf.unpack1('L')
64
+
65
+ Engine::GL.BindTexture(Engine::GL::TEXTURE_2D, texture)
66
+ Engine::GL.TexImage2D(Engine::GL::TEXTURE_2D, 0, Engine::GL::RGBA16F, @width, @height, 0, Engine::GL::RGBA, Engine::GL::FLOAT, nil)
67
+ Engine::GL.TexParameteri(Engine::GL::TEXTURE_2D, Engine::GL::TEXTURE_MIN_FILTER, Engine::GL::LINEAR)
68
+ Engine::GL.TexParameteri(Engine::GL::TEXTURE_2D, Engine::GL::TEXTURE_MAG_FILTER, Engine::GL::LINEAR)
69
+ Engine::GL.TexParameteri(Engine::GL::TEXTURE_2D, Engine::GL::TEXTURE_WRAP_S, Engine::GL::CLAMP_TO_EDGE)
70
+ Engine::GL.TexParameteri(Engine::GL::TEXTURE_2D, Engine::GL::TEXTURE_WRAP_T, Engine::GL::CLAMP_TO_EDGE)
71
+
72
+ @color_textures << texture
73
+ end
74
+ end
75
+
76
+ def create_depth_stencil_texture
77
+ tex_buf = ' ' * 4
78
+ Engine::GL.GenTextures(1, tex_buf)
79
+ @depth_stencil_texture = tex_buf.unpack1('L')
80
+
81
+ Engine::GL.BindTexture(Engine::GL::TEXTURE_2D, @depth_stencil_texture)
82
+ Engine::GL.TexImage2D(Engine::GL::TEXTURE_2D, 0, Engine::GL::DEPTH24_STENCIL8, @width, @height, 0, Engine::GL::DEPTH_STENCIL, Engine::GL::UNSIGNED_INT_24_8, nil)
83
+ Engine::GL.TexParameteri(Engine::GL::TEXTURE_2D, Engine::GL::TEXTURE_MIN_FILTER, Engine::GL::NEAREST)
84
+ Engine::GL.TexParameteri(Engine::GL::TEXTURE_2D, Engine::GL::TEXTURE_MAG_FILTER, Engine::GL::NEAREST)
85
+ Engine::GL.TexParameteri(Engine::GL::TEXTURE_2D, Engine::GL::TEXTURE_WRAP_S, Engine::GL::CLAMP_TO_EDGE)
86
+ Engine::GL.TexParameteri(Engine::GL::TEXTURE_2D, Engine::GL::TEXTURE_WRAP_T, Engine::GL::CLAMP_TO_EDGE)
87
+ # Disable depth comparison for direct sampling
88
+ Engine::GL.TexParameteri(Engine::GL::TEXTURE_2D, Engine::GL::TEXTURE_COMPARE_MODE, Engine::GL::NONE)
89
+ # Specify we want to read depth component (not stencil)
90
+ Engine::GL.TexParameteri(Engine::GL::TEXTURE_2D, Engine::GL::DEPTH_STENCIL_TEXTURE_MODE, Engine::GL::DEPTH_COMPONENT)
91
+ end
92
+
93
+ def attach_to_framebuffer
94
+ Engine::GL.BindFramebuffer(Engine::GL::FRAMEBUFFER, @framebuffer)
95
+
96
+ # Attach all color textures
97
+ @color_textures.each_with_index do |tex, i|
98
+ Engine::GL.FramebufferTexture2D(Engine::GL::FRAMEBUFFER, Engine::GL::COLOR_ATTACHMENT0 + i, Engine::GL::TEXTURE_2D, tex, 0)
99
+ end
100
+
101
+ # Attach depth-stencil texture
102
+ Engine::GL.FramebufferTexture2D(Engine::GL::FRAMEBUFFER, Engine::GL::DEPTH_STENCIL_ATTACHMENT, Engine::GL::TEXTURE_2D, @depth_stencil_texture, 0)
103
+
104
+ # Tell OpenGL which color attachments to draw to (MRT)
105
+ if @num_color_attachments > 1
106
+ attachments = (0...@num_color_attachments).map { |i| Engine::GL::COLOR_ATTACHMENT0 + i }
107
+ Engine::GL.DrawBuffers(@num_color_attachments, attachments.pack('L*'))
108
+ end
109
+ end
110
+
111
+ def check_framebuffer_complete
112
+ status = Engine::GL.CheckFramebufferStatus(Engine::GL::FRAMEBUFFER)
113
+ unless status == Engine::GL::FRAMEBUFFER_COMPLETE
114
+ raise "Framebuffer not complete: #{status}"
115
+ end
116
+ end
117
+ end
118
+ end
@@ -0,0 +1,64 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rendering
4
+ class ScreenQuad
5
+ def initialize
6
+ setup_vao
7
+ setup_vbo
8
+ Engine::GL.BindVertexArray(0)
9
+ end
10
+
11
+ def draw(material, texture)
12
+ material.set_runtime_texture("screenTexture", texture)
13
+ draw_with_material(material)
14
+ end
15
+
16
+ def draw_with_material(material)
17
+ material.update_shader
18
+ Engine::GL.BindVertexArray(@vao)
19
+ Engine::GL.DrawArrays(Engine::GL::TRIANGLES, 0, 6)
20
+ end
21
+
22
+ def draw_raw
23
+ Engine::GL.BindVertexArray(@vao)
24
+ Engine::GL.DrawArrays(Engine::GL::TRIANGLES, 0, 6)
25
+ end
26
+
27
+ private
28
+
29
+ def setup_vao
30
+ vao_buf = ' ' * 4
31
+ Engine::GL.GenVertexArrays(1, vao_buf)
32
+ @vao = vao_buf.unpack1('L')
33
+ Engine::GL.BindVertexArray(@vao)
34
+ end
35
+
36
+ def setup_vbo
37
+ # Fullscreen quad: 2 triangles covering -1 to 1 in NDC
38
+ # Each vertex: x, y, u, v
39
+ vertices = [
40
+ # First triangle
41
+ -1.0, 1.0, 0.0, 1.0,
42
+ -1.0, -1.0, 0.0, 0.0,
43
+ 1.0, -1.0, 1.0, 0.0,
44
+ # Second triangle
45
+ -1.0, 1.0, 0.0, 1.0,
46
+ 1.0, -1.0, 1.0, 0.0,
47
+ 1.0, 1.0, 1.0, 1.0
48
+ ]
49
+
50
+ vbo_buf = ' ' * 4
51
+ Engine::GL.GenBuffers(1, vbo_buf)
52
+ vbo = vbo_buf.unpack1('L')
53
+
54
+ Engine::GL.BindBuffer(Engine::GL::ARRAY_BUFFER, vbo)
55
+ Engine::GL.BufferData(Engine::GL::ARRAY_BUFFER, vertices.length * Fiddle::SIZEOF_FLOAT, vertices.pack('F*'), Engine::GL::STATIC_DRAW)
56
+
57
+ stride = 4 * Fiddle::SIZEOF_FLOAT
58
+ Engine::GL.VertexAttribPointer(0, 2, Engine::GL::FLOAT, Engine::GL::FALSE, stride, 0)
59
+ Engine::GL.VertexAttribPointer(1, 2, Engine::GL::FLOAT, Engine::GL::FALSE, stride, 2 * Fiddle::SIZEOF_FLOAT)
60
+ Engine::GL.EnableVertexAttribArray(0)
61
+ Engine::GL.EnableVertexAttribArray(1)
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,72 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rendering
4
+ class ShadowMapArray
5
+ attr_reader :width, :height, :layer_count, :framebuffer, :depth_texture
6
+
7
+ def initialize(width: 2048, height: 2048, layer_count: 4)
8
+ @width = width
9
+ @height = height
10
+ @layer_count = layer_count
11
+ create_framebuffer
12
+ create_depth_texture_array
13
+ check_framebuffer_complete
14
+ end
15
+
16
+ def bind_layer(layer_index)
17
+ raise "Layer index #{layer_index} out of bounds (max: #{@layer_count - 1})" if layer_index >= @layer_count
18
+
19
+ Engine::GL.BindFramebuffer(Engine::GL::FRAMEBUFFER, @framebuffer)
20
+ Engine::GL.FramebufferTextureLayer(Engine::GL::FRAMEBUFFER, Engine::GL::DEPTH_ATTACHMENT, @depth_texture, 0, layer_index)
21
+ Engine::GL.Viewport(0, 0, @width, @height)
22
+ Engine::GL.Clear(Engine::GL::DEPTH_BUFFER_BIT)
23
+ end
24
+
25
+ private
26
+
27
+ def create_framebuffer
28
+ fbo_buf = ' ' * 4
29
+ Engine::GL.GenFramebuffers(1, fbo_buf)
30
+ @framebuffer = fbo_buf.unpack1('L')
31
+ end
32
+
33
+ def create_depth_texture_array
34
+ tex_buf = ' ' * 4
35
+ Engine::GL.GenTextures(1, tex_buf)
36
+ @depth_texture = tex_buf.unpack1('L')
37
+
38
+ Engine::GL.BindTexture(Engine::GL::TEXTURE_2D_ARRAY, @depth_texture)
39
+ Engine::GL.TexImage3D(
40
+ Engine::GL::TEXTURE_2D_ARRAY,
41
+ 0,
42
+ Engine::GL::DEPTH_COMPONENT32F,
43
+ @width,
44
+ @height,
45
+ @layer_count,
46
+ 0,
47
+ Engine::GL::DEPTH_COMPONENT,
48
+ Engine::GL::FLOAT,
49
+ nil
50
+ )
51
+
52
+ Engine::GL.TexParameteri(Engine::GL::TEXTURE_2D_ARRAY, Engine::GL::TEXTURE_MIN_FILTER, Engine::GL::NEAREST)
53
+ Engine::GL.TexParameteri(Engine::GL::TEXTURE_2D_ARRAY, Engine::GL::TEXTURE_MAG_FILTER, Engine::GL::NEAREST)
54
+ Engine::GL.TexParameteri(Engine::GL::TEXTURE_2D_ARRAY, Engine::GL::TEXTURE_WRAP_S, Engine::GL::CLAMP_TO_BORDER)
55
+ Engine::GL.TexParameteri(Engine::GL::TEXTURE_2D_ARRAY, Engine::GL::TEXTURE_WRAP_T, Engine::GL::CLAMP_TO_BORDER)
56
+ border_color = [1.0, 1.0, 1.0, 1.0].pack('F*')
57
+ Engine::GL.TexParameterfv(Engine::GL::TEXTURE_2D_ARRAY, Engine::GL::TEXTURE_BORDER_COLOR, border_color)
58
+ end
59
+
60
+ def check_framebuffer_complete
61
+ Engine::GL.BindFramebuffer(Engine::GL::FRAMEBUFFER, @framebuffer)
62
+ Engine::GL.FramebufferTextureLayer(Engine::GL::FRAMEBUFFER, Engine::GL::DEPTH_ATTACHMENT, @depth_texture, 0, 0)
63
+ Engine::GL.DrawBuffer(Engine::GL::NONE)
64
+ Engine::GL.ReadBuffer(Engine::GL::NONE)
65
+
66
+ status = Engine::GL.CheckFramebufferStatus(Engine::GL::FRAMEBUFFER)
67
+ unless status == Engine::GL::FRAMEBUFFER_COMPLETE
68
+ raise "Shadow map array framebuffer not complete: #{status}"
69
+ end
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,119 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rendering
4
+ class SkyboxCubemap
5
+ CUBEMAP_SIZE = 512
6
+
7
+ def initialize
8
+ @rendered = false
9
+ @ground_color = nil
10
+ @horizon_color = nil
11
+ @sky_color = nil
12
+ @ground_y = nil
13
+ @horizon_y = nil
14
+ @sky_y = nil
15
+ create_cubemap_texture
16
+ create_framebuffer
17
+ end
18
+
19
+ def render_if_needed(ground_color, horizon_color, sky_color, ground_y, horizon_y, sky_y)
20
+ return if @rendered &&
21
+ @ground_color == ground_color &&
22
+ @horizon_color == horizon_color &&
23
+ @sky_color == sky_color &&
24
+ @ground_y == ground_y &&
25
+ @horizon_y == horizon_y &&
26
+ @sky_y == sky_y
27
+
28
+ @ground_color = ground_color
29
+ @horizon_color = horizon_color
30
+ @sky_color = sky_color
31
+ @ground_y = ground_y
32
+ @horizon_y = horizon_y
33
+ @sky_y = sky_y
34
+ render_all_faces
35
+ @rendered = true
36
+ end
37
+
38
+ def invalidate
39
+ @rendered = false
40
+ end
41
+
42
+ def texture
43
+ @cubemap_texture
44
+ end
45
+
46
+ private
47
+
48
+ def create_cubemap_texture
49
+ tex_buf = ' ' * 4
50
+ Engine::GL.GenTextures(1, tex_buf)
51
+ @cubemap_texture = tex_buf.unpack1('L')
52
+
53
+ Engine::GL.BindTexture(Engine::GL::TEXTURE_CUBE_MAP, @cubemap_texture)
54
+
55
+ 6.times do |i|
56
+ Engine::GL.TexImage2D(
57
+ Engine::GL::TEXTURE_CUBE_MAP_POSITIVE_X + i,
58
+ 0,
59
+ Engine::GL::RGBA16F,
60
+ CUBEMAP_SIZE,
61
+ CUBEMAP_SIZE,
62
+ 0,
63
+ Engine::GL::RGBA,
64
+ Engine::GL::FLOAT,
65
+ nil
66
+ )
67
+ end
68
+
69
+ Engine::GL.TexParameteri(Engine::GL::TEXTURE_CUBE_MAP, Engine::GL::TEXTURE_MIN_FILTER, Engine::GL::LINEAR)
70
+ Engine::GL.TexParameteri(Engine::GL::TEXTURE_CUBE_MAP, Engine::GL::TEXTURE_MAG_FILTER, Engine::GL::LINEAR)
71
+ Engine::GL.TexParameteri(Engine::GL::TEXTURE_CUBE_MAP, Engine::GL::TEXTURE_WRAP_S, Engine::GL::CLAMP_TO_EDGE)
72
+ Engine::GL.TexParameteri(Engine::GL::TEXTURE_CUBE_MAP, Engine::GL::TEXTURE_WRAP_T, Engine::GL::CLAMP_TO_EDGE)
73
+ Engine::GL.TexParameteri(Engine::GL::TEXTURE_CUBE_MAP, Engine::GL::TEXTURE_WRAP_R, Engine::GL::CLAMP_TO_EDGE)
74
+
75
+ Engine::GL.BindTexture(Engine::GL::TEXTURE_CUBE_MAP, 0)
76
+ end
77
+
78
+ def create_framebuffer
79
+ fbo_buf = ' ' * 4
80
+ Engine::GL.GenFramebuffers(1, fbo_buf)
81
+ @fbo = fbo_buf.unpack1('L')
82
+ end
83
+
84
+ def render_all_faces
85
+ Engine::GL.BindFramebuffer(Engine::GL::FRAMEBUFFER, @fbo)
86
+ Engine::GL.Viewport(0, 0, CUBEMAP_SIZE, CUBEMAP_SIZE)
87
+
88
+ shader.use
89
+ shader.set_vec3("groundColour", @ground_color) if @ground_color
90
+ shader.set_vec3("horizonColour", @horizon_color) if @horizon_color
91
+ shader.set_vec3("skyColour", @sky_color) if @sky_color
92
+ shader.set_float("groundY", @ground_y) if @ground_y
93
+ shader.set_float("horizonY", @horizon_y) if @horizon_y
94
+ shader.set_float("skyY", @sky_y) if @sky_y
95
+
96
+ 6.times do |face_index|
97
+ Engine::GL.FramebufferTexture2D(
98
+ Engine::GL::FRAMEBUFFER,
99
+ Engine::GL::COLOR_ATTACHMENT0,
100
+ Engine::GL::TEXTURE_CUBE_MAP_POSITIVE_X + face_index,
101
+ @cubemap_texture,
102
+ 0
103
+ )
104
+
105
+ Engine::GL.Clear(Engine::GL::COLOR_BUFFER_BIT)
106
+ shader.set_int("faceIndex", face_index)
107
+ screen_quad.draw_raw
108
+ end
109
+ end
110
+
111
+ def shader
112
+ @shader ||= Engine::Shader.skybox_cubemap
113
+ end
114
+
115
+ def screen_quad
116
+ @screen_quad ||= ScreenQuad.new
117
+ end
118
+ end
119
+ end
@@ -0,0 +1,64 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rendering
4
+ class SkyboxRenderer
5
+ class << self
6
+ def set_colors(ground:, horizon:, sky:, ground_y: -0.3, horizon_y: 0.0, sky_y: 1.0)
7
+ @ground_color = ground
8
+ @horizon_color = horizon
9
+ @sky_color = sky
10
+ @ground_y = ground_y
11
+ @horizon_y = horizon_y
12
+ @sky_y = sky_y
13
+ @skybox_cubemap&.invalidate
14
+ end
15
+
16
+ def render_cubemap
17
+ @skybox_cubemap ||= SkyboxCubemap.new
18
+ @skybox_cubemap.render_if_needed(
19
+ @ground_color,
20
+ @horizon_color,
21
+ @sky_color,
22
+ @ground_y,
23
+ @horizon_y,
24
+ @sky_y
25
+ )
26
+ end
27
+
28
+ def draw(input_rt, alternate_rt, screen_quad)
29
+ output_rt = alternate_rt
30
+
31
+ output_rt.bind
32
+ Engine::GL.Clear(Engine::GL::COLOR_BUFFER_BIT)
33
+ Engine::GL.Disable(Engine::GL::DEPTH_TEST)
34
+
35
+ camera = Engine::Camera.instance
36
+ return input_rt unless camera
37
+
38
+ material.set_mat4("inverseVP", camera.inverse_vp_matrix)
39
+ material.set_vec3("cameraPos", camera.position)
40
+ material.set_cubemap("skyboxCubemap", @skybox_cubemap&.texture)
41
+ material.set_runtime_texture("depthTexture", input_rt.depth_texture)
42
+
43
+ screen_quad.draw(material, input_rt.color_texture)
44
+ output_rt
45
+ end
46
+
47
+ def cubemap
48
+ @skybox_cubemap
49
+ end
50
+
51
+ private
52
+
53
+ def material
54
+ @material ||= Engine::Material.create(
55
+ shader: Engine::Shader.for(
56
+ 'fullscreen_vertex.glsl',
57
+ 'post_process/skybox_frag.glsl',
58
+ source: :engine
59
+ )
60
+ )
61
+ end
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,69 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rendering
4
+ module UI
5
+ module StencilManager
6
+ class << self
7
+ def setup_for_rect(rect)
8
+ chain = rect.ancestor_masks
9
+
10
+ if chain.empty?
11
+ Engine::GL.Disable(Engine::GL::STENCIL_TEST)
12
+ return
13
+ end
14
+
15
+ # Rebuild stencil if chain changed
16
+ if chain != @current_chain
17
+ rebuild_stencil(chain)
18
+ @current_chain = chain
19
+ end
20
+
21
+ # Configure stencil test: only draw where stencil == chain.length (intersection of all masks)
22
+ Engine::GL.Enable(Engine::GL::STENCIL_TEST)
23
+ Engine::GL.StencilFunc(Engine::GL::EQUAL, chain.length, 0xFF)
24
+ Engine::GL.StencilOp(Engine::GL::KEEP, Engine::GL::KEEP, Engine::GL::KEEP)
25
+ end
26
+
27
+ def reset
28
+ Engine::GL.Disable(Engine::GL::STENCIL_TEST)
29
+ @current_chain = nil
30
+ end
31
+
32
+ private
33
+
34
+ def rebuild_stencil(chain)
35
+ # Clear stencil buffer
36
+ Engine::GL.Clear(Engine::GL::STENCIL_BUFFER_BIT)
37
+
38
+ Engine::GL.Enable(Engine::GL::STENCIL_TEST)
39
+
40
+ # Draw each mask in the chain, incrementing stencil ref
41
+ chain.each_with_index do |mask_rect, index|
42
+ write_mask_to_stencil(mask_rect, index + 1)
43
+ end
44
+ end
45
+
46
+ def write_mask_to_stencil(mask_rect, ref)
47
+ # Disable color writes - we only want to update stencil
48
+ Engine::GL.ColorMask(Engine::GL::FALSE, Engine::GL::FALSE, Engine::GL::FALSE, Engine::GL::FALSE)
49
+
50
+ if ref == 1
51
+ # First mask: write 1 everywhere it covers
52
+ Engine::GL.StencilFunc(Engine::GL::ALWAYS, ref, 0xFF)
53
+ Engine::GL.StencilOp(Engine::GL::KEEP, Engine::GL::KEEP, Engine::GL::REPLACE)
54
+ else
55
+ # Nested mask: only increment where previous masks passed (stencil == ref-1)
56
+ Engine::GL.StencilFunc(Engine::GL::EQUAL, ref - 1, 0xFF)
57
+ Engine::GL.StencilOp(Engine::GL::KEEP, Engine::GL::KEEP, Engine::GL::INCR)
58
+ end
59
+
60
+ # Draw the mask shape
61
+ mask_rect.game_object.ui_renderers.each(&:draw)
62
+
63
+ # Re-enable color writes
64
+ Engine::GL.ColorMask(Engine::GL::TRUE, Engine::GL::TRUE, Engine::GL::TRUE, Engine::GL::TRUE)
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
@@ -1,34 +1,34 @@
1
- module Engine
2
- class Screenshoter
3
- def self.screenshot(&block)
4
- @after_screenshot = block
5
- end
6
-
7
- def self.scheduled_screenshot
8
- @after_screenshot != nil
9
- end
10
-
11
- def self.take_screenshot
12
- @scheduled_screenshot = nil
13
- width = Engine::Window.framebuffer_width
14
- height = Engine::Window.framebuffer_height
15
- pixels = ' ' * (width * height * 3)
16
- GL.ReadPixels(0, 0, width, height, GL::RGB, GL::UNSIGNED_BYTE, pixels)
17
- png = ChunkyPNG::Image.new(width, height, ChunkyPNG::Color::TRANSPARENT)
18
- pixels = pixels.bytes.map { |b| b.to_i }
19
- x = 0
20
- y = 0
21
- pixels.each_slice(3) do |r, g, b|
22
- png[x, height - y - 1] = ChunkyPNG::Color.rgb(r, g, b)
23
- x += 1
24
- if x >= width
25
- x = 0
26
- y += 1
27
- end
28
- end
29
- block = @after_screenshot
30
- @after_screenshot = nil
31
- block.call(png)
32
- end
33
- end
34
- end
1
+ module Engine
2
+ class Screenshoter
3
+ def self.screenshot(&block)
4
+ @after_screenshot = block
5
+ end
6
+
7
+ def self.scheduled_screenshot
8
+ @after_screenshot != nil
9
+ end
10
+
11
+ def self.take_screenshot
12
+ @scheduled_screenshot = nil
13
+ width = Engine::Window.framebuffer_width
14
+ height = Engine::Window.framebuffer_height
15
+ pixels = ' ' * (width * height * 3)
16
+ Engine::GL.ReadPixels(0, 0, width, height, Engine::GL::RGB, Engine::GL::UNSIGNED_BYTE, pixels)
17
+ png = ChunkyPNG::Image.new(width, height, ChunkyPNG::Color::TRANSPARENT)
18
+ pixels = pixels.bytes.map { |b| b.to_i }
19
+ x = 0
20
+ y = 0
21
+ pixels.each_slice(3) do |r, g, b|
22
+ png[x, height - y - 1] = ChunkyPNG::Color.rgb(r, g, b)
23
+ x += 1
24
+ if x >= width
25
+ x = 0
26
+ y += 1
27
+ end
28
+ end
29
+ block = @after_screenshot
30
+ @after_screenshot = nil
31
+ block.call(png)
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,74 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Engine
4
+ module Serialization
5
+ class GraphSerializer
6
+ class << self
7
+ def serialize(root)
8
+ collected = {}
9
+ collect_refs(root, collected)
10
+ collected.values.map { |obj| ObjectSerializer.serialize(obj) }
11
+ end
12
+
13
+ def deserialize(data_array)
14
+ # Pass 1: Create all objects (with UnresolvedRefs)
15
+ objects = data_array.map { |data| ObjectSerializer.deserialize(data) }
16
+ registry = objects.each_with_object({}) { |obj, h| h[obj.uuid] = obj }
17
+
18
+ # Pass 2: Resolve all references
19
+ objects.each { |obj| resolve_references(obj, registry) }
20
+
21
+ # Pass 3: Call awake on all objects
22
+ objects.each(&:awake)
23
+
24
+ objects
25
+ end
26
+
27
+ private
28
+
29
+ def collect_refs(obj, collected)
30
+ return if collected.key?(obj.uuid)
31
+
32
+ collected[obj.uuid] = obj
33
+
34
+ obj.class.serializable_attributes.each do |attr|
35
+ value = obj.instance_variable_get("@#{attr}")
36
+ collect_refs_from_value(value, collected)
37
+ end
38
+ end
39
+
40
+ def collect_refs_from_value(value, collected)
41
+ case value
42
+ when Serializable
43
+ collect_refs(value, collected) unless value.respond_to?(:serializable_data)
44
+ when Array
45
+ value.each { |v| collect_refs_from_value(v, collected) }
46
+ when Hash
47
+ value.each_value { |v| collect_refs_from_value(v, collected) }
48
+ end
49
+ end
50
+
51
+ def resolve_references(obj, registry)
52
+ obj.class.serializable_attributes.each do |attr|
53
+ value = obj.instance_variable_get("@#{attr}")
54
+ resolved = resolve_value(value, registry)
55
+ obj.instance_variable_set("@#{attr}", resolved)
56
+ end
57
+ end
58
+
59
+ def resolve_value(value, registry)
60
+ case value
61
+ when ObjectSerializer::UnresolvedRef
62
+ registry[value.uuid]
63
+ when Hash
64
+ value.transform_values { |v| resolve_value(v, registry) }
65
+ when Array
66
+ value.map { |v| resolve_value(v, registry) }
67
+ else
68
+ value
69
+ end
70
+ end
71
+ end
72
+ end
73
+ end
74
+ end