ruby_rpg 0.0.4 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (564) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +22 -0
  3. data/bin/build.bash +1 -1
  4. data/bin/import +11 -1
  5. data/ext/gl_native/extconf.rb +20 -0
  6. data/ext/gl_native/gl_native.c +563 -0
  7. data/ext/glfw_native/extconf.rb +18 -0
  8. data/ext/glfw_native/glfw_native.c +451 -0
  9. data/lib/engine/assets/_imported/cube.index_data +36 -0
  10. data/lib/engine/assets/_imported/cube.vertex_data +720 -0
  11. data/lib/engine/assets/_imported/plane.index_data +6 -0
  12. data/lib/engine/assets/_imported/plane.vertex_data +120 -0
  13. data/lib/engine/assets/_imported/sphere.index_data +2880 -0
  14. data/lib/engine/assets/_imported/sphere.vertex_data +57600 -0
  15. data/lib/engine/assets/cube.obj +46 -0
  16. data/lib/engine/assets/plane.obj +16 -0
  17. data/lib/engine/assets/sphere.obj +2488 -0
  18. data/lib/engine/component.rb +2 -0
  19. data/lib/engine/components/audio_source.rb +6 -4
  20. data/lib/engine/components/direction_light.rb +83 -4
  21. data/lib/engine/components/orthographic_camera.rb +31 -25
  22. data/lib/engine/components/perspective_camera.rb +35 -12
  23. data/lib/engine/components/point_light.rb +61 -5
  24. data/lib/engine/components/renderers/font_renderer.rb +19 -0
  25. data/lib/engine/components/renderers/font_renderer_base.rb +134 -0
  26. data/lib/engine/components/renderers/mesh_renderer.rb +41 -0
  27. data/lib/engine/components/renderers/sprite_renderer.rb +46 -0
  28. data/lib/engine/components/spot_light.rb +90 -0
  29. data/lib/engine/components/sprite_animator.rb +42 -0
  30. data/lib/engine/components/ui/flex/layout.rb +94 -0
  31. data/lib/engine/components/ui/flex/pack_layout.rb +65 -0
  32. data/lib/engine/components/ui/flex/stretch_layout.rb +52 -0
  33. data/lib/engine/components/ui/flex.rb +60 -0
  34. data/lib/engine/components/ui/font_renderer.rb +57 -0
  35. data/lib/engine/components/ui/rect.rb +117 -0
  36. data/lib/engine/components/ui/sprite_clickbox.rb +47 -0
  37. data/lib/engine/components/ui/sprite_renderer.rb +117 -0
  38. data/lib/engine/compute_shader.rb +14 -0
  39. data/lib/engine/compute_texture.rb +13 -0
  40. data/lib/engine/debugging.rb +4 -4
  41. data/lib/engine/engine.rb +8 -12
  42. data/lib/engine/font.rb +29 -4
  43. data/lib/engine/game_object.rb +121 -49
  44. data/lib/engine/gl.rb +439 -0
  45. data/lib/engine/glfw.rb +151 -0
  46. data/lib/engine/input.rb +115 -7
  47. data/lib/engine/material.rb +146 -11
  48. data/lib/engine/matrix_helpers.rb +38 -0
  49. data/lib/engine/mesh.rb +41 -16
  50. data/lib/engine/metal/compute_shader.rb +118 -0
  51. data/lib/engine/metal/compute_texture.rb +176 -0
  52. data/lib/engine/metal/device.rb +98 -0
  53. data/lib/engine/metal/metal_bindings.rb +126 -0
  54. data/lib/engine/opengl/compute_shader.rb +77 -0
  55. data/lib/engine/opengl/compute_texture.rb +31 -0
  56. data/lib/engine/physics/components/rigidbody.rb +23 -20
  57. data/lib/engine/physics/components/sphere_collider.rb +13 -3
  58. data/lib/engine/physics/physics_resolver.rb +24 -12
  59. data/lib/engine/rendering/cubemap_shadow_map_array.rb +77 -0
  60. data/lib/engine/rendering/gpu_timer.rb +68 -0
  61. data/lib/engine/rendering/instance_renderer.rb +140 -61
  62. data/lib/engine/rendering/post_processing/bloom_effect.rb +87 -0
  63. data/lib/engine/rendering/post_processing/depth_debug_effect.rb +17 -0
  64. data/lib/engine/rendering/post_processing/depth_of_field_effect.rb +52 -0
  65. data/lib/engine/rendering/post_processing/effect.rb +11 -0
  66. data/lib/engine/rendering/post_processing/post_processing_effect.rb +86 -0
  67. data/lib/engine/rendering/post_processing/single_pass_effect.rb +19 -0
  68. data/lib/engine/rendering/post_processing/ssao_effect.rb +182 -0
  69. data/lib/engine/rendering/post_processing/ssr_effect.rb +89 -0
  70. data/lib/engine/rendering/post_processing/tint_effect.rb +18 -0
  71. data/lib/engine/rendering/render_pipeline.rb +238 -6
  72. data/lib/engine/rendering/render_texture.rb +118 -0
  73. data/lib/engine/rendering/screen_quad.rb +64 -0
  74. data/lib/engine/rendering/shadow_map_array.rb +72 -0
  75. data/lib/engine/rendering/skybox_cubemap.rb +119 -0
  76. data/lib/engine/rendering/skybox_renderer.rb +64 -0
  77. data/lib/engine/rendering/ui/stencil_manager.rb +69 -0
  78. data/lib/engine/screenshoter.rb +1 -1
  79. data/lib/engine/serialization/graph_serializer.rb +74 -0
  80. data/lib/engine/serialization/object_serializer.rb +98 -0
  81. data/lib/engine/serialization/serializable.rb +78 -0
  82. data/lib/engine/serialization/yaml_persistence.rb +45 -0
  83. data/lib/engine/shader.rb +149 -25
  84. data/lib/engine/shaders/colour_frag.glsl +9 -1
  85. data/lib/engine/shaders/colour_vertex.glsl +12 -5
  86. data/lib/engine/shaders/fullscreen_frag.glsl +11 -0
  87. data/lib/engine/shaders/fullscreen_vertex.glsl +12 -0
  88. data/lib/engine/shaders/instanced_sprite_frag.glsl +21 -0
  89. data/lib/engine/shaders/{skybox_vert.glsl → instanced_sprite_vertex.glsl} +3 -2
  90. data/lib/engine/shaders/lighting/directional_light.glsl +49 -0
  91. data/lib/engine/shaders/lighting/lighting.glsl +33 -0
  92. data/lib/engine/shaders/lighting/lighting_common.glsl +13 -0
  93. data/lib/engine/shaders/lighting/point_light.glsl +46 -0
  94. data/lib/engine/shaders/lighting/spot_light.glsl +80 -0
  95. data/lib/engine/shaders/mesh_frag.glsl +28 -77
  96. data/lib/engine/shaders/mesh_vertex.glsl +5 -5
  97. data/lib/engine/shaders/point_shadow_frag.glsl +12 -0
  98. data/lib/engine/shaders/point_shadow_vertex.glsl +15 -0
  99. data/lib/engine/shaders/post_process/bloom_blur_frag.glsl +25 -0
  100. data/lib/engine/shaders/post_process/bloom_combine_frag.glsl +19 -0
  101. data/lib/engine/shaders/post_process/bloom_threshold_frag.glsl +19 -0
  102. data/lib/engine/shaders/post_process/debug_normals_frag.glsl +21 -0
  103. data/lib/engine/shaders/post_process/depth_debug_frag.glsl +17 -0
  104. data/lib/engine/shaders/post_process/dof_blur_frag.glsl +52 -0
  105. data/lib/engine/shaders/post_process/skybox_frag.glsl +29 -0
  106. data/lib/engine/shaders/post_process/ssao/blur_frag.glsl +50 -0
  107. data/lib/engine/shaders/post_process/ssao/combine_frag.glsl +15 -0
  108. data/lib/engine/shaders/post_process/ssao/frag.glsl +99 -0
  109. data/lib/engine/shaders/post_process/ssr/combine_frag.glsl +16 -0
  110. data/lib/engine/shaders/post_process/ssr/frag.glsl +118 -0
  111. data/lib/engine/shaders/post_process/tint_frag.glsl +14 -0
  112. data/lib/engine/shaders/shadow_frag.glsl +6 -0
  113. data/lib/engine/shaders/shadow_vertex.glsl +11 -0
  114. data/lib/engine/shaders/skybox_cubemap_frag.glsl +46 -0
  115. data/lib/engine/shaders/vertex_lit_frag.glsl +10 -66
  116. data/lib/engine/shaders/vertex_lit_vertex.glsl +1 -1
  117. data/lib/engine/standard_meshes/quad_mesh.rb +26 -0
  118. data/lib/engine/standard_objects/cube.rb +23 -0
  119. data/lib/engine/standard_objects/default_material.rb +20 -0
  120. data/lib/engine/standard_objects/plane.rb +23 -0
  121. data/lib/engine/standard_objects/sphere.rb +23 -0
  122. data/lib/engine/texture.rb +28 -19
  123. data/lib/engine/ui/rect.rb +16 -0
  124. data/lib/engine/window.rb +2 -2
  125. data/lib/ruby_rpg.rb +69 -9
  126. data/vendor/glew-2.2.0-win32/LICENSE.txt +73 -0
  127. data/vendor/glew-2.2.0-win32/bin/Release/x64/glew32.dll +0 -0
  128. data/vendor/glew-2.2.0-win32/include/GL/glew.h +26427 -0
  129. data/vendor/glew-2.2.0-win32/lib/Release/x64/glew32.lib +0 -0
  130. metadata +124 -466
  131. data/glfw-3.3.9.bin.MACOS/README.md +0 -5
  132. data/glfw-3.3.9.bin.MACOS/docs/html/bc_s.png +0 -0
  133. data/glfw-3.3.9.bin.MACOS/docs/html/bc_sd.png +0 -0
  134. data/glfw-3.3.9.bin.MACOS/docs/html/build_8dox.html +0 -81
  135. data/glfw-3.3.9.bin.MACOS/docs/html/build_guide.html +0 -199
  136. data/glfw-3.3.9.bin.MACOS/docs/html/closed.png +0 -0
  137. data/glfw-3.3.9.bin.MACOS/docs/html/compat_8dox.html +0 -81
  138. data/glfw-3.3.9.bin.MACOS/docs/html/compat_guide.html +0 -153
  139. data/glfw-3.3.9.bin.MACOS/docs/html/compile_8dox.html +0 -81
  140. data/glfw-3.3.9.bin.MACOS/docs/html/compile_guide.html +0 -223
  141. data/glfw-3.3.9.bin.MACOS/docs/html/context_8dox.html +0 -81
  142. data/glfw-3.3.9.bin.MACOS/docs/html/context_guide.html +0 -259
  143. data/glfw-3.3.9.bin.MACOS/docs/html/deprecated.html +0 -88
  144. data/glfw-3.3.9.bin.MACOS/docs/html/dir_08423ce7729c4554356a7de7171ba263.html +0 -85
  145. data/glfw-3.3.9.bin.MACOS/docs/html/dir_2dcebcdf14b42e92a6ed85c61bda6b9d.html +0 -93
  146. data/glfw-3.3.9.bin.MACOS/docs/html/dir_62ce056722ee97c199075aa1d6eca309.html +0 -95
  147. data/glfw-3.3.9.bin.MACOS/docs/html/dir_dddf4cf62655095a666cf715de3a31a2.html +0 -91
  148. data/glfw-3.3.9.bin.MACOS/docs/html/doc.svg +0 -12
  149. data/glfw-3.3.9.bin.MACOS/docs/html/docd.svg +0 -12
  150. data/glfw-3.3.9.bin.MACOS/docs/html/doxygen.css +0 -1685
  151. data/glfw-3.3.9.bin.MACOS/docs/html/doxygen.svg +0 -28
  152. data/glfw-3.3.9.bin.MACOS/docs/html/dynsections.js +0 -192
  153. data/glfw-3.3.9.bin.MACOS/docs/html/extra.css +0 -1
  154. data/glfw-3.3.9.bin.MACOS/docs/html/files.html +0 -91
  155. data/glfw-3.3.9.bin.MACOS/docs/html/folderclosed.svg +0 -11
  156. data/glfw-3.3.9.bin.MACOS/docs/html/folderclosedd.svg +0 -11
  157. data/glfw-3.3.9.bin.MACOS/docs/html/folderopen.svg +0 -17
  158. data/glfw-3.3.9.bin.MACOS/docs/html/folderopend.svg +0 -12
  159. data/glfw-3.3.9.bin.MACOS/docs/html/glfw3_8h.html +0 -1661
  160. data/glfw-3.3.9.bin.MACOS/docs/html/glfw3_8h_source.html +0 -1175
  161. data/glfw-3.3.9.bin.MACOS/docs/html/glfw3native_8h.html +0 -167
  162. data/glfw-3.3.9.bin.MACOS/docs/html/glfw3native_8h_source.html +0 -303
  163. data/glfw-3.3.9.bin.MACOS/docs/html/group__buttons.html +0 -282
  164. data/glfw-3.3.9.bin.MACOS/docs/html/group__context.html +0 -304
  165. data/glfw-3.3.9.bin.MACOS/docs/html/group__errors.html +0 -304
  166. data/glfw-3.3.9.bin.MACOS/docs/html/group__gamepad__axes.html +0 -202
  167. data/glfw-3.3.9.bin.MACOS/docs/html/group__gamepad__buttons.html +0 -410
  168. data/glfw-3.3.9.bin.MACOS/docs/html/group__hat__state.html +0 -234
  169. data/glfw-3.3.9.bin.MACOS/docs/html/group__init.html +0 -570
  170. data/glfw-3.3.9.bin.MACOS/docs/html/group__input.html +0 -2255
  171. data/glfw-3.3.9.bin.MACOS/docs/html/group__joysticks.html +0 -362
  172. data/glfw-3.3.9.bin.MACOS/docs/html/group__keys.html +0 -2034
  173. data/glfw-3.3.9.bin.MACOS/docs/html/group__mods.html +0 -198
  174. data/glfw-3.3.9.bin.MACOS/docs/html/group__monitor.html +0 -848
  175. data/glfw-3.3.9.bin.MACOS/docs/html/group__native.html +0 -812
  176. data/glfw-3.3.9.bin.MACOS/docs/html/group__shapes.html +0 -198
  177. data/glfw-3.3.9.bin.MACOS/docs/html/group__vulkan.html +0 -359
  178. data/glfw-3.3.9.bin.MACOS/docs/html/group__window.html +0 -3434
  179. data/glfw-3.3.9.bin.MACOS/docs/html/index.html +0 -100
  180. data/glfw-3.3.9.bin.MACOS/docs/html/input_8dox.html +0 -81
  181. data/glfw-3.3.9.bin.MACOS/docs/html/input_guide.html +0 -570
  182. data/glfw-3.3.9.bin.MACOS/docs/html/internal_8dox.html +0 -81
  183. data/glfw-3.3.9.bin.MACOS/docs/html/internals_guide.html +0 -132
  184. data/glfw-3.3.9.bin.MACOS/docs/html/intro_8dox.html +0 -81
  185. data/glfw-3.3.9.bin.MACOS/docs/html/intro_guide.html +0 -351
  186. data/glfw-3.3.9.bin.MACOS/docs/html/jquery.js +0 -34
  187. data/glfw-3.3.9.bin.MACOS/docs/html/main_8dox.html +0 -81
  188. data/glfw-3.3.9.bin.MACOS/docs/html/menu.js +0 -136
  189. data/glfw-3.3.9.bin.MACOS/docs/html/menudata.js +0 -29
  190. data/glfw-3.3.9.bin.MACOS/docs/html/minus.svg +0 -8
  191. data/glfw-3.3.9.bin.MACOS/docs/html/minusd.svg +0 -8
  192. data/glfw-3.3.9.bin.MACOS/docs/html/monitor_8dox.html +0 -81
  193. data/glfw-3.3.9.bin.MACOS/docs/html/monitor_guide.html +0 -229
  194. data/glfw-3.3.9.bin.MACOS/docs/html/moving_8dox.html +0 -81
  195. data/glfw-3.3.9.bin.MACOS/docs/html/moving_guide.html +0 -374
  196. data/glfw-3.3.9.bin.MACOS/docs/html/nav_f.png +0 -0
  197. data/glfw-3.3.9.bin.MACOS/docs/html/nav_fd.png +0 -0
  198. data/glfw-3.3.9.bin.MACOS/docs/html/nav_g.png +0 -0
  199. data/glfw-3.3.9.bin.MACOS/docs/html/nav_h.png +0 -0
  200. data/glfw-3.3.9.bin.MACOS/docs/html/nav_hd.png +0 -0
  201. data/glfw-3.3.9.bin.MACOS/docs/html/news.html +0 -634
  202. data/glfw-3.3.9.bin.MACOS/docs/html/news_8dox.html +0 -81
  203. data/glfw-3.3.9.bin.MACOS/docs/html/open.png +0 -0
  204. data/glfw-3.3.9.bin.MACOS/docs/html/pages.html +0 -99
  205. data/glfw-3.3.9.bin.MACOS/docs/html/plus.svg +0 -9
  206. data/glfw-3.3.9.bin.MACOS/docs/html/plusd.svg +0 -9
  207. data/glfw-3.3.9.bin.MACOS/docs/html/quick_8dox.html +0 -81
  208. data/glfw-3.3.9.bin.MACOS/docs/html/quick_guide.html +0 -397
  209. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_0.js +0 -5
  210. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_1.js +0 -4
  211. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_10.js +0 -65
  212. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_11.js +0 -26
  213. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_12.js +0 -44
  214. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_13.js +0 -34
  215. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_14.js +0 -12
  216. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_15.js +0 -52
  217. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_16.js +0 -69
  218. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_17.js +0 -51
  219. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_18.js +0 -14
  220. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_19.js +0 -36
  221. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_1a.js +0 -98
  222. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_1b.js +0 -12
  223. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_2.js +0 -6
  224. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_3.js +0 -9
  225. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_4.js +0 -57
  226. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_5.js +0 -22
  227. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_6.js +0 -103
  228. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_7.js +0 -23
  229. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_8.js +0 -35
  230. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_9.js +0 -63
  231. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_a.js +0 -505
  232. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_b.js +0 -24
  233. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_c.js +0 -50
  234. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_d.js +0 -17
  235. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_e.js +0 -12
  236. data/glfw-3.3.9.bin.MACOS/docs/html/search/all_f.js +0 -35
  237. data/glfw-3.3.9.bin.MACOS/docs/html/search/classes_0.js +0 -7
  238. data/glfw-3.3.9.bin.MACOS/docs/html/search/close.svg +0 -18
  239. data/glfw-3.3.9.bin.MACOS/docs/html/search/defines_0.js +0 -34
  240. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_0.js +0 -4
  241. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_1.js +0 -6
  242. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_2.js +0 -5
  243. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_3.js +0 -6
  244. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_4.js +0 -6
  245. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_5.js +0 -4
  246. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_6.js +0 -4
  247. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_7.js +0 -4
  248. data/glfw-3.3.9.bin.MACOS/docs/html/search/files_8.js +0 -4
  249. data/glfw-3.3.9.bin.MACOS/docs/html/search/functions_0.js +0 -146
  250. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_0.js +0 -6
  251. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_1.js +0 -4
  252. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_10.js +0 -4
  253. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_2.js +0 -6
  254. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_3.js +0 -5
  255. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_4.js +0 -4
  256. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_5.js +0 -5
  257. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_6.js +0 -4
  258. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_7.js +0 -5
  259. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_8.js +0 -5
  260. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_9.js +0 -6
  261. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_a.js +0 -6
  262. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_b.js +0 -4
  263. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_c.js +0 -4
  264. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_d.js +0 -7
  265. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_e.js +0 -4
  266. data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_f.js +0 -5
  267. data/glfw-3.3.9.bin.MACOS/docs/html/search/mag.svg +0 -24
  268. data/glfw-3.3.9.bin.MACOS/docs/html/search/mag_d.svg +0 -24
  269. data/glfw-3.3.9.bin.MACOS/docs/html/search/mag_sel.svg +0 -31
  270. data/glfw-3.3.9.bin.MACOS/docs/html/search/mag_seld.svg +0 -31
  271. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_0.js +0 -4
  272. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_1.js +0 -4
  273. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_10.js +0 -4
  274. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_2.js +0 -5
  275. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_3.js +0 -4
  276. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_4.js +0 -6
  277. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_5.js +0 -4
  278. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_6.js +0 -4
  279. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_7.js +0 -7
  280. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_8.js +0 -6
  281. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_9.js +0 -4
  282. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_a.js +0 -5
  283. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_b.js +0 -5
  284. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_c.js +0 -4
  285. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_d.js +0 -6
  286. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_e.js +0 -6
  287. data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_f.js +0 -4
  288. data/glfw-3.3.9.bin.MACOS/docs/html/search/search.css +0 -291
  289. data/glfw-3.3.9.bin.MACOS/docs/html/search/search.js +0 -840
  290. data/glfw-3.3.9.bin.MACOS/docs/html/search/searchdata.js +0 -39
  291. data/glfw-3.3.9.bin.MACOS/docs/html/search/typedefs_0.js +0 -32
  292. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_0.js +0 -4
  293. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_1.js +0 -6
  294. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_2.js +0 -5
  295. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_3.js +0 -4
  296. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_4.js +0 -4
  297. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_5.js +0 -6
  298. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_6.js +0 -4
  299. data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_7.js +0 -4
  300. data/glfw-3.3.9.bin.MACOS/docs/html/spaces.svg +0 -877
  301. data/glfw-3.3.9.bin.MACOS/docs/html/splitbar.png +0 -0
  302. data/glfw-3.3.9.bin.MACOS/docs/html/splitbard.png +0 -0
  303. data/glfw-3.3.9.bin.MACOS/docs/html/struct_g_l_f_wgamepadstate.html +0 -134
  304. data/glfw-3.3.9.bin.MACOS/docs/html/struct_g_l_f_wgammaramp.html +0 -170
  305. data/glfw-3.3.9.bin.MACOS/docs/html/struct_g_l_f_wimage.html +0 -151
  306. data/glfw-3.3.9.bin.MACOS/docs/html/struct_g_l_f_wvidmode.html +0 -204
  307. data/glfw-3.3.9.bin.MACOS/docs/html/sync_off.png +0 -0
  308. data/glfw-3.3.9.bin.MACOS/docs/html/sync_on.png +0 -0
  309. data/glfw-3.3.9.bin.MACOS/docs/html/tab_a.png +0 -0
  310. data/glfw-3.3.9.bin.MACOS/docs/html/tab_ad.png +0 -0
  311. data/glfw-3.3.9.bin.MACOS/docs/html/tab_b.png +0 -0
  312. data/glfw-3.3.9.bin.MACOS/docs/html/tab_bd.png +0 -0
  313. data/glfw-3.3.9.bin.MACOS/docs/html/tab_h.png +0 -0
  314. data/glfw-3.3.9.bin.MACOS/docs/html/tab_hd.png +0 -0
  315. data/glfw-3.3.9.bin.MACOS/docs/html/tab_s.png +0 -0
  316. data/glfw-3.3.9.bin.MACOS/docs/html/tab_sd.png +0 -0
  317. data/glfw-3.3.9.bin.MACOS/docs/html/tabs.css +0 -1
  318. data/glfw-3.3.9.bin.MACOS/docs/html/vulkan_8dox.html +0 -81
  319. data/glfw-3.3.9.bin.MACOS/docs/html/vulkan_guide.html +0 -196
  320. data/glfw-3.3.9.bin.MACOS/docs/html/window_8dox.html +0 -81
  321. data/glfw-3.3.9.bin.MACOS/docs/html/window_guide.html +0 -763
  322. data/glfw-3.3.9.bin.MACOS/include/GLFW/glfw3.h +0 -5932
  323. data/glfw-3.3.9.bin.MACOS/include/GLFW/glfw3native.h +0 -634
  324. data/glfw-3.3.9.bin.MACOS/lib-arm64/libglfw3.a +0 -0
  325. data/glfw-3.3.9.bin.MACOS/lib-universal/libglfw.3.dylib +0 -0
  326. data/glfw-3.3.9.bin.MACOS/lib-universal/libglfw3.a +0 -0
  327. data/glfw-3.3.9.bin.MACOS/lib-x86_64/libglfw.3.dylib +0 -0
  328. data/glfw-3.3.9.bin.MACOS/lib-x86_64/libglfw3.a +0 -0
  329. data/glfw-3.4.bin.WIN64/README.md +0 -70
  330. data/glfw-3.4.bin.WIN64/docs/html/bc_s.png +0 -0
  331. data/glfw-3.4.bin.WIN64/docs/html/bc_sd.png +0 -0
  332. data/glfw-3.4.bin.WIN64/docs/html/build_8md.html +0 -81
  333. data/glfw-3.4.bin.WIN64/docs/html/build_guide.html +0 -217
  334. data/glfw-3.4.bin.WIN64/docs/html/closed.png +0 -0
  335. data/glfw-3.4.bin.WIN64/docs/html/compat_8md.html +0 -81
  336. data/glfw-3.4.bin.WIN64/docs/html/compat_guide.html +0 -156
  337. data/glfw-3.4.bin.WIN64/docs/html/compile_8md.html +0 -81
  338. data/glfw-3.4.bin.WIN64/docs/html/compile_guide.html +0 -219
  339. data/glfw-3.4.bin.WIN64/docs/html/context_8md.html +0 -81
  340. data/glfw-3.4.bin.WIN64/docs/html/context_guide.html +0 -258
  341. data/glfw-3.4.bin.WIN64/docs/html/deprecated.html +0 -88
  342. data/glfw-3.4.bin.WIN64/docs/html/dir_13577e2d8b9423099662de029791bd7d.html +0 -93
  343. data/glfw-3.4.bin.WIN64/docs/html/dir_7f92719a7fe62e5b064f87d7a3c220b1.html +0 -95
  344. data/glfw-3.4.bin.WIN64/docs/html/dir_a788ef6c2b1e5b367804e0b6ccfd6f11.html +0 -85
  345. data/glfw-3.4.bin.WIN64/docs/html/dir_b11153cd0f4fd04a7564cc166f482635.html +0 -91
  346. data/glfw-3.4.bin.WIN64/docs/html/doc.svg +0 -12
  347. data/glfw-3.4.bin.WIN64/docs/html/docd.svg +0 -12
  348. data/glfw-3.4.bin.WIN64/docs/html/doxygen.css +0 -1685
  349. data/glfw-3.4.bin.WIN64/docs/html/doxygen.svg +0 -28
  350. data/glfw-3.4.bin.WIN64/docs/html/dynsections.js +0 -192
  351. data/glfw-3.4.bin.WIN64/docs/html/extra.css +0 -2
  352. data/glfw-3.4.bin.WIN64/docs/html/files.html +0 -91
  353. data/glfw-3.4.bin.WIN64/docs/html/folderclosed.svg +0 -11
  354. data/glfw-3.4.bin.WIN64/docs/html/folderclosedd.svg +0 -11
  355. data/glfw-3.4.bin.WIN64/docs/html/folderopen.svg +0 -17
  356. data/glfw-3.4.bin.WIN64/docs/html/folderopend.svg +0 -12
  357. data/glfw-3.4.bin.WIN64/docs/html/glfw3_8h.html +0 -1910
  358. data/glfw-3.4.bin.WIN64/docs/html/glfw3_8h_source.html +0 -1260
  359. data/glfw-3.4.bin.WIN64/docs/html/glfw3native_8h.html +0 -170
  360. data/glfw-3.4.bin.WIN64/docs/html/glfw3native_8h_source.html +0 -306
  361. data/glfw-3.4.bin.WIN64/docs/html/group__buttons.html +0 -282
  362. data/glfw-3.4.bin.WIN64/docs/html/group__context.html +0 -304
  363. data/glfw-3.4.bin.WIN64/docs/html/group__errors.html +0 -384
  364. data/glfw-3.4.bin.WIN64/docs/html/group__gamepad__axes.html +0 -202
  365. data/glfw-3.4.bin.WIN64/docs/html/group__gamepad__buttons.html +0 -410
  366. data/glfw-3.4.bin.WIN64/docs/html/group__hat__state.html +0 -234
  367. data/glfw-3.4.bin.WIN64/docs/html/group__init.html +0 -1015
  368. data/glfw-3.4.bin.WIN64/docs/html/group__input.html +0 -2285
  369. data/glfw-3.4.bin.WIN64/docs/html/group__joysticks.html +0 -362
  370. data/glfw-3.4.bin.WIN64/docs/html/group__keys.html +0 -2034
  371. data/glfw-3.4.bin.WIN64/docs/html/group__mods.html +0 -198
  372. data/glfw-3.4.bin.WIN64/docs/html/group__monitor.html +0 -849
  373. data/glfw-3.4.bin.WIN64/docs/html/group__native.html +0 -837
  374. data/glfw-3.4.bin.WIN64/docs/html/group__shapes.html +0 -337
  375. data/glfw-3.4.bin.WIN64/docs/html/group__vulkan.html +0 -361
  376. data/glfw-3.4.bin.WIN64/docs/html/group__window.html +0 -3608
  377. data/glfw-3.4.bin.WIN64/docs/html/index.html +0 -100
  378. data/glfw-3.4.bin.WIN64/docs/html/input_8md.html +0 -81
  379. data/glfw-3.4.bin.WIN64/docs/html/input_guide.html +0 -576
  380. data/glfw-3.4.bin.WIN64/docs/html/internal_8md.html +0 -81
  381. data/glfw-3.4.bin.WIN64/docs/html/internals_guide.html +0 -135
  382. data/glfw-3.4.bin.WIN64/docs/html/intro_8md.html +0 -81
  383. data/glfw-3.4.bin.WIN64/docs/html/intro_guide.html +0 -429
  384. data/glfw-3.4.bin.WIN64/docs/html/jquery.js +0 -34
  385. data/glfw-3.4.bin.WIN64/docs/html/main_8md.html +0 -81
  386. data/glfw-3.4.bin.WIN64/docs/html/menu.js +0 -136
  387. data/glfw-3.4.bin.WIN64/docs/html/menudata.js +0 -30
  388. data/glfw-3.4.bin.WIN64/docs/html/minus.svg +0 -8
  389. data/glfw-3.4.bin.WIN64/docs/html/minusd.svg +0 -8
  390. data/glfw-3.4.bin.WIN64/docs/html/monitor_8md.html +0 -81
  391. data/glfw-3.4.bin.WIN64/docs/html/monitor_guide.html +0 -228
  392. data/glfw-3.4.bin.WIN64/docs/html/moving_8md.html +0 -81
  393. data/glfw-3.4.bin.WIN64/docs/html/moving_guide.html +0 -360
  394. data/glfw-3.4.bin.WIN64/docs/html/nav_f.png +0 -0
  395. data/glfw-3.4.bin.WIN64/docs/html/nav_fd.png +0 -0
  396. data/glfw-3.4.bin.WIN64/docs/html/nav_g.png +0 -0
  397. data/glfw-3.4.bin.WIN64/docs/html/nav_h.png +0 -0
  398. data/glfw-3.4.bin.WIN64/docs/html/nav_hd.png +0 -0
  399. data/glfw-3.4.bin.WIN64/docs/html/news.html +0 -336
  400. data/glfw-3.4.bin.WIN64/docs/html/news_8md.html +0 -81
  401. data/glfw-3.4.bin.WIN64/docs/html/open.png +0 -0
  402. data/glfw-3.4.bin.WIN64/docs/html/pages.html +0 -99
  403. data/glfw-3.4.bin.WIN64/docs/html/plus.svg +0 -9
  404. data/glfw-3.4.bin.WIN64/docs/html/plusd.svg +0 -9
  405. data/glfw-3.4.bin.WIN64/docs/html/quick_8md.html +0 -81
  406. data/glfw-3.4.bin.WIN64/docs/html/quick_guide.html +0 -406
  407. data/glfw-3.4.bin.WIN64/docs/html/search/all_0.js +0 -4
  408. data/glfw-3.4.bin.WIN64/docs/html/search/all_1.js +0 -4
  409. data/glfw-3.4.bin.WIN64/docs/html/search/all_10.js +0 -13
  410. data/glfw-3.4.bin.WIN64/docs/html/search/all_11.js +0 -11
  411. data/glfw-3.4.bin.WIN64/docs/html/search/all_12.js +0 -26
  412. data/glfw-3.4.bin.WIN64/docs/html/search/all_13.js +0 -51
  413. data/glfw-3.4.bin.WIN64/docs/html/search/all_14.js +0 -22
  414. data/glfw-3.4.bin.WIN64/docs/html/search/all_15.js +0 -35
  415. data/glfw-3.4.bin.WIN64/docs/html/search/all_16.js +0 -29
  416. data/glfw-3.4.bin.WIN64/docs/html/search/all_17.js +0 -8
  417. data/glfw-3.4.bin.WIN64/docs/html/search/all_18.js +0 -44
  418. data/glfw-3.4.bin.WIN64/docs/html/search/all_19.js +0 -60
  419. data/glfw-3.4.bin.WIN64/docs/html/search/all_1a.js +0 -39
  420. data/glfw-3.4.bin.WIN64/docs/html/search/all_1b.js +0 -8
  421. data/glfw-3.4.bin.WIN64/docs/html/search/all_1c.js +0 -32
  422. data/glfw-3.4.bin.WIN64/docs/html/search/all_1d.js +0 -84
  423. data/glfw-3.4.bin.WIN64/docs/html/search/all_1e.js +0 -13
  424. data/glfw-3.4.bin.WIN64/docs/html/search/all_1f.js +0 -4
  425. data/glfw-3.4.bin.WIN64/docs/html/search/all_2.js +0 -5
  426. data/glfw-3.4.bin.WIN64/docs/html/search/all_3.js +0 -4
  427. data/glfw-3.4.bin.WIN64/docs/html/search/all_4.js +0 -4
  428. data/glfw-3.4.bin.WIN64/docs/html/search/all_5.js +0 -4
  429. data/glfw-3.4.bin.WIN64/docs/html/search/all_6.js +0 -4
  430. data/glfw-3.4.bin.WIN64/docs/html/search/all_7.js +0 -58
  431. data/glfw-3.4.bin.WIN64/docs/html/search/all_8.js +0 -21
  432. data/glfw-3.4.bin.WIN64/docs/html/search/all_9.js +0 -82
  433. data/glfw-3.4.bin.WIN64/docs/html/search/all_a.js +0 -20
  434. data/glfw-3.4.bin.WIN64/docs/html/search/all_b.js +0 -26
  435. data/glfw-3.4.bin.WIN64/docs/html/search/all_c.js +0 -35
  436. data/glfw-3.4.bin.WIN64/docs/html/search/all_d.js +0 -555
  437. data/glfw-3.4.bin.WIN64/docs/html/search/all_e.js +0 -23
  438. data/glfw-3.4.bin.WIN64/docs/html/search/all_f.js +0 -40
  439. data/glfw-3.4.bin.WIN64/docs/html/search/classes_0.js +0 -8
  440. data/glfw-3.4.bin.WIN64/docs/html/search/close.svg +0 -18
  441. data/glfw-3.4.bin.WIN64/docs/html/search/defines_0.js +0 -43
  442. data/glfw-3.4.bin.WIN64/docs/html/search/files_0.js +0 -4
  443. data/glfw-3.4.bin.WIN64/docs/html/search/files_1.js +0 -6
  444. data/glfw-3.4.bin.WIN64/docs/html/search/files_2.js +0 -5
  445. data/glfw-3.4.bin.WIN64/docs/html/search/files_3.js +0 -6
  446. data/glfw-3.4.bin.WIN64/docs/html/search/files_4.js +0 -6
  447. data/glfw-3.4.bin.WIN64/docs/html/search/files_5.js +0 -4
  448. data/glfw-3.4.bin.WIN64/docs/html/search/files_6.js +0 -4
  449. data/glfw-3.4.bin.WIN64/docs/html/search/files_7.js +0 -4
  450. data/glfw-3.4.bin.WIN64/docs/html/search/files_8.js +0 -4
  451. data/glfw-3.4.bin.WIN64/docs/html/search/functions_0.js +0 -152
  452. data/glfw-3.4.bin.WIN64/docs/html/search/groups_0.js +0 -6
  453. data/glfw-3.4.bin.WIN64/docs/html/search/groups_1.js +0 -4
  454. data/glfw-3.4.bin.WIN64/docs/html/search/groups_10.js +0 -4
  455. data/glfw-3.4.bin.WIN64/docs/html/search/groups_2.js +0 -6
  456. data/glfw-3.4.bin.WIN64/docs/html/search/groups_3.js +0 -5
  457. data/glfw-3.4.bin.WIN64/docs/html/search/groups_4.js +0 -4
  458. data/glfw-3.4.bin.WIN64/docs/html/search/groups_5.js +0 -5
  459. data/glfw-3.4.bin.WIN64/docs/html/search/groups_6.js +0 -4
  460. data/glfw-3.4.bin.WIN64/docs/html/search/groups_7.js +0 -5
  461. data/glfw-3.4.bin.WIN64/docs/html/search/groups_8.js +0 -5
  462. data/glfw-3.4.bin.WIN64/docs/html/search/groups_9.js +0 -6
  463. data/glfw-3.4.bin.WIN64/docs/html/search/groups_a.js +0 -6
  464. data/glfw-3.4.bin.WIN64/docs/html/search/groups_b.js +0 -4
  465. data/glfw-3.4.bin.WIN64/docs/html/search/groups_c.js +0 -4
  466. data/glfw-3.4.bin.WIN64/docs/html/search/groups_d.js +0 -7
  467. data/glfw-3.4.bin.WIN64/docs/html/search/groups_e.js +0 -4
  468. data/glfw-3.4.bin.WIN64/docs/html/search/groups_f.js +0 -5
  469. data/glfw-3.4.bin.WIN64/docs/html/search/mag.svg +0 -24
  470. data/glfw-3.4.bin.WIN64/docs/html/search/mag_d.svg +0 -24
  471. data/glfw-3.4.bin.WIN64/docs/html/search/mag_sel.svg +0 -31
  472. data/glfw-3.4.bin.WIN64/docs/html/search/mag_seld.svg +0 -31
  473. data/glfw-3.4.bin.WIN64/docs/html/search/pages_0.js +0 -4
  474. data/glfw-3.4.bin.WIN64/docs/html/search/pages_1.js +0 -5
  475. data/glfw-3.4.bin.WIN64/docs/html/search/pages_10.js +0 -5
  476. data/glfw-3.4.bin.WIN64/docs/html/search/pages_11.js +0 -4
  477. data/glfw-3.4.bin.WIN64/docs/html/search/pages_2.js +0 -4
  478. data/glfw-3.4.bin.WIN64/docs/html/search/pages_3.js +0 -5
  479. data/glfw-3.4.bin.WIN64/docs/html/search/pages_4.js +0 -4
  480. data/glfw-3.4.bin.WIN64/docs/html/search/pages_5.js +0 -6
  481. data/glfw-3.4.bin.WIN64/docs/html/search/pages_6.js +0 -4
  482. data/glfw-3.4.bin.WIN64/docs/html/search/pages_7.js +0 -5
  483. data/glfw-3.4.bin.WIN64/docs/html/search/pages_8.js +0 -7
  484. data/glfw-3.4.bin.WIN64/docs/html/search/pages_9.js +0 -7
  485. data/glfw-3.4.bin.WIN64/docs/html/search/pages_a.js +0 -4
  486. data/glfw-3.4.bin.WIN64/docs/html/search/pages_b.js +0 -5
  487. data/glfw-3.4.bin.WIN64/docs/html/search/pages_c.js +0 -4
  488. data/glfw-3.4.bin.WIN64/docs/html/search/pages_d.js +0 -4
  489. data/glfw-3.4.bin.WIN64/docs/html/search/pages_e.js +0 -6
  490. data/glfw-3.4.bin.WIN64/docs/html/search/pages_f.js +0 -6
  491. data/glfw-3.4.bin.WIN64/docs/html/search/search.css +0 -291
  492. data/glfw-3.4.bin.WIN64/docs/html/search/search.js +0 -840
  493. data/glfw-3.4.bin.WIN64/docs/html/search/searchdata.js +0 -39
  494. data/glfw-3.4.bin.WIN64/docs/html/search/typedefs_0.js +0 -36
  495. data/glfw-3.4.bin.WIN64/docs/html/search/variables_0.js +0 -5
  496. data/glfw-3.4.bin.WIN64/docs/html/search/variables_1.js +0 -6
  497. data/glfw-3.4.bin.WIN64/docs/html/search/variables_2.js +0 -4
  498. data/glfw-3.4.bin.WIN64/docs/html/search/variables_3.js +0 -5
  499. data/glfw-3.4.bin.WIN64/docs/html/search/variables_4.js +0 -4
  500. data/glfw-3.4.bin.WIN64/docs/html/search/variables_5.js +0 -4
  501. data/glfw-3.4.bin.WIN64/docs/html/search/variables_6.js +0 -7
  502. data/glfw-3.4.bin.WIN64/docs/html/search/variables_7.js +0 -4
  503. data/glfw-3.4.bin.WIN64/docs/html/search/variables_8.js +0 -4
  504. data/glfw-3.4.bin.WIN64/docs/html/search/variables_9.js +0 -4
  505. data/glfw-3.4.bin.WIN64/docs/html/spaces.svg +0 -877
  506. data/glfw-3.4.bin.WIN64/docs/html/splitbar.png +0 -0
  507. data/glfw-3.4.bin.WIN64/docs/html/splitbard.png +0 -0
  508. data/glfw-3.4.bin.WIN64/docs/html/struct_g_l_f_wallocator.html +0 -168
  509. data/glfw-3.4.bin.WIN64/docs/html/struct_g_l_f_wgamepadstate.html +0 -134
  510. data/glfw-3.4.bin.WIN64/docs/html/struct_g_l_f_wgammaramp.html +0 -170
  511. data/glfw-3.4.bin.WIN64/docs/html/struct_g_l_f_wimage.html +0 -151
  512. data/glfw-3.4.bin.WIN64/docs/html/struct_g_l_f_wvidmode.html +0 -204
  513. data/glfw-3.4.bin.WIN64/docs/html/sync_off.png +0 -0
  514. data/glfw-3.4.bin.WIN64/docs/html/sync_on.png +0 -0
  515. data/glfw-3.4.bin.WIN64/docs/html/tab_a.png +0 -0
  516. data/glfw-3.4.bin.WIN64/docs/html/tab_ad.png +0 -0
  517. data/glfw-3.4.bin.WIN64/docs/html/tab_b.png +0 -0
  518. data/glfw-3.4.bin.WIN64/docs/html/tab_bd.png +0 -0
  519. data/glfw-3.4.bin.WIN64/docs/html/tab_h.png +0 -0
  520. data/glfw-3.4.bin.WIN64/docs/html/tab_hd.png +0 -0
  521. data/glfw-3.4.bin.WIN64/docs/html/tab_s.png +0 -0
  522. data/glfw-3.4.bin.WIN64/docs/html/tab_sd.png +0 -0
  523. data/glfw-3.4.bin.WIN64/docs/html/tabs.css +0 -1
  524. data/glfw-3.4.bin.WIN64/docs/html/topics.html +0 -101
  525. data/glfw-3.4.bin.WIN64/docs/html/vulkan_8md.html +0 -81
  526. data/glfw-3.4.bin.WIN64/docs/html/vulkan_guide.html +0 -206
  527. data/glfw-3.4.bin.WIN64/docs/html/window_8md.html +0 -81
  528. data/glfw-3.4.bin.WIN64/docs/html/window_guide.html +0 -806
  529. data/glfw-3.4.bin.WIN64/include/GLFW/glfw3.h +0 -6547
  530. data/glfw-3.4.bin.WIN64/include/GLFW/glfw3native.h +0 -663
  531. data/glfw-3.4.bin.WIN64/lib-mingw-w64/glfw3.dll +0 -0
  532. data/glfw-3.4.bin.WIN64/lib-mingw-w64/libglfw3.a +0 -0
  533. data/glfw-3.4.bin.WIN64/lib-mingw-w64/libglfw3dll.a +0 -0
  534. data/glfw-3.4.bin.WIN64/lib-static-ucrt/glfw3dll.lib +0 -0
  535. data/glfw-3.4.bin.WIN64/lib-vc2013/glfw3.dll +0 -0
  536. data/glfw-3.4.bin.WIN64/lib-vc2013/glfw3.lib +0 -0
  537. data/glfw-3.4.bin.WIN64/lib-vc2013/glfw3_mt.lib +0 -0
  538. data/glfw-3.4.bin.WIN64/lib-vc2013/glfw3dll.lib +0 -0
  539. data/glfw-3.4.bin.WIN64/lib-vc2015/glfw3.dll +0 -0
  540. data/glfw-3.4.bin.WIN64/lib-vc2015/glfw3.lib +0 -0
  541. data/glfw-3.4.bin.WIN64/lib-vc2015/glfw3_mt.lib +0 -0
  542. data/glfw-3.4.bin.WIN64/lib-vc2015/glfw3dll.lib +0 -0
  543. data/glfw-3.4.bin.WIN64/lib-vc2017/glfw3.dll +0 -0
  544. data/glfw-3.4.bin.WIN64/lib-vc2017/glfw3.lib +0 -0
  545. data/glfw-3.4.bin.WIN64/lib-vc2017/glfw3_mt.lib +0 -0
  546. data/glfw-3.4.bin.WIN64/lib-vc2017/glfw3dll.lib +0 -0
  547. data/glfw-3.4.bin.WIN64/lib-vc2019/glfw3.dll +0 -0
  548. data/glfw-3.4.bin.WIN64/lib-vc2019/glfw3.lib +0 -0
  549. data/glfw-3.4.bin.WIN64/lib-vc2019/glfw3_mt.lib +0 -0
  550. data/glfw-3.4.bin.WIN64/lib-vc2019/glfw3dll.lib +0 -0
  551. data/glfw-3.4.bin.WIN64/lib-vc2022/glfw3.dll +0 -0
  552. data/glfw-3.4.bin.WIN64/lib-vc2022/glfw3.lib +0 -0
  553. data/glfw-3.4.bin.WIN64/lib-vc2022/glfw3_mt.lib +0 -0
  554. data/glfw-3.4.bin.WIN64/lib-vc2022/glfw3dll.lib +0 -0
  555. data/lib/engine/components/font_renderer.rb +0 -134
  556. data/lib/engine/components/mesh_renderer.rb +0 -31
  557. data/lib/engine/components/sprite_renderer.rb +0 -141
  558. data/lib/engine/components/ui_font_renderer.rb +0 -140
  559. data/lib/engine/components/ui_sprite_renderer.rb +0 -101
  560. data/lib/engine/shaders/skybox_frag.glsl +0 -12
  561. /data/{glfw-3.3.9.bin.MACOS → vendor/glfw-3.3.9.bin.MACOS}/LICENSE.md +0 -0
  562. /data/{glfw-3.3.9.bin.MACOS → vendor/glfw-3.3.9.bin.MACOS}/lib-arm64/libglfw.3.dylib +0 -0
  563. /data/{glfw-3.4.bin.WIN64 → vendor/glfw-3.4.bin.WIN64}/LICENSE.md +0 -0
  564. /data/{glfw-3.4.bin.WIN64 → vendor/glfw-3.4.bin.WIN64}/lib-static-ucrt/glfw3.dll +0 -0
@@ -0,0 +1,80 @@
1
+ // Spot light structure and calculation functions
2
+
3
+ #include "lighting_common.glsl"
4
+
5
+ struct SpotLight {
6
+ vec3 position;
7
+ vec3 direction;
8
+ float sqrRange;
9
+ vec3 colour;
10
+ float innerCutoff;
11
+ float outerCutoff;
12
+ mat4 lightSpaceMatrix;
13
+ bool castsShadows;
14
+ float shadowNear;
15
+ float shadowFar;
16
+ };
17
+ #define NR_SPOT_LIGHTS 8
18
+ #define NR_SHADOW_CASTING_SPOT_LIGHTS 4
19
+ uniform SpotLight spotLights[NR_SPOT_LIGHTS];
20
+ uniform sampler2DArray spotShadowMaps;
21
+
22
+ // Convert non-linear depth buffer value to linear depth
23
+ float LinearizeDepth(float depth, float near, float far)
24
+ {
25
+ float z = depth * 2.0 - 1.0; // back to NDC
26
+ return (2.0 * near * far) / (far + near - z * (far - near));
27
+ }
28
+
29
+ float CalcSpotShadow(SpotLight light, int lightIndex, vec3 fragPos)
30
+ {
31
+ if (!light.castsShadows || lightIndex >= NR_SHADOW_CASTING_SPOT_LIGHTS) {
32
+ return 0.0;
33
+ }
34
+
35
+ vec4 fragPosLightSpace = light.lightSpaceMatrix * vec4(fragPos, 1.0);
36
+
37
+ // Point is behind the light
38
+ if (fragPosLightSpace.w <= 0.0) {
39
+ return 0.0;
40
+ }
41
+
42
+ vec3 projCoords = fragPosLightSpace.xyz / fragPosLightSpace.w;
43
+ projCoords = projCoords * 0.5 + 0.5;
44
+
45
+ // Fragment is outside the shadow map frustum
46
+ if (projCoords.z > 1.0 || projCoords.z < 0.0 ||
47
+ projCoords.x < 0.0 || projCoords.x > 1.0 ||
48
+ projCoords.y < 0.0 || projCoords.y > 1.0) {
49
+ return 0.0;
50
+ }
51
+
52
+ float closestDepth = texture(spotShadowMaps, vec3(projCoords.xy, float(lightIndex))).r;
53
+ float currentDepth = projCoords.z;
54
+
55
+ // Convert to linear depth for more stable comparison
56
+ float near = light.shadowNear;
57
+ float far = light.shadowFar;
58
+ float linearClosest = LinearizeDepth(closestDepth, near, far);
59
+ float linearCurrent = LinearizeDepth(currentDepth, near, far);
60
+
61
+ float bias = 0.5; // bias in world units
62
+ return linearCurrent - bias > linearClosest ? 1.0 : 0.0;
63
+ }
64
+
65
+ vec3 CalcSpotLight(SpotLight light, int lightIndex, vec3 normal, vec3 fragPos, vec3 viewDir, float diffuseStrength, float specularStrength, float specularPower)
66
+ {
67
+ vec3 lightOffset = light.position - fragPos;
68
+ float sqrDistance = dot(lightOffset, lightOffset);
69
+ vec3 lightDir = normalize(lightOffset);
70
+
71
+ float theta = dot(lightDir, -light.direction);
72
+ float epsilon = light.innerCutoff - light.outerCutoff;
73
+ float intensity = clamp((theta - light.outerCutoff) / epsilon, 0.0, 1.0);
74
+
75
+ float shadow = CalcSpotShadow(light, lightIndex, fragPos);
76
+ float attenuation = light.sqrRange / sqrDistance;
77
+
78
+ vec2 phong = CalcPhong(normal, lightDir, viewDir, diffuseStrength, specularStrength, specularPower);
79
+ return light.colour * (phong.x + phong.y) * attenuation * intensity * (1.0 - shadow);
80
+ }
@@ -1,102 +1,53 @@
1
- #version 330 core
1
+ #version 400 core
2
+
3
+ layout(location = 0) out vec4 FragColour;
4
+ layout(location = 1) out vec4 normalRoughness;
2
5
 
3
6
  in vec2 TexCoord;
4
7
  in vec3 Normal;
5
8
  in vec3 Tangent;
6
9
  in vec3 FragPos;
7
10
 
8
- out vec4 color;
9
-
10
- uniform sampler2D image;
11
- uniform sampler2D normalMap;
11
+ uniform sampler2D image; // @fallback white
12
+ uniform sampler2D normalMap; // @fallback normal
12
13
  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
14
 
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;
15
+ // Material properties with sensible defaults
16
+ uniform vec3 baseColour = vec3(1.0, 1.0, 1.0);
17
+ uniform float diffuseStrength = 0.5;
18
+ uniform float specularStrength = 0.7;
19
+ uniform float specularPower = 32.0;
20
+ uniform float roughness = 0.5;
60
21
 
61
- return light.colour * (diffuse + specular);
62
- }
22
+ #include "lighting/lighting.glsl"
63
23
 
64
24
  void main()
65
25
  {
26
+ // Sample texture and apply base colour tint
27
+ // (nil textures → white 1x1, baseColour defaults to white in Material)
28
+ vec4 texSample = texture(image, TexCoord);
29
+ vec3 colour = texSample.rgb * baseColour;
30
+
31
+ // Calculate world-space normal (with normal mapping if available)
66
32
  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
33
  vec3 n = normalize(Normal);
72
34
  vec3 t = normalize(Tangent);
73
35
  vec3 norm = n;
74
- if ( length(t) > 0.0 )
75
- {
36
+
37
+ // Apply normal map if valid tangent exists
38
+ if (length(t) > 0.0 && (sampledNormal.r + sampledNormal.g + sampledNormal.b) > 0.0) {
76
39
  vec3 b = cross(t, n);
77
40
  mat3 TBN = mat3(t, b, n);
78
41
  norm = normalize(TBN * normalize(sampledNormal));
79
42
  }
43
+
44
+ // Calculate lighting
80
45
  vec3 viewDir = normalize(cameraPos - FragPos);
81
46
 
82
- vec3 result = ambientLight;
47
+ vec3 result = CalcAllLights(norm, FragPos, viewDir, diffuseStrength, specularStrength, specularPower);
83
48
 
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
- }
49
+ FragColour = vec4(colour * result, texSample.a);
99
50
 
100
- vec4 tex = texture(image, TexCoord);
101
- color = tex * vec4(result, 1.0);
51
+ // Output world-space normal (encoded to 0-1) and roughness in alpha
52
+ normalRoughness = vec4(norm * 0.5 + 0.5, roughness);
102
53
  }
@@ -1,25 +1,25 @@
1
- #version 330 core
1
+ #version 400 core
2
2
 
3
- // <vec2 position, vec2 texCoords, vec3 normal, vec3 tangent>
4
3
  layout (location = 0) in vec3 vertex;
5
4
  layout (location = 1) in vec2 texCoord;
6
5
  layout (location = 2) in vec3 normal;
7
6
  layout (location = 3) in vec3 tangent;
8
7
  layout (location = 7) in mat4 model;
9
8
 
9
+ uniform mat4 camera;
10
+
10
11
  out vec2 TexCoord;
11
12
  out vec3 Normal;
12
13
  out vec3 Tangent;
13
14
  out vec3 FragPos;
14
15
 
15
- uniform mat4 camera;
16
-
17
16
  void main()
18
17
  {
18
+ gl_Position = camera * model * vec4(vertex, 1.0);
19
19
  TexCoord = texCoord;
20
+ // Transform normal and tangent to world space (proper normal matrix for non-uniform scale)
20
21
  mat3 normalMatrix = mat3(transpose(inverse(model)));
21
22
  Normal = normalMatrix * normal;
22
23
  Tangent = normalMatrix * tangent;
23
24
  FragPos = vec3(model * vec4(vertex, 1.0));
24
- gl_Position = camera * model * vec4(vertex, 1.0);
25
25
  }
@@ -0,0 +1,12 @@
1
+ #version 330 core
2
+
3
+ in vec3 FragPos;
4
+
5
+ uniform vec3 lightPos;
6
+ uniform float farPlane;
7
+
8
+ void main()
9
+ {
10
+ float dist = length(FragPos - lightPos);
11
+ gl_FragDepth = dist / farPlane;
12
+ }
@@ -0,0 +1,15 @@
1
+ #version 330 core
2
+
3
+ layout (location = 0) in vec3 vertex;
4
+ layout (location = 7) in mat4 model;
5
+
6
+ uniform mat4 lightSpaceMatrix;
7
+
8
+ out vec3 FragPos;
9
+
10
+ void main()
11
+ {
12
+ vec4 worldPos = model * vec4(vertex, 1.0);
13
+ FragPos = worldPos.xyz;
14
+ gl_Position = lightSpaceMatrix * worldPos;
15
+ }
@@ -0,0 +1,25 @@
1
+ #version 330 core
2
+
3
+ in vec2 TexCoords;
4
+ out vec4 color;
5
+
6
+ uniform sampler2D screenTexture;
7
+ uniform vec2 direction; // (1,0) for horizontal, (0,1) for vertical
8
+ uniform float blurScale; // multiplier for sample spacing
9
+
10
+ // 9-tap gaussian weights
11
+ const float weights[5] = float[](0.227027, 0.1945946, 0.1216216, 0.054054, 0.016216);
12
+
13
+ void main()
14
+ {
15
+ vec2 texelSize = 1.0 / textureSize(screenTexture, 0);
16
+ vec3 result = texture(screenTexture, TexCoords).rgb * weights[0];
17
+
18
+ for (int i = 1; i < 5; i++) {
19
+ vec2 offset = direction * texelSize * float(i) * blurScale;
20
+ result += texture(screenTexture, TexCoords + offset).rgb * weights[i];
21
+ result += texture(screenTexture, TexCoords - offset).rgb * weights[i];
22
+ }
23
+
24
+ color = vec4(result, 1.0);
25
+ }
@@ -0,0 +1,19 @@
1
+ #version 330 core
2
+
3
+ in vec2 TexCoords;
4
+ out vec4 color;
5
+
6
+ uniform sampler2D screenTexture; // original image
7
+ uniform sampler2D bloomTexture; // blurred bright pixels
8
+ uniform float intensity;
9
+
10
+ void main()
11
+ {
12
+ vec3 original = texture(screenTexture, TexCoords).rgb;
13
+ vec3 bloom = texture(bloomTexture, TexCoords).rgb;
14
+
15
+ // Debug: output red to verify shader runs
16
+ // color = vec4(1.0, 0.0, 0.0, 1.0);
17
+
18
+ color = vec4(original + bloom * intensity, 1.0);
19
+ }
@@ -0,0 +1,19 @@
1
+ #version 330 core
2
+
3
+ in vec2 TexCoords;
4
+ out vec4 color;
5
+
6
+ uniform sampler2D screenTexture;
7
+ uniform float threshold;
8
+
9
+ void main()
10
+ {
11
+ vec3 texColor = texture(screenTexture, TexCoords).rgb;
12
+ float brightness = dot(texColor, vec3(0.2126, 0.7152, 0.0722));
13
+
14
+ if (brightness > threshold) {
15
+ color = vec4(texColor, 1.0);
16
+ } else {
17
+ color = vec4(0.0, 0.0, 0.0, 1.0);
18
+ }
19
+ }
@@ -0,0 +1,21 @@
1
+ #version 330 core
2
+
3
+ in vec2 TexCoords;
4
+ out vec4 color;
5
+
6
+ uniform sampler2D screenTexture;
7
+ uniform sampler2D normalTexture;
8
+
9
+ void main()
10
+ {
11
+ vec4 normalRough = texture(normalTexture, TexCoords);
12
+ vec3 normal = normalRough.rgb; // already 0-1 encoded
13
+ float roughness = normalRough.a;
14
+
15
+ // Output: RGB = normal colors (visualizes surface orientation)
16
+ // Blue = up, Green = forward, Red = right
17
+ color = vec4(normal, 1.0);
18
+
19
+ // Uncomment to visualize roughness instead:
20
+ // color = vec4(vec3(roughness), 1.0);
21
+ }
@@ -0,0 +1,17 @@
1
+ #version 330 core
2
+
3
+ in vec2 TexCoords;
4
+ out vec4 color;
5
+
6
+ uniform sampler2D screenTexture;
7
+ uniform sampler2D depthTexture;
8
+
9
+ void main()
10
+ {
11
+ float depth = texture(depthTexture, TexCoords).r;
12
+ // Visualize depth (linearize for better visualization)
13
+ float near = 0.1;
14
+ float far = 100.0;
15
+ float linearDepth = (2.0 * near) / (far + near - depth * (far - near));
16
+ color = vec4(vec3(linearDepth), 1.0);
17
+ }
@@ -0,0 +1,52 @@
1
+ #version 330 core
2
+
3
+ in vec2 TexCoords;
4
+ out vec4 color;
5
+
6
+ uniform sampler2D screenTexture;
7
+ uniform sampler2D depthTexture;
8
+ uniform vec2 direction; // (1,0) horizontal, (0,1) vertical
9
+ uniform float focusDistance;
10
+ uniform float focusRange;
11
+ uniform float blurAmount;
12
+ uniform float nearPlane;
13
+ uniform float farPlane;
14
+
15
+ float linearizeDepth(float d) {
16
+ return nearPlane * farPlane / (farPlane - d * (farPlane - nearPlane));
17
+ }
18
+
19
+ float calcCoC(vec2 uv) {
20
+ float depth = texture(depthTexture, uv).r;
21
+ float linear = linearizeDepth(depth);
22
+ float coc = max(0.0, linear - focusDistance) / focusRange;
23
+ return clamp(coc, 0.0, 1.0) * blurAmount;
24
+ }
25
+
26
+ void main()
27
+ {
28
+ float centerCoC = calcCoC(TexCoords);
29
+
30
+ // Early out for sharp pixels
31
+ if (centerCoC < 0.01) {
32
+ color = texture(screenTexture, TexCoords);
33
+ return;
34
+ }
35
+
36
+ vec2 texelSize = 1.0 / textureSize(screenTexture, 0);
37
+ vec3 result = texture(screenTexture, TexCoords).rgb;
38
+ float totalWeight = 1.0;
39
+
40
+ int samples = int(centerCoC * 4.0) + 1;
41
+
42
+ for (int i = 1; i <= samples; i++) {
43
+ vec2 offset = direction * texelSize * float(i) * centerCoC;
44
+
45
+ // Sample both directions
46
+ result += texture(screenTexture, TexCoords + offset).rgb;
47
+ result += texture(screenTexture, TexCoords - offset).rgb;
48
+ totalWeight += 2.0;
49
+ }
50
+
51
+ color = vec4(result / totalWeight, 1.0);
52
+ }
@@ -0,0 +1,29 @@
1
+ #version 330 core
2
+
3
+ in vec2 TexCoords;
4
+ out vec4 FragColor;
5
+
6
+ uniform sampler2D screenTexture;
7
+ uniform sampler2D depthTexture;
8
+ uniform samplerCube skyboxCubemap;
9
+ uniform mat4 inverseVP;
10
+ uniform vec3 cameraPos;
11
+
12
+ void main()
13
+ {
14
+ float depth = texture(depthTexture, TexCoords).r;
15
+
16
+ // If depth < 1.0, this is geometry - keep existing color
17
+ // Use tight threshold since depth buffer clears to exactly 1.0
18
+ if (depth < 0.99999) {
19
+ FragColor = texture(screenTexture, TexCoords);
20
+ return;
21
+ }
22
+
23
+ // Sky pixel: reconstruct view direction and sample cubemap
24
+ vec4 ndc = vec4(TexCoords * 2.0 - 1.0, 1.0, 1.0);
25
+ vec4 worldPos = inverseVP * ndc;
26
+ vec3 viewDir = normalize(worldPos.xyz / worldPos.w - cameraPos);
27
+
28
+ FragColor = texture(skyboxCubemap, viewDir);
29
+ }
@@ -0,0 +1,50 @@
1
+ #version 330 core
2
+
3
+ in vec2 TexCoords;
4
+ out vec4 FragColor;
5
+
6
+ uniform sampler2D ssaoTexture;
7
+ uniform sampler2D depthTexture;
8
+ uniform int blurSize;
9
+ uniform float depthThreshold;
10
+
11
+ float linearizeDepth(float d, float near, float far) {
12
+ return near * far / (far - d * (far - near));
13
+ }
14
+
15
+ void main() {
16
+ vec2 texelSize = 1.0 / vec2(textureSize(ssaoTexture, 0));
17
+ float centerDepth = texture(depthTexture, TexCoords).r;
18
+
19
+ // Skip skybox
20
+ if (centerDepth >= 1.0) {
21
+ FragColor = vec4(1.0);
22
+ return;
23
+ }
24
+
25
+ float result = 0.0;
26
+ float weightSum = 0.0;
27
+
28
+ for (int x = -blurSize; x <= blurSize; x++) {
29
+ for (int y = -blurSize; y <= blurSize; y++) {
30
+ vec2 offset = vec2(float(x), float(y)) * texelSize;
31
+ vec2 sampleCoord = TexCoords + offset;
32
+
33
+ float sampleDepth = texture(depthTexture, sampleCoord).r;
34
+
35
+ // Edge-aware: reduce weight for samples with very different depth
36
+ float depthDiff = abs(centerDepth - sampleDepth);
37
+ float depthWeight = 1.0 / (1.0 + depthDiff * depthThreshold);
38
+
39
+ // Spatial weight (simple box for now, could use gaussian)
40
+ float spatialWeight = 1.0;
41
+
42
+ float weight = depthWeight * spatialWeight;
43
+ result += texture(ssaoTexture, sampleCoord).r * weight;
44
+ weightSum += weight;
45
+ }
46
+ }
47
+
48
+ float ao = result / weightSum;
49
+ FragColor = vec4(ao, ao, ao, 1.0);
50
+ }
@@ -0,0 +1,15 @@
1
+ #version 330 core
2
+
3
+ in vec2 TexCoords;
4
+ out vec4 FragColor;
5
+
6
+ uniform sampler2D screenTexture;
7
+ uniform sampler2D ssaoTexture;
8
+
9
+ void main() {
10
+ vec4 sceneColor = texture(screenTexture, TexCoords);
11
+ float ao = texture(ssaoTexture, TexCoords).r;
12
+
13
+ // Multiply scene color by ambient occlusion
14
+ FragColor = vec4(sceneColor.rgb * ao, sceneColor.a);
15
+ }
@@ -0,0 +1,99 @@
1
+ #version 330 core
2
+
3
+ in vec2 TexCoords;
4
+ out vec4 FragColor;
5
+
6
+ uniform sampler2D depthTexture;
7
+ uniform sampler2D normalTexture;
8
+ uniform sampler2D noiseTexture;
9
+
10
+ uniform vec3 samples[64];
11
+ uniform int kernelSize;
12
+ uniform float radius;
13
+ uniform float bias;
14
+ uniform float power;
15
+
16
+ uniform mat4 projection;
17
+ uniform mat4 view;
18
+ uniform mat4 inverseVP;
19
+ uniform float nearPlane;
20
+ uniform float farPlane;
21
+ uniform vec2 noiseScale;
22
+
23
+ float linearizeDepth(float d) {
24
+ return nearPlane * farPlane / (farPlane - d * (farPlane - nearPlane));
25
+ }
26
+
27
+ vec3 viewPosFromDepth(vec2 uv, float depth) {
28
+ // Reconstruct world position from depth
29
+ vec4 ndc = vec4(uv * 2.0 - 1.0, depth * 2.0 - 1.0, 1.0);
30
+ vec4 world = inverseVP * ndc;
31
+ vec3 worldPos = world.xyz / world.w;
32
+ // Transform to view space
33
+ return (view * vec4(worldPos, 1.0)).xyz;
34
+ }
35
+
36
+ void main() {
37
+ float depth = texture(depthTexture, TexCoords).r;
38
+
39
+ // Skip skybox pixels
40
+ if (depth >= 1.0) {
41
+ FragColor = vec4(1.0);
42
+ return;
43
+ }
44
+
45
+ // Get view-space position
46
+ vec3 fragPos = viewPosFromDepth(TexCoords, depth);
47
+
48
+ // Get world normal and transform to view space
49
+ vec4 normalRough = texture(normalTexture, TexCoords);
50
+ vec3 worldNormal = normalize(normalRough.rgb * 2.0 - 1.0);
51
+ vec3 normal = normalize((view * vec4(worldNormal, 0.0)).xyz);
52
+
53
+ // Get random rotation vector from noise texture
54
+ vec3 randomVec = texture(noiseTexture, TexCoords * noiseScale).xyz;
55
+
56
+ // Create TBN matrix (Gram-Schmidt process)
57
+ vec3 tangent = normalize(randomVec - normal * dot(randomVec, normal));
58
+ vec3 bitangent = cross(normal, tangent);
59
+ mat3 TBN = mat3(tangent, bitangent, normal);
60
+
61
+ // Sample hemisphere and accumulate occlusion
62
+ float occlusion = 0.0;
63
+ for (int i = 0; i < kernelSize; i++) {
64
+ // Transform sample from tangent space to view space
65
+ vec3 samplePos = TBN * samples[i];
66
+ samplePos = fragPos + samplePos * radius;
67
+
68
+ // Project sample to screen space
69
+ vec4 offset = projection * vec4(samplePos, 1.0);
70
+ offset.xyz /= offset.w;
71
+ offset.xyz = offset.xyz * 0.5 + 0.5;
72
+
73
+ // Sample depth at this screen position
74
+ float sampleDepth = texture(depthTexture, offset.xy).r;
75
+
76
+ // Skip if sample is outside screen
77
+ if (offset.x < 0.0 || offset.x > 1.0 || offset.y < 0.0 || offset.y > 1.0) {
78
+ continue;
79
+ }
80
+
81
+ // Skip skybox samples
82
+ if (sampleDepth >= 1.0) {
83
+ continue;
84
+ }
85
+
86
+ // Get view-space depth of the geometry at this sample
87
+ float geometryDepth = -linearizeDepth(sampleDepth);
88
+
89
+ // Range check to avoid occlusion from distant objects
90
+ float rangeCheck = smoothstep(0.0, 1.0, radius / abs(fragPos.z - geometryDepth));
91
+
92
+ // Compare depths: if geometry is in front of sample, it's occluded
93
+ occlusion += (geometryDepth >= samplePos.z + bias ? 1.0 : 0.0) * rangeCheck;
94
+ }
95
+
96
+ occlusion = 1.0 - (occlusion / float(kernelSize));
97
+ float ao = pow(occlusion, power);
98
+ FragColor = vec4(ao, ao, ao, 1.0);
99
+ }
@@ -0,0 +1,16 @@
1
+ #version 330 core
2
+
3
+ in vec2 TexCoords;
4
+ out vec4 FragColor;
5
+
6
+ uniform sampler2D screenTexture;
7
+ uniform sampler2D ssrTexture;
8
+
9
+ void main() {
10
+ vec4 sceneColor = texture(screenTexture, TexCoords);
11
+ vec4 ssr = texture(ssrTexture, TexCoords);
12
+
13
+ // ssr.rgb = reflection color, ssr.a = reflectivity
14
+ vec3 finalColor = mix(sceneColor.rgb, ssr.rgb, ssr.a);
15
+ FragColor = vec4(finalColor, sceneColor.a);
16
+ }