gitextract_l0v6lfp5/ ├── .cargo/ │ └── config.toml ├── .gitattributes ├── .github/ │ ├── FUNDING.yml │ └── workflows/ │ └── push.yaml ├── .gitignore ├── .helix/ │ └── snippets/ │ └── rust.json ├── AGENTS.md ├── CONTRIBUTING.md ├── Cargo.toml ├── LICENSE ├── NOTES.md ├── README.md ├── blender/ │ ├── cheetah_cone.blend │ ├── normal_mapping_brick_sphere.blend │ ├── pedestal.blend │ ├── shadow_mapping_point.blend │ ├── shadow_mapping_points.blend │ ├── shadow_mapping_sanity_spot.blend │ ├── shadow_mapping_spots.blend │ ├── spot_lights.blend │ └── spot_one.blend ├── clippy.toml ├── crates/ │ ├── example/ │ │ ├── Cargo.toml │ │ └── src/ │ │ ├── camera.rs │ │ ├── lib.rs │ │ ├── main.rs │ │ ├── time.rs │ │ └── utils.rs │ ├── example-culling/ │ │ ├── Cargo.toml │ │ └── src/ │ │ └── main.rs │ ├── example-wasm/ │ │ ├── .gitignore │ │ ├── Cargo.toml │ │ ├── Trunk.toml │ │ ├── index.html │ │ └── src/ │ │ ├── event.rs │ │ ├── lib.rs │ │ └── req_animation_frame.rs │ ├── examples/ │ │ ├── Cargo.toml │ │ └── src/ │ │ ├── context.rs │ │ ├── gltf.rs │ │ ├── lib.rs │ │ ├── lighting.rs │ │ ├── skybox.rs │ │ └── stage.rs │ ├── img-diff/ │ │ ├── Cargo.toml │ │ └── src/ │ │ └── lib.rs │ ├── loading-bytes/ │ │ ├── Cargo.toml │ │ ├── README.md │ │ └── src/ │ │ └── lib.rs │ ├── renderling/ │ │ ├── Cargo.toml │ │ ├── shaders/ │ │ │ ├── atlas-shader-atlas_blit_fragment.spv │ │ │ ├── atlas-shader-atlas_blit_vertex.spv │ │ │ ├── bloom-shader-bloom_downsample_fragment.spv │ │ │ ├── bloom-shader-bloom_mix_fragment.spv │ │ │ ├── bloom-shader-bloom_upsample_fragment.spv │ │ │ ├── bloom-shader-bloom_vertex.spv │ │ │ ├── compositor-compositor_fragment.spv │ │ │ ├── compositor-compositor_vertex.spv │ │ │ ├── convolution-shader-brdf_lut_convolution_fragment.spv │ │ │ ├── convolution-shader-brdf_lut_convolution_vertex.spv │ │ │ ├── convolution-shader-generate_mipmap_fragment.spv │ │ │ ├── convolution-shader-generate_mipmap_vertex.spv │ │ │ ├── convolution-shader-prefilter_environment_cubemap_fragment.spv │ │ │ ├── convolution-shader-prefilter_environment_cubemap_vertex.spv │ │ │ ├── cubemap-shader-cubemap_sampling_test_fragment.spv │ │ │ ├── cubemap-shader-cubemap_sampling_test_vertex.spv │ │ │ ├── cull-shader-compute_copy_depth_to_pyramid.spv │ │ │ ├── cull-shader-compute_copy_depth_to_pyramid_multisampled.spv │ │ │ ├── cull-shader-compute_culling.spv │ │ │ ├── cull-shader-compute_downsample_depth_pyramid.spv │ │ │ ├── debug-shader-debug_overlay_fragment.spv │ │ │ ├── debug-shader-debug_overlay_vertex.spv │ │ │ ├── light-shader-light_tiling_bin_lights.spv │ │ │ ├── light-shader-light_tiling_clear_tiles.spv │ │ │ ├── light-shader-light_tiling_compute_tile_min_and_max_depth.spv │ │ │ ├── light-shader-light_tiling_compute_tile_min_and_max_depth_multisampled.spv │ │ │ ├── light-shader-light_tiling_depth_pre_pass.spv │ │ │ ├── light-shader-shadow_mapping_fragment.spv │ │ │ ├── light-shader-shadow_mapping_vertex.spv │ │ │ ├── manifest.json │ │ │ ├── pbr-ibl-shader-di_convolution_fragment.spv │ │ │ ├── primitive-shader-primitive_fragment.spv │ │ │ ├── primitive-shader-primitive_vertex.spv │ │ │ ├── skybox-shader-skybox_cubemap_fragment.spv │ │ │ ├── skybox-shader-skybox_cubemap_vertex.spv │ │ │ ├── skybox-shader-skybox_equirectangular_fragment.spv │ │ │ ├── skybox-shader-skybox_vertex.spv │ │ │ ├── tonemapping-tonemapping_fragment.spv │ │ │ ├── tonemapping-tonemapping_vertex.spv │ │ │ ├── tutorial-implicit_isosceles_vertex.spv │ │ │ ├── tutorial-passthru_fragment.spv │ │ │ ├── tutorial-slabbed_renderlet.spv │ │ │ ├── tutorial-slabbed_vertices.spv │ │ │ ├── tutorial-slabbed_vertices_no_instance.spv │ │ │ ├── ui_slab-shader-ui_fragment.spv │ │ │ └── ui_slab-shader-ui_vertex.spv │ │ ├── src/ │ │ │ ├── atlas/ │ │ │ │ ├── atlas_image.rs │ │ │ │ ├── cpu.rs │ │ │ │ └── shader.rs │ │ │ ├── atlas.rs │ │ │ ├── bindgroup.rs │ │ │ ├── bloom/ │ │ │ │ ├── cpu.rs │ │ │ │ └── shader.rs │ │ │ ├── bloom.rs │ │ │ ├── build.rs │ │ │ ├── bvol.rs │ │ │ ├── camera/ │ │ │ │ ├── cpu.rs │ │ │ │ └── shader.rs │ │ │ ├── camera.rs │ │ │ ├── color.rs │ │ │ ├── compositor/ │ │ │ │ └── cpu.rs │ │ │ ├── compositor.rs │ │ │ ├── context.rs │ │ │ ├── convolution.rs │ │ │ ├── cubemap/ │ │ │ │ ├── cpu.rs │ │ │ │ └── shader.rs │ │ │ ├── cubemap.rs │ │ │ ├── cull/ │ │ │ │ ├── cpu.rs │ │ │ │ └── shader.rs │ │ │ ├── cull.rs │ │ │ ├── debug/ │ │ │ │ └── cpu.rs │ │ │ ├── debug.rs │ │ │ ├── draw/ │ │ │ │ └── cpu.rs │ │ │ ├── draw.rs │ │ │ ├── geometry/ │ │ │ │ ├── cpu.rs │ │ │ │ └── shader.rs │ │ │ ├── geometry.rs │ │ │ ├── gltf/ │ │ │ │ └── anime.rs │ │ │ ├── gltf.rs │ │ │ ├── internal/ │ │ │ │ └── cpu.rs │ │ │ ├── internal.rs │ │ │ ├── lib.rs │ │ │ ├── light/ │ │ │ │ ├── cpu/ │ │ │ │ │ └── test.rs │ │ │ │ ├── cpu.rs │ │ │ │ ├── shader.rs │ │ │ │ ├── shadow_map.rs │ │ │ │ └── tiling.rs │ │ │ ├── light.rs │ │ │ ├── linkage/ │ │ │ │ ├── atlas_blit_fragment.rs │ │ │ │ ├── atlas_blit_vertex.rs │ │ │ │ ├── bloom_downsample_fragment.rs │ │ │ │ ├── bloom_mix_fragment.rs │ │ │ │ ├── bloom_upsample_fragment.rs │ │ │ │ ├── bloom_vertex.rs │ │ │ │ ├── brdf_lut_convolution_fragment.rs │ │ │ │ ├── brdf_lut_convolution_vertex.rs │ │ │ │ ├── compositor_fragment.rs │ │ │ │ ├── compositor_vertex.rs │ │ │ │ ├── compute_copy_depth_to_pyramid.rs │ │ │ │ ├── compute_copy_depth_to_pyramid_multisampled.rs │ │ │ │ ├── compute_culling.rs │ │ │ │ ├── compute_downsample_depth_pyramid.rs │ │ │ │ ├── cubemap_sampling_test_fragment.rs │ │ │ │ ├── cubemap_sampling_test_vertex.rs │ │ │ │ ├── debug_overlay_fragment.rs │ │ │ │ ├── debug_overlay_vertex.rs │ │ │ │ ├── di_convolution_fragment.rs │ │ │ │ ├── generate_mipmap_fragment.rs │ │ │ │ ├── generate_mipmap_vertex.rs │ │ │ │ ├── implicit_isosceles_vertex.rs │ │ │ │ ├── light_tiling_bin_lights.rs │ │ │ │ ├── light_tiling_clear_tiles.rs │ │ │ │ ├── light_tiling_compute_tile_min_and_max_depth.rs │ │ │ │ ├── light_tiling_compute_tile_min_and_max_depth_multisampled.rs │ │ │ │ ├── light_tiling_depth_pre_pass.rs │ │ │ │ ├── passthru_fragment.rs │ │ │ │ ├── prefilter_environment_cubemap_fragment.rs │ │ │ │ ├── prefilter_environment_cubemap_vertex.rs │ │ │ │ ├── primitive_fragment.rs │ │ │ │ ├── primitive_vertex.rs │ │ │ │ ├── shadow_mapping_fragment.rs │ │ │ │ ├── shadow_mapping_vertex.rs │ │ │ │ ├── skybox_cubemap_fragment.rs │ │ │ │ ├── skybox_cubemap_vertex.rs │ │ │ │ ├── skybox_equirectangular_fragment.rs │ │ │ │ ├── skybox_vertex.rs │ │ │ │ ├── slabbed_renderlet.rs │ │ │ │ ├── slabbed_vertices.rs │ │ │ │ ├── slabbed_vertices_no_instance.rs │ │ │ │ ├── tonemapping_fragment.rs │ │ │ │ ├── tonemapping_vertex.rs │ │ │ │ ├── ui_fragment.rs │ │ │ │ └── ui_vertex.rs │ │ │ ├── linkage.rs │ │ │ ├── material/ │ │ │ │ └── cpu.rs │ │ │ ├── material.rs │ │ │ ├── math.rs │ │ │ ├── mesh.rs │ │ │ ├── pbr/ │ │ │ │ ├── brdf/ │ │ │ │ │ ├── cpu.rs │ │ │ │ │ └── shader.rs │ │ │ │ ├── brdf.rs │ │ │ │ ├── debug.rs │ │ │ │ ├── ibl/ │ │ │ │ │ ├── cpu.rs │ │ │ │ │ ├── diffuse_irradiance.rs │ │ │ │ │ └── shader.rs │ │ │ │ ├── ibl.rs │ │ │ │ └── shader.rs │ │ │ ├── pbr.rs │ │ │ ├── primitive/ │ │ │ │ ├── cpu.rs │ │ │ │ └── shader.rs │ │ │ ├── primitive.rs │ │ │ ├── sdf.rs │ │ │ ├── skybox/ │ │ │ │ ├── cpu.rs │ │ │ │ └── shader.rs │ │ │ ├── skybox.rs │ │ │ ├── stage/ │ │ │ │ └── cpu.rs │ │ │ ├── stage.rs │ │ │ ├── sync.rs │ │ │ ├── texture/ │ │ │ │ └── mips.rs │ │ │ ├── texture.rs │ │ │ ├── tonemapping/ │ │ │ │ └── cpu.rs │ │ │ ├── tonemapping.rs │ │ │ ├── transform/ │ │ │ │ └── cpu.rs │ │ │ ├── transform.rs │ │ │ ├── tutorial/ │ │ │ │ ├── implicit_isosceles_vertex.wgsl │ │ │ │ └── passthru.wgsl │ │ │ ├── tutorial.rs │ │ │ ├── types.rs │ │ │ └── ui_slab/ │ │ │ ├── mod.rs │ │ │ └── shader.rs │ │ ├── tests/ │ │ │ └── wasm.rs │ │ └── webdriver.json │ ├── renderling-build/ │ │ ├── Cargo.toml │ │ └── src/ │ │ └── lib.rs │ ├── renderling-ui/ │ │ ├── Cargo.toml │ │ └── src/ │ │ ├── lib.rs │ │ ├── renderer.rs │ │ └── test.rs │ ├── sandbox/ │ │ ├── Cargo.toml │ │ └── src/ │ │ └── main.rs │ ├── wire-types/ │ │ ├── Cargo.toml │ │ └── src/ │ │ └── lib.rs │ └── xtask/ │ ├── Cargo.toml │ └── src/ │ ├── deps.rs │ ├── main.rs │ └── server.rs ├── fonts/ │ └── Font Awesome 6 Free-Regular-400.otf ├── gltf/ │ ├── DamagedHelmet.glb │ ├── EmissiveStrengthTest.glb │ ├── Fox.glb │ ├── SimpleSkin.gltf │ ├── animated_triangle.gltf │ ├── box_animated.glb │ ├── cheetah_cone.glb │ ├── cube.glb │ ├── four_spotlights.glb │ ├── gltfTutorial_003_MinimalGltfFile.gltf │ ├── gltfTutorial_008_SimpleMeshes.gltf │ ├── gltfTutorial_013_SimpleTexture.gltf │ ├── gltfTutorial_017_SimpleMorphTarget.gltf │ ├── gltfTutorial_019_SimpleSkin.gltf │ ├── light_tiling_test.glb │ ├── marble_bust_1k.glb │ ├── normal_mapping_brick_sphere.glb │ ├── pedestal.glb │ ├── shadow_mapping_only_cuboid.gltf │ ├── shadow_mapping_only_cuboid_red_and_blue.gltf │ ├── shadow_mapping_point.glb │ ├── shadow_mapping_points.glb │ ├── shadow_mapping_sanity.glb │ ├── shadow_mapping_sanity.gltf │ ├── shadow_mapping_sanity_camera.gltf │ ├── shadow_mapping_spots.glb │ ├── simple_morph_triangle.gltf │ ├── spot_lights.glb │ └── spot_one.glb ├── img/ │ └── hdr/ │ ├── helipad.hdr │ ├── night.hdr │ └── resting_place.hdr ├── manual/ │ ├── .gitignore │ ├── book.toml │ └── src/ │ ├── SUMMARY.md │ ├── context.md │ ├── gltf.md │ ├── lighting/ │ │ ├── analytical.md │ │ └── ibl.md │ ├── lighting.md │ ├── reflinks.md │ ├── setup.md │ ├── skybox.md │ ├── stage.md │ └── welcome.md └── rustfmt.toml