├── .clang-format ├── .editorconfig ├── .github └── workflows │ ├── CI.yml │ └── Documentation.yml ├── .gitignore ├── LICENSE ├── README.md ├── docs ├── .nojekyll ├── Doxyfile ├── img │ ├── atmosphere.png │ ├── brdfpreproc.png │ ├── controllermap.png │ ├── header.png │ ├── imagefiltering.png │ ├── imageviewer.png │ ├── island.png │ ├── pathtracer.png │ ├── pbrdemo.png │ ├── playground.png │ ├── shaderbench.png │ ├── shadervalidator.png │ ├── snake.png │ └── stencil.png ├── index.html ├── index_local.html └── theme │ ├── DoxygenLayout.xml │ ├── customdoxygen.css │ ├── footer.html │ └── process-glsl.py ├── premake5.lua ├── resources ├── atmosphere │ └── shaders │ │ └── atmosphere_params.frag ├── common │ ├── ControllerLayout.png │ ├── Lato-Regular.ttf │ ├── OpenFontLicense.txt │ ├── brdf-precomputed.exr │ ├── controller_ps4.map │ ├── debug-cube │ │ ├── debug-cube_nx.png │ │ ├── debug-cube_ny.png │ │ ├── debug-cube_nz.png │ │ ├── debug-cube_px.png │ │ ├── debug-cube_py.png │ │ └── debug-cube_pz.png │ ├── debug-grid.png │ ├── default_color.png │ ├── default_cube │ │ ├── default_cube_nx.png │ │ ├── default_cube_ny.png │ │ ├── default_cube_nz.png │ │ ├── default_cube_px.png │ │ ├── default_cube_py.png │ │ ├── default_cube_pz.png │ │ └── default_shcoeffs.txt │ ├── default_normal.png │ ├── default_rough_met_ao.png │ ├── meshes │ │ ├── cube.obj │ │ ├── disk.obj │ │ ├── light_arrow.obj │ │ ├── light_cone.obj │ │ ├── light_sphere.obj │ │ ├── plane.obj │ │ ├── skybox.obj │ │ ├── sphere.obj │ │ ├── testknob.obj │ │ └── two_rooms.obj │ ├── scattering-precomputed.exr │ └── shaders │ │ ├── background │ │ ├── atmosphere.glsl │ │ ├── atmosphere_debug.frag │ │ ├── background_infinity.frag │ │ ├── background_infinity.vert │ │ ├── probe_debug.frag │ │ ├── probe_debug.vert │ │ ├── skybox_basic.frag │ │ ├── skybox_basic.vert │ │ ├── skybox_infinity.vert │ │ └── skybox_shcoeffs.frag │ │ ├── colors.glsl │ │ ├── constants.glsl │ │ ├── geometry.glsl │ │ ├── lights │ │ ├── light_debug.frag │ │ ├── light_shadow_basic.frag │ │ ├── light_shadow_linear_basic.frag │ │ ├── light_shadow_linear_variance.frag │ │ ├── light_shadow_linear_vertex.vert │ │ ├── light_shadow_variance.frag │ │ ├── light_shadow_vertex.vert │ │ └── shadow_maps.glsl │ │ ├── objects │ │ ├── common_parallax.glsl │ │ ├── common_pbr.glsl │ │ ├── object_basic.vert │ │ ├── object_basic_color.frag │ │ ├── object_basic_color.vert │ │ ├── object_basic_lit.frag │ │ ├── object_basic_lit.vert │ │ ├── object_basic_lit_texture.frag │ │ ├── object_basic_lit_texture.vert │ │ ├── object_basic_random.vert │ │ ├── object_basic_texture.frag │ │ ├── object_basic_texture.vert │ │ └── object_basic_uniform.frag │ │ ├── samplers.glsl │ │ ├── screens │ │ ├── bilateral.frag │ │ ├── bloom.frag │ │ ├── blur-dual-filter-down.frag │ │ ├── blur-dual-filter-up.frag │ │ ├── blur-gaussian.frag │ │ ├── box-blur │ │ │ ├── box-blur-2d-approx.frag │ │ │ ├── box-blur-2d-array-approx.frag │ │ │ ├── box-blur-2d-array.frag │ │ │ ├── box-blur-2d.frag │ │ │ ├── box-blur-cube-approx.frag │ │ │ ├── box-blur-cube-array-approx.frag │ │ │ ├── box-blur-cube-array.frag │ │ │ ├── box-blur-cube.frag │ │ │ └── box-blur-cube.vert │ │ ├── convolution-pyramid │ │ │ ├── downscale.frag │ │ │ ├── fill-boundary.frag │ │ │ ├── fill-combine.frag │ │ │ ├── filter.frag │ │ │ ├── laplacian.frag │ │ │ ├── passthrough-shift.frag │ │ │ └── upscale.frag │ │ ├── dof-coc.frag │ │ ├── dof-composite.frag │ │ ├── dof-gather.frag │ │ ├── fill-color.frag │ │ ├── floodfill │ │ │ ├── color-seeds.frag │ │ │ ├── distance-seeds.frag │ │ │ ├── extract-seeds.frag │ │ │ └── flood-fill.frag │ │ ├── fxaa.frag │ │ ├── passthrough-pixelperfect.frag │ │ ├── passthrough.frag │ │ ├── passthrough.vert │ │ ├── scale-texture.frag │ │ ├── sharpening.frag │ │ ├── ssao.frag │ │ └── tonemap.frag │ │ ├── utils.glsl │ │ └── utils │ │ ├── debug_texture_display.frag │ │ ├── font_sdf.frag │ │ └── font_sdf.vert ├── imagefiltering │ └── shaders │ │ ├── brush_color.frag │ │ └── brush_color.vert ├── imageviewer │ └── shaders │ │ ├── image_display.frag │ │ └── image_display.vert ├── island │ ├── shaders │ │ ├── atmosphere_island.frag │ │ ├── far_ocean_island.vert │ │ ├── gerstner_waves.glsl │ │ ├── ground_island.frag │ │ ├── ground_island.vert │ │ ├── ocean_island.frag │ │ ├── ocean_island.tessc │ │ ├── ocean_island.tesse │ │ ├── ocean_island.vert │ │ ├── ocean_underwater.frag │ │ ├── shadow_island.frag │ │ └── water_copy.frag │ └── textures │ │ ├── absorbscatterwater.png │ │ ├── caustics.png │ │ ├── foam.png │ │ ├── island_material_diff_s0.jpg │ │ ├── island_material_diff_s1.jpg │ │ ├── island_material_diff_s2.jpg │ │ ├── island_material_diff_s3.jpg │ │ ├── island_material_diff_s4.jpg │ │ ├── island_material_nor_s0.jpg │ │ ├── island_material_nor_s1.jpg │ │ ├── island_material_nor_s2.jpg │ │ ├── island_material_nor_s3.jpg │ │ ├── island_material_nor_s4.jpg │ │ ├── sand_normal_flat.jpg │ │ ├── sand_normal_steep.jpg │ │ └── wave_normals.jpg ├── pbrdemo │ ├── boxes.scene │ ├── cornellbox-cutout.scene │ ├── cornellbox-emissive.scene │ ├── cornellbox-parallax.scene │ ├── cornellbox-reflections.scene │ ├── cornellbox-textured.scene │ ├── cornellbox-transparent.scene │ ├── cornellbox.scene │ ├── cornellbox │ │ ├── cornellbox_backWall_12.obj │ │ ├── cornellbox_ceiling_6.obj │ │ ├── cornellbox_floor_0.obj │ │ ├── cornellbox_largeBox_60.obj │ │ ├── cornellbox_leaves.obj │ │ ├── cornellbox_leftWall_24.obj │ │ ├── cornellbox_light_90.obj │ │ ├── cornellbox_rightWall_18.obj │ │ ├── cornellbox_smallBox_30.obj │ │ ├── cornellbox_sphere.obj │ │ └── cornellbox_vase.obj │ ├── cubemaps │ │ ├── grey_cube │ │ │ ├── grey_cube_0_nx.exr │ │ │ ├── grey_cube_0_ny.exr │ │ │ ├── grey_cube_0_nz.exr │ │ │ ├── grey_cube_0_px.exr │ │ │ ├── grey_cube_0_py.exr │ │ │ ├── grey_cube_0_pz.exr │ │ │ ├── grey_cube_1_nx.exr │ │ │ ├── grey_cube_1_ny.exr │ │ │ ├── grey_cube_1_nz.exr │ │ │ ├── grey_cube_1_px.exr │ │ │ ├── grey_cube_1_py.exr │ │ │ ├── grey_cube_1_pz.exr │ │ │ └── grey_cube_shcoeffs.txt │ │ └── kiara_dawn │ │ │ ├── kiara_dawn_0_nx.exr │ │ │ ├── kiara_dawn_0_ny.exr │ │ │ ├── kiara_dawn_0_nz.exr │ │ │ ├── kiara_dawn_0_px.exr │ │ │ ├── kiara_dawn_0_py.exr │ │ │ ├── kiara_dawn_0_pz.exr │ │ │ ├── kiara_dawn_1_nx.exr │ │ │ ├── kiara_dawn_1_ny.exr │ │ │ ├── kiara_dawn_1_nz.exr │ │ │ ├── kiara_dawn_1_px.exr │ │ │ ├── kiara_dawn_1_py.exr │ │ │ ├── kiara_dawn_1_pz.exr │ │ │ ├── kiara_dawn_2_nx.exr │ │ │ ├── kiara_dawn_2_ny.exr │ │ │ ├── kiara_dawn_2_nz.exr │ │ │ ├── kiara_dawn_2_px.exr │ │ │ ├── kiara_dawn_2_py.exr │ │ │ ├── kiara_dawn_2_pz.exr │ │ │ ├── kiara_dawn_3_nx.exr │ │ │ ├── kiara_dawn_3_ny.exr │ │ │ ├── kiara_dawn_3_nz.exr │ │ │ ├── kiara_dawn_3_px.exr │ │ │ ├── kiara_dawn_3_py.exr │ │ │ ├── kiara_dawn_3_pz.exr │ │ │ ├── kiara_dawn_4_nx.exr │ │ │ ├── kiara_dawn_4_ny.exr │ │ │ ├── kiara_dawn_4_nz.exr │ │ │ ├── kiara_dawn_4_px.exr │ │ │ ├── kiara_dawn_4_py.exr │ │ │ ├── kiara_dawn_4_pz.exr │ │ │ ├── kiara_dawn_5_nx.exr │ │ │ ├── kiara_dawn_5_ny.exr │ │ │ ├── kiara_dawn_5_nz.exr │ │ │ ├── kiara_dawn_5_px.exr │ │ │ ├── kiara_dawn_5_py.exr │ │ │ ├── kiara_dawn_5_pz.exr │ │ │ └── kiara_dawn_shcoeffs.txt │ ├── furnace-test.scene │ ├── gallery-materials.scene │ ├── groundplane.obj │ ├── multi-probes.scene │ ├── parameter-spheres.scene │ ├── shaders │ │ ├── brdf_sampler.frag │ │ ├── cubemap_convo.frag │ │ ├── deferred │ │ │ ├── atmosphere_gbuffer.frag │ │ │ ├── background_gbuffer.frag │ │ │ ├── directional_light_pbr.frag │ │ │ ├── object_anisotropic_gbuffer.frag │ │ │ ├── object_clearcoat_gbuffer.frag │ │ │ ├── object_emissive_gbuffer.frag │ │ │ ├── object_gbuffer.frag │ │ │ ├── object_gbuffer.vert │ │ │ ├── object_iridescent_gbuffer.frag │ │ │ ├── object_parallax_gbuffer.frag │ │ │ ├── object_parallax_gbuffer.vert │ │ │ ├── object_sheen_gbuffer.frag │ │ │ ├── object_subsurface_gbuffer.frag │ │ │ ├── point_light_pbr.frag │ │ │ ├── probe_normalization.frag │ │ │ ├── probe_pbr.frag │ │ │ ├── skybox_gbuffer.frag │ │ │ └── spot_light_pbr.frag │ │ ├── forward │ │ │ ├── atmosphere_forward.frag │ │ │ ├── background_forward.frag │ │ │ ├── forward_lights.glsl │ │ │ ├── object_anisotropic_forward.frag │ │ │ ├── object_clearcoat_forward.frag │ │ │ ├── object_emissive_forward.frag │ │ │ ├── object_forward.frag │ │ │ ├── object_forward.vert │ │ │ ├── object_iridescent_forward.frag │ │ │ ├── object_parallax_forward.frag │ │ │ ├── object_parallax_forward.vert │ │ │ ├── object_prepass_forward.frag │ │ │ ├── object_prepass_forward.vert │ │ │ ├── object_sheen_forward.frag │ │ │ ├── object_subsurface_forward.frag │ │ │ ├── object_transparent_forward.frag │ │ │ ├── object_transparent_irid_forward.frag │ │ │ └── skybox_forward.frag │ │ ├── irradiance_compute.comp │ │ ├── materials.glsl │ │ └── radiance_convo.comp │ └── textures │ │ ├── ceramic_tiles_blue_color.jpg │ │ ├── ceramic_tiles_blue_normal.jpg │ │ ├── ceramic_tiles_blue_rough_met_ao.jpg │ │ ├── cornellbox_blue.png │ │ ├── cornellbox_green.png │ │ ├── cornellbox_grey.png │ │ ├── cornellbox_orange.png │ │ ├── cornellbox_red.png │ │ ├── cornellbox_rough_met_ao.png │ │ ├── cornellbox_white.png │ │ ├── ground_leaves_color.jpg │ │ ├── ground_leaves_depth.jpg │ │ ├── ground_leaves_normal.jpg │ │ ├── ground_leaves_rough_met_ao.jpg │ │ ├── leather_color.jpg │ │ ├── leather_depth.jpg │ │ ├── leather_normal.jpg │ │ ├── leather_rough_met_ao.jpg │ │ ├── leaves_color.png │ │ ├── leaves_normal.jpg │ │ ├── leaves_rough_met_ao.jpg │ │ ├── light_grid.exr │ │ ├── metal_brushed_color.jpg │ │ ├── metal_brushed_normal.jpg │ │ ├── metal_brushed_rough_met_ao.jpg │ │ ├── plastic_color.jpg │ │ ├── plastic_normal.jpg │ │ ├── plastic_rough_met_ao.jpg │ │ ├── squares_rough_met_ao.png │ │ ├── vitrail_color.png │ │ ├── vitrail_normal.png │ │ ├── vitrail_rough_met_ao.png │ │ ├── wood_floor_color.jpg │ │ ├── wood_floor_normal.jpg │ │ └── wood_floor_rough_met_ao.jpg ├── shaderbench │ ├── examples │ │ ├── dragon.frag │ │ ├── noise.frag │ │ └── shaderwave.frag │ ├── non-2d-texture.png │ ├── shaders │ │ ├── shaderbench.frag │ │ └── shaderbench.vert │ └── shadertoy-font.png └── snakegame │ ├── buttons │ ├── rounded-button-in.obj │ ├── rounded-button-out.obj │ ├── rounded-checkbox-in.obj │ └── rounded-checkbox-out.obj │ ├── cubemap │ ├── env_nx.png │ ├── env_ny.png │ ├── env_nz.png │ ├── env_px.png │ ├── env_py.png │ └── env_pz.png │ ├── digits.fnt │ ├── digits_font_atlas.png │ ├── ingame │ ├── body.obj │ ├── ground.obj │ └── head.obj │ ├── menubg.png │ ├── shaders │ ├── colored_object.frag │ ├── colored_object.vert │ ├── game_composite.frag │ ├── menu_button.frag │ ├── menu_button.vert │ ├── menu_image.frag │ └── menu_image.vert │ ├── texts │ ├── button-back.png │ ├── button-fullscreen.png │ ├── button-halfres.png │ ├── button-menu.png │ ├── button-newgame.png │ ├── button-options.png │ ├── button-quit.png │ ├── button-resume.png │ └── button-vsync.png │ └── titles │ ├── title-dead.png │ ├── title-options.png │ ├── title-pause.png │ └── title.png └── src ├── apps ├── atmosphere │ ├── AtmosphereApp.cpp │ ├── AtmosphereApp.hpp │ └── main.cpp ├── imagefiltering │ ├── FilteringApp.cpp │ ├── FilteringApp.hpp │ ├── PaintingTool.cpp │ ├── PaintingTool.hpp │ └── main.cpp ├── island │ ├── IslandApp.cpp │ ├── IslandApp.hpp │ ├── Terrain.cpp │ ├── Terrain.hpp │ └── main.cpp ├── pathtracer │ ├── BVHRenderer.cpp │ ├── BVHRenderer.hpp │ ├── MaterialGGX.cpp │ ├── MaterialGGX.hpp │ ├── MaterialSky.cpp │ ├── MaterialSky.hpp │ ├── PathTracer.cpp │ ├── PathTracer.hpp │ ├── PathTracerApp.cpp │ ├── PathTracerApp.hpp │ └── main.cpp ├── pbrdemo │ ├── DebugRenderer.cpp │ ├── DebugRenderer.hpp │ ├── DeferredLight.cpp │ ├── DeferredLight.hpp │ ├── DeferredRenderer.cpp │ ├── DeferredRenderer.hpp │ ├── ForwardLight.cpp │ ├── ForwardLight.hpp │ ├── ForwardRenderer.cpp │ ├── ForwardRenderer.hpp │ ├── PBRDemo.cpp │ ├── PBRDemo.hpp │ ├── PostProcessStack.cpp │ ├── PostProcessStack.hpp │ └── main.cpp ├── playground │ └── main.cpp ├── shaderbench │ ├── ShaderEditor.cpp │ ├── ShaderEditor.hpp │ └── main.cpp ├── snakegame │ ├── Game.cpp │ ├── Game.hpp │ ├── GameMenu.cpp │ ├── GameMenu.hpp │ ├── GameMenuRenderer.cpp │ ├── GameMenuRenderer.hpp │ ├── GameRenderer.cpp │ ├── GameRenderer.hpp │ ├── Player.cpp │ ├── Player.hpp │ └── main.cpp └── stenciled │ ├── StenciledApp.cpp │ ├── StenciledApp.hpp │ ├── StenciledRenderer.cpp │ ├── StenciledRenderer.hpp │ └── main.cpp ├── engine ├── Application.cpp ├── Application.hpp ├── Common.hpp ├── Documentation.hpp ├── generation │ ├── PerlinNoise.cpp │ ├── PerlinNoise.hpp │ ├── Random.cpp │ └── Random.hpp ├── graphics │ ├── DescriptorAllocator.cpp │ ├── DescriptorAllocator.hpp │ ├── GPU.cpp │ ├── GPU.hpp │ ├── GPUInternal.cpp │ ├── GPUInternal.hpp │ ├── GPUObjects.cpp │ ├── GPUObjects.hpp │ ├── GPUTypes.cpp │ ├── GPUTypes.hpp │ ├── PipelineCache.cpp │ ├── PipelineCache.hpp │ ├── Program.cpp │ ├── Program.hpp │ ├── QueryAllocator.cpp │ ├── QueryAllocator.hpp │ ├── SamplerLibrary.cpp │ ├── SamplerLibrary.hpp │ ├── ShaderCompiler.cpp │ ├── ShaderCompiler.hpp │ ├── Swapchain.cpp │ └── Swapchain.hpp ├── input │ ├── Camera.cpp │ ├── Camera.hpp │ ├── ControllableCamera.cpp │ ├── ControllableCamera.hpp │ ├── Input.cpp │ ├── Input.hpp │ ├── InputCallbacks.cpp │ ├── InputCallbacks.hpp │ └── controller │ │ ├── Controller.cpp │ │ ├── Controller.hpp │ │ ├── GamepadController.cpp │ │ ├── GamepadController.hpp │ │ ├── RawController.cpp │ │ └── RawController.hpp ├── processing │ ├── BilateralBlur.cpp │ ├── BilateralBlur.hpp │ ├── BoxBlur.cpp │ ├── BoxBlur.hpp │ ├── ConvolutionPyramid.cpp │ ├── ConvolutionPyramid.hpp │ ├── FloodFiller.cpp │ ├── FloodFiller.hpp │ ├── GaussianBlur.cpp │ ├── GaussianBlur.hpp │ ├── LaplacianIntegrator.cpp │ ├── LaplacianIntegrator.hpp │ ├── PoissonFiller.cpp │ ├── PoissonFiller.hpp │ ├── SSAO.cpp │ └── SSAO.hpp ├── raycaster │ ├── Intersection.cpp │ ├── Intersection.hpp │ ├── Raycaster.cpp │ ├── Raycaster.hpp │ ├── RaycasterVisualisation.cpp │ └── RaycasterVisualisation.hpp ├── renderers │ ├── Culler.cpp │ ├── Culler.hpp │ ├── DebugLightRenderer.cpp │ ├── DebugLightRenderer.hpp │ ├── DebugViewer.cpp │ ├── DebugViewer.hpp │ ├── LightRenderer.cpp │ ├── LightRenderer.hpp │ ├── Probe.cpp │ ├── Probe.hpp │ ├── Renderer.cpp │ ├── Renderer.hpp │ └── shadowmaps │ │ ├── BasicShadowMap.cpp │ │ ├── BasicShadowMap.hpp │ │ ├── ShadowMap.hpp │ │ ├── VarianceShadowMap.cpp │ │ └── VarianceShadowMap.hpp ├── resources │ ├── Bounds.cpp │ ├── Bounds.hpp │ ├── Buffer.cpp │ ├── Buffer.hpp │ ├── Font.cpp │ ├── Font.hpp │ ├── Image.cpp │ ├── Image.hpp │ ├── Library.cpp │ ├── Library.hpp │ ├── Mesh.cpp │ ├── Mesh.hpp │ ├── ResourcesManager.cpp │ ├── ResourcesManager.hpp │ ├── Texture.cpp │ └── Texture.hpp ├── scene │ ├── Animated.hpp │ ├── Animation.cpp │ ├── Animation.hpp │ ├── LightProbe.cpp │ ├── LightProbe.hpp │ ├── Material.cpp │ ├── Material.hpp │ ├── Object.cpp │ ├── Object.hpp │ ├── Scene.cpp │ ├── Scene.hpp │ ├── Sky.cpp │ ├── Sky.hpp │ └── lights │ │ ├── DirectionalLight.cpp │ │ ├── DirectionalLight.hpp │ │ ├── Light.cpp │ │ ├── Light.hpp │ │ ├── PointLight.cpp │ │ ├── PointLight.hpp │ │ ├── SpotLight.cpp │ │ └── SpotLight.hpp └── system │ ├── Codable.cpp │ ├── Codable.hpp │ ├── Config.cpp │ ├── Config.hpp │ ├── Logger.cpp │ ├── Logger.hpp │ ├── Query.cpp │ ├── Query.hpp │ ├── System.cpp │ ├── System.hpp │ ├── TextUtilities.cpp │ ├── TextUtilities.hpp │ ├── Window.cpp │ └── Window.hpp ├── libs ├── DEPENDENCIES.md ├── glfw │ ├── LICENSE.md │ ├── README.md │ ├── include │ │ └── GLFW │ │ │ ├── glfw3.h │ │ │ └── glfw3native.h │ ├── premake5.lua │ └── src │ │ ├── CMakeLists.txt │ │ ├── cocoa_init.m │ │ ├── cocoa_joystick.h │ │ ├── cocoa_joystick.m │ │ ├── cocoa_monitor.m │ │ ├── cocoa_platform.h │ │ ├── cocoa_time.c │ │ ├── cocoa_window.m │ │ ├── context.c │ │ ├── egl_context.c │ │ ├── egl_context.h │ │ ├── glfw3.pc.in │ │ ├── glfw3Config.cmake.in │ │ ├── glfw_config.h.in │ │ ├── glx_context.c │ │ ├── glx_context.h │ │ ├── init.c │ │ ├── input.c │ │ ├── internal.h │ │ ├── linux_joystick.c │ │ ├── linux_joystick.h │ │ ├── mappings.h │ │ ├── mappings.h.in │ │ ├── monitor.c │ │ ├── nsgl_context.h │ │ ├── nsgl_context.m │ │ ├── null_init.c │ │ ├── null_joystick.c │ │ ├── null_joystick.h │ │ ├── null_monitor.c │ │ ├── null_platform.h │ │ ├── null_window.c │ │ ├── osmesa_context.c │ │ ├── osmesa_context.h │ │ ├── posix_thread.c │ │ ├── posix_thread.h │ │ ├── posix_time.c │ │ ├── posix_time.h │ │ ├── vulkan.c │ │ ├── wgl_context.c │ │ ├── wgl_context.h │ │ ├── win32_init.c │ │ ├── win32_joystick.c │ │ ├── win32_joystick.h │ │ ├── win32_monitor.c │ │ ├── win32_platform.h │ │ ├── win32_thread.c │ │ ├── win32_time.c │ │ ├── win32_window.c │ │ ├── window.c │ │ ├── wl_init.c │ │ ├── wl_monitor.c │ │ ├── wl_platform.h │ │ ├── wl_window.c │ │ ├── x11_init.c │ │ ├── x11_monitor.c │ │ ├── x11_platform.h │ │ ├── x11_window.c │ │ ├── xkb_unicode.c │ │ └── xkb_unicode.h ├── glm │ ├── common.hpp │ ├── copying.txt │ ├── detail │ │ ├── _features.hpp │ │ ├── _fixes.hpp │ │ ├── _noise.hpp │ │ ├── _swizzle.hpp │ │ ├── _swizzle_func.hpp │ │ ├── _vectorize.hpp │ │ ├── compute_common.hpp │ │ ├── compute_vector_relational.hpp │ │ ├── func_common.inl │ │ ├── func_common_simd.inl │ │ ├── func_exponential.inl │ │ ├── func_exponential_simd.inl │ │ ├── func_geometric.inl │ │ ├── func_geometric_simd.inl │ │ ├── func_integer.inl │ │ ├── func_integer_simd.inl │ │ ├── func_matrix.inl │ │ ├── func_matrix_simd.inl │ │ ├── func_packing.inl │ │ ├── func_packing_simd.inl │ │ ├── func_trigonometric.inl │ │ ├── func_trigonometric_simd.inl │ │ ├── func_vector_relational.inl │ │ ├── func_vector_relational_simd.inl │ │ ├── glm.cpp │ │ ├── qualifier.hpp │ │ ├── setup.hpp │ │ ├── type_float.hpp │ │ ├── type_half.hpp │ │ ├── type_half.inl │ │ ├── type_mat2x2.hpp │ │ ├── type_mat2x2.inl │ │ ├── type_mat2x3.hpp │ │ ├── type_mat2x3.inl │ │ ├── type_mat2x4.hpp │ │ ├── type_mat2x4.inl │ │ ├── type_mat3x2.hpp │ │ ├── type_mat3x2.inl │ │ ├── type_mat3x3.hpp │ │ ├── type_mat3x3.inl │ │ ├── type_mat3x4.hpp │ │ ├── type_mat3x4.inl │ │ ├── type_mat4x2.hpp │ │ ├── type_mat4x2.inl │ │ ├── type_mat4x3.hpp │ │ ├── type_mat4x3.inl │ │ ├── type_mat4x4.hpp │ │ ├── type_mat4x4.inl │ │ ├── type_mat4x4_simd.inl │ │ ├── type_quat.hpp │ │ ├── type_quat.inl │ │ ├── type_quat_simd.inl │ │ ├── type_vec1.hpp │ │ ├── type_vec1.inl │ │ ├── type_vec2.hpp │ │ ├── type_vec2.inl │ │ ├── type_vec3.hpp │ │ ├── type_vec3.inl │ │ ├── type_vec4.hpp │ │ ├── type_vec4.inl │ │ └── type_vec4_simd.inl │ ├── exponential.hpp │ ├── ext.hpp │ ├── ext │ │ ├── matrix_clip_space.hpp │ │ ├── matrix_clip_space.inl │ │ ├── matrix_common.hpp │ │ ├── matrix_common.inl │ │ ├── matrix_double2x2.hpp │ │ ├── matrix_double2x2_precision.hpp │ │ ├── matrix_double2x3.hpp │ │ ├── matrix_double2x3_precision.hpp │ │ ├── matrix_double2x4.hpp │ │ ├── matrix_double2x4_precision.hpp │ │ ├── matrix_double3x2.hpp │ │ ├── matrix_double3x2_precision.hpp │ │ ├── matrix_double3x3.hpp │ │ ├── matrix_double3x3_precision.hpp │ │ ├── matrix_double3x4.hpp │ │ ├── matrix_double3x4_precision.hpp │ │ ├── matrix_double4x2.hpp │ │ ├── matrix_double4x2_precision.hpp │ │ ├── matrix_double4x3.hpp │ │ ├── matrix_double4x3_precision.hpp │ │ ├── matrix_double4x4.hpp │ │ ├── matrix_double4x4_precision.hpp │ │ ├── matrix_float2x2.hpp │ │ ├── matrix_float2x2_precision.hpp │ │ ├── matrix_float2x3.hpp │ │ ├── matrix_float2x3_precision.hpp │ │ ├── matrix_float2x4.hpp │ │ ├── matrix_float2x4_precision.hpp │ │ ├── matrix_float3x2.hpp │ │ ├── matrix_float3x2_precision.hpp │ │ ├── matrix_float3x3.hpp │ │ ├── matrix_float3x3_precision.hpp │ │ ├── matrix_float3x4.hpp │ │ ├── matrix_float3x4_precision.hpp │ │ ├── matrix_float4x2.hpp │ │ ├── matrix_float4x2_precision.hpp │ │ ├── matrix_float4x3.hpp │ │ ├── matrix_float4x3_precision.hpp │ │ ├── matrix_float4x4.hpp │ │ ├── matrix_float4x4_precision.hpp │ │ ├── matrix_projection.hpp │ │ ├── matrix_projection.inl │ │ ├── matrix_relational.hpp │ │ ├── matrix_relational.inl │ │ ├── matrix_transform.hpp │ │ ├── matrix_transform.inl │ │ ├── quaternion_common.hpp │ │ ├── quaternion_common.inl │ │ ├── quaternion_common_simd.inl │ │ ├── quaternion_double.hpp │ │ ├── quaternion_double_precision.hpp │ │ ├── quaternion_exponential.hpp │ │ ├── quaternion_exponential.inl │ │ ├── quaternion_float.hpp │ │ ├── quaternion_float_precision.hpp │ │ ├── quaternion_geometric.hpp │ │ ├── quaternion_geometric.inl │ │ ├── quaternion_relational.hpp │ │ ├── quaternion_relational.inl │ │ ├── quaternion_transform.hpp │ │ ├── quaternion_transform.inl │ │ ├── quaternion_trigonometric.hpp │ │ ├── quaternion_trigonometric.inl │ │ ├── scalar_common.hpp │ │ ├── scalar_common.inl │ │ ├── scalar_constants.hpp │ │ ├── scalar_constants.inl │ │ ├── scalar_int_sized.hpp │ │ ├── scalar_integer.hpp │ │ ├── scalar_integer.inl │ │ ├── scalar_relational.hpp │ │ ├── scalar_relational.inl │ │ ├── scalar_uint_sized.hpp │ │ ├── scalar_ulp.hpp │ │ ├── scalar_ulp.inl │ │ ├── vector_bool1.hpp │ │ ├── vector_bool1_precision.hpp │ │ ├── vector_bool2.hpp │ │ ├── vector_bool2_precision.hpp │ │ ├── vector_bool3.hpp │ │ ├── vector_bool3_precision.hpp │ │ ├── vector_bool4.hpp │ │ ├── vector_bool4_precision.hpp │ │ ├── vector_common.hpp │ │ ├── vector_common.inl │ │ ├── vector_double1.hpp │ │ ├── vector_double1_precision.hpp │ │ ├── vector_double2.hpp │ │ ├── vector_double2_precision.hpp │ │ ├── vector_double3.hpp │ │ ├── vector_double3_precision.hpp │ │ ├── vector_double4.hpp │ │ ├── vector_double4_precision.hpp │ │ ├── vector_float1.hpp │ │ ├── vector_float1_precision.hpp │ │ ├── vector_float2.hpp │ │ ├── vector_float2_precision.hpp │ │ ├── vector_float3.hpp │ │ ├── vector_float3_precision.hpp │ │ ├── vector_float4.hpp │ │ ├── vector_float4_precision.hpp │ │ ├── vector_int1.hpp │ │ ├── vector_int1_precision.hpp │ │ ├── vector_int2.hpp │ │ ├── vector_int2_precision.hpp │ │ ├── vector_int3.hpp │ │ ├── vector_int3_precision.hpp │ │ ├── vector_int4.hpp │ │ ├── vector_int4_precision.hpp │ │ ├── vector_integer.hpp │ │ ├── vector_integer.inl │ │ ├── vector_relational.hpp │ │ ├── vector_relational.inl │ │ ├── vector_uint1.hpp │ │ ├── vector_uint1_precision.hpp │ │ ├── vector_uint2.hpp │ │ ├── vector_uint2_precision.hpp │ │ ├── vector_uint3.hpp │ │ ├── vector_uint3_precision.hpp │ │ ├── vector_uint4.hpp │ │ ├── vector_uint4_precision.hpp │ │ ├── vector_ulp.hpp │ │ └── vector_ulp.inl │ ├── fwd.hpp │ ├── geometric.hpp │ ├── glm.hpp │ ├── gtc │ │ ├── bitfield.hpp │ │ ├── bitfield.inl │ │ ├── color_space.hpp │ │ ├── color_space.inl │ │ ├── constants.hpp │ │ ├── constants.inl │ │ ├── epsilon.hpp │ │ ├── epsilon.inl │ │ ├── integer.hpp │ │ ├── integer.inl │ │ ├── matrix_access.hpp │ │ ├── matrix_access.inl │ │ ├── matrix_integer.hpp │ │ ├── matrix_inverse.hpp │ │ ├── matrix_inverse.inl │ │ ├── matrix_transform.hpp │ │ ├── matrix_transform.inl │ │ ├── noise.hpp │ │ ├── noise.inl │ │ ├── packing.hpp │ │ ├── packing.inl │ │ ├── quaternion.hpp │ │ ├── quaternion.inl │ │ ├── quaternion_simd.inl │ │ ├── random.hpp │ │ ├── random.inl │ │ ├── reciprocal.hpp │ │ ├── reciprocal.inl │ │ ├── round.hpp │ │ ├── round.inl │ │ ├── type_aligned.hpp │ │ ├── type_precision.hpp │ │ ├── type_precision.inl │ │ ├── type_ptr.hpp │ │ ├── type_ptr.inl │ │ ├── ulp.hpp │ │ ├── ulp.inl │ │ └── vec1.hpp │ ├── gtx │ │ ├── associated_min_max.hpp │ │ ├── associated_min_max.inl │ │ ├── bit.hpp │ │ ├── bit.inl │ │ ├── closest_point.hpp │ │ ├── closest_point.inl │ │ ├── color_encoding.hpp │ │ ├── color_encoding.inl │ │ ├── color_space.hpp │ │ ├── color_space.inl │ │ ├── color_space_YCoCg.hpp │ │ ├── color_space_YCoCg.inl │ │ ├── common.hpp │ │ ├── common.inl │ │ ├── compatibility.hpp │ │ ├── compatibility.inl │ │ ├── component_wise.hpp │ │ ├── component_wise.inl │ │ ├── dual_quaternion.hpp │ │ ├── dual_quaternion.inl │ │ ├── easing.hpp │ │ ├── easing.inl │ │ ├── euler_angles.hpp │ │ ├── euler_angles.inl │ │ ├── extend.hpp │ │ ├── extend.inl │ │ ├── extended_min_max.hpp │ │ ├── extended_min_max.inl │ │ ├── exterior_product.hpp │ │ ├── exterior_product.inl │ │ ├── fast_exponential.hpp │ │ ├── fast_exponential.inl │ │ ├── fast_square_root.hpp │ │ ├── fast_square_root.inl │ │ ├── fast_trigonometry.hpp │ │ ├── fast_trigonometry.inl │ │ ├── float_notmalize.inl │ │ ├── functions.hpp │ │ ├── functions.inl │ │ ├── gradient_paint.hpp │ │ ├── gradient_paint.inl │ │ ├── handed_coordinate_space.hpp │ │ ├── handed_coordinate_space.inl │ │ ├── hash.hpp │ │ ├── hash.inl │ │ ├── integer.hpp │ │ ├── integer.inl │ │ ├── intersect.hpp │ │ ├── intersect.inl │ │ ├── io.hpp │ │ ├── io.inl │ │ ├── log_base.hpp │ │ ├── log_base.inl │ │ ├── matrix_cross_product.hpp │ │ ├── matrix_cross_product.inl │ │ ├── matrix_decompose.hpp │ │ ├── matrix_decompose.inl │ │ ├── matrix_factorisation.hpp │ │ ├── matrix_factorisation.inl │ │ ├── matrix_interpolation.hpp │ │ ├── matrix_interpolation.inl │ │ ├── matrix_major_storage.hpp │ │ ├── matrix_major_storage.inl │ │ ├── matrix_operation.hpp │ │ ├── matrix_operation.inl │ │ ├── matrix_query.hpp │ │ ├── matrix_query.inl │ │ ├── matrix_transform_2d.hpp │ │ ├── matrix_transform_2d.inl │ │ ├── mixed_product.hpp │ │ ├── mixed_product.inl │ │ ├── norm.hpp │ │ ├── norm.inl │ │ ├── normal.hpp │ │ ├── normal.inl │ │ ├── normalize_dot.hpp │ │ ├── normalize_dot.inl │ │ ├── number_precision.hpp │ │ ├── number_precision.inl │ │ ├── optimum_pow.hpp │ │ ├── optimum_pow.inl │ │ ├── orthonormalize.hpp │ │ ├── orthonormalize.inl │ │ ├── perpendicular.hpp │ │ ├── perpendicular.inl │ │ ├── polar_coordinates.hpp │ │ ├── polar_coordinates.inl │ │ ├── projection.hpp │ │ ├── projection.inl │ │ ├── quaternion.hpp │ │ ├── quaternion.inl │ │ ├── range.hpp │ │ ├── raw_data.hpp │ │ ├── raw_data.inl │ │ ├── rotate_normalized_axis.hpp │ │ ├── rotate_normalized_axis.inl │ │ ├── rotate_vector.hpp │ │ ├── rotate_vector.inl │ │ ├── scalar_multiplication.hpp │ │ ├── scalar_relational.hpp │ │ ├── scalar_relational.inl │ │ ├── spline.hpp │ │ ├── spline.inl │ │ ├── std_based_type.hpp │ │ ├── std_based_type.inl │ │ ├── string_cast.hpp │ │ ├── string_cast.inl │ │ ├── texture.hpp │ │ ├── texture.inl │ │ ├── transform.hpp │ │ ├── transform.inl │ │ ├── transform2.hpp │ │ ├── transform2.inl │ │ ├── type_aligned.hpp │ │ ├── type_aligned.inl │ │ ├── type_trait.hpp │ │ ├── type_trait.inl │ │ ├── vec_swizzle.hpp │ │ ├── vector_angle.hpp │ │ ├── vector_angle.inl │ │ ├── vector_query.hpp │ │ ├── vector_query.inl │ │ ├── wrap.hpp │ │ └── wrap.inl │ ├── integer.hpp │ ├── mat2x2.hpp │ ├── mat2x3.hpp │ ├── mat2x4.hpp │ ├── mat3x2.hpp │ ├── mat3x3.hpp │ ├── mat3x4.hpp │ ├── mat4x2.hpp │ ├── mat4x3.hpp │ ├── mat4x4.hpp │ ├── matrix.hpp │ ├── packing.hpp │ ├── simd │ │ ├── common.h │ │ ├── exponential.h │ │ ├── geometric.h │ │ ├── integer.h │ │ ├── matrix.h │ │ ├── neon.h │ │ ├── packing.h │ │ ├── platform.h │ │ ├── trigonometric.h │ │ └── vector_relational.h │ ├── trigonometric.hpp │ ├── vec2.hpp │ ├── vec3.hpp │ ├── vec4.hpp │ └── vector_relational.hpp ├── imgui │ ├── LICENSE.txt │ ├── imconfig.h │ ├── imgui.cpp │ ├── imgui.h │ ├── imgui_demo.cpp │ ├── imgui_draw.cpp │ ├── imgui_impl_glfw.cpp │ ├── imgui_impl_glfw.h │ ├── imgui_impl_vulkan.cpp │ ├── imgui_impl_vulkan.h │ ├── imgui_internal.h │ ├── imgui_tables.cpp │ ├── imgui_widgets.cpp │ ├── imstb_rectpack.h │ ├── imstb_textedit.h │ ├── imstb_truetype.h │ └── vulkan_patch.diff ├── mikktspace │ ├── mikktspace.c │ └── mikktspace.h ├── miniz │ ├── LICENSE │ ├── miniz.c │ └── miniz.h ├── nfd │ ├── LICENSE │ ├── common.h │ ├── nfd.h │ ├── nfd_cocoa.m │ ├── nfd_common.c │ ├── nfd_common.h │ ├── nfd_gtk.c │ ├── nfd_win.cpp │ ├── nfd_zenity.c │ ├── premake5.lua │ └── simple_exec.h ├── stb_image │ ├── LICENSE │ ├── stb_image.h │ └── stb_image_write.h ├── tinydir │ ├── COPYING │ └── tinydir.h ├── tinyexr │ └── tinyexr.h ├── vma │ ├── LICENSE.txt │ └── vk_mem_alloc.h ├── volk │ ├── LICENSE.md │ ├── volk.c │ └── volk.h └── xxhash │ ├── LICENSE │ └── xxhash.h └── tools ├── ALL.cpp ├── BRDFEstimator.cpp ├── ControllerTest.cpp ├── ImageViewer.cpp ├── ShaderValidator.cpp ├── objtoscene ├── CompositeObj.cpp ├── CompositeObj.hpp ├── ObjToScene.cpp ├── SceneExport.cpp └── SceneExport.hpp └── sceneeditor ├── EditorRenderer.cpp ├── EditorRenderer.hpp ├── SceneEditor.cpp ├── SceneEditor.hpp └── main.cpp /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | end_of_line = lf 5 | indent_size = 4 6 | indent_style = tab 7 | trim_trailing_whitespace = true 8 | insert_final_newline = true -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /build*/ 2 | /tools/ 3 | /ext/ 4 | /src/internal/ 5 | /resources/internal/ 6 | /resources/additional/ 7 | /docs/html/ 8 | /premake5.exe 9 | /.scannerwork 10 | resources.zip 11 | .DS_Store 12 | premake.tar.gz 13 | premake.zip 14 | premake5 15 | premake5.exe 16 | .vscode -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Simon Rodriguez 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /docs/.nojekyll: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/img/atmosphere.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kosua20/Rendu/c8e30b5447bacd09cebc062f861ae342fb9c5fcb/docs/img/atmosphere.png -------------------------------------------------------------------------------- /docs/img/brdfpreproc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kosua20/Rendu/c8e30b5447bacd09cebc062f861ae342fb9c5fcb/docs/img/brdfpreproc.png -------------------------------------------------------------------------------- /docs/img/controllermap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kosua20/Rendu/c8e30b5447bacd09cebc062f861ae342fb9c5fcb/docs/img/controllermap.png -------------------------------------------------------------------------------- /docs/img/header.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kosua20/Rendu/c8e30b5447bacd09cebc062f861ae342fb9c5fcb/docs/img/header.png -------------------------------------------------------------------------------- /docs/img/imagefiltering.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kosua20/Rendu/c8e30b5447bacd09cebc062f861ae342fb9c5fcb/docs/img/imagefiltering.png -------------------------------------------------------------------------------- /docs/img/imageviewer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kosua20/Rendu/c8e30b5447bacd09cebc062f861ae342fb9c5fcb/docs/img/imageviewer.png -------------------------------------------------------------------------------- /docs/img/island.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kosua20/Rendu/c8e30b5447bacd09cebc062f861ae342fb9c5fcb/docs/img/island.png -------------------------------------------------------------------------------- /docs/img/pathtracer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kosua20/Rendu/c8e30b5447bacd09cebc062f861ae342fb9c5fcb/docs/img/pathtracer.png -------------------------------------------------------------------------------- /docs/img/pbrdemo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kosua20/Rendu/c8e30b5447bacd09cebc062f861ae342fb9c5fcb/docs/img/pbrdemo.png -------------------------------------------------------------------------------- /docs/img/playground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kosua20/Rendu/c8e30b5447bacd09cebc062f861ae342fb9c5fcb/docs/img/playground.png -------------------------------------------------------------------------------- /docs/img/shaderbench.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kosua20/Rendu/c8e30b5447bacd09cebc062f861ae342fb9c5fcb/docs/img/shaderbench.png -------------------------------------------------------------------------------- /docs/img/shadervalidator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kosua20/Rendu/c8e30b5447bacd09cebc062f861ae342fb9c5fcb/docs/img/shadervalidator.png -------------------------------------------------------------------------------- /docs/img/snake.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kosua20/Rendu/c8e30b5447bacd09cebc062f861ae342fb9c5fcb/docs/img/snake.png -------------------------------------------------------------------------------- /docs/img/stencil.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kosua20/Rendu/c8e30b5447bacd09cebc062f861ae342fb9c5fcb/docs/img/stencil.png -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 |9 | If not redirected, click here. 10 |
11 | 12 | -------------------------------------------------------------------------------- /docs/index_local.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 |9 | If not redirected, click here. 10 |
11 | 12 | -------------------------------------------------------------------------------- /docs/theme/footer.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
11 | 12 | 13 |