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,98 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Engine
4
+ module Serialization
5
+ class ObjectSerializer
6
+ class UnauthorizedClassError < StandardError; end
7
+
8
+ UnresolvedRef = Struct.new(:uuid, :class_name)
9
+
10
+ class << self
11
+ def serialize(obj)
12
+ result = {
13
+ _class: obj.class.name,
14
+ uuid: obj.uuid
15
+ }
16
+
17
+ obj.class.serializable_attributes.each do |attr|
18
+ value = obj.instance_variable_get("@#{attr}")
19
+ result[attr] = serialize_value(value)
20
+ end
21
+
22
+ result
23
+ end
24
+
25
+ def deserialize(data)
26
+ class_name = data[:_class]
27
+ raise UnauthorizedClassError, "Class '#{class_name}' is not allowed" unless Serializable.allowed_class?(class_name)
28
+
29
+ klass = Serializable.get_class(class_name)
30
+ instance = klass.allocate
31
+ instance.instance_variable_set(:@uuid, data[:uuid])
32
+
33
+ klass.serializable_attributes.each do |attr|
34
+ value = deserialize_value(data[attr])
35
+ instance.instance_variable_set("@#{attr}", value)
36
+ end
37
+
38
+ instance
39
+ end
40
+
41
+ def serialize_value(value)
42
+ if value.is_a?(Serializable) && value.respond_to?(:serializable_data)
43
+ { _class: value.class.name, **value.serializable_data }
44
+ elsif value.is_a?(Serializable) && value.respond_to?(:uuid)
45
+ { _class: value.class.name, _ref: value.uuid }
46
+ elsif value.is_a?(Hash)
47
+ { _class: "Hash", value: value.transform_values { |v| serialize_value(v) } }
48
+ elsif value.is_a?(Array)
49
+ { _class: "Array", value: value.map { |v| serialize_value(v) } }
50
+ elsif value.is_a?(Symbol)
51
+ { _class: "Symbol", value: value.to_s }
52
+ elsif value.is_a?(Vector)
53
+ { _class: "Vector", value: value.to_a }
54
+ elsif value.is_a?(Matrix)
55
+ { _class: "Matrix", value: value.to_a }
56
+ elsif value.is_a?(Engine::Quaternion)
57
+ { _class: "Engine::Quaternion", value: [value.w, value.x, value.y, value.z] }
58
+ else
59
+ { _class: value.class.name, value: value }
60
+ end
61
+ end
62
+
63
+ def deserialize_value(data)
64
+ return nil if data.nil?
65
+
66
+ class_name = data[:_class]
67
+
68
+ if data.key?(:_ref)
69
+ UnresolvedRef.new(data[:_ref], class_name)
70
+ elsif %w[String Integer Float TrueClass FalseClass NilClass].include?(class_name)
71
+ data[:value]
72
+ elsif class_name == "Symbol"
73
+ data[:value].to_sym
74
+ elsif class_name == "Vector"
75
+ Vector[*data[:value]]
76
+ elsif class_name == "Matrix"
77
+ Matrix[*data[:value]]
78
+ elsif class_name == "Engine::Quaternion"
79
+ Engine::Quaternion.new(*data[:value])
80
+ elsif class_name == "Hash"
81
+ data[:value].transform_values { |v| deserialize_value(v) }
82
+ elsif class_name == "Array"
83
+ data[:value].map { |v| deserialize_value(v) }
84
+ elsif Serializable.allowed_class?(class_name)
85
+ klass = Serializable.get_class(class_name)
86
+ if klass.respond_to?(:from_serializable_data)
87
+ klass.from_serializable_data(data)
88
+ else
89
+ deserialize(data)
90
+ end
91
+ else
92
+ raise UnauthorizedClassError, "Class '#{class_name}' is not allowed"
93
+ end
94
+ end
95
+ end
96
+ end
97
+ end
98
+ end
@@ -0,0 +1,78 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'securerandom'
4
+
5
+ module Engine
6
+ module Serializable
7
+ class InitializeNotAllowedError < StandardError; end
8
+
9
+ @allowed_classes = {}
10
+
11
+ def self.included(base)
12
+ base.extend(ClassMethods)
13
+ @allowed_classes[base.name] = base if base.name
14
+
15
+ # Prevent subclasses from defining initialize
16
+ base.define_singleton_method(:method_added) do |method_name|
17
+ if method_name == :initialize
18
+ raise InitializeNotAllowedError,
19
+ "#{self.name} cannot define 'initialize'. " \
20
+ "Serializable classes must use 'awake' for initialization logic and be created with '.create'"
21
+ end
22
+ super(method_name) if defined?(super)
23
+ end
24
+ end
25
+
26
+ # Default awake implementation - override in subclasses
27
+ def awake
28
+ end
29
+
30
+ def self.allowed_class?(class_name)
31
+ @allowed_classes.key?(class_name)
32
+ end
33
+
34
+ def self.get_class(class_name)
35
+ @allowed_classes[class_name]
36
+ end
37
+
38
+ def self.register_class(klass)
39
+ @allowed_classes[klass.name] = klass if klass.name
40
+ end
41
+
42
+ module ClassMethods
43
+ def inherited(subclass)
44
+ super
45
+ Serializable.register_class(subclass)
46
+ end
47
+
48
+ def serialize(*attributes)
49
+ @own_serializable_attributes ||= []
50
+ @own_serializable_attributes.concat(attributes)
51
+ end
52
+
53
+ def serializable_attributes
54
+ parent_attrs = if superclass.respond_to?(:serializable_attributes)
55
+ superclass.serializable_attributes
56
+ else
57
+ []
58
+ end
59
+ own_attrs = @own_serializable_attributes || []
60
+ parent_attrs + own_attrs
61
+ end
62
+
63
+ def create(**attrs)
64
+ instance = allocate
65
+ instance.instance_variable_set(:@uuid, SecureRandom.uuid)
66
+ attrs.each do |attr, value|
67
+ instance.instance_variable_set("@#{attr}", value)
68
+ end
69
+ instance.awake
70
+ instance
71
+ end
72
+ end
73
+
74
+ def uuid
75
+ @uuid ||= SecureRandom.uuid
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'yaml'
4
+
5
+ module Engine
6
+ module Serialization
7
+ class YamlPersistence
8
+ class << self
9
+ def save(obj, path)
10
+ data = GraphSerializer.serialize(obj)
11
+ File.write(path, data.to_yaml)
12
+ end
13
+
14
+ def save_all(objects, path)
15
+ all_data = objects.flat_map { |obj| GraphSerializer.serialize(obj) }
16
+ seen_uuids = {}
17
+ unique_data = all_data.select do |obj_data|
18
+ uuid = obj_data[:uuid]
19
+ if seen_uuids[uuid]
20
+ false
21
+ else
22
+ seen_uuids[uuid] = true
23
+ true
24
+ end
25
+ end
26
+ File.write(path, unique_data.to_yaml)
27
+ end
28
+
29
+ def load(path)
30
+ data = YAML.load_file(path, permitted_classes: [Symbol])
31
+ data_array = data.is_a?(Array) ? data : [data]
32
+ GraphSerializer.deserialize(data_array).first
33
+ end
34
+
35
+ def load_all(paths)
36
+ data_array = paths.flat_map do |path|
37
+ data = YAML.load_file(path, permitted_classes: [Symbol])
38
+ data.is_a?(Array) ? data : [data]
39
+ end
40
+ GraphSerializer.deserialize(data_array)
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
data/lib/engine/shader.rb CHANGED
@@ -1,119 +1,215 @@
1
- module Engine
2
- class Shader
3
- def self.default
4
- @default ||= Shader.new('./shaders/mesh_vertex.glsl', './shaders/mesh_frag.glsl')
5
- end
6
-
7
- def self.vertex_lit
8
- @vertex_lit ||= Engine::Shader.new('./shaders/vertex_lit_vertex.glsl', './shaders/vertex_lit_frag.glsl')
9
- end
10
-
11
- def self.skybox
12
- @skybox ||= Shader.new('./shaders/skybox_vert.glsl', './shaders/skybox_frag.glsl')
13
- end
14
-
15
- def self.sprite
16
- @sprite ||= Engine::Shader.new('./shaders/sprite_vertex.glsl', './shaders/sprite_frag.glsl')
17
- end
18
-
19
- def self.text
20
- @text ||= Engine::Shader.new('./shaders/text_vertex.glsl', './shaders/text_frag.glsl')
21
- end
22
-
23
- def self.ui_text
24
- @ui_text ||= Engine::Shader.new('./shaders/text_vertex.glsl', './shaders/text_frag.glsl')
25
- end
26
-
27
- def self.ui_sprite
28
- @ui_sprite ||= Engine::Shader.new('./shaders/ui_sprite_vertex.glsl', './shaders/ui_sprite_frag.glsl')
29
- end
30
-
31
- def initialize(vertex_shader, fragment_shader)
32
- @vertex_shader = compile_shader(vertex_shader, GL::VERTEX_SHADER)
33
- @fragment_shader = compile_shader(fragment_shader, GL::FRAGMENT_SHADER)
34
- @program = GL.CreateProgram
35
- GL.AttachShader(@program, @vertex_shader)
36
- GL.AttachShader(@program, @fragment_shader)
37
- GL.LinkProgram(@program)
38
-
39
- linked_buf = ' ' * 4
40
- GL.GetProgramiv(@program, GL::LINK_STATUS, linked_buf)
41
- linked = linked_buf.unpack('L')[0]
42
- if linked == 0
43
- compile_log = ' ' * 1024
44
- GL.GetProgramInfoLog(@program, 1023, nil, compile_log)
45
- vertex_log = ' ' * 1024
46
- GL.GetShaderInfoLog(@vertex_shader, 1023, nil, vertex_log)
47
- fragment_log = ' ' * 1024
48
- GL.GetShaderInfoLog(@fragment_shader, 1023, nil, fragment_log)
49
- puts "Shader program failed to link"
50
- puts compile_log.strip
51
- puts vertex_log.strip
52
- puts fragment_log.strip
53
- end
54
- @uniform_cache = {}
55
- @uniform_locations = {}
56
- end
57
-
58
- def compile_shader(shader, type)
59
- handle = GL.CreateShader(type)
60
- path = File.join(File.dirname(__FILE__), shader)
61
- s_srcs = [File.read(path)].pack('p')
62
- s_lens = [File.size(path)].pack('I')
63
- GL.ShaderSource(handle, 1, s_srcs, s_lens)
64
- GL.CompileShader(handle)
65
- handle
66
- end
67
-
68
- def use
69
- GL.UseProgram(@program)
70
- end
71
-
72
- def set_vec3(name, vec)
73
- return if @uniform_cache[name] == vec
74
- @uniform_cache[name] = vec
75
- vector = if vec.is_a?(Vector)
76
- vec
77
- else
78
- Vector[vec[:r], vec[:g], vec[:b]]
79
- end
80
- GL.Uniform3f(uniform_location(name), vector[0], vector[1], vector[2])
81
- end
82
-
83
- def set_vec4(name, vec)
84
- return if @uniform_cache[name] == vec
85
- @uniform_cache[name] = vec
86
- GL.Uniform4f(uniform_location(name), vec[0], vec[1], vec[2], vec[3])
87
- end
88
-
89
- def set_mat4(name, mat)
90
- return if @uniform_cache[name] == mat
91
- @uniform_cache[name] = mat
92
- mat_array = [
93
- mat[0, 0], mat[0, 1], mat[0, 2], mat[0, 3],
94
- mat[1, 0], mat[1, 1], mat[1, 2], mat[1, 3],
95
- mat[2, 0], mat[2, 1], mat[2, 2], mat[2, 3],
96
- mat[3, 0], mat[3, 1], mat[3, 2], mat[3, 3]
97
- ]
98
- GL.UniformMatrix4fv(uniform_location(name), 1, GL::FALSE, mat_array.pack('F*'))
99
- end
100
-
101
- def set_int(name, int)
102
- return if @uniform_cache[name] == int
103
- @uniform_cache[name] = int
104
- GL.Uniform1i(uniform_location(name), int)
105
- end
106
-
107
- def set_float(name, float)
108
- return if @uniform_cache[name] == float
109
- @uniform_cache[name] = float
110
- GL.Uniform1f(uniform_location(name), float)
111
- end
112
-
113
- private
114
-
115
- def uniform_location(name)
116
- @uniform_locations[name] ||= GL.GetUniformLocation(@program, name)
117
- end
118
- end
119
- end
1
+ module Engine
2
+ class Shader
3
+ include Serializable
4
+
5
+ attr_reader :source
6
+
7
+ @cache = {}
8
+
9
+ def self.for(vertex_path, fragment_path, source: :game)
10
+ key = [vertex_path, fragment_path, source]
11
+ @cache[key] ||= create(vertex_path: vertex_path, fragment_path: fragment_path, source: source)
12
+ end
13
+
14
+ def self.from_file(vertex_path, fragment_path, source: :game)
15
+ self.for(vertex_path, fragment_path, source: source)
16
+ end
17
+
18
+ def self.from_serializable_data(data)
19
+ self.for(data[:vertex_path], data[:fragment_path], source: (data[:source] || :game).to_sym)
20
+ end
21
+
22
+ def serializable_data
23
+ { vertex_path: @vertex_path, fragment_path: @fragment_path, source: @source }
24
+ end
25
+
26
+ def self.default
27
+ @default ||= Shader.for('mesh_vertex.glsl', 'mesh_frag.glsl', source: :engine)
28
+ end
29
+
30
+ def self.vertex_lit
31
+ @vertex_lit ||= Engine::Shader.for('vertex_lit_vertex.glsl', 'vertex_lit_frag.glsl', source: :engine)
32
+ end
33
+
34
+ def self.skybox_cubemap
35
+ @skybox_cubemap ||= Shader.for('fullscreen_vertex.glsl', 'skybox_cubemap_frag.glsl', source: :engine)
36
+ end
37
+
38
+ def self.sprite
39
+ @sprite ||= Engine::Shader.for('sprite_vertex.glsl', 'sprite_frag.glsl', source: :engine)
40
+ end
41
+
42
+ def self.instanced_sprite
43
+ @instanced_sprite ||= Engine::Shader.for('instanced_sprite_vertex.glsl', 'instanced_sprite_frag.glsl', source: :engine)
44
+ end
45
+
46
+ def self.text
47
+ @text ||= Engine::Shader.for('text_vertex.glsl', 'text_frag.glsl', source: :engine)
48
+ end
49
+
50
+ def self.ui_text
51
+ @ui_text ||= Engine::Shader.for('text_vertex.glsl', 'text_frag.glsl', source: :engine)
52
+ end
53
+
54
+ def self.ui_sprite
55
+ @ui_sprite ||= Engine::Shader.for('ui_sprite_vertex.glsl', 'ui_sprite_frag.glsl', source: :engine)
56
+ end
57
+
58
+ def self.fullscreen
59
+ @fullscreen ||= Engine::Shader.for('fullscreen_vertex.glsl', 'fullscreen_frag.glsl', source: :engine)
60
+ end
61
+
62
+ def self.colour
63
+ @colour ||= Engine::Shader.for('colour_vertex.glsl', 'colour_frag.glsl', source: :engine)
64
+ end
65
+
66
+ def self.shadow
67
+ @shadow ||= Engine::Shader.for('shadow_vertex.glsl', 'shadow_frag.glsl', source: :engine)
68
+ end
69
+
70
+ def self.point_shadow
71
+ @point_shadow ||= Engine::Shader.for('point_shadow_vertex.glsl', 'point_shadow_frag.glsl', source: :engine)
72
+ end
73
+
74
+ def awake
75
+ @texture_fallbacks = {}
76
+ @cubemap_fallbacks = {}
77
+ @vertex_shader = compile_shader(@vertex_path, Engine::GL::VERTEX_SHADER)
78
+ @fragment_shader = compile_shader(@fragment_path, Engine::GL::FRAGMENT_SHADER)
79
+ @program = Engine::GL.CreateProgram
80
+ Engine::GL.AttachShader(@program, @vertex_shader)
81
+ Engine::GL.AttachShader(@program, @fragment_shader)
82
+ Engine::GL.LinkProgram(@program)
83
+
84
+ linked_buf = ' ' * 4
85
+ Engine::GL.GetProgramiv(@program, Engine::GL::LINK_STATUS, linked_buf)
86
+ linked = linked_buf.unpack('L')[0]
87
+ if linked == 0
88
+ compile_log = ' ' * 1024
89
+ Engine::GL.GetProgramInfoLog(@program, 1023, nil, compile_log)
90
+ vertex_log = ' ' * 1024
91
+ Engine::GL.GetShaderInfoLog(@vertex_shader, 1023, nil, vertex_log)
92
+ fragment_log = ' ' * 1024
93
+ Engine::GL.GetShaderInfoLog(@fragment_shader, 1023, nil, fragment_log)
94
+ puts "Shader program failed to link"
95
+ puts compile_log.strip
96
+ puts vertex_log.strip
97
+ puts fragment_log.strip
98
+ end
99
+ @uniform_cache = {}
100
+ @uniform_locations = {}
101
+ end
102
+
103
+ def compile_shader(shader, type)
104
+ handle = Engine::GL.CreateShader(type)
105
+ path = resolve_shader_path(shader)
106
+ source = preprocess_shader(path)
107
+ parse_texture_fallbacks(source)
108
+ s_srcs = [source].pack('p')
109
+ s_lens = [source.bytesize].pack('I')
110
+ Engine::GL.ShaderSource(handle, 1, s_srcs, s_lens)
111
+ Engine::GL.CompileShader(handle)
112
+ handle
113
+ end
114
+
115
+ def resolve_shader_path(shader)
116
+ if @source == :engine
117
+ File.join(ENGINE_DIR, "shaders", shader)
118
+ else
119
+ File.join(GAME_DIR, "shaders", shader)
120
+ end
121
+ end
122
+
123
+ def texture_fallback(name)
124
+ @texture_fallbacks[name] || :white
125
+ end
126
+
127
+ def expected_textures
128
+ @texture_fallbacks.keys
129
+ end
130
+
131
+ def cubemap_fallback(name)
132
+ @cubemap_fallbacks[name]
133
+ end
134
+
135
+ def preprocess_shader(path, included = [])
136
+ return "" if included.include?(path)
137
+ included << path
138
+
139
+ source = File.read(path)
140
+ dir = File.dirname(path)
141
+
142
+ source.gsub(/#include\s+"([^"]+)"/) do
143
+ include_path = File.join(dir, $1)
144
+ preprocess_shader(include_path, included)
145
+ end
146
+ end
147
+
148
+ def use
149
+ Engine::GL.UseProgram(@program)
150
+ end
151
+
152
+ def set_vec2(name, vec)
153
+ return if @uniform_cache[name] == vec
154
+ @uniform_cache[name] = vec
155
+ Engine::GL.Uniform2f(uniform_location(name), vec[0], vec[1])
156
+ end
157
+
158
+ def set_vec3(name, vec)
159
+ vector = if vec.is_a?(Vector)
160
+ vec
161
+ else
162
+ Vector[vec[:r], vec[:g], vec[:b]]
163
+ end
164
+ cache_key = [vector[0], vector[1], vector[2]]
165
+ return if @uniform_cache[name] == cache_key
166
+ @uniform_cache[name] = cache_key
167
+ Engine::GL.Uniform3f(uniform_location(name), vector[0], vector[1], vector[2])
168
+ end
169
+
170
+ def set_vec4(name, vec)
171
+ return if @uniform_cache[name] == vec
172
+ @uniform_cache[name] = vec
173
+ Engine::GL.Uniform4f(uniform_location(name), vec[0], vec[1], vec[2], vec[3])
174
+ end
175
+
176
+ def set_mat4(name, mat)
177
+ return if @uniform_cache[name] == mat
178
+ @uniform_cache[name] = mat
179
+ mat_array = [
180
+ mat[0, 0], mat[0, 1], mat[0, 2], mat[0, 3],
181
+ mat[1, 0], mat[1, 1], mat[1, 2], mat[1, 3],
182
+ mat[2, 0], mat[2, 1], mat[2, 2], mat[2, 3],
183
+ mat[3, 0], mat[3, 1], mat[3, 2], mat[3, 3]
184
+ ]
185
+ Engine::GL.UniformMatrix4fv(uniform_location(name), 1, Engine::GL::FALSE, mat_array.pack('F*'))
186
+ end
187
+
188
+ def set_int(name, int)
189
+ return if @uniform_cache[name] == int
190
+ @uniform_cache[name] = int
191
+ Engine::GL.Uniform1i(uniform_location(name), int)
192
+ end
193
+
194
+ def set_float(name, float)
195
+ return if @uniform_cache[name] == float
196
+ @uniform_cache[name] = float
197
+ Engine::GL.Uniform1f(uniform_location(name), float)
198
+ end
199
+
200
+ private
201
+
202
+ def parse_texture_fallbacks(source)
203
+ source.scan(/uniform\s+sampler2D\s+(\w+)\s*;.*\/\/\s*@fallback\s+(\w+)/) do |name, fallback|
204
+ @texture_fallbacks[name] = fallback.to_sym
205
+ end
206
+ source.scan(/uniform\s+samplerCube\s+(\w+)\s*;.*\/\/\s*@fallback\s+(\w+)/) do |name, fallback|
207
+ @cubemap_fallbacks[name] = fallback.to_sym
208
+ end
209
+ end
210
+
211
+ def uniform_location(name)
212
+ @uniform_locations[name] ||= Engine::GL.GetUniformLocation(@program, name)
213
+ end
214
+ end
215
+ end
@@ -1,9 +1,17 @@
1
- #version 330 core
2
-
3
- out vec4 FragColour;
4
- in vec4 ourColour;
5
-
6
- void main()
7
- {
8
- FragColour = ourColour;
1
+ #version 330 core
2
+
3
+ layout(location = 0) out vec4 FragColour;
4
+ layout(location = 1) out vec4 normalRoughness;
5
+
6
+ in vec4 ourColour;
7
+ in vec3 Normal;
8
+
9
+ uniform float roughness;
10
+
11
+ void main()
12
+ {
13
+ FragColour = ourColour;
14
+ // Output world-space normal (encoded to 0-1) and roughness
15
+ vec3 norm = normalize(Normal);
16
+ normalRoughness = vec4(norm * 0.5 + 0.5, roughness);
9
17
  }
@@ -1,14 +1,21 @@
1
- #version 330 core
2
- layout (location = 0) in vec3 aPos;
3
-
4
- uniform vec3 colour;
5
- out vec4 ourColour;
6
-
7
- uniform mat4 camera;
8
- uniform mat4 model;
9
-
10
- void main()
11
- {
12
- gl_Position = camera * model * vec4(aPos, 1.0);
13
- ourColour = vec4(colour, 1.0);
1
+ #version 330 core
2
+
3
+ layout (location = 0) in vec3 vertex;
4
+ layout (location = 1) in vec2 texCoord;
5
+ layout (location = 2) in vec3 normal;
6
+ layout (location = 3) in vec3 tangent;
7
+ layout (location = 7) in mat4 model;
8
+
9
+ uniform vec3 colour;
10
+ uniform mat4 camera;
11
+
12
+ out vec4 ourColour;
13
+ out vec3 Normal;
14
+
15
+ void main()
16
+ {
17
+ gl_Position = camera * model * vec4(vertex, 1.0);
18
+ ourColour = vec4(colour, 1.0);
19
+ // Transform normal to world space (using upper-left 3x3 of model matrix)
20
+ Normal = mat3(model) * normal;
14
21
  }
@@ -0,0 +1,11 @@
1
+ #version 330 core
2
+
3
+ in vec2 TexCoords;
4
+ out vec4 color;
5
+
6
+ uniform sampler2D screenTexture;
7
+
8
+ void main()
9
+ {
10
+ color = texture(screenTexture, TexCoords);
11
+ }
@@ -0,0 +1,12 @@
1
+ #version 330 core
2
+
3
+ layout (location = 0) in vec2 position;
4
+ layout (location = 1) in vec2 texCoord;
5
+
6
+ out vec2 TexCoords;
7
+
8
+ void main()
9
+ {
10
+ TexCoords = texCoord;
11
+ gl_Position = vec4(position, 0.0, 1.0);
12
+ }
@@ -0,0 +1,21 @@
1
+ #version 330 core
2
+
3
+ in vec2 TexCoords;
4
+ out vec4 color;
5
+
6
+ uniform sampler2D image;
7
+ uniform vec4 spriteColor;
8
+ uniform vec4 frameCoords;
9
+
10
+ void main()
11
+ {
12
+ vec2 interpolatedCoords = vec2(
13
+ frameCoords.x + (TexCoords.x * frameCoords.z),
14
+ frameCoords.y + TexCoords.y * frameCoords.w
15
+ );
16
+ vec4 texColor = texture(image, interpolatedCoords);
17
+ if (texColor.a < 0.05)
18
+ discard;
19
+ else
20
+ color = spriteColor * texColor;
21
+ }