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.
- checksums.yaml +4 -4
- data/README.md +22 -0
- data/bin/build.bash +1 -1
- data/bin/import +11 -1
- data/ext/gl_native/extconf.rb +20 -0
- data/ext/gl_native/gl_native.c +563 -0
- data/ext/glfw_native/extconf.rb +18 -0
- data/ext/glfw_native/glfw_native.c +451 -0
- data/lib/engine/assets/_imported/cube.index_data +36 -0
- data/lib/engine/assets/_imported/cube.vertex_data +720 -0
- data/lib/engine/assets/_imported/plane.index_data +6 -0
- data/lib/engine/assets/_imported/plane.vertex_data +120 -0
- data/lib/engine/assets/_imported/sphere.index_data +2880 -0
- data/lib/engine/assets/_imported/sphere.vertex_data +57600 -0
- data/lib/engine/assets/cube.obj +46 -0
- data/lib/engine/assets/plane.obj +16 -0
- data/lib/engine/assets/sphere.obj +2488 -0
- data/lib/engine/component.rb +2 -0
- data/lib/engine/components/audio_source.rb +6 -4
- data/lib/engine/components/direction_light.rb +83 -4
- data/lib/engine/components/orthographic_camera.rb +31 -25
- data/lib/engine/components/perspective_camera.rb +35 -12
- data/lib/engine/components/point_light.rb +61 -5
- data/lib/engine/components/renderers/font_renderer.rb +19 -0
- data/lib/engine/components/renderers/font_renderer_base.rb +134 -0
- data/lib/engine/components/renderers/mesh_renderer.rb +41 -0
- data/lib/engine/components/renderers/sprite_renderer.rb +46 -0
- data/lib/engine/components/spot_light.rb +90 -0
- data/lib/engine/components/sprite_animator.rb +42 -0
- data/lib/engine/components/ui/flex/layout.rb +94 -0
- data/lib/engine/components/ui/flex/pack_layout.rb +65 -0
- data/lib/engine/components/ui/flex/stretch_layout.rb +52 -0
- data/lib/engine/components/ui/flex.rb +60 -0
- data/lib/engine/components/ui/font_renderer.rb +57 -0
- data/lib/engine/components/ui/rect.rb +117 -0
- data/lib/engine/components/ui/sprite_clickbox.rb +47 -0
- data/lib/engine/components/ui/sprite_renderer.rb +117 -0
- data/lib/engine/compute_shader.rb +14 -0
- data/lib/engine/compute_texture.rb +13 -0
- data/lib/engine/debugging.rb +4 -4
- data/lib/engine/engine.rb +8 -12
- data/lib/engine/font.rb +29 -4
- data/lib/engine/game_object.rb +121 -49
- data/lib/engine/gl.rb +439 -0
- data/lib/engine/glfw.rb +151 -0
- data/lib/engine/input.rb +115 -7
- data/lib/engine/material.rb +146 -11
- data/lib/engine/matrix_helpers.rb +38 -0
- data/lib/engine/mesh.rb +41 -16
- data/lib/engine/metal/compute_shader.rb +118 -0
- data/lib/engine/metal/compute_texture.rb +176 -0
- data/lib/engine/metal/device.rb +98 -0
- data/lib/engine/metal/metal_bindings.rb +126 -0
- data/lib/engine/opengl/compute_shader.rb +77 -0
- data/lib/engine/opengl/compute_texture.rb +31 -0
- data/lib/engine/physics/components/rigidbody.rb +23 -20
- data/lib/engine/physics/components/sphere_collider.rb +13 -3
- data/lib/engine/physics/physics_resolver.rb +24 -12
- data/lib/engine/rendering/cubemap_shadow_map_array.rb +77 -0
- data/lib/engine/rendering/gpu_timer.rb +68 -0
- data/lib/engine/rendering/instance_renderer.rb +140 -61
- data/lib/engine/rendering/post_processing/bloom_effect.rb +87 -0
- data/lib/engine/rendering/post_processing/depth_debug_effect.rb +17 -0
- data/lib/engine/rendering/post_processing/depth_of_field_effect.rb +52 -0
- data/lib/engine/rendering/post_processing/effect.rb +11 -0
- data/lib/engine/rendering/post_processing/post_processing_effect.rb +86 -0
- data/lib/engine/rendering/post_processing/single_pass_effect.rb +19 -0
- data/lib/engine/rendering/post_processing/ssao_effect.rb +182 -0
- data/lib/engine/rendering/post_processing/ssr_effect.rb +89 -0
- data/lib/engine/rendering/post_processing/tint_effect.rb +18 -0
- data/lib/engine/rendering/render_pipeline.rb +238 -6
- data/lib/engine/rendering/render_texture.rb +118 -0
- data/lib/engine/rendering/screen_quad.rb +64 -0
- data/lib/engine/rendering/shadow_map_array.rb +72 -0
- data/lib/engine/rendering/skybox_cubemap.rb +119 -0
- data/lib/engine/rendering/skybox_renderer.rb +64 -0
- data/lib/engine/rendering/ui/stencil_manager.rb +69 -0
- data/lib/engine/screenshoter.rb +1 -1
- data/lib/engine/serialization/graph_serializer.rb +74 -0
- data/lib/engine/serialization/object_serializer.rb +98 -0
- data/lib/engine/serialization/serializable.rb +78 -0
- data/lib/engine/serialization/yaml_persistence.rb +45 -0
- data/lib/engine/shader.rb +149 -25
- data/lib/engine/shaders/colour_frag.glsl +9 -1
- data/lib/engine/shaders/colour_vertex.glsl +12 -5
- data/lib/engine/shaders/fullscreen_frag.glsl +11 -0
- data/lib/engine/shaders/fullscreen_vertex.glsl +12 -0
- data/lib/engine/shaders/instanced_sprite_frag.glsl +21 -0
- data/lib/engine/shaders/{skybox_vert.glsl → instanced_sprite_vertex.glsl} +3 -2
- data/lib/engine/shaders/lighting/directional_light.glsl +49 -0
- data/lib/engine/shaders/lighting/lighting.glsl +33 -0
- data/lib/engine/shaders/lighting/lighting_common.glsl +13 -0
- data/lib/engine/shaders/lighting/point_light.glsl +46 -0
- data/lib/engine/shaders/lighting/spot_light.glsl +80 -0
- data/lib/engine/shaders/mesh_frag.glsl +28 -77
- data/lib/engine/shaders/mesh_vertex.glsl +5 -5
- data/lib/engine/shaders/point_shadow_frag.glsl +12 -0
- data/lib/engine/shaders/point_shadow_vertex.glsl +15 -0
- data/lib/engine/shaders/post_process/bloom_blur_frag.glsl +25 -0
- data/lib/engine/shaders/post_process/bloom_combine_frag.glsl +19 -0
- data/lib/engine/shaders/post_process/bloom_threshold_frag.glsl +19 -0
- data/lib/engine/shaders/post_process/debug_normals_frag.glsl +21 -0
- data/lib/engine/shaders/post_process/depth_debug_frag.glsl +17 -0
- data/lib/engine/shaders/post_process/dof_blur_frag.glsl +52 -0
- data/lib/engine/shaders/post_process/skybox_frag.glsl +29 -0
- data/lib/engine/shaders/post_process/ssao/blur_frag.glsl +50 -0
- data/lib/engine/shaders/post_process/ssao/combine_frag.glsl +15 -0
- data/lib/engine/shaders/post_process/ssao/frag.glsl +99 -0
- data/lib/engine/shaders/post_process/ssr/combine_frag.glsl +16 -0
- data/lib/engine/shaders/post_process/ssr/frag.glsl +118 -0
- data/lib/engine/shaders/post_process/tint_frag.glsl +14 -0
- data/lib/engine/shaders/shadow_frag.glsl +6 -0
- data/lib/engine/shaders/shadow_vertex.glsl +11 -0
- data/lib/engine/shaders/skybox_cubemap_frag.glsl +46 -0
- data/lib/engine/shaders/vertex_lit_frag.glsl +10 -66
- data/lib/engine/shaders/vertex_lit_vertex.glsl +1 -1
- data/lib/engine/standard_meshes/quad_mesh.rb +26 -0
- data/lib/engine/standard_objects/cube.rb +23 -0
- data/lib/engine/standard_objects/default_material.rb +20 -0
- data/lib/engine/standard_objects/plane.rb +23 -0
- data/lib/engine/standard_objects/sphere.rb +23 -0
- data/lib/engine/texture.rb +28 -19
- data/lib/engine/ui/rect.rb +16 -0
- data/lib/engine/window.rb +2 -2
- data/lib/ruby_rpg.rb +69 -9
- data/vendor/glew-2.2.0-win32/LICENSE.txt +73 -0
- data/vendor/glew-2.2.0-win32/bin/Release/x64/glew32.dll +0 -0
- data/vendor/glew-2.2.0-win32/include/GL/glew.h +26427 -0
- data/vendor/glew-2.2.0-win32/lib/Release/x64/glew32.lib +0 -0
- metadata +124 -466
- data/glfw-3.3.9.bin.MACOS/README.md +0 -5
- data/glfw-3.3.9.bin.MACOS/docs/html/bc_s.png +0 -0
- data/glfw-3.3.9.bin.MACOS/docs/html/bc_sd.png +0 -0
- data/glfw-3.3.9.bin.MACOS/docs/html/build_8dox.html +0 -81
- data/glfw-3.3.9.bin.MACOS/docs/html/build_guide.html +0 -199
- data/glfw-3.3.9.bin.MACOS/docs/html/closed.png +0 -0
- data/glfw-3.3.9.bin.MACOS/docs/html/compat_8dox.html +0 -81
- data/glfw-3.3.9.bin.MACOS/docs/html/compat_guide.html +0 -153
- data/glfw-3.3.9.bin.MACOS/docs/html/compile_8dox.html +0 -81
- data/glfw-3.3.9.bin.MACOS/docs/html/compile_guide.html +0 -223
- data/glfw-3.3.9.bin.MACOS/docs/html/context_8dox.html +0 -81
- data/glfw-3.3.9.bin.MACOS/docs/html/context_guide.html +0 -259
- data/glfw-3.3.9.bin.MACOS/docs/html/deprecated.html +0 -88
- data/glfw-3.3.9.bin.MACOS/docs/html/dir_08423ce7729c4554356a7de7171ba263.html +0 -85
- data/glfw-3.3.9.bin.MACOS/docs/html/dir_2dcebcdf14b42e92a6ed85c61bda6b9d.html +0 -93
- data/glfw-3.3.9.bin.MACOS/docs/html/dir_62ce056722ee97c199075aa1d6eca309.html +0 -95
- data/glfw-3.3.9.bin.MACOS/docs/html/dir_dddf4cf62655095a666cf715de3a31a2.html +0 -91
- data/glfw-3.3.9.bin.MACOS/docs/html/doc.svg +0 -12
- data/glfw-3.3.9.bin.MACOS/docs/html/docd.svg +0 -12
- data/glfw-3.3.9.bin.MACOS/docs/html/doxygen.css +0 -1685
- data/glfw-3.3.9.bin.MACOS/docs/html/doxygen.svg +0 -28
- data/glfw-3.3.9.bin.MACOS/docs/html/dynsections.js +0 -192
- data/glfw-3.3.9.bin.MACOS/docs/html/extra.css +0 -1
- data/glfw-3.3.9.bin.MACOS/docs/html/files.html +0 -91
- data/glfw-3.3.9.bin.MACOS/docs/html/folderclosed.svg +0 -11
- data/glfw-3.3.9.bin.MACOS/docs/html/folderclosedd.svg +0 -11
- data/glfw-3.3.9.bin.MACOS/docs/html/folderopen.svg +0 -17
- data/glfw-3.3.9.bin.MACOS/docs/html/folderopend.svg +0 -12
- data/glfw-3.3.9.bin.MACOS/docs/html/glfw3_8h.html +0 -1661
- data/glfw-3.3.9.bin.MACOS/docs/html/glfw3_8h_source.html +0 -1175
- data/glfw-3.3.9.bin.MACOS/docs/html/glfw3native_8h.html +0 -167
- data/glfw-3.3.9.bin.MACOS/docs/html/glfw3native_8h_source.html +0 -303
- data/glfw-3.3.9.bin.MACOS/docs/html/group__buttons.html +0 -282
- data/glfw-3.3.9.bin.MACOS/docs/html/group__context.html +0 -304
- data/glfw-3.3.9.bin.MACOS/docs/html/group__errors.html +0 -304
- data/glfw-3.3.9.bin.MACOS/docs/html/group__gamepad__axes.html +0 -202
- data/glfw-3.3.9.bin.MACOS/docs/html/group__gamepad__buttons.html +0 -410
- data/glfw-3.3.9.bin.MACOS/docs/html/group__hat__state.html +0 -234
- data/glfw-3.3.9.bin.MACOS/docs/html/group__init.html +0 -570
- data/glfw-3.3.9.bin.MACOS/docs/html/group__input.html +0 -2255
- data/glfw-3.3.9.bin.MACOS/docs/html/group__joysticks.html +0 -362
- data/glfw-3.3.9.bin.MACOS/docs/html/group__keys.html +0 -2034
- data/glfw-3.3.9.bin.MACOS/docs/html/group__mods.html +0 -198
- data/glfw-3.3.9.bin.MACOS/docs/html/group__monitor.html +0 -848
- data/glfw-3.3.9.bin.MACOS/docs/html/group__native.html +0 -812
- data/glfw-3.3.9.bin.MACOS/docs/html/group__shapes.html +0 -198
- data/glfw-3.3.9.bin.MACOS/docs/html/group__vulkan.html +0 -359
- data/glfw-3.3.9.bin.MACOS/docs/html/group__window.html +0 -3434
- data/glfw-3.3.9.bin.MACOS/docs/html/index.html +0 -100
- data/glfw-3.3.9.bin.MACOS/docs/html/input_8dox.html +0 -81
- data/glfw-3.3.9.bin.MACOS/docs/html/input_guide.html +0 -570
- data/glfw-3.3.9.bin.MACOS/docs/html/internal_8dox.html +0 -81
- data/glfw-3.3.9.bin.MACOS/docs/html/internals_guide.html +0 -132
- data/glfw-3.3.9.bin.MACOS/docs/html/intro_8dox.html +0 -81
- data/glfw-3.3.9.bin.MACOS/docs/html/intro_guide.html +0 -351
- data/glfw-3.3.9.bin.MACOS/docs/html/jquery.js +0 -34
- data/glfw-3.3.9.bin.MACOS/docs/html/main_8dox.html +0 -81
- data/glfw-3.3.9.bin.MACOS/docs/html/menu.js +0 -136
- data/glfw-3.3.9.bin.MACOS/docs/html/menudata.js +0 -29
- data/glfw-3.3.9.bin.MACOS/docs/html/minus.svg +0 -8
- data/glfw-3.3.9.bin.MACOS/docs/html/minusd.svg +0 -8
- data/glfw-3.3.9.bin.MACOS/docs/html/monitor_8dox.html +0 -81
- data/glfw-3.3.9.bin.MACOS/docs/html/monitor_guide.html +0 -229
- data/glfw-3.3.9.bin.MACOS/docs/html/moving_8dox.html +0 -81
- data/glfw-3.3.9.bin.MACOS/docs/html/moving_guide.html +0 -374
- data/glfw-3.3.9.bin.MACOS/docs/html/nav_f.png +0 -0
- data/glfw-3.3.9.bin.MACOS/docs/html/nav_fd.png +0 -0
- data/glfw-3.3.9.bin.MACOS/docs/html/nav_g.png +0 -0
- data/glfw-3.3.9.bin.MACOS/docs/html/nav_h.png +0 -0
- data/glfw-3.3.9.bin.MACOS/docs/html/nav_hd.png +0 -0
- data/glfw-3.3.9.bin.MACOS/docs/html/news.html +0 -634
- data/glfw-3.3.9.bin.MACOS/docs/html/news_8dox.html +0 -81
- data/glfw-3.3.9.bin.MACOS/docs/html/open.png +0 -0
- data/glfw-3.3.9.bin.MACOS/docs/html/pages.html +0 -99
- data/glfw-3.3.9.bin.MACOS/docs/html/plus.svg +0 -9
- data/glfw-3.3.9.bin.MACOS/docs/html/plusd.svg +0 -9
- data/glfw-3.3.9.bin.MACOS/docs/html/quick_8dox.html +0 -81
- data/glfw-3.3.9.bin.MACOS/docs/html/quick_guide.html +0 -397
- data/glfw-3.3.9.bin.MACOS/docs/html/search/all_0.js +0 -5
- data/glfw-3.3.9.bin.MACOS/docs/html/search/all_1.js +0 -4
- data/glfw-3.3.9.bin.MACOS/docs/html/search/all_10.js +0 -65
- data/glfw-3.3.9.bin.MACOS/docs/html/search/all_11.js +0 -26
- data/glfw-3.3.9.bin.MACOS/docs/html/search/all_12.js +0 -44
- data/glfw-3.3.9.bin.MACOS/docs/html/search/all_13.js +0 -34
- data/glfw-3.3.9.bin.MACOS/docs/html/search/all_14.js +0 -12
- data/glfw-3.3.9.bin.MACOS/docs/html/search/all_15.js +0 -52
- data/glfw-3.3.9.bin.MACOS/docs/html/search/all_16.js +0 -69
- data/glfw-3.3.9.bin.MACOS/docs/html/search/all_17.js +0 -51
- data/glfw-3.3.9.bin.MACOS/docs/html/search/all_18.js +0 -14
- data/glfw-3.3.9.bin.MACOS/docs/html/search/all_19.js +0 -36
- data/glfw-3.3.9.bin.MACOS/docs/html/search/all_1a.js +0 -98
- data/glfw-3.3.9.bin.MACOS/docs/html/search/all_1b.js +0 -12
- data/glfw-3.3.9.bin.MACOS/docs/html/search/all_2.js +0 -6
- data/glfw-3.3.9.bin.MACOS/docs/html/search/all_3.js +0 -9
- data/glfw-3.3.9.bin.MACOS/docs/html/search/all_4.js +0 -57
- data/glfw-3.3.9.bin.MACOS/docs/html/search/all_5.js +0 -22
- data/glfw-3.3.9.bin.MACOS/docs/html/search/all_6.js +0 -103
- data/glfw-3.3.9.bin.MACOS/docs/html/search/all_7.js +0 -23
- data/glfw-3.3.9.bin.MACOS/docs/html/search/all_8.js +0 -35
- data/glfw-3.3.9.bin.MACOS/docs/html/search/all_9.js +0 -63
- data/glfw-3.3.9.bin.MACOS/docs/html/search/all_a.js +0 -505
- data/glfw-3.3.9.bin.MACOS/docs/html/search/all_b.js +0 -24
- data/glfw-3.3.9.bin.MACOS/docs/html/search/all_c.js +0 -50
- data/glfw-3.3.9.bin.MACOS/docs/html/search/all_d.js +0 -17
- data/glfw-3.3.9.bin.MACOS/docs/html/search/all_e.js +0 -12
- data/glfw-3.3.9.bin.MACOS/docs/html/search/all_f.js +0 -35
- data/glfw-3.3.9.bin.MACOS/docs/html/search/classes_0.js +0 -7
- data/glfw-3.3.9.bin.MACOS/docs/html/search/close.svg +0 -18
- data/glfw-3.3.9.bin.MACOS/docs/html/search/defines_0.js +0 -34
- data/glfw-3.3.9.bin.MACOS/docs/html/search/files_0.js +0 -4
- data/glfw-3.3.9.bin.MACOS/docs/html/search/files_1.js +0 -6
- data/glfw-3.3.9.bin.MACOS/docs/html/search/files_2.js +0 -5
- data/glfw-3.3.9.bin.MACOS/docs/html/search/files_3.js +0 -6
- data/glfw-3.3.9.bin.MACOS/docs/html/search/files_4.js +0 -6
- data/glfw-3.3.9.bin.MACOS/docs/html/search/files_5.js +0 -4
- data/glfw-3.3.9.bin.MACOS/docs/html/search/files_6.js +0 -4
- data/glfw-3.3.9.bin.MACOS/docs/html/search/files_7.js +0 -4
- data/glfw-3.3.9.bin.MACOS/docs/html/search/files_8.js +0 -4
- data/glfw-3.3.9.bin.MACOS/docs/html/search/functions_0.js +0 -146
- data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_0.js +0 -6
- data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_1.js +0 -4
- data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_10.js +0 -4
- data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_2.js +0 -6
- data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_3.js +0 -5
- data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_4.js +0 -4
- data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_5.js +0 -5
- data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_6.js +0 -4
- data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_7.js +0 -5
- data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_8.js +0 -5
- data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_9.js +0 -6
- data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_a.js +0 -6
- data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_b.js +0 -4
- data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_c.js +0 -4
- data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_d.js +0 -7
- data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_e.js +0 -4
- data/glfw-3.3.9.bin.MACOS/docs/html/search/groups_f.js +0 -5
- data/glfw-3.3.9.bin.MACOS/docs/html/search/mag.svg +0 -24
- data/glfw-3.3.9.bin.MACOS/docs/html/search/mag_d.svg +0 -24
- data/glfw-3.3.9.bin.MACOS/docs/html/search/mag_sel.svg +0 -31
- data/glfw-3.3.9.bin.MACOS/docs/html/search/mag_seld.svg +0 -31
- data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_0.js +0 -4
- data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_1.js +0 -4
- data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_10.js +0 -4
- data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_2.js +0 -5
- data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_3.js +0 -4
- data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_4.js +0 -6
- data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_5.js +0 -4
- data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_6.js +0 -4
- data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_7.js +0 -7
- data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_8.js +0 -6
- data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_9.js +0 -4
- data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_a.js +0 -5
- data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_b.js +0 -5
- data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_c.js +0 -4
- data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_d.js +0 -6
- data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_e.js +0 -6
- data/glfw-3.3.9.bin.MACOS/docs/html/search/pages_f.js +0 -4
- data/glfw-3.3.9.bin.MACOS/docs/html/search/search.css +0 -291
- data/glfw-3.3.9.bin.MACOS/docs/html/search/search.js +0 -840
- data/glfw-3.3.9.bin.MACOS/docs/html/search/searchdata.js +0 -39
- data/glfw-3.3.9.bin.MACOS/docs/html/search/typedefs_0.js +0 -32
- data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_0.js +0 -4
- data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_1.js +0 -6
- data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_2.js +0 -5
- data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_3.js +0 -4
- data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_4.js +0 -4
- data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_5.js +0 -6
- data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_6.js +0 -4
- data/glfw-3.3.9.bin.MACOS/docs/html/search/variables_7.js +0 -4
- data/glfw-3.3.9.bin.MACOS/docs/html/spaces.svg +0 -877
- data/glfw-3.3.9.bin.MACOS/docs/html/splitbar.png +0 -0
- data/glfw-3.3.9.bin.MACOS/docs/html/splitbard.png +0 -0
- data/glfw-3.3.9.bin.MACOS/docs/html/struct_g_l_f_wgamepadstate.html +0 -134
- data/glfw-3.3.9.bin.MACOS/docs/html/struct_g_l_f_wgammaramp.html +0 -170
- data/glfw-3.3.9.bin.MACOS/docs/html/struct_g_l_f_wimage.html +0 -151
- data/glfw-3.3.9.bin.MACOS/docs/html/struct_g_l_f_wvidmode.html +0 -204
- data/glfw-3.3.9.bin.MACOS/docs/html/sync_off.png +0 -0
- data/glfw-3.3.9.bin.MACOS/docs/html/sync_on.png +0 -0
- data/glfw-3.3.9.bin.MACOS/docs/html/tab_a.png +0 -0
- data/glfw-3.3.9.bin.MACOS/docs/html/tab_ad.png +0 -0
- data/glfw-3.3.9.bin.MACOS/docs/html/tab_b.png +0 -0
- data/glfw-3.3.9.bin.MACOS/docs/html/tab_bd.png +0 -0
- data/glfw-3.3.9.bin.MACOS/docs/html/tab_h.png +0 -0
- data/glfw-3.3.9.bin.MACOS/docs/html/tab_hd.png +0 -0
- data/glfw-3.3.9.bin.MACOS/docs/html/tab_s.png +0 -0
- data/glfw-3.3.9.bin.MACOS/docs/html/tab_sd.png +0 -0
- data/glfw-3.3.9.bin.MACOS/docs/html/tabs.css +0 -1
- data/glfw-3.3.9.bin.MACOS/docs/html/vulkan_8dox.html +0 -81
- data/glfw-3.3.9.bin.MACOS/docs/html/vulkan_guide.html +0 -196
- data/glfw-3.3.9.bin.MACOS/docs/html/window_8dox.html +0 -81
- data/glfw-3.3.9.bin.MACOS/docs/html/window_guide.html +0 -763
- data/glfw-3.3.9.bin.MACOS/include/GLFW/glfw3.h +0 -5932
- data/glfw-3.3.9.bin.MACOS/include/GLFW/glfw3native.h +0 -634
- data/glfw-3.3.9.bin.MACOS/lib-arm64/libglfw3.a +0 -0
- data/glfw-3.3.9.bin.MACOS/lib-universal/libglfw.3.dylib +0 -0
- data/glfw-3.3.9.bin.MACOS/lib-universal/libglfw3.a +0 -0
- data/glfw-3.3.9.bin.MACOS/lib-x86_64/libglfw.3.dylib +0 -0
- data/glfw-3.3.9.bin.MACOS/lib-x86_64/libglfw3.a +0 -0
- data/glfw-3.4.bin.WIN64/README.md +0 -70
- data/glfw-3.4.bin.WIN64/docs/html/bc_s.png +0 -0
- data/glfw-3.4.bin.WIN64/docs/html/bc_sd.png +0 -0
- data/glfw-3.4.bin.WIN64/docs/html/build_8md.html +0 -81
- data/glfw-3.4.bin.WIN64/docs/html/build_guide.html +0 -217
- data/glfw-3.4.bin.WIN64/docs/html/closed.png +0 -0
- data/glfw-3.4.bin.WIN64/docs/html/compat_8md.html +0 -81
- data/glfw-3.4.bin.WIN64/docs/html/compat_guide.html +0 -156
- data/glfw-3.4.bin.WIN64/docs/html/compile_8md.html +0 -81
- data/glfw-3.4.bin.WIN64/docs/html/compile_guide.html +0 -219
- data/glfw-3.4.bin.WIN64/docs/html/context_8md.html +0 -81
- data/glfw-3.4.bin.WIN64/docs/html/context_guide.html +0 -258
- data/glfw-3.4.bin.WIN64/docs/html/deprecated.html +0 -88
- data/glfw-3.4.bin.WIN64/docs/html/dir_13577e2d8b9423099662de029791bd7d.html +0 -93
- data/glfw-3.4.bin.WIN64/docs/html/dir_7f92719a7fe62e5b064f87d7a3c220b1.html +0 -95
- data/glfw-3.4.bin.WIN64/docs/html/dir_a788ef6c2b1e5b367804e0b6ccfd6f11.html +0 -85
- data/glfw-3.4.bin.WIN64/docs/html/dir_b11153cd0f4fd04a7564cc166f482635.html +0 -91
- data/glfw-3.4.bin.WIN64/docs/html/doc.svg +0 -12
- data/glfw-3.4.bin.WIN64/docs/html/docd.svg +0 -12
- data/glfw-3.4.bin.WIN64/docs/html/doxygen.css +0 -1685
- data/glfw-3.4.bin.WIN64/docs/html/doxygen.svg +0 -28
- data/glfw-3.4.bin.WIN64/docs/html/dynsections.js +0 -192
- data/glfw-3.4.bin.WIN64/docs/html/extra.css +0 -2
- data/glfw-3.4.bin.WIN64/docs/html/files.html +0 -91
- data/glfw-3.4.bin.WIN64/docs/html/folderclosed.svg +0 -11
- data/glfw-3.4.bin.WIN64/docs/html/folderclosedd.svg +0 -11
- data/glfw-3.4.bin.WIN64/docs/html/folderopen.svg +0 -17
- data/glfw-3.4.bin.WIN64/docs/html/folderopend.svg +0 -12
- data/glfw-3.4.bin.WIN64/docs/html/glfw3_8h.html +0 -1910
- data/glfw-3.4.bin.WIN64/docs/html/glfw3_8h_source.html +0 -1260
- data/glfw-3.4.bin.WIN64/docs/html/glfw3native_8h.html +0 -170
- data/glfw-3.4.bin.WIN64/docs/html/glfw3native_8h_source.html +0 -306
- data/glfw-3.4.bin.WIN64/docs/html/group__buttons.html +0 -282
- data/glfw-3.4.bin.WIN64/docs/html/group__context.html +0 -304
- data/glfw-3.4.bin.WIN64/docs/html/group__errors.html +0 -384
- data/glfw-3.4.bin.WIN64/docs/html/group__gamepad__axes.html +0 -202
- data/glfw-3.4.bin.WIN64/docs/html/group__gamepad__buttons.html +0 -410
- data/glfw-3.4.bin.WIN64/docs/html/group__hat__state.html +0 -234
- data/glfw-3.4.bin.WIN64/docs/html/group__init.html +0 -1015
- data/glfw-3.4.bin.WIN64/docs/html/group__input.html +0 -2285
- data/glfw-3.4.bin.WIN64/docs/html/group__joysticks.html +0 -362
- data/glfw-3.4.bin.WIN64/docs/html/group__keys.html +0 -2034
- data/glfw-3.4.bin.WIN64/docs/html/group__mods.html +0 -198
- data/glfw-3.4.bin.WIN64/docs/html/group__monitor.html +0 -849
- data/glfw-3.4.bin.WIN64/docs/html/group__native.html +0 -837
- data/glfw-3.4.bin.WIN64/docs/html/group__shapes.html +0 -337
- data/glfw-3.4.bin.WIN64/docs/html/group__vulkan.html +0 -361
- data/glfw-3.4.bin.WIN64/docs/html/group__window.html +0 -3608
- data/glfw-3.4.bin.WIN64/docs/html/index.html +0 -100
- data/glfw-3.4.bin.WIN64/docs/html/input_8md.html +0 -81
- data/glfw-3.4.bin.WIN64/docs/html/input_guide.html +0 -576
- data/glfw-3.4.bin.WIN64/docs/html/internal_8md.html +0 -81
- data/glfw-3.4.bin.WIN64/docs/html/internals_guide.html +0 -135
- data/glfw-3.4.bin.WIN64/docs/html/intro_8md.html +0 -81
- data/glfw-3.4.bin.WIN64/docs/html/intro_guide.html +0 -429
- data/glfw-3.4.bin.WIN64/docs/html/jquery.js +0 -34
- data/glfw-3.4.bin.WIN64/docs/html/main_8md.html +0 -81
- data/glfw-3.4.bin.WIN64/docs/html/menu.js +0 -136
- data/glfw-3.4.bin.WIN64/docs/html/menudata.js +0 -30
- data/glfw-3.4.bin.WIN64/docs/html/minus.svg +0 -8
- data/glfw-3.4.bin.WIN64/docs/html/minusd.svg +0 -8
- data/glfw-3.4.bin.WIN64/docs/html/monitor_8md.html +0 -81
- data/glfw-3.4.bin.WIN64/docs/html/monitor_guide.html +0 -228
- data/glfw-3.4.bin.WIN64/docs/html/moving_8md.html +0 -81
- data/glfw-3.4.bin.WIN64/docs/html/moving_guide.html +0 -360
- data/glfw-3.4.bin.WIN64/docs/html/nav_f.png +0 -0
- data/glfw-3.4.bin.WIN64/docs/html/nav_fd.png +0 -0
- data/glfw-3.4.bin.WIN64/docs/html/nav_g.png +0 -0
- data/glfw-3.4.bin.WIN64/docs/html/nav_h.png +0 -0
- data/glfw-3.4.bin.WIN64/docs/html/nav_hd.png +0 -0
- data/glfw-3.4.bin.WIN64/docs/html/news.html +0 -336
- data/glfw-3.4.bin.WIN64/docs/html/news_8md.html +0 -81
- data/glfw-3.4.bin.WIN64/docs/html/open.png +0 -0
- data/glfw-3.4.bin.WIN64/docs/html/pages.html +0 -99
- data/glfw-3.4.bin.WIN64/docs/html/plus.svg +0 -9
- data/glfw-3.4.bin.WIN64/docs/html/plusd.svg +0 -9
- data/glfw-3.4.bin.WIN64/docs/html/quick_8md.html +0 -81
- data/glfw-3.4.bin.WIN64/docs/html/quick_guide.html +0 -406
- data/glfw-3.4.bin.WIN64/docs/html/search/all_0.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/all_1.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/all_10.js +0 -13
- data/glfw-3.4.bin.WIN64/docs/html/search/all_11.js +0 -11
- data/glfw-3.4.bin.WIN64/docs/html/search/all_12.js +0 -26
- data/glfw-3.4.bin.WIN64/docs/html/search/all_13.js +0 -51
- data/glfw-3.4.bin.WIN64/docs/html/search/all_14.js +0 -22
- data/glfw-3.4.bin.WIN64/docs/html/search/all_15.js +0 -35
- data/glfw-3.4.bin.WIN64/docs/html/search/all_16.js +0 -29
- data/glfw-3.4.bin.WIN64/docs/html/search/all_17.js +0 -8
- data/glfw-3.4.bin.WIN64/docs/html/search/all_18.js +0 -44
- data/glfw-3.4.bin.WIN64/docs/html/search/all_19.js +0 -60
- data/glfw-3.4.bin.WIN64/docs/html/search/all_1a.js +0 -39
- data/glfw-3.4.bin.WIN64/docs/html/search/all_1b.js +0 -8
- data/glfw-3.4.bin.WIN64/docs/html/search/all_1c.js +0 -32
- data/glfw-3.4.bin.WIN64/docs/html/search/all_1d.js +0 -84
- data/glfw-3.4.bin.WIN64/docs/html/search/all_1e.js +0 -13
- data/glfw-3.4.bin.WIN64/docs/html/search/all_1f.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/all_2.js +0 -5
- data/glfw-3.4.bin.WIN64/docs/html/search/all_3.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/all_4.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/all_5.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/all_6.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/all_7.js +0 -58
- data/glfw-3.4.bin.WIN64/docs/html/search/all_8.js +0 -21
- data/glfw-3.4.bin.WIN64/docs/html/search/all_9.js +0 -82
- data/glfw-3.4.bin.WIN64/docs/html/search/all_a.js +0 -20
- data/glfw-3.4.bin.WIN64/docs/html/search/all_b.js +0 -26
- data/glfw-3.4.bin.WIN64/docs/html/search/all_c.js +0 -35
- data/glfw-3.4.bin.WIN64/docs/html/search/all_d.js +0 -555
- data/glfw-3.4.bin.WIN64/docs/html/search/all_e.js +0 -23
- data/glfw-3.4.bin.WIN64/docs/html/search/all_f.js +0 -40
- data/glfw-3.4.bin.WIN64/docs/html/search/classes_0.js +0 -8
- data/glfw-3.4.bin.WIN64/docs/html/search/close.svg +0 -18
- data/glfw-3.4.bin.WIN64/docs/html/search/defines_0.js +0 -43
- data/glfw-3.4.bin.WIN64/docs/html/search/files_0.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/files_1.js +0 -6
- data/glfw-3.4.bin.WIN64/docs/html/search/files_2.js +0 -5
- data/glfw-3.4.bin.WIN64/docs/html/search/files_3.js +0 -6
- data/glfw-3.4.bin.WIN64/docs/html/search/files_4.js +0 -6
- data/glfw-3.4.bin.WIN64/docs/html/search/files_5.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/files_6.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/files_7.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/files_8.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/functions_0.js +0 -152
- data/glfw-3.4.bin.WIN64/docs/html/search/groups_0.js +0 -6
- data/glfw-3.4.bin.WIN64/docs/html/search/groups_1.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/groups_10.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/groups_2.js +0 -6
- data/glfw-3.4.bin.WIN64/docs/html/search/groups_3.js +0 -5
- data/glfw-3.4.bin.WIN64/docs/html/search/groups_4.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/groups_5.js +0 -5
- data/glfw-3.4.bin.WIN64/docs/html/search/groups_6.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/groups_7.js +0 -5
- data/glfw-3.4.bin.WIN64/docs/html/search/groups_8.js +0 -5
- data/glfw-3.4.bin.WIN64/docs/html/search/groups_9.js +0 -6
- data/glfw-3.4.bin.WIN64/docs/html/search/groups_a.js +0 -6
- data/glfw-3.4.bin.WIN64/docs/html/search/groups_b.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/groups_c.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/groups_d.js +0 -7
- data/glfw-3.4.bin.WIN64/docs/html/search/groups_e.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/groups_f.js +0 -5
- data/glfw-3.4.bin.WIN64/docs/html/search/mag.svg +0 -24
- data/glfw-3.4.bin.WIN64/docs/html/search/mag_d.svg +0 -24
- data/glfw-3.4.bin.WIN64/docs/html/search/mag_sel.svg +0 -31
- data/glfw-3.4.bin.WIN64/docs/html/search/mag_seld.svg +0 -31
- data/glfw-3.4.bin.WIN64/docs/html/search/pages_0.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/pages_1.js +0 -5
- data/glfw-3.4.bin.WIN64/docs/html/search/pages_10.js +0 -5
- data/glfw-3.4.bin.WIN64/docs/html/search/pages_11.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/pages_2.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/pages_3.js +0 -5
- data/glfw-3.4.bin.WIN64/docs/html/search/pages_4.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/pages_5.js +0 -6
- data/glfw-3.4.bin.WIN64/docs/html/search/pages_6.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/pages_7.js +0 -5
- data/glfw-3.4.bin.WIN64/docs/html/search/pages_8.js +0 -7
- data/glfw-3.4.bin.WIN64/docs/html/search/pages_9.js +0 -7
- data/glfw-3.4.bin.WIN64/docs/html/search/pages_a.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/pages_b.js +0 -5
- data/glfw-3.4.bin.WIN64/docs/html/search/pages_c.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/pages_d.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/pages_e.js +0 -6
- data/glfw-3.4.bin.WIN64/docs/html/search/pages_f.js +0 -6
- data/glfw-3.4.bin.WIN64/docs/html/search/search.css +0 -291
- data/glfw-3.4.bin.WIN64/docs/html/search/search.js +0 -840
- data/glfw-3.4.bin.WIN64/docs/html/search/searchdata.js +0 -39
- data/glfw-3.4.bin.WIN64/docs/html/search/typedefs_0.js +0 -36
- data/glfw-3.4.bin.WIN64/docs/html/search/variables_0.js +0 -5
- data/glfw-3.4.bin.WIN64/docs/html/search/variables_1.js +0 -6
- data/glfw-3.4.bin.WIN64/docs/html/search/variables_2.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/variables_3.js +0 -5
- data/glfw-3.4.bin.WIN64/docs/html/search/variables_4.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/variables_5.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/variables_6.js +0 -7
- data/glfw-3.4.bin.WIN64/docs/html/search/variables_7.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/variables_8.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/search/variables_9.js +0 -4
- data/glfw-3.4.bin.WIN64/docs/html/spaces.svg +0 -877
- data/glfw-3.4.bin.WIN64/docs/html/splitbar.png +0 -0
- data/glfw-3.4.bin.WIN64/docs/html/splitbard.png +0 -0
- data/glfw-3.4.bin.WIN64/docs/html/struct_g_l_f_wallocator.html +0 -168
- data/glfw-3.4.bin.WIN64/docs/html/struct_g_l_f_wgamepadstate.html +0 -134
- data/glfw-3.4.bin.WIN64/docs/html/struct_g_l_f_wgammaramp.html +0 -170
- data/glfw-3.4.bin.WIN64/docs/html/struct_g_l_f_wimage.html +0 -151
- data/glfw-3.4.bin.WIN64/docs/html/struct_g_l_f_wvidmode.html +0 -204
- data/glfw-3.4.bin.WIN64/docs/html/sync_off.png +0 -0
- data/glfw-3.4.bin.WIN64/docs/html/sync_on.png +0 -0
- data/glfw-3.4.bin.WIN64/docs/html/tab_a.png +0 -0
- data/glfw-3.4.bin.WIN64/docs/html/tab_ad.png +0 -0
- data/glfw-3.4.bin.WIN64/docs/html/tab_b.png +0 -0
- data/glfw-3.4.bin.WIN64/docs/html/tab_bd.png +0 -0
- data/glfw-3.4.bin.WIN64/docs/html/tab_h.png +0 -0
- data/glfw-3.4.bin.WIN64/docs/html/tab_hd.png +0 -0
- data/glfw-3.4.bin.WIN64/docs/html/tab_s.png +0 -0
- data/glfw-3.4.bin.WIN64/docs/html/tab_sd.png +0 -0
- data/glfw-3.4.bin.WIN64/docs/html/tabs.css +0 -1
- data/glfw-3.4.bin.WIN64/docs/html/topics.html +0 -101
- data/glfw-3.4.bin.WIN64/docs/html/vulkan_8md.html +0 -81
- data/glfw-3.4.bin.WIN64/docs/html/vulkan_guide.html +0 -206
- data/glfw-3.4.bin.WIN64/docs/html/window_8md.html +0 -81
- data/glfw-3.4.bin.WIN64/docs/html/window_guide.html +0 -806
- data/glfw-3.4.bin.WIN64/include/GLFW/glfw3.h +0 -6547
- data/glfw-3.4.bin.WIN64/include/GLFW/glfw3native.h +0 -663
- data/glfw-3.4.bin.WIN64/lib-mingw-w64/glfw3.dll +0 -0
- data/glfw-3.4.bin.WIN64/lib-mingw-w64/libglfw3.a +0 -0
- data/glfw-3.4.bin.WIN64/lib-mingw-w64/libglfw3dll.a +0 -0
- data/glfw-3.4.bin.WIN64/lib-static-ucrt/glfw3dll.lib +0 -0
- data/glfw-3.4.bin.WIN64/lib-vc2013/glfw3.dll +0 -0
- data/glfw-3.4.bin.WIN64/lib-vc2013/glfw3.lib +0 -0
- data/glfw-3.4.bin.WIN64/lib-vc2013/glfw3_mt.lib +0 -0
- data/glfw-3.4.bin.WIN64/lib-vc2013/glfw3dll.lib +0 -0
- data/glfw-3.4.bin.WIN64/lib-vc2015/glfw3.dll +0 -0
- data/glfw-3.4.bin.WIN64/lib-vc2015/glfw3.lib +0 -0
- data/glfw-3.4.bin.WIN64/lib-vc2015/glfw3_mt.lib +0 -0
- data/glfw-3.4.bin.WIN64/lib-vc2015/glfw3dll.lib +0 -0
- data/glfw-3.4.bin.WIN64/lib-vc2017/glfw3.dll +0 -0
- data/glfw-3.4.bin.WIN64/lib-vc2017/glfw3.lib +0 -0
- data/glfw-3.4.bin.WIN64/lib-vc2017/glfw3_mt.lib +0 -0
- data/glfw-3.4.bin.WIN64/lib-vc2017/glfw3dll.lib +0 -0
- data/glfw-3.4.bin.WIN64/lib-vc2019/glfw3.dll +0 -0
- data/glfw-3.4.bin.WIN64/lib-vc2019/glfw3.lib +0 -0
- data/glfw-3.4.bin.WIN64/lib-vc2019/glfw3_mt.lib +0 -0
- data/glfw-3.4.bin.WIN64/lib-vc2019/glfw3dll.lib +0 -0
- data/glfw-3.4.bin.WIN64/lib-vc2022/glfw3.dll +0 -0
- data/glfw-3.4.bin.WIN64/lib-vc2022/glfw3.lib +0 -0
- data/glfw-3.4.bin.WIN64/lib-vc2022/glfw3_mt.lib +0 -0
- data/glfw-3.4.bin.WIN64/lib-vc2022/glfw3dll.lib +0 -0
- data/lib/engine/components/font_renderer.rb +0 -134
- data/lib/engine/components/mesh_renderer.rb +0 -31
- data/lib/engine/components/sprite_renderer.rb +0 -141
- data/lib/engine/components/ui_font_renderer.rb +0 -140
- data/lib/engine/components/ui_sprite_renderer.rb +0 -101
- data/lib/engine/shaders/skybox_frag.glsl +0 -12
- /data/{glfw-3.3.9.bin.MACOS → vendor/glfw-3.3.9.bin.MACOS}/LICENSE.md +0 -0
- /data/{glfw-3.3.9.bin.MACOS → vendor/glfw-3.3.9.bin.MACOS}/lib-arm64/libglfw.3.dylib +0 -0
- /data/{glfw-3.4.bin.WIN64 → vendor/glfw-3.4.bin.WIN64}/LICENSE.md +0 -0
- /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
|
|
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
|
-
|
|
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
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 =
|
|
47
|
+
vec3 result = CalcAllLights(norm, FragPos, viewDir, diffuseStrength, specularStrength, specularPower);
|
|
83
48
|
|
|
84
|
-
|
|
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
|
-
|
|
101
|
-
|
|
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
|
|
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,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
|
+
}
|