ruby_rpg 0.0.1 → 0.0.2

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 (483) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +19 -0
  3. data/glfw-3.3.9.bin.MACOS/LICENSE.md +23 -0
  4. data/glfw-3.3.9.bin.MACOS/README.md +5 -0
  5. data/glfw-3.3.9.bin.MACOS/docs/html/bc_s.png +0 -0
  6. data/glfw-3.3.9.bin.MACOS/docs/html/bc_sd.png +0 -0
  7. data/glfw-3.3.9.bin.MACOS/docs/html/build_8dox.html +81 -0
  8. data/glfw-3.3.9.bin.MACOS/docs/html/build_guide.html +199 -0
  9. data/glfw-3.3.9.bin.MACOS/docs/html/closed.png +0 -0
  10. data/glfw-3.3.9.bin.MACOS/docs/html/compat_8dox.html +81 -0
  11. data/glfw-3.3.9.bin.MACOS/docs/html/compat_guide.html +153 -0
  12. data/glfw-3.3.9.bin.MACOS/docs/html/compile_8dox.html +81 -0
  13. data/glfw-3.3.9.bin.MACOS/docs/html/compile_guide.html +223 -0
  14. data/glfw-3.3.9.bin.MACOS/docs/html/context_8dox.html +81 -0
  15. data/glfw-3.3.9.bin.MACOS/docs/html/context_guide.html +259 -0
  16. data/glfw-3.3.9.bin.MACOS/docs/html/deprecated.html +88 -0
  17. data/glfw-3.3.9.bin.MACOS/docs/html/dir_08423ce7729c4554356a7de7171ba263.html +85 -0
  18. data/glfw-3.3.9.bin.MACOS/docs/html/dir_2dcebcdf14b42e92a6ed85c61bda6b9d.html +93 -0
  19. data/glfw-3.3.9.bin.MACOS/docs/html/dir_62ce056722ee97c199075aa1d6eca309.html +95 -0
  20. data/glfw-3.3.9.bin.MACOS/docs/html/dir_dddf4cf62655095a666cf715de3a31a2.html +91 -0
  21. data/glfw-3.3.9.bin.MACOS/docs/html/doc.svg +12 -0
  22. data/glfw-3.3.9.bin.MACOS/docs/html/docd.svg +12 -0
  23. data/glfw-3.3.9.bin.MACOS/docs/html/doxygen.css +1685 -0
  24. data/glfw-3.3.9.bin.MACOS/docs/html/doxygen.svg +28 -0
  25. data/glfw-3.3.9.bin.MACOS/docs/html/dynsections.js +192 -0
  26. data/glfw-3.3.9.bin.MACOS/docs/html/extra.css +1 -0
  27. data/glfw-3.3.9.bin.MACOS/docs/html/files.html +91 -0
  28. data/glfw-3.3.9.bin.MACOS/docs/html/folderclosed.svg +11 -0
  29. data/glfw-3.3.9.bin.MACOS/docs/html/folderclosedd.svg +11 -0
  30. data/glfw-3.3.9.bin.MACOS/docs/html/folderopen.svg +17 -0
  31. data/glfw-3.3.9.bin.MACOS/docs/html/folderopend.svg +12 -0
  32. data/glfw-3.3.9.bin.MACOS/docs/html/glfw3_8h.html +1661 -0
  33. data/glfw-3.3.9.bin.MACOS/docs/html/glfw3_8h_source.html +1175 -0
  34. data/glfw-3.3.9.bin.MACOS/docs/html/glfw3native_8h.html +167 -0
  35. data/glfw-3.3.9.bin.MACOS/docs/html/glfw3native_8h_source.html +303 -0
  36. data/glfw-3.3.9.bin.MACOS/docs/html/group__buttons.html +282 -0
  37. data/glfw-3.3.9.bin.MACOS/docs/html/group__context.html +304 -0
  38. data/glfw-3.3.9.bin.MACOS/docs/html/group__errors.html +304 -0
  39. data/glfw-3.3.9.bin.MACOS/docs/html/group__gamepad__axes.html +202 -0
  40. data/glfw-3.3.9.bin.MACOS/docs/html/group__gamepad__buttons.html +410 -0
  41. data/glfw-3.3.9.bin.MACOS/docs/html/group__hat__state.html +234 -0
  42. data/glfw-3.3.9.bin.MACOS/docs/html/group__init.html +570 -0
  43. data/glfw-3.3.9.bin.MACOS/docs/html/group__input.html +2255 -0
  44. data/glfw-3.3.9.bin.MACOS/docs/html/group__joysticks.html +362 -0
  45. data/glfw-3.3.9.bin.MACOS/docs/html/group__keys.html +2034 -0
  46. data/glfw-3.3.9.bin.MACOS/docs/html/group__mods.html +198 -0
  47. data/glfw-3.3.9.bin.MACOS/docs/html/group__monitor.html +848 -0
  48. data/glfw-3.3.9.bin.MACOS/docs/html/group__native.html +812 -0
  49. data/glfw-3.3.9.bin.MACOS/docs/html/group__shapes.html +198 -0
  50. data/glfw-3.3.9.bin.MACOS/docs/html/group__vulkan.html +359 -0
  51. data/glfw-3.3.9.bin.MACOS/docs/html/group__window.html +3434 -0
  52. data/glfw-3.3.9.bin.MACOS/docs/html/index.html +100 -0
  53. data/glfw-3.3.9.bin.MACOS/docs/html/input_8dox.html +81 -0
  54. data/glfw-3.3.9.bin.MACOS/docs/html/input_guide.html +570 -0
  55. data/glfw-3.3.9.bin.MACOS/docs/html/internal_8dox.html +81 -0
  56. data/glfw-3.3.9.bin.MACOS/docs/html/internals_guide.html +132 -0
  57. data/glfw-3.3.9.bin.MACOS/docs/html/intro_8dox.html +81 -0
  58. data/glfw-3.3.9.bin.MACOS/docs/html/intro_guide.html +351 -0
  59. data/glfw-3.3.9.bin.MACOS/docs/html/jquery.js +34 -0
  60. data/glfw-3.3.9.bin.MACOS/docs/html/main_8dox.html +81 -0
  61. data/glfw-3.3.9.bin.MACOS/docs/html/menu.js +136 -0
  62. data/glfw-3.3.9.bin.MACOS/docs/html/menudata.js +29 -0
  63. data/glfw-3.3.9.bin.MACOS/docs/html/minus.svg +8 -0
  64. data/glfw-3.3.9.bin.MACOS/docs/html/minusd.svg +8 -0
  65. data/glfw-3.3.9.bin.MACOS/docs/html/monitor_8dox.html +81 -0
  66. data/glfw-3.3.9.bin.MACOS/docs/html/monitor_guide.html +229 -0
  67. data/glfw-3.3.9.bin.MACOS/docs/html/moving_8dox.html +81 -0
  68. data/glfw-3.3.9.bin.MACOS/docs/html/moving_guide.html +374 -0
  69. data/glfw-3.3.9.bin.MACOS/docs/html/nav_f.png +0 -0
  70. data/glfw-3.3.9.bin.MACOS/docs/html/nav_fd.png +0 -0
  71. data/glfw-3.3.9.bin.MACOS/docs/html/nav_g.png +0 -0
  72. data/glfw-3.3.9.bin.MACOS/docs/html/nav_h.png +0 -0
  73. data/glfw-3.3.9.bin.MACOS/docs/html/nav_hd.png +0 -0
  74. data/glfw-3.3.9.bin.MACOS/docs/html/news.html +634 -0
  75. data/glfw-3.3.9.bin.MACOS/docs/html/news_8dox.html +81 -0
  76. data/glfw-3.3.9.bin.MACOS/docs/html/open.png +0 -0
  77. data/glfw-3.3.9.bin.MACOS/docs/html/pages.html +99 -0
  78. data/glfw-3.3.9.bin.MACOS/docs/html/plus.svg +9 -0
  79. data/glfw-3.3.9.bin.MACOS/docs/html/plusd.svg +9 -0
  80. data/glfw-3.3.9.bin.MACOS/docs/html/quick_8dox.html +81 -0
  81. data/glfw-3.3.9.bin.MACOS/docs/html/quick_guide.html +397 -0
  82. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_0.js +5 -0
  83. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_1.js +4 -0
  84. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_10.js +65 -0
  85. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_11.js +26 -0
  86. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_12.js +44 -0
  87. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_13.js +34 -0
  88. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_14.js +12 -0
  89. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_15.js +52 -0
  90. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_16.js +69 -0
  91. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_17.js +51 -0
  92. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_18.js +14 -0
  93. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_19.js +36 -0
  94. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_1a.js +98 -0
  95. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_1b.js +12 -0
  96. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_2.js +6 -0
  97. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_3.js +9 -0
  98. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_4.js +57 -0
  99. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_5.js +22 -0
  100. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_6.js +103 -0
  101. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_7.js +23 -0
  102. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_8.js +35 -0
  103. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_9.js +63 -0
  104. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_a.js +505 -0
  105. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_b.js +24 -0
  106. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_c.js +50 -0
  107. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_d.js +17 -0
  108. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_e.js +12 -0
  109. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_f.js +35 -0
  110. data/glfw-3.3.9.bin.MACOS/docs/html/search/classes_0.js +7 -0
  111. data/glfw-3.3.9.bin.MACOS/docs/html/search/close.svg +18 -0
  112. data/glfw-3.3.9.bin.MACOS/docs/html/search/defines_0.js +34 -0
  113. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_0.js +4 -0
  114. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_1.js +6 -0
  115. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_2.js +5 -0
  116. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_3.js +6 -0
  117. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_4.js +6 -0
  118. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_5.js +4 -0
  119. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_6.js +4 -0
  120. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_7.js +4 -0
  121. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_8.js +4 -0
  122. data/glfw-3.3.9.bin.MACOS/docs/html/search/functions_0.js +146 -0
  123. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_0.js +6 -0
  124. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_1.js +4 -0
  125. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_10.js +4 -0
  126. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_2.js +6 -0
  127. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_3.js +5 -0
  128. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_4.js +4 -0
  129. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_5.js +5 -0
  130. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_6.js +4 -0
  131. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_7.js +5 -0
  132. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_8.js +5 -0
  133. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_9.js +6 -0
  134. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_a.js +6 -0
  135. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_b.js +4 -0
  136. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_c.js +4 -0
  137. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_d.js +7 -0
  138. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_e.js +4 -0
  139. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_f.js +5 -0
  140. data/glfw-3.3.9.bin.MACOS/docs/html/search/mag.svg +24 -0
  141. data/glfw-3.3.9.bin.MACOS/docs/html/search/mag_d.svg +24 -0
  142. data/glfw-3.3.9.bin.MACOS/docs/html/search/mag_sel.svg +31 -0
  143. data/glfw-3.3.9.bin.MACOS/docs/html/search/mag_seld.svg +31 -0
  144. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_0.js +4 -0
  145. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_1.js +4 -0
  146. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_10.js +4 -0
  147. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_2.js +5 -0
  148. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_3.js +4 -0
  149. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_4.js +6 -0
  150. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_5.js +4 -0
  151. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_6.js +4 -0
  152. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_7.js +7 -0
  153. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_8.js +6 -0
  154. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_9.js +4 -0
  155. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_a.js +5 -0
  156. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_b.js +5 -0
  157. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_c.js +4 -0
  158. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_d.js +6 -0
  159. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_e.js +6 -0
  160. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_f.js +4 -0
  161. data/glfw-3.3.9.bin.MACOS/docs/html/search/search.css +291 -0
  162. data/glfw-3.3.9.bin.MACOS/docs/html/search/search.js +840 -0
  163. data/glfw-3.3.9.bin.MACOS/docs/html/search/searchdata.js +39 -0
  164. data/glfw-3.3.9.bin.MACOS/docs/html/search/typedefs_0.js +32 -0
  165. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_0.js +4 -0
  166. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_1.js +6 -0
  167. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_2.js +5 -0
  168. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_3.js +4 -0
  169. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_4.js +4 -0
  170. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_5.js +6 -0
  171. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_6.js +4 -0
  172. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_7.js +4 -0
  173. data/glfw-3.3.9.bin.MACOS/docs/html/spaces.svg +877 -0
  174. data/glfw-3.3.9.bin.MACOS/docs/html/splitbar.png +0 -0
  175. data/glfw-3.3.9.bin.MACOS/docs/html/splitbard.png +0 -0
  176. data/glfw-3.3.9.bin.MACOS/docs/html/struct_g_l_f_wgamepadstate.html +134 -0
  177. data/glfw-3.3.9.bin.MACOS/docs/html/struct_g_l_f_wgammaramp.html +170 -0
  178. data/glfw-3.3.9.bin.MACOS/docs/html/struct_g_l_f_wimage.html +151 -0
  179. data/glfw-3.3.9.bin.MACOS/docs/html/struct_g_l_f_wvidmode.html +204 -0
  180. data/glfw-3.3.9.bin.MACOS/docs/html/sync_off.png +0 -0
  181. data/glfw-3.3.9.bin.MACOS/docs/html/sync_on.png +0 -0
  182. data/glfw-3.3.9.bin.MACOS/docs/html/tab_a.png +0 -0
  183. data/glfw-3.3.9.bin.MACOS/docs/html/tab_ad.png +0 -0
  184. data/glfw-3.3.9.bin.MACOS/docs/html/tab_b.png +0 -0
  185. data/glfw-3.3.9.bin.MACOS/docs/html/tab_bd.png +0 -0
  186. data/glfw-3.3.9.bin.MACOS/docs/html/tab_h.png +0 -0
  187. data/glfw-3.3.9.bin.MACOS/docs/html/tab_hd.png +0 -0
  188. data/glfw-3.3.9.bin.MACOS/docs/html/tab_s.png +0 -0
  189. data/glfw-3.3.9.bin.MACOS/docs/html/tab_sd.png +0 -0
  190. data/glfw-3.3.9.bin.MACOS/docs/html/tabs.css +1 -0
  191. data/glfw-3.3.9.bin.MACOS/docs/html/vulkan_8dox.html +81 -0
  192. data/glfw-3.3.9.bin.MACOS/docs/html/vulkan_guide.html +196 -0
  193. data/glfw-3.3.9.bin.MACOS/docs/html/window_8dox.html +81 -0
  194. data/glfw-3.3.9.bin.MACOS/docs/html/window_guide.html +763 -0
  195. data/glfw-3.3.9.bin.MACOS/include/GLFW/glfw3.h +5932 -0
  196. data/glfw-3.3.9.bin.MACOS/include/GLFW/glfw3native.h +634 -0
  197. data/glfw-3.3.9.bin.MACOS/lib-arm64/libglfw.3.dylib +0 -0
  198. data/glfw-3.3.9.bin.MACOS/lib-arm64/libglfw3.a +0 -0
  199. data/glfw-3.3.9.bin.MACOS/lib-universal/libglfw.3.dylib +0 -0
  200. data/glfw-3.3.9.bin.MACOS/lib-universal/libglfw3.a +0 -0
  201. data/glfw-3.3.9.bin.MACOS/lib-x86_64/libglfw.3.dylib +0 -0
  202. data/glfw-3.3.9.bin.MACOS/lib-x86_64/libglfw3.a +0 -0
  203. data/glfw-3.4.bin.WIN64/LICENSE.md +23 -0
  204. data/glfw-3.4.bin.WIN64/README.md +70 -0
  205. data/glfw-3.4.bin.WIN64/docs/html/bc_s.png +0 -0
  206. data/glfw-3.4.bin.WIN64/docs/html/bc_sd.png +0 -0
  207. data/glfw-3.4.bin.WIN64/docs/html/build_8md.html +81 -0
  208. data/glfw-3.4.bin.WIN64/docs/html/build_guide.html +217 -0
  209. data/glfw-3.4.bin.WIN64/docs/html/closed.png +0 -0
  210. data/glfw-3.4.bin.WIN64/docs/html/compat_8md.html +81 -0
  211. data/glfw-3.4.bin.WIN64/docs/html/compat_guide.html +156 -0
  212. data/glfw-3.4.bin.WIN64/docs/html/compile_8md.html +81 -0
  213. data/glfw-3.4.bin.WIN64/docs/html/compile_guide.html +219 -0
  214. data/glfw-3.4.bin.WIN64/docs/html/context_8md.html +81 -0
  215. data/glfw-3.4.bin.WIN64/docs/html/context_guide.html +258 -0
  216. data/glfw-3.4.bin.WIN64/docs/html/deprecated.html +88 -0
  217. data/glfw-3.4.bin.WIN64/docs/html/dir_13577e2d8b9423099662de029791bd7d.html +93 -0
  218. data/glfw-3.4.bin.WIN64/docs/html/dir_7f92719a7fe62e5b064f87d7a3c220b1.html +95 -0
  219. data/glfw-3.4.bin.WIN64/docs/html/dir_a788ef6c2b1e5b367804e0b6ccfd6f11.html +85 -0
  220. data/glfw-3.4.bin.WIN64/docs/html/dir_b11153cd0f4fd04a7564cc166f482635.html +91 -0
  221. data/glfw-3.4.bin.WIN64/docs/html/doc.svg +12 -0
  222. data/glfw-3.4.bin.WIN64/docs/html/docd.svg +12 -0
  223. data/glfw-3.4.bin.WIN64/docs/html/doxygen.css +1685 -0
  224. data/glfw-3.4.bin.WIN64/docs/html/doxygen.svg +28 -0
  225. data/glfw-3.4.bin.WIN64/docs/html/dynsections.js +192 -0
  226. data/glfw-3.4.bin.WIN64/docs/html/extra.css +2 -0
  227. data/glfw-3.4.bin.WIN64/docs/html/files.html +91 -0
  228. data/glfw-3.4.bin.WIN64/docs/html/folderclosed.svg +11 -0
  229. data/glfw-3.4.bin.WIN64/docs/html/folderclosedd.svg +11 -0
  230. data/glfw-3.4.bin.WIN64/docs/html/folderopen.svg +17 -0
  231. data/glfw-3.4.bin.WIN64/docs/html/folderopend.svg +12 -0
  232. data/glfw-3.4.bin.WIN64/docs/html/glfw3_8h.html +1910 -0
  233. data/glfw-3.4.bin.WIN64/docs/html/glfw3_8h_source.html +1260 -0
  234. data/glfw-3.4.bin.WIN64/docs/html/glfw3native_8h.html +170 -0
  235. data/glfw-3.4.bin.WIN64/docs/html/glfw3native_8h_source.html +306 -0
  236. data/glfw-3.4.bin.WIN64/docs/html/group__buttons.html +282 -0
  237. data/glfw-3.4.bin.WIN64/docs/html/group__context.html +304 -0
  238. data/glfw-3.4.bin.WIN64/docs/html/group__errors.html +384 -0
  239. data/glfw-3.4.bin.WIN64/docs/html/group__gamepad__axes.html +202 -0
  240. data/glfw-3.4.bin.WIN64/docs/html/group__gamepad__buttons.html +410 -0
  241. data/glfw-3.4.bin.WIN64/docs/html/group__hat__state.html +234 -0
  242. data/glfw-3.4.bin.WIN64/docs/html/group__init.html +1015 -0
  243. data/glfw-3.4.bin.WIN64/docs/html/group__input.html +2285 -0
  244. data/glfw-3.4.bin.WIN64/docs/html/group__joysticks.html +362 -0
  245. data/glfw-3.4.bin.WIN64/docs/html/group__keys.html +2034 -0
  246. data/glfw-3.4.bin.WIN64/docs/html/group__mods.html +198 -0
  247. data/glfw-3.4.bin.WIN64/docs/html/group__monitor.html +849 -0
  248. data/glfw-3.4.bin.WIN64/docs/html/group__native.html +837 -0
  249. data/glfw-3.4.bin.WIN64/docs/html/group__shapes.html +337 -0
  250. data/glfw-3.4.bin.WIN64/docs/html/group__vulkan.html +361 -0
  251. data/glfw-3.4.bin.WIN64/docs/html/group__window.html +3608 -0
  252. data/glfw-3.4.bin.WIN64/docs/html/index.html +100 -0
  253. data/glfw-3.4.bin.WIN64/docs/html/input_8md.html +81 -0
  254. data/glfw-3.4.bin.WIN64/docs/html/input_guide.html +576 -0
  255. data/glfw-3.4.bin.WIN64/docs/html/internal_8md.html +81 -0
  256. data/glfw-3.4.bin.WIN64/docs/html/internals_guide.html +135 -0
  257. data/glfw-3.4.bin.WIN64/docs/html/intro_8md.html +81 -0
  258. data/glfw-3.4.bin.WIN64/docs/html/intro_guide.html +429 -0
  259. data/glfw-3.4.bin.WIN64/docs/html/jquery.js +34 -0
  260. data/glfw-3.4.bin.WIN64/docs/html/main_8md.html +81 -0
  261. data/glfw-3.4.bin.WIN64/docs/html/menu.js +136 -0
  262. data/glfw-3.4.bin.WIN64/docs/html/menudata.js +30 -0
  263. data/glfw-3.4.bin.WIN64/docs/html/minus.svg +8 -0
  264. data/glfw-3.4.bin.WIN64/docs/html/minusd.svg +8 -0
  265. data/glfw-3.4.bin.WIN64/docs/html/monitor_8md.html +81 -0
  266. data/glfw-3.4.bin.WIN64/docs/html/monitor_guide.html +228 -0
  267. data/glfw-3.4.bin.WIN64/docs/html/moving_8md.html +81 -0
  268. data/glfw-3.4.bin.WIN64/docs/html/moving_guide.html +360 -0
  269. data/glfw-3.4.bin.WIN64/docs/html/nav_f.png +0 -0
  270. data/glfw-3.4.bin.WIN64/docs/html/nav_fd.png +0 -0
  271. data/glfw-3.4.bin.WIN64/docs/html/nav_g.png +0 -0
  272. data/glfw-3.4.bin.WIN64/docs/html/nav_h.png +0 -0
  273. data/glfw-3.4.bin.WIN64/docs/html/nav_hd.png +0 -0
  274. data/glfw-3.4.bin.WIN64/docs/html/news.html +336 -0
  275. data/glfw-3.4.bin.WIN64/docs/html/news_8md.html +81 -0
  276. data/glfw-3.4.bin.WIN64/docs/html/open.png +0 -0
  277. data/glfw-3.4.bin.WIN64/docs/html/pages.html +99 -0
  278. data/glfw-3.4.bin.WIN64/docs/html/plus.svg +9 -0
  279. data/glfw-3.4.bin.WIN64/docs/html/plusd.svg +9 -0
  280. data/glfw-3.4.bin.WIN64/docs/html/quick_8md.html +81 -0
  281. data/glfw-3.4.bin.WIN64/docs/html/quick_guide.html +406 -0
  282. data/glfw-3.4.bin.WIN64/docs/html/search/all_0.js +4 -0
  283. data/glfw-3.4.bin.WIN64/docs/html/search/all_1.js +4 -0
  284. data/glfw-3.4.bin.WIN64/docs/html/search/all_10.js +13 -0
  285. data/glfw-3.4.bin.WIN64/docs/html/search/all_11.js +11 -0
  286. data/glfw-3.4.bin.WIN64/docs/html/search/all_12.js +26 -0
  287. data/glfw-3.4.bin.WIN64/docs/html/search/all_13.js +51 -0
  288. data/glfw-3.4.bin.WIN64/docs/html/search/all_14.js +22 -0
  289. data/glfw-3.4.bin.WIN64/docs/html/search/all_15.js +35 -0
  290. data/glfw-3.4.bin.WIN64/docs/html/search/all_16.js +29 -0
  291. data/glfw-3.4.bin.WIN64/docs/html/search/all_17.js +8 -0
  292. data/glfw-3.4.bin.WIN64/docs/html/search/all_18.js +44 -0
  293. data/glfw-3.4.bin.WIN64/docs/html/search/all_19.js +60 -0
  294. data/glfw-3.4.bin.WIN64/docs/html/search/all_1a.js +39 -0
  295. data/glfw-3.4.bin.WIN64/docs/html/search/all_1b.js +8 -0
  296. data/glfw-3.4.bin.WIN64/docs/html/search/all_1c.js +32 -0
  297. data/glfw-3.4.bin.WIN64/docs/html/search/all_1d.js +84 -0
  298. data/glfw-3.4.bin.WIN64/docs/html/search/all_1e.js +13 -0
  299. data/glfw-3.4.bin.WIN64/docs/html/search/all_1f.js +4 -0
  300. data/glfw-3.4.bin.WIN64/docs/html/search/all_2.js +5 -0
  301. data/glfw-3.4.bin.WIN64/docs/html/search/all_3.js +4 -0
  302. data/glfw-3.4.bin.WIN64/docs/html/search/all_4.js +4 -0
  303. data/glfw-3.4.bin.WIN64/docs/html/search/all_5.js +4 -0
  304. data/glfw-3.4.bin.WIN64/docs/html/search/all_6.js +4 -0
  305. data/glfw-3.4.bin.WIN64/docs/html/search/all_7.js +58 -0
  306. data/glfw-3.4.bin.WIN64/docs/html/search/all_8.js +21 -0
  307. data/glfw-3.4.bin.WIN64/docs/html/search/all_9.js +82 -0
  308. data/glfw-3.4.bin.WIN64/docs/html/search/all_a.js +20 -0
  309. data/glfw-3.4.bin.WIN64/docs/html/search/all_b.js +26 -0
  310. data/glfw-3.4.bin.WIN64/docs/html/search/all_c.js +35 -0
  311. data/glfw-3.4.bin.WIN64/docs/html/search/all_d.js +555 -0
  312. data/glfw-3.4.bin.WIN64/docs/html/search/all_e.js +23 -0
  313. data/glfw-3.4.bin.WIN64/docs/html/search/all_f.js +40 -0
  314. data/glfw-3.4.bin.WIN64/docs/html/search/classes_0.js +8 -0
  315. data/glfw-3.4.bin.WIN64/docs/html/search/close.svg +18 -0
  316. data/glfw-3.4.bin.WIN64/docs/html/search/defines_0.js +43 -0
  317. data/glfw-3.4.bin.WIN64/docs/html/search/files_0.js +4 -0
  318. data/glfw-3.4.bin.WIN64/docs/html/search/files_1.js +6 -0
  319. data/glfw-3.4.bin.WIN64/docs/html/search/files_2.js +5 -0
  320. data/glfw-3.4.bin.WIN64/docs/html/search/files_3.js +6 -0
  321. data/glfw-3.4.bin.WIN64/docs/html/search/files_4.js +6 -0
  322. data/glfw-3.4.bin.WIN64/docs/html/search/files_5.js +4 -0
  323. data/glfw-3.4.bin.WIN64/docs/html/search/files_6.js +4 -0
  324. data/glfw-3.4.bin.WIN64/docs/html/search/files_7.js +4 -0
  325. data/glfw-3.4.bin.WIN64/docs/html/search/files_8.js +4 -0
  326. data/glfw-3.4.bin.WIN64/docs/html/search/functions_0.js +152 -0
  327. data/glfw-3.4.bin.WIN64/docs/html/search/groups_0.js +6 -0
  328. data/glfw-3.4.bin.WIN64/docs/html/search/groups_1.js +4 -0
  329. data/glfw-3.4.bin.WIN64/docs/html/search/groups_10.js +4 -0
  330. data/glfw-3.4.bin.WIN64/docs/html/search/groups_2.js +6 -0
  331. data/glfw-3.4.bin.WIN64/docs/html/search/groups_3.js +5 -0
  332. data/glfw-3.4.bin.WIN64/docs/html/search/groups_4.js +4 -0
  333. data/glfw-3.4.bin.WIN64/docs/html/search/groups_5.js +5 -0
  334. data/glfw-3.4.bin.WIN64/docs/html/search/groups_6.js +4 -0
  335. data/glfw-3.4.bin.WIN64/docs/html/search/groups_7.js +5 -0
  336. data/glfw-3.4.bin.WIN64/docs/html/search/groups_8.js +5 -0
  337. data/glfw-3.4.bin.WIN64/docs/html/search/groups_9.js +6 -0
  338. data/glfw-3.4.bin.WIN64/docs/html/search/groups_a.js +6 -0
  339. data/glfw-3.4.bin.WIN64/docs/html/search/groups_b.js +4 -0
  340. data/glfw-3.4.bin.WIN64/docs/html/search/groups_c.js +4 -0
  341. data/glfw-3.4.bin.WIN64/docs/html/search/groups_d.js +7 -0
  342. data/glfw-3.4.bin.WIN64/docs/html/search/groups_e.js +4 -0
  343. data/glfw-3.4.bin.WIN64/docs/html/search/groups_f.js +5 -0
  344. data/glfw-3.4.bin.WIN64/docs/html/search/mag.svg +24 -0
  345. data/glfw-3.4.bin.WIN64/docs/html/search/mag_d.svg +24 -0
  346. data/glfw-3.4.bin.WIN64/docs/html/search/mag_sel.svg +31 -0
  347. data/glfw-3.4.bin.WIN64/docs/html/search/mag_seld.svg +31 -0
  348. data/glfw-3.4.bin.WIN64/docs/html/search/pages_0.js +4 -0
  349. data/glfw-3.4.bin.WIN64/docs/html/search/pages_1.js +5 -0
  350. data/glfw-3.4.bin.WIN64/docs/html/search/pages_10.js +5 -0
  351. data/glfw-3.4.bin.WIN64/docs/html/search/pages_11.js +4 -0
  352. data/glfw-3.4.bin.WIN64/docs/html/search/pages_2.js +4 -0
  353. data/glfw-3.4.bin.WIN64/docs/html/search/pages_3.js +5 -0
  354. data/glfw-3.4.bin.WIN64/docs/html/search/pages_4.js +4 -0
  355. data/glfw-3.4.bin.WIN64/docs/html/search/pages_5.js +6 -0
  356. data/glfw-3.4.bin.WIN64/docs/html/search/pages_6.js +4 -0
  357. data/glfw-3.4.bin.WIN64/docs/html/search/pages_7.js +5 -0
  358. data/glfw-3.4.bin.WIN64/docs/html/search/pages_8.js +7 -0
  359. data/glfw-3.4.bin.WIN64/docs/html/search/pages_9.js +7 -0
  360. data/glfw-3.4.bin.WIN64/docs/html/search/pages_a.js +4 -0
  361. data/glfw-3.4.bin.WIN64/docs/html/search/pages_b.js +5 -0
  362. data/glfw-3.4.bin.WIN64/docs/html/search/pages_c.js +4 -0
  363. data/glfw-3.4.bin.WIN64/docs/html/search/pages_d.js +4 -0
  364. data/glfw-3.4.bin.WIN64/docs/html/search/pages_e.js +6 -0
  365. data/glfw-3.4.bin.WIN64/docs/html/search/pages_f.js +6 -0
  366. data/glfw-3.4.bin.WIN64/docs/html/search/search.css +291 -0
  367. data/glfw-3.4.bin.WIN64/docs/html/search/search.js +840 -0
  368. data/glfw-3.4.bin.WIN64/docs/html/search/searchdata.js +39 -0
  369. data/glfw-3.4.bin.WIN64/docs/html/search/typedefs_0.js +36 -0
  370. data/glfw-3.4.bin.WIN64/docs/html/search/variables_0.js +5 -0
  371. data/glfw-3.4.bin.WIN64/docs/html/search/variables_1.js +6 -0
  372. data/glfw-3.4.bin.WIN64/docs/html/search/variables_2.js +4 -0
  373. data/glfw-3.4.bin.WIN64/docs/html/search/variables_3.js +5 -0
  374. data/glfw-3.4.bin.WIN64/docs/html/search/variables_4.js +4 -0
  375. data/glfw-3.4.bin.WIN64/docs/html/search/variables_5.js +4 -0
  376. data/glfw-3.4.bin.WIN64/docs/html/search/variables_6.js +7 -0
  377. data/glfw-3.4.bin.WIN64/docs/html/search/variables_7.js +4 -0
  378. data/glfw-3.4.bin.WIN64/docs/html/search/variables_8.js +4 -0
  379. data/glfw-3.4.bin.WIN64/docs/html/search/variables_9.js +4 -0
  380. data/glfw-3.4.bin.WIN64/docs/html/spaces.svg +877 -0
  381. data/glfw-3.4.bin.WIN64/docs/html/splitbar.png +0 -0
  382. data/glfw-3.4.bin.WIN64/docs/html/splitbard.png +0 -0
  383. data/glfw-3.4.bin.WIN64/docs/html/struct_g_l_f_wallocator.html +168 -0
  384. data/glfw-3.4.bin.WIN64/docs/html/struct_g_l_f_wgamepadstate.html +134 -0
  385. data/glfw-3.4.bin.WIN64/docs/html/struct_g_l_f_wgammaramp.html +170 -0
  386. data/glfw-3.4.bin.WIN64/docs/html/struct_g_l_f_wimage.html +151 -0
  387. data/glfw-3.4.bin.WIN64/docs/html/struct_g_l_f_wvidmode.html +204 -0
  388. data/glfw-3.4.bin.WIN64/docs/html/sync_off.png +0 -0
  389. data/glfw-3.4.bin.WIN64/docs/html/sync_on.png +0 -0
  390. data/glfw-3.4.bin.WIN64/docs/html/tab_a.png +0 -0
  391. data/glfw-3.4.bin.WIN64/docs/html/tab_ad.png +0 -0
  392. data/glfw-3.4.bin.WIN64/docs/html/tab_b.png +0 -0
  393. data/glfw-3.4.bin.WIN64/docs/html/tab_bd.png +0 -0
  394. data/glfw-3.4.bin.WIN64/docs/html/tab_h.png +0 -0
  395. data/glfw-3.4.bin.WIN64/docs/html/tab_hd.png +0 -0
  396. data/glfw-3.4.bin.WIN64/docs/html/tab_s.png +0 -0
  397. data/glfw-3.4.bin.WIN64/docs/html/tab_sd.png +0 -0
  398. data/glfw-3.4.bin.WIN64/docs/html/tabs.css +1 -0
  399. data/glfw-3.4.bin.WIN64/docs/html/topics.html +101 -0
  400. data/glfw-3.4.bin.WIN64/docs/html/vulkan_8md.html +81 -0
  401. data/glfw-3.4.bin.WIN64/docs/html/vulkan_guide.html +206 -0
  402. data/glfw-3.4.bin.WIN64/docs/html/window_8md.html +81 -0
  403. data/glfw-3.4.bin.WIN64/docs/html/window_guide.html +806 -0
  404. data/glfw-3.4.bin.WIN64/include/GLFW/glfw3.h +6547 -0
  405. data/glfw-3.4.bin.WIN64/include/GLFW/glfw3native.h +663 -0
  406. data/glfw-3.4.bin.WIN64/lib-mingw-w64/glfw3.dll +0 -0
  407. data/glfw-3.4.bin.WIN64/lib-mingw-w64/libglfw3.a +0 -0
  408. data/glfw-3.4.bin.WIN64/lib-mingw-w64/libglfw3dll.a +0 -0
  409. data/glfw-3.4.bin.WIN64/lib-static-ucrt/glfw3.dll +0 -0
  410. data/glfw-3.4.bin.WIN64/lib-static-ucrt/glfw3dll.lib +0 -0
  411. data/glfw-3.4.bin.WIN64/lib-vc2013/glfw3.dll +0 -0
  412. data/glfw-3.4.bin.WIN64/lib-vc2013/glfw3.lib +0 -0
  413. data/glfw-3.4.bin.WIN64/lib-vc2013/glfw3_mt.lib +0 -0
  414. data/glfw-3.4.bin.WIN64/lib-vc2013/glfw3dll.lib +0 -0
  415. data/glfw-3.4.bin.WIN64/lib-vc2015/glfw3.dll +0 -0
  416. data/glfw-3.4.bin.WIN64/lib-vc2015/glfw3.lib +0 -0
  417. data/glfw-3.4.bin.WIN64/lib-vc2015/glfw3_mt.lib +0 -0
  418. data/glfw-3.4.bin.WIN64/lib-vc2015/glfw3dll.lib +0 -0
  419. data/glfw-3.4.bin.WIN64/lib-vc2017/glfw3.dll +0 -0
  420. data/glfw-3.4.bin.WIN64/lib-vc2017/glfw3.lib +0 -0
  421. data/glfw-3.4.bin.WIN64/lib-vc2017/glfw3_mt.lib +0 -0
  422. data/glfw-3.4.bin.WIN64/lib-vc2017/glfw3dll.lib +0 -0
  423. data/glfw-3.4.bin.WIN64/lib-vc2019/glfw3.dll +0 -0
  424. data/glfw-3.4.bin.WIN64/lib-vc2019/glfw3.lib +0 -0
  425. data/glfw-3.4.bin.WIN64/lib-vc2019/glfw3_mt.lib +0 -0
  426. data/glfw-3.4.bin.WIN64/lib-vc2019/glfw3dll.lib +0 -0
  427. data/glfw-3.4.bin.WIN64/lib-vc2022/glfw3.dll +0 -0
  428. data/glfw-3.4.bin.WIN64/lib-vc2022/glfw3.lib +0 -0
  429. data/glfw-3.4.bin.WIN64/lib-vc2022/glfw3_mt.lib +0 -0
  430. data/glfw-3.4.bin.WIN64/lib-vc2022/glfw3dll.lib +0 -0
  431. data/lib/build.bash +12 -0
  432. data/lib/engine/camera.rb +13 -0
  433. data/lib/engine/component.rb +48 -0
  434. data/lib/engine/components/direction_light.rb +23 -0
  435. data/lib/engine/components/font_renderer.rb +134 -0
  436. data/lib/engine/components/mesh_renderer.rb +31 -0
  437. data/lib/engine/components/orthographic_camera.rb +54 -0
  438. data/lib/engine/components/perspective_camera.rb +53 -0
  439. data/lib/engine/components/point_light.rb +24 -0
  440. data/lib/engine/components/sprite_renderer.rb +141 -0
  441. data/lib/engine/components/ui_font_renderer.rb +140 -0
  442. data/lib/engine/components/ui_sprite_renderer.rb +101 -0
  443. data/lib/engine/cursor.rb +43 -0
  444. data/lib/engine/engine.rb +221 -0
  445. data/lib/engine/font.rb +74 -0
  446. data/lib/engine/game_object.rb +198 -0
  447. data/lib/engine/importers/font_importer.rb +69 -0
  448. data/lib/engine/importers/obj_file.rb +244 -0
  449. data/lib/engine/importers/obj_importer.rb +33 -0
  450. data/lib/engine/input.rb +61 -0
  451. data/lib/engine/material.rb +79 -0
  452. data/lib/engine/mesh.rb +43 -0
  453. data/lib/engine/path.rb +92 -0
  454. data/lib/engine/physics/collision.rb +12 -0
  455. data/lib/engine/physics/components/cube_collider.rb +6 -0
  456. data/lib/engine/physics/components/rigidbody.rb +103 -0
  457. data/lib/engine/physics/components/sphere_collider.rb +93 -0
  458. data/lib/engine/physics/physics_resolver.rb +37 -0
  459. data/lib/engine/polygon_mesh.rb +45 -0
  460. data/lib/engine/quaternion.rb +228 -0
  461. data/lib/engine/rendering/instance_renderer.rb +153 -0
  462. data/lib/engine/rendering/render_pipeline.rb +35 -0
  463. data/lib/engine/screenshoter.rb +34 -0
  464. data/lib/engine/shader.rb +91 -0
  465. data/lib/engine/shaders/colour_frag.glsl +9 -0
  466. data/lib/engine/shaders/colour_vertex.glsl +14 -0
  467. data/lib/engine/shaders/mesh_frag.glsl +102 -0
  468. data/lib/engine/shaders/mesh_vertex.glsl +25 -0
  469. data/lib/engine/shaders/skybox_frag.glsl +12 -0
  470. data/lib/engine/shaders/skybox_vert.glsl +14 -0
  471. data/lib/engine/shaders/sprite_frag.glsl +17 -0
  472. data/lib/engine/shaders/sprite_vertex.glsl +16 -0
  473. data/lib/engine/shaders/text_frag.glsl +15 -0
  474. data/lib/engine/shaders/text_vertex.glsl +31 -0
  475. data/lib/engine/shaders/ui_sprite_frag.glsl +15 -0
  476. data/lib/engine/shaders/ui_sprite_vertex.glsl +16 -0
  477. data/lib/engine/shaders/vertex_lit_frag.glsl +89 -0
  478. data/lib/engine/shaders/vertex_lit_vertex.glsl +28 -0
  479. data/lib/engine/tangent_calculator.rb +42 -0
  480. data/lib/engine/texture.rb +52 -0
  481. data/lib/engine/video_mode.rb +37 -0
  482. data/lib/engine/window.rb +126 -0
  483. metadata +482 -1
@@ -0,0 +1,91 @@
1
+ module Engine
2
+ class Shader
3
+ def initialize(vertex_shader, fragment_shader)
4
+ @vertex_shader = compile_shader(vertex_shader, GL::VERTEX_SHADER)
5
+ @fragment_shader = compile_shader(fragment_shader, GL::FRAGMENT_SHADER)
6
+ @program = GL.CreateProgram
7
+ GL.AttachShader(@program, @vertex_shader)
8
+ GL.AttachShader(@program, @fragment_shader)
9
+ GL.LinkProgram(@program)
10
+
11
+ linked_buf = ' ' * 4
12
+ GL.GetProgramiv(@program, GL::LINK_STATUS, linked_buf)
13
+ linked = linked_buf.unpack('L')[0]
14
+ if linked == 0
15
+ compile_log = ' ' * 1024
16
+ GL.GetProgramInfoLog(@program, 1023, nil, compile_log)
17
+ vertex_log = ' ' * 1024
18
+ GL.GetShaderInfoLog(@vertex_shader, 1023, nil, vertex_log)
19
+ fragment_log = ' ' * 1024
20
+ GL.GetShaderInfoLog(@fragment_shader, 1023, nil, fragment_log)
21
+ puts "Shader program failed to link"
22
+ puts compile_log.strip
23
+ puts vertex_log.strip
24
+ puts fragment_log.strip
25
+ end
26
+ @uniform_cache = {}
27
+ @uniform_locations = {}
28
+ end
29
+
30
+ def compile_shader(shader, type)
31
+ handle = GL.CreateShader(type)
32
+ path = File.join(File.dirname(__FILE__), shader)
33
+ s_srcs = [File.read(path)].pack('p')
34
+ s_lens = [File.size(path)].pack('I')
35
+ GL.ShaderSource(handle, 1, s_srcs, s_lens)
36
+ GL.CompileShader(handle)
37
+ handle
38
+ end
39
+
40
+ def use
41
+ GL.UseProgram(@program)
42
+ end
43
+
44
+ def set_vec3(name, vec)
45
+ return if @uniform_cache[name] == vec
46
+ @uniform_cache[name] = vec
47
+ vector = if vec.is_a?(Vector)
48
+ vec
49
+ else
50
+ Vector[vec[:r], vec[:g], vec[:b]]
51
+ end
52
+ GL.Uniform3f(uniform_location(name), vector[0], vector[1], vector[2])
53
+ end
54
+
55
+ def set_vec4(name, vec)
56
+ return if @uniform_cache[name] == vec
57
+ @uniform_cache[name] = vec
58
+ GL.Uniform4f(uniform_location(name), vec[0], vec[1], vec[2], vec[3])
59
+ end
60
+
61
+ def set_mat4(name, mat)
62
+ return if @uniform_cache[name] == mat
63
+ @uniform_cache[name] = mat
64
+ mat_array = [
65
+ mat[0, 0], mat[0, 1], mat[0, 2], mat[0, 3],
66
+ mat[1, 0], mat[1, 1], mat[1, 2], mat[1, 3],
67
+ mat[2, 0], mat[2, 1], mat[2, 2], mat[2, 3],
68
+ mat[3, 0], mat[3, 1], mat[3, 2], mat[3, 3]
69
+ ]
70
+ GL.UniformMatrix4fv(uniform_location(name), 1, GL::FALSE, mat_array.pack('F*'))
71
+ end
72
+
73
+ def set_int(name, int)
74
+ return if @uniform_cache[name] == int
75
+ @uniform_cache[name] = int
76
+ GL.Uniform1i(uniform_location(name), int)
77
+ end
78
+
79
+ def set_float(name, float)
80
+ return if @uniform_cache[name] == float
81
+ @uniform_cache[name] = float
82
+ GL.Uniform1f(uniform_location(name), float)
83
+ end
84
+
85
+ private
86
+
87
+ def uniform_location(name)
88
+ @uniform_locations[name] ||= GL.GetUniformLocation(@program, name)
89
+ end
90
+ end
91
+ end
@@ -0,0 +1,9 @@
1
+ #version 330 core
2
+
3
+ out vec4 FragColour;
4
+ in vec4 ourColour;
5
+
6
+ void main()
7
+ {
8
+ FragColour = ourColour;
9
+ }
@@ -0,0 +1,14 @@
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);
14
+ }
@@ -0,0 +1,102 @@
1
+ #version 330 core
2
+
3
+ in vec2 TexCoord;
4
+ in vec3 Normal;
5
+ in vec3 Tangent;
6
+ in vec3 FragPos;
7
+
8
+ out vec4 color;
9
+
10
+ uniform sampler2D image;
11
+ uniform sampler2D normalMap;
12
+ uniform vec3 cameraPos;
13
+ uniform float diffuseStrength;
14
+ uniform float specularStrength;
15
+ uniform float specularPower;
16
+ uniform vec3 ambientLight;
17
+
18
+ struct DirectionalLight {
19
+ vec3 direction;
20
+ vec3 colour;
21
+ };
22
+ #define NR_DIRECTIONAL_LIGHTS 4
23
+ uniform DirectionalLight directionalLights[NR_DIRECTIONAL_LIGHTS];
24
+
25
+ struct PointLight {
26
+ vec3 position;
27
+ float sqrRange;
28
+ vec3 colour;
29
+ };
30
+ #define NR_POINT_LIGHTS 16
31
+ uniform PointLight pointLights[NR_POINT_LIGHTS];
32
+
33
+ vec3 CalcPointLight(PointLight light, vec3 normal, vec3 fragPos, vec3 viewDir)
34
+ {
35
+ vec3 lightOffset = light.position - fragPos;
36
+ float sqrDistance = dot(lightOffset, lightOffset);
37
+ vec3 lightDir = normalize(lightOffset);
38
+ float diff = max(dot(normal, lightDir), 0.0);
39
+
40
+ vec3 reflectDir = reflect(lightDir, normal);
41
+ float spec = pow(max(dot(-viewDir, reflectDir), 0.0), specularPower);
42
+
43
+ float attenuation = light.sqrRange / sqrDistance;
44
+
45
+ float diffuse = diff * diffuseStrength;
46
+ float specular = spec * specularStrength;
47
+
48
+ return light.colour * (diffuse + specular) * attenuation;
49
+ }
50
+
51
+ vec3 CalcDirectionalLight(DirectionalLight light, vec3 normal, vec3 fragPos, vec3 viewDir)
52
+ {
53
+ float diff = max(dot(normal, -light.direction), 0.0);
54
+
55
+ vec3 reflectDir = reflect(-light.direction, normal);
56
+ float spec = pow(max(dot(-viewDir, reflectDir), 0.0), specularPower);
57
+
58
+ float diffuse = diff * diffuseStrength;
59
+ float specular = spec * specularStrength;
60
+
61
+ return light.colour * (diffuse + specular);
62
+ }
63
+
64
+ void main()
65
+ {
66
+ vec3 sampledNormal = texture(normalMap, TexCoord).rgb * 2.0 - 1.0;
67
+ if ( sampledNormal.r + sampledNormal.g + sampledNormal.b <= 0)
68
+ {
69
+ sampledNormal = vec3(0.0, 0.0, 1.0);
70
+ }
71
+ vec3 n = normalize(Normal);
72
+ vec3 t = normalize(Tangent);
73
+ vec3 norm = n;
74
+ if ( length(t) > 0.0 )
75
+ {
76
+ vec3 b = cross(t, n);
77
+ mat3 TBN = mat3(t, b, n);
78
+ norm = normalize(TBN * normalize(sampledNormal));
79
+ }
80
+ vec3 viewDir = normalize(cameraPos - FragPos);
81
+
82
+ vec3 result = ambientLight;
83
+
84
+ for (int i = 0; i < NR_POINT_LIGHTS; i++) {
85
+ if (pointLights[i].sqrRange == 0.0)
86
+ {
87
+ break;
88
+ }
89
+ result += CalcPointLight(pointLights[i], norm, FragPos, viewDir);
90
+ }
91
+
92
+ for (int i = 0; i < NR_DIRECTIONAL_LIGHTS; i++) {
93
+ if (directionalLights[i].colour == vec3(0.0))
94
+ {
95
+ break;
96
+ }
97
+ result += CalcDirectionalLight(directionalLights[i], norm, FragPos, viewDir);
98
+ }
99
+
100
+ vec4 tex = texture(image, TexCoord);
101
+ color = tex * vec4(result, 1.0);
102
+ }
@@ -0,0 +1,25 @@
1
+ #version 330 core
2
+
3
+ // <vec2 position, vec2 texCoords, vec3 normal, vec3 tangent>
4
+ layout (location = 0) in vec3 vertex;
5
+ layout (location = 1) in vec2 texCoord;
6
+ layout (location = 2) in vec3 normal;
7
+ layout (location = 3) in vec3 tangent;
8
+ layout (location = 7) in mat4 model;
9
+
10
+ out vec2 TexCoord;
11
+ out vec3 Normal;
12
+ out vec3 Tangent;
13
+ out vec3 FragPos;
14
+
15
+ uniform mat4 camera;
16
+
17
+ void main()
18
+ {
19
+ TexCoord = texCoord;
20
+ mat3 normalMatrix = mat3(transpose(inverse(model)));
21
+ Normal = normalMatrix * normal;
22
+ Tangent = normalMatrix * tangent;
23
+ FragPos = vec3(model * vec4(vertex, 1.0));
24
+ gl_Position = camera * model * vec4(vertex, 1.0);
25
+ }
@@ -0,0 +1,12 @@
1
+ #version 330 core
2
+
3
+ in vec3 FragPos;
4
+ out vec4 color;
5
+
6
+ void main()
7
+ {
8
+ vec4 ground = vec4(0.541176, 0.709804, 0.286275, 1);
9
+ vec4 sky = vec4(0.2, 0.6, 0.8, 1);
10
+ float mixFactor = clamp(FragPos.y / 2.0, 0.0, 1.0);
11
+ color = mix(ground, sky, mixFactor);
12
+ }
@@ -0,0 +1,14 @@
1
+ #version 330 core
2
+
3
+ layout (location = 0) in vec3 vertex;
4
+ layout (location = 7) in mat4 model;
5
+
6
+ out vec3 FragPos;
7
+
8
+ uniform mat4 camera;
9
+
10
+ void main()
11
+ {
12
+ FragPos = vec3(model * vec4(vertex, 1.0));
13
+ gl_Position = camera * model * vec4(vertex, 1.0);
14
+ }
@@ -0,0 +1,17 @@
1
+ #version 330 core
2
+ in vec2 TexCoords;
3
+ out vec4 color;
4
+
5
+ uniform sampler2D image;
6
+ uniform vec3 spriteColor;
7
+ uniform vec4 frameCoords;
8
+
9
+ void main()
10
+ {
11
+ vec2 interpolatedCoords = vec2(frameCoords.x + (TexCoords.x * frameCoords.z), frameCoords.y + TexCoords.y * frameCoords.w);;
12
+ vec4 texColor = texture(image, interpolatedCoords);
13
+ if(texColor.a < 0.05)
14
+ discard;
15
+ else
16
+ color = vec4(spriteColor, 1.0) * texColor;
17
+ }
@@ -0,0 +1,16 @@
1
+ #version 330 core
2
+
3
+ // <vec3 position, vec2 texCoords>
4
+ layout (location = 0) in vec3 vertex;
5
+ layout (location = 1) in vec2 texCoord;
6
+
7
+ out vec2 TexCoords;
8
+
9
+ uniform mat4 camera;
10
+ uniform mat4 model;
11
+
12
+ void main()
13
+ {
14
+ TexCoords = texCoord;
15
+ gl_Position = camera * model * vec4(vertex, 1.0);
16
+ }
@@ -0,0 +1,15 @@
1
+ #version 330 core
2
+
3
+ out vec4 color;
4
+
5
+ in vec2 TexCoords;
6
+
7
+ uniform sampler2D fontTexture;
8
+
9
+ void main()
10
+ {
11
+ vec4 textureColor = texture(fontTexture, TexCoords);
12
+ if(textureColor.a < 0.1)
13
+ discard;
14
+ color = vec4(1.0, 1.0, 1.0, textureColor.a);
15
+ }
@@ -0,0 +1,31 @@
1
+ #version 330 core
2
+
3
+ // <vec3 position, vec2 texCoords>
4
+ layout (location = 0) in vec3 vertex;
5
+ layout (location = 1) in vec2 texCoords;
6
+ layout (location = 2) in int textIndex;
7
+ layout (location = 3) in vec2 offset;
8
+
9
+ uniform mat4 camera;
10
+ uniform mat4 model;
11
+
12
+ out vec2 TexCoords;
13
+
14
+ vec2 getTexCoords()
15
+ {
16
+ int x = textIndex / 16;
17
+ int y = textIndex % 16;
18
+ return (vec2(x, y) + texCoords) / 16.0;
19
+ }
20
+
21
+ vec3 quadPosition()
22
+ {
23
+ return vertex + vec3(offset.x, offset.y, 0);
24
+ }
25
+
26
+
27
+ void main()
28
+ {
29
+ gl_Position = camera * model * vec4(quadPosition(), 1.0);
30
+ TexCoords = getTexCoords();
31
+ }
@@ -0,0 +1,15 @@
1
+ #version 330 core
2
+ in vec2 TexCoords;
3
+ out vec4 color;
4
+
5
+ uniform sampler2D image;
6
+ uniform vec4 spriteColor;
7
+
8
+ void main()
9
+ {
10
+ vec4 texColor = texture(image, TexCoords);
11
+ if(texColor.a < 0.05)
12
+ discard;
13
+ else
14
+ color = spriteColor * texColor;
15
+ }
@@ -0,0 +1,16 @@
1
+ #version 330 core
2
+
3
+ // <vec3 position, vec2 texCoords>
4
+ layout (location = 0) in vec3 vertex;
5
+ layout (location = 1) in vec2 texCoord;
6
+
7
+ out vec2 TexCoords;
8
+
9
+ uniform mat4 camera;
10
+ uniform mat4 model;
11
+
12
+ void main()
13
+ {
14
+ TexCoords = texCoord;
15
+ gl_Position = camera * model * vec4(vertex, 1.0);
16
+ }
@@ -0,0 +1,89 @@
1
+ #version 330 core
2
+
3
+ in vec3 Normal;
4
+ in vec3 FragPos;
5
+
6
+ in vec3 Diffuse;
7
+ in vec3 Specular;
8
+ in vec3 Albedo;
9
+
10
+ out vec4 color;
11
+
12
+ uniform vec3 cameraPos;
13
+ uniform float diffuseStrength;
14
+ uniform float specularStrength;
15
+ uniform float specularPower;
16
+ uniform vec3 ambientLight;
17
+
18
+ struct DirectionalLight {
19
+ vec3 direction;
20
+ vec3 colour;
21
+ };
22
+ #define NR_DIRECTIONAL_LIGHTS 4
23
+ uniform DirectionalLight directionalLights[NR_DIRECTIONAL_LIGHTS];
24
+
25
+ struct PointLight {
26
+ vec3 position;
27
+ float sqrRange;
28
+ vec3 colour;
29
+ };
30
+ #define NR_POINT_LIGHTS 16
31
+ uniform PointLight pointLights[NR_POINT_LIGHTS];
32
+
33
+ vec3 CalcPointLight(PointLight light, vec3 normal, vec3 fragPos, vec3 viewDir)
34
+ {
35
+ vec3 lightOffset = light.position - fragPos;
36
+ float sqrDistance = dot(lightOffset, lightOffset);
37
+ vec3 lightDir = normalize(lightOffset);
38
+ float diff = max(dot(normal, lightDir), 0.0);
39
+
40
+ vec3 reflectDir = reflect(lightDir, normal);
41
+ float spec = pow(max(dot(-viewDir, reflectDir), 0.0), specularPower);
42
+
43
+ float attenuation = light.sqrRange / sqrDistance;
44
+
45
+ float diffuse = diff * diffuseStrength;
46
+ float specular = spec * specularStrength;
47
+
48
+ return light.colour * (diffuse + specular) * attenuation;
49
+ }
50
+
51
+ vec3 CalcDirectionalLight(DirectionalLight light, vec3 normal, vec3 fragPos, vec3 viewDir)
52
+ {
53
+ float diff = max(dot(normal, -light.direction), 0.0);
54
+
55
+ vec3 reflectDir = reflect(-light.direction, normal);
56
+ float spec = pow(max(dot(-viewDir, reflectDir), 0.0), specularPower);
57
+
58
+ float diffuse = diff * diffuseStrength;
59
+ float specular = spec * specularStrength;
60
+
61
+ return light.colour * (diffuse + specular);
62
+ }
63
+
64
+ void main()
65
+ {
66
+ vec3 norm = normalize(Normal);
67
+ vec3 viewDir = normalize(cameraPos - FragPos);
68
+
69
+ vec3 result = ambientLight;
70
+
71
+ for (int i = 0; i < NR_POINT_LIGHTS; i++) {
72
+ if (pointLights[i].sqrRange == 0.0)
73
+ {
74
+ break;
75
+ }
76
+ result += CalcPointLight(pointLights[i], norm, FragPos, viewDir);
77
+ }
78
+
79
+ for (int i = 0; i < NR_DIRECTIONAL_LIGHTS; i++) {
80
+ if (directionalLights[i].colour == vec3(0.0))
81
+ {
82
+ break;
83
+ }
84
+ result += CalcDirectionalLight(directionalLights[i], norm, FragPos, viewDir);
85
+ }
86
+
87
+ vec4 c = vec4(Diffuse, 1.0);
88
+ color = c * vec4(result, 1.0);
89
+ }
@@ -0,0 +1,28 @@
1
+ #version 330 core
2
+
3
+ // <vec2 position, vec2 texCoords, vec3 normal, vec3 tangent>
4
+ layout (location = 0) in vec3 vertex;
5
+ layout (location = 2) in vec3 normal;
6
+ layout (location = 4) in vec3 diffuse;
7
+ layout (location = 5) in vec3 specular;
8
+ layout (location = 6) in vec3 albedo;
9
+ layout (location = 7) in mat4 model;
10
+
11
+ out vec3 Normal;
12
+ out vec3 FragPos;
13
+ out vec3 Diffuse;
14
+ out vec3 Specular;
15
+ out vec3 Albedo;
16
+
17
+ uniform mat4 camera;
18
+
19
+ void main()
20
+ {
21
+ mat3 normalMatrix = mat3(transpose(inverse(model)));
22
+ Normal = normalMatrix * normal;
23
+ FragPos = vec3(model * vec4(vertex, 1.0));
24
+ gl_Position = camera * model * vec4(vertex, 1.0);
25
+ Diffuse = diffuse;
26
+ Specular = specular;
27
+ Albedo = albedo;
28
+ }
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Engine
4
+ class TangentCalculator
5
+ attr_reader :vertices, :normals, :texture_coords
6
+
7
+ def initialize(vertices, normals, texture_coords)
8
+ @vertices = vertices
9
+ @normals = normals
10
+ @texture_coords = texture_coords
11
+ end
12
+
13
+ def calculate_tangents
14
+ delta_pos1 = @vertices[1] - @vertices[0]
15
+ delta_pos2 = @vertices[2] - @vertices[0]
16
+
17
+ delta_uv1 = @texture_coords[1] - @texture_coords[0]
18
+ delta_uv2 = @texture_coords[2] - @texture_coords[0]
19
+
20
+ if delta_uv1[0] * delta_uv2[1] - delta_uv1[1] * delta_uv2[0] == 0
21
+ return normals.map { |normal| Vector[0, 0, 0] }
22
+ end
23
+
24
+ uv_matrix = Matrix[
25
+ [delta_uv1[0], delta_uv1[1]],
26
+ [delta_uv2[0], delta_uv2[1]]
27
+ ]
28
+
29
+ world_matrix = Matrix[
30
+ [delta_pos1[0], delta_pos1[1], delta_pos1[2]],
31
+ [delta_pos2[0], delta_pos2[1], delta_pos2[2]]
32
+ ]
33
+
34
+ tangent_matrix = uv_matrix.inv * world_matrix
35
+
36
+ flat_tangent = Vector[tangent_matrix[0, 0], tangent_matrix[0, 1], tangent_matrix[0, 2]]
37
+ bitangents = normals.map { |normal| normal.cross(flat_tangent).normalize }
38
+
39
+ normals.map { |normal| bitangents[0].cross(normal).normalize }
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,52 @@
1
+ require 'chunky_png'
2
+
3
+ module Engine
4
+ class Texture
5
+ attr_reader :texture
6
+ private_class_method :new
7
+
8
+ def initialize(file_path, flip)
9
+ @file_path = file_path
10
+ @flip = flip
11
+ @texture = ' ' * 4
12
+ load_texture
13
+ end
14
+
15
+ def self.for(file_path, flip: false)
16
+ texture_cache[[file_path, flip]]
17
+ end
18
+
19
+ def self.texture_cache
20
+ @texture_cache ||= Hash.new do |hash, key|
21
+ hash[key] = new(key[0], key[1])
22
+ end
23
+ end
24
+
25
+ def load_texture
26
+ tex = ' ' * 4
27
+ GL.GenTextures(1, tex)
28
+ @texture = tex.unpack('L')[0]
29
+ GL.BindTexture(GL::TEXTURE_2D, @texture)
30
+ GL.TexParameteri(GL::TEXTURE_2D, GL::TEXTURE_WRAP_S, GL::REPEAT)
31
+ GL.TexParameteri(GL::TEXTURE_2D, GL::TEXTURE_WRAP_T, GL::REPEAT)
32
+ GL.TexParameteri(GL::TEXTURE_2D, GL::TEXTURE_MIN_FILTER, GL::LINEAR)
33
+ GL.TexParameteri(GL::TEXTURE_2D, GL::TEXTURE_MAG_FILTER, GL::LINEAR)
34
+
35
+ image = read_image
36
+ image_data = image.to_rgba_stream
37
+ image_width = image.width
38
+ image_height = image.height
39
+
40
+ GL.TexImage2D(GL::TEXTURE_2D, 0, GL::RGBA, image_width, image_height, 0, GL::RGBA, GL::UNSIGNED_BYTE, image_data)
41
+ GL.GenerateMipmap(GL::TEXTURE_2D)
42
+ end
43
+
44
+ def read_image
45
+ if @flip
46
+ ChunkyPNG::Image.from_file(@file_path).flip_horizontally
47
+ else
48
+ ChunkyPNG::Image.from_file(@file_path)
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Engine
4
+ # https://www.glfw.org/docs/latest/struct_g_l_f_wvidmode.html
5
+ # https://www.glfw.org/docs/latest/monitor_guide.html#monitor_modes
6
+ class VideoMode
7
+ class << self
8
+ def current_video_mode(monitor: Window.primary_monitor)
9
+ video_mode_helper(GLFW.GetVideoMode(monitor), 0)
10
+ end
11
+
12
+ # Returns an array of video modes
13
+ def get_video_modes(monitor: Window.primary_monitor)
14
+ count_pointer = ' ' * Fiddle::SIZEOF_INT
15
+ modes_pointer = GLFW.GetVideoModes(monitor, count_pointer)
16
+ count = count_pointer.unpack1('L')
17
+
18
+ supported_video_modes = []
19
+ count.times do |i|
20
+ supported_video_modes << video_mode_helper(modes_pointer, i)
21
+ end
22
+ supported_video_modes
23
+ end
24
+
25
+ def print_video_mode(mode)
26
+ GLFW::GLFWvidmode.members.map(&:to_sym).map do |attr|
27
+ puts "#{attr}: #{mode.send(attr)}"
28
+ end
29
+ puts
30
+ end
31
+
32
+ def video_mode_helper(mode_pointer, index)
33
+ GLFW::GLFWvidmode.new(mode_pointer + index * GLFW::GLFWvidmode.size)
34
+ end
35
+ end
36
+ end
37
+ end