From 79a6f2cd3158ff1ae16b94fcf260cf52744c73fc Mon Sep 17 00:00:00 2001 From: Vecvec <130132884+Vecvec@users.noreply.github.com> Date: Sun, 10 Nov 2024 06:59:48 +1300 Subject: [PATCH] Ray Queries (#6291) * fix more compile errors * fix err * fix all compile errors * fix clippy errors * fix issues in ray-traced-triangle example * fix clippy warnings * fix wasm not compiling * fix test * fix clippy (again) * fix some rustfmt issues * fix more rustfmt issues * fix even more rustfmt issues * fix yet more rustfmt issues * add #[allow(dead_code)] to some structs to fix clippy on web assembly * more format fixes * even more format fixes * close to final format fixes * final format fixes (hopefully) * actual final format fixes (hopefully) * move ray_cube_cube example and fix bugs * move other examples * fix crash when dropping * fix test * apply clippy and rustfmt changes * fix some memory leaks * fix incompatibility with new wgpu trunk changes * fix clippy & fmt * fix clippy errors on github * update to trunk * remove a line that printed log "Created blas ..." in device create tlas * fix merge issues * fix merge * fix fmt * restored example ray scene functionality * WIP fix rebase * Fix compile issues * More fixes * Fix rebase * Add wgls backend write_value_type AccelerationStructure * Add back xtask Cargo.lock * Revert serde path * Doc typos * Add -diff * Revert more serde * Revert serde again? * Fix doc typo * add test * clippy & fmt * fix error "blas does not exist" * fix various things * fix unused acceleration structures causing invalid SPIR-V * fix merge * fix use after free in a different way (now moved tlas instances to wgpu_core) * refactor & fmt * remove accidentally created file * remove accidentally created file (actually) * merge & fix * Fix problems * fix validation error * fix validation * fix merge * fmt * fix merge * use staging buffer trackers in creating the ray-tracing staging buffers (not the tlas_s) * change one missed staging buffer's tracker * wip: example * finished shadow! * fix merge * clippy * remove some uses of blas ids * fmt * fix merge * deduplicate code shared between command_encoder_build_acceleration_structures and command_encoder_build_acceleration_structures_unsafe_tlas * clippy * fix merge * fix warnings * clippy & fmt * re-add matching to get_raw_tlas_instance_size and tlas_instance_into_bytes * fmt * fix command * wip: fix merge * fix merge * fmt & docs * fix wasm clippy * fix issues with tests * fix issues with tests * fmt & clippy (wasm) * wip ray-traced-triangle (non hal) * unify camera location in ray_shadows * fix tests * add readme to ray_traced_triangle * note that vertex format must be f32x3 (not yet validated) * changelog * require VertexFormat::Float32x3 * fix compile error * when creating and building acceleration structures require Features::RAY_TRACING_ACCELERATION_STRUCTURE is enabled * remove duplicate workaround * fix most feedback * remove all changes from .gitattributes * fix compile error in test * more changes along same lines * format * apply feedback to more places * fix `cargo clippy` not just `cargo clippy --all-features` * cache max instances from tlas creation * fix clippy * fix examples * fix tests * remove now useless docs * add more docs * yet more docs * still more docs * Documentation. * Running out of unique commit messages to say writing docs. * Add more references to docs. * Get BindGroup in scope * Remove unintentional changes * Remove #[allow(dead_code)] * Remove old comments * Add device.poll * make ray_scene start right way up * fmt * move scratch buffer to its own module * actually remove intentional changes (turns out wgt is inconsistent) * use better names in ray_scene/shader.wgsl * fmt * remove more unintentional changes. * work on ray_tracing use after free * spelling Co-authored-by: Connor Fitzgerald * grammar Co-authored-by: Connor Fitzgerald * move things into struct (should be all vectors with 3 item types or more) * remove long-standing locks. * fmt * move not using index buffer to test * impl index & index mut for tlas package * impl index & index mut for tlas package * fix errors * fix test errors * move everything out of ray_tracing.rs * more index_mut * fmt * fix docs links * move to separate impl block * fix older request review * fmt * remove missed deref * fix wasm clippy * change to suggestions * fmt * add a note as to why `command_encoder_build_acceleration_structures_unsafe_tlas` and `command_encoder_build_acceleration_structures` are currently separate * add a todo to reconsider soon `command_encoder_build_acceleration_structures_unsafe_tlas` * switch to mat4 in ray-tracing examples * Combine RT Tests Under Single Submodule * Add More Raytracing Tests and Re-Organize * Documentation and Formatting Fixes * Remove Forced Alignment in wgpu-hal * work on out_of_order_as_build and add out_of_order_as_build_use * fmt * update test label naming * fix one validation error * fix clippy & fmt * add acceleration structure creation tests * make mis-matched index test use the correct function * move validation into validate_command_buffer * fix tests * add blas and tlas to pending writes to remove (now unneeded) `device.poll()`s * remove commented out code from examples and properly use the constants in ray_shadow * add examples to examples\README.md * rename ray tracing to ray queries in readme * remove unneeded usage from scratch buffer creation * use snatchables for raw acceleration structures * format * add EXPERIMENTAL_ to features * fix missed comment --------- Co-authored-by: Daniel Keitel Co-authored-by: JMS55 <47158642+JMS55@users.noreply.github.com> Co-authored-by: atlas dostal Co-authored-by: vero Co-authored-by: Connor Fitzgerald --- CHANGELOG.md | 4 + Cargo.lock | 4 + examples/Cargo.toml | 2 +- examples/README.md | 84 +- examples/src/lib.rs | 5 + examples/src/main.rs | 30 + examples/src/ray_cube_compute/README.md | 14 + examples/src/ray_cube_compute/blit.wgsl | 52 + examples/src/ray_cube_compute/mod.rs | 500 ++++ examples/src/ray_cube_compute/screenshot.png | Bin 0 -> 490444 bytes examples/src/ray_cube_compute/shader.wgsl | 82 + examples/src/ray_cube_fragment/README.md | 13 + examples/src/ray_cube_fragment/mod.rs | 391 +++ examples/src/ray_cube_fragment/screenshot.png | Bin 0 -> 598032 bytes examples/src/ray_cube_fragment/shader.wgsl | 74 + examples/src/ray_scene/cube.mtl | 20 + examples/src/ray_scene/cube.obj | 2587 +++++++++++++++++ examples/src/ray_scene/mod.rs | 569 ++++ examples/src/ray_scene/screenshot.png | Bin 0 -> 77656 bytes examples/src/ray_scene/shader.wgsl | 164 ++ examples/src/ray_shadows/README.md | 13 + examples/src/ray_shadows/mod.rs | 385 +++ examples/src/ray_shadows/screenshot.png | Bin 0 -> 11969 bytes examples/src/ray_shadows/shader.wgsl | 70 + examples/src/ray_traced_triangle/README.md | 14 + examples/src/ray_traced_triangle/blit.wgsl | 54 + examples/src/ray_traced_triangle/mod.rs | 443 +++ .../src/ray_traced_triangle/screenshot.png | Bin 0 -> 118301 bytes examples/src/ray_traced_triangle/shader.wgsl | 39 + player/src/lib.rs | 106 + tests/Cargo.toml | 1 + tests/tests/buffer_usages.rs | 3 +- tests/tests/ray_tracing/as_build.rs | 285 ++ tests/tests/ray_tracing/as_create.rs | 117 + tests/tests/ray_tracing/as_use_after_free.rs | 152 + tests/tests/ray_tracing/mod.rs | 4 + tests/tests/ray_tracing/scene/mesh_gen.rs | 83 + tests/tests/ray_tracing/scene/mod.rs | 121 + tests/tests/ray_tracing/shader.wgsl | 11 + tests/tests/root.rs | 1 + wgpu-core/src/binding_model.rs | 10 +- wgpu-core/src/command/compute.rs | 17 +- wgpu-core/src/command/mod.rs | 10 + wgpu-core/src/command/ray_tracing.rs | 1285 ++++++++ wgpu-core/src/conv.rs | 8 + wgpu-core/src/device/global.rs | 21 +- wgpu-core/src/device/life.rs | 67 + wgpu-core/src/device/mod.rs | 5 + wgpu-core/src/device/queue.rs | 47 + wgpu-core/src/device/ray_tracing.rs | 355 +++ wgpu-core/src/device/resource.rs | 46 +- wgpu-core/src/device/trace.rs | 21 + wgpu-core/src/hub.rs | 8 +- wgpu-core/src/id.rs | 3 + wgpu-core/src/lib.rs | 2 + wgpu-core/src/lock/rank.rs | 4 + wgpu-core/src/ray_tracing.rs | 337 +++ wgpu-core/src/resource.rs | 199 ++ wgpu-core/src/scratch.rs | 43 + wgpu-core/src/track/mod.rs | 14 +- wgpu-core/src/track/ray_tracing.rs | 81 + wgpu-core/src/track/stateless.rs | 10 + wgpu-core/src/validation.rs | 4 + wgpu-hal/src/vulkan/adapter.rs | 24 +- wgpu-hal/src/vulkan/command.rs | 12 +- wgpu-hal/src/vulkan/conv.rs | 5 +- wgpu-hal/src/vulkan/device.rs | 9 +- wgpu-types/src/lib.rs | 156 +- wgpu/src/api/bind_group.rs | 12 + wgpu/src/api/blas.rs | 232 ++ wgpu/src/api/command_encoder.rs | 169 ++ wgpu/src/api/device.rs | 60 + wgpu/src/api/mod.rs | 4 + wgpu/src/api/tlas.rs | 198 ++ wgpu/src/backend/webgpu.rs | 56 + wgpu/src/backend/wgpu_core.rs | 210 ++ wgpu/src/context.rs | 204 ++ 77 files changed, 10364 insertions(+), 81 deletions(-) create mode 100644 examples/src/ray_cube_compute/README.md create mode 100644 examples/src/ray_cube_compute/blit.wgsl create mode 100644 examples/src/ray_cube_compute/mod.rs create mode 100644 examples/src/ray_cube_compute/screenshot.png create mode 100644 examples/src/ray_cube_compute/shader.wgsl create mode 100644 examples/src/ray_cube_fragment/README.md create mode 100644 examples/src/ray_cube_fragment/mod.rs create mode 100644 examples/src/ray_cube_fragment/screenshot.png create mode 100644 examples/src/ray_cube_fragment/shader.wgsl create mode 100644 examples/src/ray_scene/cube.mtl create mode 100644 examples/src/ray_scene/cube.obj create mode 100644 examples/src/ray_scene/mod.rs create mode 100644 examples/src/ray_scene/screenshot.png create mode 100644 examples/src/ray_scene/shader.wgsl create mode 100644 examples/src/ray_shadows/README.md create mode 100644 examples/src/ray_shadows/mod.rs create mode 100644 examples/src/ray_shadows/screenshot.png create mode 100644 examples/src/ray_shadows/shader.wgsl create mode 100644 examples/src/ray_traced_triangle/README.md create mode 100644 examples/src/ray_traced_triangle/blit.wgsl create mode 100644 examples/src/ray_traced_triangle/mod.rs create mode 100644 examples/src/ray_traced_triangle/screenshot.png create mode 100644 examples/src/ray_traced_triangle/shader.wgsl create mode 100644 tests/tests/ray_tracing/as_build.rs create mode 100644 tests/tests/ray_tracing/as_create.rs create mode 100644 tests/tests/ray_tracing/as_use_after_free.rs create mode 100644 tests/tests/ray_tracing/mod.rs create mode 100644 tests/tests/ray_tracing/scene/mesh_gen.rs create mode 100644 tests/tests/ray_tracing/scene/mod.rs create mode 100644 tests/tests/ray_tracing/shader.wgsl create mode 100644 wgpu-core/src/command/ray_tracing.rs create mode 100644 wgpu-core/src/device/ray_tracing.rs create mode 100644 wgpu-core/src/ray_tracing.rs create mode 100644 wgpu-core/src/scratch.rs create mode 100644 wgpu-core/src/track/ray_tracing.rs create mode 100644 wgpu/src/api/blas.rs create mode 100644 wgpu/src/api/tlas.rs diff --git a/CHANGELOG.md b/CHANGELOG.md index 01fb81cdd9..531cff372b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -200,6 +200,10 @@ By @MarijnS95 in [#6006](https://github.com/gfx-rs/wgpu/pull/6006). ### New Features +#### Wgpu + +- Added initial acceleration structure and ray query support into wgpu. By @expenses @daniel-keitel @Vecvec @JMS55 @atlv24 in [#6291](https://github.com/gfx-rs/wgpu/pull/6291) + #### Naga - Support constant evaluation for `firstLeadingBit` and `firstTrailingBit` numeric built-ins in WGSL. Front-ends that translate to these built-ins also benefit from constant evaluation. By @ErichDonGubler in [#5101](https://github.com/gfx-rs/wgpu/pull/5101). diff --git a/Cargo.lock b/Cargo.lock index 59c7e19875..c472cdb86b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1305,6 +1305,9 @@ name = "glam" version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "779ae4bf7e8421cf91c0b3b64e7e8b40b862fba4d393f59150042de7c4965a94" +dependencies = [ + "bytemuck", +] [[package]] name = "glow" @@ -3746,6 +3749,7 @@ dependencies = [ "ctor", "env_logger", "futures-lite", + "glam", "image", "itertools", "js-sys", diff --git a/examples/Cargo.toml b/examples/Cargo.toml index 1f4d4951f5..02fb524a1c 100644 --- a/examples/Cargo.toml +++ b/examples/Cargo.toml @@ -34,7 +34,7 @@ cfg-if.workspace = true encase = { workspace = true, features = ["glam"] } flume.workspace = true getrandom.workspace = true -glam.workspace = true +glam = { workspace = true, features = ["bytemuck"] } ktx2.workspace = true log.workspace = true nanorand.workspace = true diff --git a/examples/README.md b/examples/README.md index 0ce432cf23..c67941e067 100644 --- a/examples/README.md +++ b/examples/README.md @@ -25,6 +25,9 @@ The rest of the examples are for demonstrating specific features that you can co - `skybox` - Shows off too many concepts to list here. The name comes from game development where a "skybox" acts as a background for rendering, usually to add a sky texture for immersion, although they can also be used for backdrops to give the idea of a world beyond the game scene. This example does so much more than this, though, as it uses a car model loaded from a file and uses the user's mouse to rotate the car model in 3d. `skybox` also makes use of depth textures and similar app patterns to `uniform_values`. - `shadow` - Likely by far the most complex example (certainly the largest in lines of code) of the official WGPU examples. `shadow` demonstrates basic scene rendering with the main attraction being lighting and shadows (as the name implies). It is recommended that any user looking into lighting be very familiar with the basic concepts of not only rendering with WGPU but also the primary mathematical ideas of computer graphics. - `render_to_texture` - Renders to an image texture offscreen, demonstrating both off-screen rendering as well as how to add a sort of resolution-agnostic screenshot feature to an engine. This example either outputs an image file of your naming (pass command line arguments after specifying a `--` like `cargo run --bin wgpu-examples -- render_to_texture "test.png"`) or adds an `img` element containing the image to the page in WASM. +- `ray_cube_fragment` - Demonstrates using ray queries with a fragment shader. +- `ray_scene` - Demonstrates using ray queries and model loading +- `ray_shadows` - Demonstrates a simple use of ray queries - high quality shadows - uses a light set with push constants to raytrace through an untransformed scene and detect whether there is something obstructing the light. #### Compute @@ -37,48 +40,51 @@ The rest of the examples are for demonstrating specific features that you can co #### Combined - `boids` - Demonstrates how to combine compute and render workflows by performing a [boid](https://en.wikipedia.org/wiki/Boids) simulation and rendering the boids to the screen as little triangles. +- `ray_cube_compute` - Demonstrates using ray queries with a compute shader. +- `ray_traced_triangle` - A simpler example demonstrating using ray queries with a compute shader ## Feature matrix -| Feature | boids | bunnymark | conservative_raster | cube | hello_synchronization | hello_workgroups | mipmap | msaa_line | render_to_texture | repeated_compute | shadow | skybox | stencil_triangles | storage_texture | texture_arrays | uniform_values | water | -| ---------------------------- | ------ | --------- | ------------------- | ------ | --------------------- | ---------------- | ------ | --------- | ----------------- | ---------------- | ------ | ------ | ----------------- | --------------- | -------------- | -------------- | ------ | -| vertex attributes | :star: | | | :star: | | | | :star: | | | :star: | :star: | | | :star: | | :star: | -| instancing | :star: | | | | | | | | | | | | | | | | | -| lines and points | | | :star: | | | | | :star: | | | | | | | | | | -| dynamic buffer offsets | | :star: | | | | | | | | | :star: | | | | | | | -| implicit layout | | | | | | | :star: | | | | | | | | | | | -| sampled color textures | :star: | :star: | :star: | :star: | | | :star: | | | | | :star: | | | :star: | | :star: | -| storage textures | :star: | | | | | | | | | | | | | :star: | | | | -| comparison samplers | | | | | | | | | | | :star: | | | | | | | -| subresource views | | | | | | | :star: | | | | :star: | | | | | | | -| cubemaps | | | | | | | | | | | | :star: | | | | | | -| multisampling | | | | | | | | :star: | | | | | | | | | | -| off-screen rendering | | | :star: | | | | | | :star: | | :star: | | | | | | :star: | -| stencil testing | | | | | | | | | | | | | :star: | | | | | -| depth testing | | | | | | | | | | | :star: | :star: | | | | | :star: | -| depth biasing | | | | | | | | | | | :star: | | | | | | | -| read-only depth | | | | | | | | | | | | | | | | | :star: | -| blending | | :star: | | :star: | | | | | | | | | | | | | :star: | -| render bundles | | | | | | | | :star: | | | | | | | | | :star: | -| uniform buffers | | | | | | | | | | | | | | | | :star: | | -| compute passes | :star: | | | | :star: | :star: | | | | :star: | | | | :star: | | | | -| buffer mapping | | | | | :star: | :star: | | | | :star: | | | | :star: | | | | -| error scopes | | | | :star: | | | | | | | | | | | | | | -| compute workgroups | | | | | :star: | :star: | | | | | | | | | | | | -| compute synchronization | | | | | :star: | | | | | | | | | | | | | -| _optional extensions_ | | | | | | | | | | | | | | | :star: | | | -| - SPIR-V shaders | | | | | | | | | | | | | | | | | | -| - binding array | | | | | | | | | | | | | | | :star: | | | -| - push constants | | | | | | | | | | | | | | | | | | -| - depth clamping | | | | | | | | | | | :star: | | | | | | | -| - compressed textures | | | | | | | | | | | | :star: | | | | | | -| - polygon mode | | | | :star: | | | | | | | | | | | | | | -| - queries | | | | | | | :star: | | | | | | | | | | | -| - conservative rasterization | | | :star: | | | | | | | | | | | | | | | -| _integrations_ | | | | | | | | | | | | | | | | | | -| - staging belt | | | | | | | | | | | | :star: | | | | | | -| - typed arena | | | | | | | | | | | | | | | | | | -| - obj loading | | | | | | | | | | | | :star: | | | | | | +| Feature | boids | bunnymark | conservative_raster | cube | hello_synchronization | hello_workgroups | mipmap | msaa_line | render_to_texture | repeated_compute | shadow | skybox | stencil_triangles | storage_texture | texture_arrays | uniform_values | water | ray_cube_compute | ray_cube_fragment | ray_scene | ray_shadows | ray_traced_triangle | +|------------------------------| ------ | --------- | ------------------- | ------ | --------------------- | ---------------- | ------ | --------- | ----------------- | ---------------- | ------ | ------ | ----------------- | --------------- | -------------- | -------------- | ------ |------------------|-------------------|-----------|-------------|---------------------| +| vertex attributes | :star: | | | :star: | | | | :star: | | | :star: | :star: | | | :star: | | :star: | | | | | | +| instancing | :star: | | | | | | | | | | | | | | | | | | | | | | +| lines and points | | | :star: | | | | | :star: | | | | | | | | | | | | | | | +| dynamic buffer offsets | | :star: | | | | | | | | | :star: | | | | | | | | | | | | +| implicit layout | | | | | | | :star: | | | | | | | | | | | | | | | | +| sampled color textures | :star: | :star: | :star: | :star: | | | :star: | | | | | :star: | | | :star: | | :star: | | | | | | +| storage textures | :star: | | | | | | | | | | | | | :star: | | | | :star: | | | | :star: | +| comparison samplers | | | | | | | | | | | :star: | | | | | | | | | | | | +| subresource views | | | | | | | :star: | | | | :star: | | | | | | | | | | | | +| cubemaps | | | | | | | | | | | | :star: | | | | | | | | | | | +| multisampling | | | | | | | | :star: | | | | | | | | | | | | | | | +| off-screen rendering | | | :star: | | | | | | :star: | | :star: | | | | | | :star: | | | | | | +| stencil testing | | | | | | | | | | | | | :star: | | | | | | | | | | +| depth testing | | | | | | | | | | | :star: | :star: | | | | | :star: | | | | | | +| depth biasing | | | | | | | | | | | :star: | | | | | | | | | | | | +| read-only depth | | | | | | | | | | | | | | | | | :star: | | | | | | +| blending | | :star: | | :star: | | | | | | | | | | | | | :star: | | | | | | +| render bundles | | | | | | | | :star: | | | | | | | | | :star: | | | | | | +| uniform buffers | | | | | | | | | | | | | | | | :star: | | | | | | | +| compute passes | :star: | | | | :star: | :star: | | | | :star: | | | | :star: | | | | | | | | | +| buffer mapping | | | | | :star: | :star: | | | | :star: | | | | :star: | | | | | | | | | +| error scopes | | | | :star: | | | | | | | | | | | | | | | | | | | +| compute workgroups | | | | | :star: | :star: | | | | | | | | | | | | | | | | | +| compute synchronization | | | | | :star: | | | | | | | | | | | | | | | | | | +| _optional extensions_ | | | | | | | | | | | | | | | :star: | | | | | | | | +| - SPIR-V shaders | | | | | | | | | | | | | | | | | | | | | | | +| - binding array | | | | | | | | | | | | | | | :star: | | | | | | | | +| - push constants | | | | | | | | | | | | | | | | | | | | | :star: | | +| - depth clamping | | | | | | | | | | | :star: | | | | | | | | | | | | +| - compressed textures | | | | | | | | | | | | :star: | | | | | | | | | | | +| - polygon mode | | | | :star: | | | | | | | | | | | | | | | | | | | +| - queries | | | | | | | :star: | | | | | | | | | | | | | | | | +| - conservative rasterization | | | :star: | | | | | | | | | | | | | | | | | | | | +| - ray queries | | | | | | | | | | | | | | | | | | :star: | :star: | :star: | :star: | :star: | +| _integrations_ | | | | | | | | | | | | | | | | | | | | | | | +| - staging belt | | | | | | | | | | | | :star: | | | | | | | | | | | +| - typed arena | | | | | | | | | | | | | | | | | | | | | | | +| - obj loading | | | | | | | | | | | | :star: | | | | | | | | :star: | | | ## Running on the Web diff --git a/examples/src/lib.rs b/examples/src/lib.rs index d212fd404a..358993e1af 100644 --- a/examples/src/lib.rs +++ b/examples/src/lib.rs @@ -15,6 +15,11 @@ pub mod hello_windows; pub mod hello_workgroups; pub mod mipmap; pub mod msaa_line; +pub mod ray_cube_compute; +pub mod ray_cube_fragment; +pub mod ray_scene; +pub mod ray_shadows; +pub mod ray_traced_triangle; pub mod render_to_texture; pub mod repeated_compute; pub mod shadow; diff --git a/examples/src/main.rs b/examples/src/main.rs index 5d29d484b6..77e658a883 100644 --- a/examples/src/main.rs +++ b/examples/src/main.rs @@ -146,6 +146,36 @@ const EXAMPLES: &[ExampleDesc] = &[ webgl: false, // No RODS webgpu: true, }, + ExampleDesc { + name: "ray_cube_compute", + function: wgpu_examples::ray_cube_compute::main, + webgl: false, // No Ray-tracing extensions + webgpu: false, // No Ray-tracing extensions (yet) + }, + ExampleDesc { + name: "ray_cube_fragment", + function: wgpu_examples::ray_cube_fragment::main, + webgl: false, // No Ray-tracing extensions + webgpu: false, // No Ray-tracing extensions (yet) + }, + ExampleDesc { + name: "ray_scene", + function: wgpu_examples::ray_scene::main, + webgl: false, // No Ray-tracing extensions + webgpu: false, // No Ray-tracing extensions (yet) + }, + ExampleDesc { + name: "ray_shadows", + function: wgpu_examples::ray_shadows::main, + webgl: false, // No Ray-tracing extensions + webgpu: false, // No Ray-tracing extensions (yet) + }, + ExampleDesc { + name: "ray_traced_triangle", + function: wgpu_examples::ray_traced_triangle::main, + webgl: false, + webgpu: false, + }, ]; fn get_example_name() -> Option { diff --git a/examples/src/ray_cube_compute/README.md b/examples/src/ray_cube_compute/README.md new file mode 100644 index 0000000000..25b4fc942d --- /dev/null +++ b/examples/src/ray_cube_compute/README.md @@ -0,0 +1,14 @@ +# ray-cube + +This example renders a ray traced cube with hardware acceleration. +A separate compute shader is used to perform the ray queries. + +## To Run + +``` +cargo run --bin wgpu-examples ray_cube_compute +``` + +## Screenshots + +![Cube example](screenshot.png) diff --git a/examples/src/ray_cube_compute/blit.wgsl b/examples/src/ray_cube_compute/blit.wgsl new file mode 100644 index 0000000000..69adbb3ccd --- /dev/null +++ b/examples/src/ray_cube_compute/blit.wgsl @@ -0,0 +1,52 @@ +struct VertexOutput { + @builtin(position) position: vec4, + @location(0) tex_coords: vec2, +}; + +// meant to be called with 3 vertex indices: 0, 1, 2 +// draws one large triangle over the clip space like this: +// (the asterisks represent the clip space bounds) +//-1,1 1,1 +// --------------------------------- +// | * . +// | * . +// | * . +// | * . +// | * . +// | * . +// |*************** +// | . 1,-1 +// | . +// | . +// | . +// | . +// |. +@vertex +fn vs_main(@builtin(vertex_index) vertex_index: u32) -> VertexOutput { + var result: VertexOutput; + let x = i32(vertex_index) / 2; + let y = i32(vertex_index) & 1; + let tc = vec2( + f32(x) * 2.0, + f32(y) * 2.0 + ); + result.position = vec4( + tc.x * 2.0 - 1.0, + 1.0 - tc.y * 2.0, + 0.0, 1.0 + ); + result.tex_coords = tc; + return result; +} + +@group(0) +@binding(0) +var r_color: texture_2d; +@group(0) +@binding(1) +var r_sampler: sampler; + +@fragment +fn fs_main(vertex: VertexOutput) -> @location(0) vec4 { + return textureSample(r_color, r_sampler, vertex.tex_coords); +} diff --git a/examples/src/ray_cube_compute/mod.rs b/examples/src/ray_cube_compute/mod.rs new file mode 100644 index 0000000000..3f8f31ee0a --- /dev/null +++ b/examples/src/ray_cube_compute/mod.rs @@ -0,0 +1,500 @@ +use std::{borrow::Cow, future::Future, iter, mem, pin::Pin, task, time::Instant}; + +use bytemuck::{Pod, Zeroable}; +use glam::{Affine3A, Mat4, Quat, Vec3}; +use wgpu::util::DeviceExt; + +use wgpu::StoreOp; + +// from cube +#[repr(C)] +#[derive(Clone, Copy, Pod, Zeroable)] +struct Vertex { + _pos: [f32; 4], + _tex_coord: [f32; 2], +} + +fn vertex(pos: [i8; 3], tc: [i8; 2]) -> Vertex { + Vertex { + _pos: [pos[0] as f32, pos[1] as f32, pos[2] as f32, 1.0], + _tex_coord: [tc[0] as f32, tc[1] as f32], + } +} + +fn create_vertices() -> (Vec, Vec) { + let vertex_data = [ + // top (0, 0, 1) + vertex([-1, -1, 1], [0, 0]), + vertex([1, -1, 1], [1, 0]), + vertex([1, 1, 1], [1, 1]), + vertex([-1, 1, 1], [0, 1]), + // bottom (0, 0, -1) + vertex([-1, 1, -1], [1, 0]), + vertex([1, 1, -1], [0, 0]), + vertex([1, -1, -1], [0, 1]), + vertex([-1, -1, -1], [1, 1]), + // right (1, 0, 0) + vertex([1, -1, -1], [0, 0]), + vertex([1, 1, -1], [1, 0]), + vertex([1, 1, 1], [1, 1]), + vertex([1, -1, 1], [0, 1]), + // left (-1, 0, 0) + vertex([-1, -1, 1], [1, 0]), + vertex([-1, 1, 1], [0, 0]), + vertex([-1, 1, -1], [0, 1]), + vertex([-1, -1, -1], [1, 1]), + // front (0, 1, 0) + vertex([1, 1, -1], [1, 0]), + vertex([-1, 1, -1], [0, 0]), + vertex([-1, 1, 1], [0, 1]), + vertex([1, 1, 1], [1, 1]), + // back (0, -1, 0) + vertex([1, -1, 1], [0, 0]), + vertex([-1, -1, 1], [1, 0]), + vertex([-1, -1, -1], [1, 1]), + vertex([1, -1, -1], [0, 1]), + ]; + + let index_data: &[u16] = &[ + 0, 1, 2, 2, 3, 0, // top + 4, 5, 6, 6, 7, 4, // bottom + 8, 9, 10, 10, 11, 8, // right + 12, 13, 14, 14, 15, 12, // left + 16, 17, 18, 18, 19, 16, // front + 20, 21, 22, 22, 23, 20, // back + ]; + + (vertex_data.to_vec(), index_data.to_vec()) +} + +#[repr(C)] +#[derive(Clone, Copy, Pod, Zeroable)] +struct Uniforms { + view_inverse: Mat4, + proj_inverse: Mat4, +} + +#[inline] +fn affine_to_rows(mat: &Affine3A) -> [f32; 12] { + let row_0 = mat.matrix3.row(0); + let row_1 = mat.matrix3.row(1); + let row_2 = mat.matrix3.row(2); + let translation = mat.translation; + [ + row_0.x, + row_0.y, + row_0.z, + translation.x, + row_1.x, + row_1.y, + row_1.z, + translation.y, + row_2.x, + row_2.y, + row_2.z, + translation.z, + ] +} + +/// A wrapper for `pop_error_scope` futures that panics if an error occurs. +/// +/// Given a future `inner` of an `Option` for some error type `E`, +/// wait for the future to be ready, and panic if its value is `Some`. +/// +/// This can be done simpler with `FutureExt`, but we don't want to add +/// a dependency just for this small case. +struct ErrorFuture { + inner: F, +} +impl>> Future for ErrorFuture { + type Output = (); + fn poll(self: Pin<&mut Self>, cx: &mut task::Context<'_>) -> task::Poll<()> { + let inner = unsafe { self.map_unchecked_mut(|me| &mut me.inner) }; + inner.poll(cx).map(|error| { + if let Some(e) = error { + panic!("Rendering {}", e); + } + }) + } +} + +#[allow(dead_code)] +struct Example { + rt_target: wgpu::Texture, + rt_view: wgpu::TextureView, + sampler: wgpu::Sampler, + uniform_buf: wgpu::Buffer, + vertex_buf: wgpu::Buffer, + index_buf: wgpu::Buffer, + tlas_package: wgpu::TlasPackage, + compute_pipeline: wgpu::ComputePipeline, + compute_bind_group: wgpu::BindGroup, + blit_pipeline: wgpu::RenderPipeline, + blit_bind_group: wgpu::BindGroup, + start_inst: Instant, +} + +impl crate::framework::Example for Example { + fn required_features() -> wgpu::Features { + wgpu::Features::TEXTURE_BINDING_ARRAY + | wgpu::Features::STORAGE_RESOURCE_BINDING_ARRAY + | wgpu::Features::VERTEX_WRITABLE_STORAGE + | wgpu::Features::EXPERIMENTAL_RAY_QUERY + | wgpu::Features::EXPERIMENTAL_RAY_TRACING_ACCELERATION_STRUCTURE + } + + fn required_downlevel_capabilities() -> wgpu::DownlevelCapabilities { + wgpu::DownlevelCapabilities::default() + } + fn required_limits() -> wgpu::Limits { + wgpu::Limits::default() + } + + fn init( + config: &wgpu::SurfaceConfiguration, + _adapter: &wgpu::Adapter, + device: &wgpu::Device, + queue: &wgpu::Queue, + ) -> Self { + let side_count = 8; + + let rt_target = device.create_texture(&wgpu::TextureDescriptor { + label: Some("rt_target"), + size: wgpu::Extent3d { + width: config.width, + height: config.height, + depth_or_array_layers: 1, + }, + mip_level_count: 1, + sample_count: 1, + dimension: wgpu::TextureDimension::D2, + format: wgpu::TextureFormat::Rgba8Unorm, + usage: wgpu::TextureUsages::TEXTURE_BINDING | wgpu::TextureUsages::STORAGE_BINDING, + view_formats: &[wgpu::TextureFormat::Rgba8Unorm], + }); + + let rt_view = rt_target.create_view(&wgpu::TextureViewDescriptor { + label: None, + format: Some(wgpu::TextureFormat::Rgba8Unorm), + dimension: Some(wgpu::TextureViewDimension::D2), + aspect: wgpu::TextureAspect::All, + base_mip_level: 0, + mip_level_count: None, + base_array_layer: 0, + array_layer_count: None, + }); + + let sampler = device.create_sampler(&wgpu::SamplerDescriptor { + label: Some("rt_sampler"), + address_mode_u: wgpu::AddressMode::ClampToEdge, + address_mode_v: wgpu::AddressMode::ClampToEdge, + address_mode_w: wgpu::AddressMode::ClampToEdge, + mag_filter: wgpu::FilterMode::Linear, + min_filter: wgpu::FilterMode::Linear, + mipmap_filter: wgpu::FilterMode::Nearest, + ..Default::default() + }); + + let uniforms = { + let view = Mat4::look_at_rh(Vec3::new(0.0, 0.0, 2.5), Vec3::ZERO, Vec3::Y); + let proj = Mat4::perspective_rh( + 59.0_f32.to_radians(), + config.width as f32 / config.height as f32, + 0.001, + 1000.0, + ); + + Uniforms { + view_inverse: view.inverse(), + proj_inverse: proj.inverse(), + } + }; + + let uniform_buf = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { + label: Some("Uniform Buffer"), + contents: bytemuck::cast_slice(&[uniforms]), + usage: wgpu::BufferUsages::UNIFORM, + }); + + let (vertex_data, index_data) = create_vertices(); + + let vertex_buf = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { + label: Some("Vertex Buffer"), + contents: bytemuck::cast_slice(&vertex_data), + usage: wgpu::BufferUsages::VERTEX | wgpu::BufferUsages::BLAS_INPUT, + }); + + let index_buf = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { + label: Some("Index Buffer"), + contents: bytemuck::cast_slice(&index_data), + usage: wgpu::BufferUsages::INDEX | wgpu::BufferUsages::BLAS_INPUT, + }); + + let blas_geo_size_desc = wgpu::BlasTriangleGeometrySizeDescriptor { + vertex_format: wgpu::VertexFormat::Float32x3, + vertex_count: vertex_data.len() as u32, + index_format: Some(wgpu::IndexFormat::Uint16), + index_count: Some(index_data.len() as u32), + flags: wgpu::AccelerationStructureGeometryFlags::OPAQUE, + }; + + let blas = device.create_blas( + &wgpu::CreateBlasDescriptor { + label: None, + flags: wgpu::AccelerationStructureFlags::PREFER_FAST_TRACE, + update_mode: wgpu::AccelerationStructureUpdateMode::Build, + }, + wgpu::BlasGeometrySizeDescriptors::Triangles { + descriptors: vec![blas_geo_size_desc.clone()], + }, + ); + + let tlas = device.create_tlas(&wgpu::CreateTlasDescriptor { + label: None, + flags: wgpu::AccelerationStructureFlags::PREFER_FAST_TRACE, + update_mode: wgpu::AccelerationStructureUpdateMode::Build, + max_instances: side_count * side_count, + }); + + let shader = device.create_shader_module(wgpu::ShaderModuleDescriptor { + label: Some("rt_computer"), + source: wgpu::ShaderSource::Wgsl(Cow::Borrowed(include_str!("shader.wgsl"))), + }); + + let blit_shader = device.create_shader_module(wgpu::ShaderModuleDescriptor { + label: Some("blit"), + source: wgpu::ShaderSource::Wgsl(Cow::Borrowed(include_str!("blit.wgsl"))), + }); + + let compute_pipeline = device.create_compute_pipeline(&wgpu::ComputePipelineDescriptor { + label: Some("rt"), + layout: None, + module: &shader, + entry_point: Some("main"), + compilation_options: Default::default(), + cache: None, + }); + + let compute_bind_group_layout = compute_pipeline.get_bind_group_layout(0); + + let compute_bind_group = device.create_bind_group(&wgpu::BindGroupDescriptor { + label: None, + layout: &compute_bind_group_layout, + entries: &[ + wgpu::BindGroupEntry { + binding: 0, + resource: wgpu::BindingResource::TextureView(&rt_view), + }, + wgpu::BindGroupEntry { + binding: 1, + resource: uniform_buf.as_entire_binding(), + }, + wgpu::BindGroupEntry { + binding: 2, + resource: wgpu::BindingResource::AccelerationStructure(&tlas), + }, + ], + }); + + let blit_pipeline = device.create_render_pipeline(&wgpu::RenderPipelineDescriptor { + label: Some("blit"), + layout: None, + vertex: wgpu::VertexState { + module: &blit_shader, + entry_point: Some("vs_main"), + compilation_options: Default::default(), + buffers: &[], + }, + fragment: Some(wgpu::FragmentState { + module: &blit_shader, + entry_point: Some("fs_main"), + compilation_options: Default::default(), + targets: &[Some(config.format.into())], + }), + primitive: wgpu::PrimitiveState { + topology: wgpu::PrimitiveTopology::TriangleList, + ..Default::default() + }, + depth_stencil: None, + multisample: wgpu::MultisampleState::default(), + multiview: None, + cache: None, + }); + + let blit_bind_group_layout = blit_pipeline.get_bind_group_layout(0); + + let blit_bind_group = device.create_bind_group(&wgpu::BindGroupDescriptor { + label: None, + layout: &blit_bind_group_layout, + entries: &[ + wgpu::BindGroupEntry { + binding: 0, + resource: wgpu::BindingResource::TextureView(&rt_view), + }, + wgpu::BindGroupEntry { + binding: 1, + resource: wgpu::BindingResource::Sampler(&sampler), + }, + ], + }); + + let mut tlas_package = wgpu::TlasPackage::new(tlas); + + let dist = 3.0; + + for x in 0..side_count { + for y in 0..side_count { + tlas_package[(x + y * side_count) as usize] = Some(wgpu::TlasInstance::new( + &blas, + affine_to_rows(&Affine3A::from_rotation_translation( + Quat::from_rotation_y(45.9_f32.to_radians()), + Vec3 { + x: x as f32 * dist, + y: y as f32 * dist, + z: -30.0, + }, + )), + 0, + 0xff, + )); + } + } + + let mut encoder = + device.create_command_encoder(&wgpu::CommandEncoderDescriptor { label: None }); + + encoder.build_acceleration_structures( + iter::once(&wgpu::BlasBuildEntry { + blas: &blas, + geometry: wgpu::BlasGeometries::TriangleGeometries(vec![ + wgpu::BlasTriangleGeometry { + size: &blas_geo_size_desc, + vertex_buffer: &vertex_buf, + first_vertex: 0, + vertex_stride: mem::size_of::() as u64, + index_buffer: Some(&index_buf), + index_buffer_offset: Some(0), + transform_buffer: None, + transform_buffer_offset: None, + }, + ]), + }), + iter::once(&tlas_package), + ); + + queue.submit(Some(encoder.finish())); + + let start_inst = Instant::now(); + + Example { + rt_target, + rt_view, + sampler, + uniform_buf, + vertex_buf, + index_buf, + tlas_package, + compute_pipeline, + compute_bind_group, + blit_pipeline, + blit_bind_group, + start_inst, + } + } + + fn update(&mut self, _event: winit::event::WindowEvent) { + //empty + } + + fn resize( + &mut self, + _config: &wgpu::SurfaceConfiguration, + _device: &wgpu::Device, + _queue: &wgpu::Queue, + ) { + } + + fn render(&mut self, view: &wgpu::TextureView, device: &wgpu::Device, queue: &wgpu::Queue) { + device.push_error_scope(wgpu::ErrorFilter::Validation); + + let anim_time = self.start_inst.elapsed().as_secs_f64() as f32; + + self.tlas_package[0].as_mut().unwrap().transform = + affine_to_rows(&Affine3A::from_rotation_translation( + Quat::from_euler( + glam::EulerRot::XYZ, + anim_time * 0.342, + anim_time * 0.254, + anim_time * 0.832, + ), + Vec3 { + x: 0.0, + y: 0.0, + z: -6.0, + }, + )); + + let mut encoder = + device.create_command_encoder(&wgpu::CommandEncoderDescriptor { label: None }); + + encoder.build_acceleration_structures(iter::empty(), iter::once(&self.tlas_package)); + + { + let mut cpass = encoder.begin_compute_pass(&wgpu::ComputePassDescriptor { + label: None, + timestamp_writes: None, + }); + cpass.set_pipeline(&self.compute_pipeline); + cpass.set_bind_group(0, Some(&self.compute_bind_group), &[]); + cpass.dispatch_workgroups(self.rt_target.width() / 8, self.rt_target.height() / 8, 1); + } + + { + let mut rpass = encoder.begin_render_pass(&wgpu::RenderPassDescriptor { + label: None, + color_attachments: &[Some(wgpu::RenderPassColorAttachment { + view, + resolve_target: None, + ops: wgpu::Operations { + load: wgpu::LoadOp::Clear(wgpu::Color::GREEN), + store: StoreOp::Store, + }, + })], + depth_stencil_attachment: None, + timestamp_writes: None, + occlusion_query_set: None, + }); + + rpass.set_pipeline(&self.blit_pipeline); + rpass.set_bind_group(0, Some(&self.blit_bind_group), &[]); + rpass.draw(0..3, 0..1); + } + + queue.submit(Some(encoder.finish())); + } +} + +pub fn main() { + crate::framework::run::("ray-cube"); +} + +#[cfg(test)] +#[wgpu_test::gpu_test] +static TEST: crate::framework::ExampleTestParams = crate::framework::ExampleTestParams { + name: "ray_cube_compute", + image_path: "/examples/src/ray_cube_compute/screenshot.png", + width: 1024, + height: 768, + optional_features: wgpu::Features::default(), + base_test_parameters: wgpu_test::TestParameters { + required_features: ::required_features(), + required_limits: ::required_limits(), + force_fxc: false, + skips: vec![], + failures: Vec::new(), + required_downlevel_caps: + ::required_downlevel_capabilities(), + }, + comparisons: &[wgpu_test::ComparisonType::Mean(0.02)], + _phantom: std::marker::PhantomData::, +}; diff --git a/examples/src/ray_cube_compute/screenshot.png b/examples/src/ray_cube_compute/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..6b737f1e2a82a45865265c9112e1c7d5942a0951 GIT binary patch literal 490444 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

; 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%0DmoVY1wCn(%0YxS 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

Ikx7!)lBM$T!)~1kAsV`l7t;*Pa>` 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≶-N|QY^(kKg%wkV6sKxm35~zfQ^H}T8RjU-l-ld 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 literal 0 HcmV?d00001 diff --git a/examples/src/ray_cube_compute/shader.wgsl b/examples/src/ray_cube_compute/shader.wgsl new file mode 100644 index 0000000000..43604a9970 --- /dev/null +++ b/examples/src/ray_cube_compute/shader.wgsl @@ -0,0 +1,82 @@ +/* +The contents of the RayQuery struct are roughly as follows +let RAY_FLAG_NONE = 0x00u; +let RAY_FLAG_OPAQUE = 0x01u; +let RAY_FLAG_NO_OPAQUE = 0x02u; +let RAY_FLAG_TERMINATE_ON_FIRST_HIT = 0x04u; +let RAY_FLAG_SKIP_CLOSEST_HIT_SHADER = 0x08u; +let RAY_FLAG_CULL_BACK_FACING = 0x10u; +let RAY_FLAG_CULL_FRONT_FACING = 0x20u; +let RAY_FLAG_CULL_OPAQUE = 0x40u; +let RAY_FLAG_CULL_NO_OPAQUE = 0x80u; +let RAY_FLAG_SKIP_TRIANGLES = 0x100u; +let RAY_FLAG_SKIP_AABBS = 0x200u; + +let RAY_QUERY_INTERSECTION_NONE = 0u; +let RAY_QUERY_INTERSECTION_TRIANGLE = 1u; +let RAY_QUERY_INTERSECTION_GENERATED = 2u; +let RAY_QUERY_INTERSECTION_AABB = 4u; + +struct RayDesc { + flags: u32, + cull_mask: u32, + t_min: f32, + t_max: f32, + origin: vec3, + dir: vec3, +} + +struct RayIntersection { + kind: u32, + t: f32, + instance_custom_index: u32, + instance_id: u32, + sbt_record_offset: u32, + geometry_index: u32, + primitive_index: u32, + barycentrics: vec2, + front_face: bool, + object_to_world: mat4x3, + world_to_object: mat4x3, +} +*/ + +struct Uniforms { + view_inv: mat4x4, + proj_inv: mat4x4, +}; + +@group(0) @binding(0) +var output: texture_storage_2d; + +@group(0) @binding(1) +var uniforms: Uniforms; + +@group(0) @binding(2) +var acc_struct: acceleration_structure; + +@compute @workgroup_size(8, 8) +fn main(@builtin(global_invocation_id) global_id: vec3) { + let target_size = textureDimensions(output); + var color = vec4(vec2(global_id.xy) / vec2(target_size), 0.0, 1.0); + + + let pixel_center = vec2(global_id.xy) + vec2(0.5); + let in_uv = pixel_center/vec2(target_size.xy); + let d = in_uv * 2.0 - 1.0; + + let origin = (uniforms.view_inv * vec4(0.0,0.0,0.0,1.0)).xyz; + let temp = uniforms.proj_inv * vec4(d.x, d.y, 1.0, 1.0); + let direction = (uniforms.view_inv * vec4(normalize(temp.xyz), 0.0)).xyz; + + var rq: ray_query; + rayQueryInitialize(&rq, acc_struct, RayDesc(0u, 0xFFu, 0.1, 200.0, origin, direction)); + rayQueryProceed(&rq); + + let intersection = rayQueryGetCommittedIntersection(&rq); + if (intersection.kind != RAY_QUERY_INTERSECTION_NONE) { + color = vec4(intersection.barycentrics, 1.0 - intersection.barycentrics.x - intersection.barycentrics.y, 1.0); + } + + textureStore(output, global_id.xy, color); +} diff --git a/examples/src/ray_cube_fragment/README.md b/examples/src/ray_cube_fragment/README.md new file mode 100644 index 0000000000..9298e39d60 --- /dev/null +++ b/examples/src/ray_cube_fragment/README.md @@ -0,0 +1,13 @@ +# ray-cube + +This example renders a ray traced cube with hardware acceleration. + +## To Run + +``` +cargo run --bin wgpu-examples ray_cube_fragment +``` + +## Screenshots + +![Cube example](screenshot.png) diff --git a/examples/src/ray_cube_fragment/mod.rs b/examples/src/ray_cube_fragment/mod.rs new file mode 100644 index 0000000000..b9dfba9a16 --- /dev/null +++ b/examples/src/ray_cube_fragment/mod.rs @@ -0,0 +1,391 @@ +use bytemuck::{Pod, Zeroable}; +use glam::{Mat4, Quat, Vec3}; +use std::ops::IndexMut; +use std::{borrow::Cow, future::Future, iter, mem, pin::Pin, task, time::Instant}; +use wgpu::util::DeviceExt; + +// from cube +#[repr(C)] +#[derive(Clone, Copy, Pod, Zeroable)] +struct Vertex { + _pos: [f32; 4], + _tex_coord: [f32; 2], +} + +fn vertex(pos: [i8; 3], tc: [i8; 2]) -> Vertex { + Vertex { + _pos: [pos[0] as f32, pos[1] as f32, pos[2] as f32, 1.0], + _tex_coord: [tc[0] as f32, tc[1] as f32], + } +} + +fn create_vertices() -> (Vec, Vec) { + let vertex_data = [ + // top (0, 0, 1) + vertex([-1, -1, 1], [0, 0]), + vertex([1, -1, 1], [1, 0]), + vertex([1, 1, 1], [1, 1]), + vertex([-1, 1, 1], [0, 1]), + // bottom (0, 0, -1) + vertex([-1, 1, -1], [1, 0]), + vertex([1, 1, -1], [0, 0]), + vertex([1, -1, -1], [0, 1]), + vertex([-1, -1, -1], [1, 1]), + // right (1, 0, 0) + vertex([1, -1, -1], [0, 0]), + vertex([1, 1, -1], [1, 0]), + vertex([1, 1, 1], [1, 1]), + vertex([1, -1, 1], [0, 1]), + // left (-1, 0, 0) + vertex([-1, -1, 1], [1, 0]), + vertex([-1, 1, 1], [0, 0]), + vertex([-1, 1, -1], [0, 1]), + vertex([-1, -1, -1], [1, 1]), + // front (0, 1, 0) + vertex([1, 1, -1], [1, 0]), + vertex([-1, 1, -1], [0, 0]), + vertex([-1, 1, 1], [0, 1]), + vertex([1, 1, 1], [1, 1]), + // back (0, -1, 0) + vertex([1, -1, 1], [0, 0]), + vertex([-1, -1, 1], [1, 0]), + vertex([-1, -1, -1], [1, 1]), + vertex([1, -1, -1], [0, 1]), + ]; + + let index_data: &[u16] = &[ + 0, 1, 2, 2, 3, 0, // top + 4, 5, 6, 6, 7, 4, // bottom + 8, 9, 10, 10, 11, 8, // right + 12, 13, 14, 14, 15, 12, // left + 16, 17, 18, 18, 19, 16, // front + 20, 21, 22, 22, 23, 20, // back + ]; + + (vertex_data.to_vec(), index_data.to_vec()) +} + +#[repr(C)] +#[derive(Clone, Copy, Pod, Zeroable)] +struct Uniforms { + view_inverse: Mat4, + proj_inverse: Mat4, +} + +/// A wrapper for `pop_error_scope` futures that panics if an error occurs. +/// +/// Given a future `inner` of an `Option` for some error type `E`, +/// wait for the future to be ready, and panic if its value is `Some`. +/// +/// This can be done simpler with `FutureExt`, but we don't want to add +/// a dependency just for this small case. +struct ErrorFuture { + inner: F, +} +impl>> Future for ErrorFuture { + type Output = (); + fn poll(self: Pin<&mut Self>, cx: &mut task::Context<'_>) -> task::Poll<()> { + let inner = unsafe { self.map_unchecked_mut(|me| &mut me.inner) }; + inner.poll(cx).map(|error| { + if let Some(e) = error { + panic!("Rendering {}", e); + } + }) + } +} + +struct Example { + uniforms: Uniforms, + uniform_buf: wgpu::Buffer, + blas: wgpu::Blas, + tlas_package: wgpu::TlasPackage, + pipeline: wgpu::RenderPipeline, + bind_group: wgpu::BindGroup, + start_inst: Instant, +} + +impl crate::framework::Example for Example { + fn required_features() -> wgpu::Features { + wgpu::Features::EXPERIMENTAL_RAY_QUERY + | wgpu::Features::EXPERIMENTAL_RAY_TRACING_ACCELERATION_STRUCTURE + } + + fn required_downlevel_capabilities() -> wgpu::DownlevelCapabilities { + wgpu::DownlevelCapabilities::default() + } + fn required_limits() -> wgpu::Limits { + wgpu::Limits::default() + } + + fn init( + config: &wgpu::SurfaceConfiguration, + _adapter: &wgpu::Adapter, + device: &wgpu::Device, + queue: &wgpu::Queue, + ) -> Self { + let side_count = 8; + + let uniforms = { + let view = Mat4::look_at_rh(Vec3::new(0.0, 0.0, 2.5), Vec3::ZERO, Vec3::Y); + let proj = Mat4::perspective_rh( + 59.0_f32.to_radians(), + config.width as f32 / config.height as f32, + 0.001, + 1000.0, + ); + + Uniforms { + view_inverse: view.inverse(), + proj_inverse: proj.inverse(), + } + }; + + let uniform_buf = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { + label: Some("Uniform Buffer"), + contents: bytemuck::cast_slice(&[uniforms]), + usage: wgpu::BufferUsages::UNIFORM | wgpu::BufferUsages::COPY_DST, + }); + + let (vertex_data, index_data) = create_vertices(); + + let vertex_buf = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { + label: Some("Vertex Buffer"), + contents: bytemuck::cast_slice(&vertex_data), + usage: wgpu::BufferUsages::VERTEX | wgpu::BufferUsages::BLAS_INPUT, + }); + + let index_buf = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { + label: Some("Index Buffer"), + contents: bytemuck::cast_slice(&index_data), + usage: wgpu::BufferUsages::INDEX | wgpu::BufferUsages::BLAS_INPUT, + }); + + let blas_geo_size_desc = wgpu::BlasTriangleGeometrySizeDescriptor { + vertex_format: wgpu::VertexFormat::Float32x3, + vertex_count: vertex_data.len() as u32, + index_format: Some(wgpu::IndexFormat::Uint16), + index_count: Some(index_data.len() as u32), + flags: wgpu::AccelerationStructureGeometryFlags::OPAQUE, + }; + + let blas = device.create_blas( + &wgpu::CreateBlasDescriptor { + label: None, + flags: wgpu::AccelerationStructureFlags::PREFER_FAST_TRACE, + update_mode: wgpu::AccelerationStructureUpdateMode::Build, + }, + wgpu::BlasGeometrySizeDescriptors::Triangles { + descriptors: vec![blas_geo_size_desc.clone()], + }, + ); + + let tlas = device.create_tlas(&wgpu::CreateTlasDescriptor { + label: None, + flags: wgpu::AccelerationStructureFlags::PREFER_FAST_TRACE, + update_mode: wgpu::AccelerationStructureUpdateMode::Build, + max_instances: side_count * side_count, + }); + + let shader = device.create_shader_module(wgpu::ShaderModuleDescriptor { + label: None, + source: wgpu::ShaderSource::Wgsl(Cow::Borrowed(include_str!("shader.wgsl"))), + }); + + let pipeline = device.create_render_pipeline(&wgpu::RenderPipelineDescriptor { + label: None, + layout: None, + vertex: wgpu::VertexState { + module: &shader, + entry_point: Some("vs_main"), + compilation_options: Default::default(), + buffers: &[], + }, + fragment: Some(wgpu::FragmentState { + module: &shader, + entry_point: Some("fs_main"), + compilation_options: Default::default(), + targets: &[Some(config.format.into())], + }), + primitive: wgpu::PrimitiveState { + topology: wgpu::PrimitiveTopology::TriangleList, + ..Default::default() + }, + depth_stencil: None, + multisample: wgpu::MultisampleState::default(), + multiview: None, + cache: None, + }); + + let bind_group_layout = pipeline.get_bind_group_layout(0); + + let bind_group = device.create_bind_group(&wgpu::BindGroupDescriptor { + label: None, + layout: &bind_group_layout, + entries: &[ + wgpu::BindGroupEntry { + binding: 0, + resource: uniform_buf.as_entire_binding(), + }, + wgpu::BindGroupEntry { + binding: 1, + resource: wgpu::BindingResource::AccelerationStructure(&tlas), + }, + ], + }); + + let tlas_package = wgpu::TlasPackage::new(tlas); + + let mut encoder = + device.create_command_encoder(&wgpu::CommandEncoderDescriptor { label: None }); + + encoder.build_acceleration_structures( + iter::once(&wgpu::BlasBuildEntry { + blas: &blas, + geometry: wgpu::BlasGeometries::TriangleGeometries(vec![ + wgpu::BlasTriangleGeometry { + size: &blas_geo_size_desc, + vertex_buffer: &vertex_buf, + first_vertex: 0, + vertex_stride: mem::size_of::() as u64, + index_buffer: Some(&index_buf), + index_buffer_offset: Some(0), + transform_buffer: None, + transform_buffer_offset: None, + }, + ]), + }), + // iter::empty(), + iter::once(&tlas_package), + ); + + queue.submit(Some(encoder.finish())); + + let start_inst = Instant::now(); + + Example { + uniforms, + uniform_buf, + blas, + tlas_package, + pipeline, + bind_group, + start_inst, + } + } + + fn update(&mut self, _event: winit::event::WindowEvent) {} + + fn resize( + &mut self, + config: &wgpu::SurfaceConfiguration, + _device: &wgpu::Device, + queue: &wgpu::Queue, + ) { + let proj = Mat4::perspective_rh( + 59.0_f32.to_radians(), + config.width as f32 / config.height as f32, + 0.001, + 1000.0, + ); + + self.uniforms.proj_inverse = proj.inverse(); + + queue.write_buffer(&self.uniform_buf, 0, bytemuck::cast_slice(&[self.uniforms])); + } + + fn render(&mut self, view: &wgpu::TextureView, device: &wgpu::Device, queue: &wgpu::Queue) { + device.push_error_scope(wgpu::ErrorFilter::Validation); + + // scene update + { + let dist = 12.0; + + let side_count = 8; + + let anim_time = self.start_inst.elapsed().as_secs_f64() as f32; + + for x in 0..side_count { + for y in 0..side_count { + let instance = self.tlas_package.index_mut((x + y * side_count) as usize); + + let x = x as f32 / (side_count - 1) as f32; + let y = y as f32 / (side_count - 1) as f32; + let x = x * 2.0 - 1.0; + let y = y * 2.0 - 1.0; + + let transform = Mat4::from_rotation_translation( + Quat::from_euler( + glam::EulerRot::XYZ, + anim_time * 0.5 * 0.342, + anim_time * 0.5 * 0.254, + anim_time * 0.5 * 0.832, + ), + Vec3 { + x: x * dist, + y: y * dist, + z: -24.0, + }, + ); + let transform = transform.transpose().to_cols_array()[..12] + .try_into() + .unwrap(); + + *instance = Some(wgpu::TlasInstance::new(&self.blas, transform, 0, 0xff)); + } + } + } + + let mut encoder = + device.create_command_encoder(&wgpu::CommandEncoderDescriptor { label: None }); + + encoder.build_acceleration_structures(iter::empty(), iter::once(&self.tlas_package)); + + { + let mut rpass = encoder.begin_render_pass(&wgpu::RenderPassDescriptor { + label: None, + color_attachments: &[Some(wgpu::RenderPassColorAttachment { + view, + resolve_target: None, + ops: wgpu::Operations { + load: wgpu::LoadOp::Clear(wgpu::Color::GREEN), + store: wgpu::StoreOp::Store, + }, + })], + depth_stencil_attachment: None, + timestamp_writes: None, + occlusion_query_set: None, + }); + + rpass.set_pipeline(&self.pipeline); + rpass.set_bind_group(0, Some(&self.bind_group), &[]); + rpass.draw(0..3, 0..1); + } + + queue.submit(Some(encoder.finish())); + } +} + +pub fn main() { + crate::framework::run::("ray-cube"); +} + +#[cfg(test)] +#[wgpu_test::gpu_test] +static TEST: crate::framework::ExampleTestParams = crate::framework::ExampleTestParams { + name: "ray_cube_fragment", + image_path: "/examples/src/ray_cube_fragment/screenshot.png", + width: 1024, + height: 768, + optional_features: wgpu::Features::default(), + base_test_parameters: wgpu_test::TestParameters { + required_features: ::required_features(), + required_limits: ::required_limits(), + force_fxc: false, + skips: vec![], + failures: Vec::new(), + required_downlevel_caps: + ::required_downlevel_capabilities(), + }, + comparisons: &[wgpu_test::ComparisonType::Mean(0.02)], + _phantom: std::marker::PhantomData::, +}; diff --git a/examples/src/ray_cube_fragment/screenshot.png b/examples/src/ray_cube_fragment/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..5e95786759ed9038756515c67ba5e16178a01900 GIT binary patch literal 598032 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�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%0A0=pq8u3Px~ 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%0A}6N%C`Ym>;*=_asW-M0MRtA5 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 VF#Qh;slY!, + @location(0) tex_coords: vec2, +}; + +// meant to be called with 3 vertex indices: 0, 1, 2 +// draws one large triangle over the clip space like this: +// (the asterisks represent the clip space bounds) +//-1,1 1,1 +// --------------------------------- +// | * . +// | * . +// | * . +// | * . +// | * . +// | * . +// |*************** +// | . 1,-1 +// | . +// | . +// | . +// | . +// |. +@vertex +fn vs_main(@builtin(vertex_index) vertex_index: u32) -> VertexOutput { + var result: VertexOutput; + let x = i32(vertex_index) / 2; + let y = i32(vertex_index) & 1; + let tc = vec2( + f32(x) * 2.0, + f32(y) * 2.0 + ); + result.position = vec4( + tc.x * 2.0 - 1.0, + 1.0 - tc.y * 2.0, + 0.0, 1.0 + ); + result.tex_coords = tc; + return result; +} + +struct Uniforms { + view_inv: mat4x4, + proj_inv: mat4x4, +}; + +@group(0) @binding(0) +var uniforms: Uniforms; + +@group(0) @binding(1) +var acc_struct: acceleration_structure; + +@fragment +fn fs_main(vertex: VertexOutput) -> @location(0) vec4 { + + var color = vec4(vertex.tex_coords, 0.0, 1.0); + + let d = vertex.tex_coords * 2.0 - 1.0; + + let origin = (uniforms.view_inv * vec4(0.0,0.0,0.0,1.0)).xyz; + let temp = uniforms.proj_inv * vec4(d.x, d.y, 1.0, 1.0); + let direction = (uniforms.view_inv * vec4(normalize(temp.xyz), 0.0)).xyz; + + var rq: ray_query; + rayQueryInitialize(&rq, acc_struct, RayDesc(0u, 0xFFu, 0.1, 200.0, origin, direction)); + rayQueryProceed(&rq); + + let intersection = rayQueryGetCommittedIntersection(&rq); + if (intersection.kind != RAY_QUERY_INTERSECTION_NONE) { + color = vec4(intersection.barycentrics, 1.0 - intersection.barycentrics.x - intersection.barycentrics.y, 1.0); + } + + return color; +} diff --git a/examples/src/ray_scene/cube.mtl b/examples/src/ray_scene/cube.mtl new file mode 100644 index 0000000000..59994638a4 --- /dev/null +++ b/examples/src/ray_scene/cube.mtl @@ -0,0 +1,20 @@ +# Blender MTL File: 'None' +# Material Count: 2 + +newmtl Material +Ns 250.000000 +Ka 1.000000 1.000000 1.000000 +Kd 0.000000 0.009087 0.800000 +Ks 0.500000 0.500000 0.500000 +Ke 0.000000 0.000000 0.000000 +Ni 1.450000 +d 1.000000 +illum 2 + +newmtl None +Ns 500 +Ka 0.8 0.8 0.8 +Kd 0.8 0.8 0.8 +Ks 0.8 0.8 0.8 +d 1 +illum 2 diff --git a/examples/src/ray_scene/cube.obj b/examples/src/ray_scene/cube.obj new file mode 100644 index 0000000000..855a249d94 --- /dev/null +++ b/examples/src/ray_scene/cube.obj @@ -0,0 +1,2587 @@ +# Blender v3.3.1 OBJ File: '' +# www.blender.org +mtllib cube.mtl +o Cube +v 1.000000 1.000000 -1.000000 +v 1.000000 -1.000000 -1.000000 +v 1.000000 1.000000 1.000000 +v 1.000000 -1.000000 1.000000 +v -1.000000 1.000000 -1.000000 +v -1.000000 -1.000000 -1.000000 +v -1.000000 1.000000 1.000000 +v -1.000000 -1.000000 1.000000 +vt 0.875000 0.500000 +vt 0.625000 0.750000 +vt 0.625000 0.500000 +vt 0.375000 1.000000 +vt 0.375000 0.750000 +vt 0.625000 0.000000 +vt 0.375000 0.250000 +vt 0.375000 0.000000 +vt 0.375000 0.500000 +vt 0.125000 0.750000 +vt 0.125000 0.500000 +vt 0.625000 0.250000 +vt 0.875000 0.750000 +vt 0.625000 1.000000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +usemtl Material +s off +f 5/1/1 3/2/1 1/3/1 +f 3/2/2 8/4/2 4/5/2 +f 7/6/3 6/7/3 8/8/3 +f 2/9/4 8/10/4 6/11/4 +f 1/3/5 4/5/5 2/9/5 +f 5/12/6 2/9/6 6/7/6 +f 5/1/1 7/13/1 3/2/1 +f 3/2/2 7/14/2 8/4/2 +f 7/6/3 5/12/3 6/7/3 +f 2/9/4 4/5/4 8/10/4 +f 1/3/5 3/2/5 4/5/5 +f 5/12/6 1/3/6 2/9/6 +o Suzanne +v 0.437500 2.679682 0.765625 +v -0.437500 2.679682 0.765625 +v 0.500000 2.609370 0.687500 +v -0.500000 2.609370 0.687500 +v 0.546875 2.570307 0.578125 +v -0.546875 2.570307 0.578125 +v 0.351562 2.492182 0.617188 +v -0.351562 2.492182 0.617188 +v 0.351562 2.546870 0.718750 +v -0.351562 2.546870 0.718750 +v 0.351562 2.648432 0.781250 +v -0.351562 2.648432 0.781250 +v 0.273438 2.679682 0.796875 +v -0.273438 2.679682 0.796875 +v 0.203125 2.609370 0.742188 +v -0.203125 2.609370 0.742188 +v 0.156250 2.570307 0.648438 +v -0.156250 2.570307 0.648438 +v 0.078125 2.757807 0.656250 +v -0.078125 2.757807 0.656250 +v 0.140625 2.757807 0.742188 +v -0.140625 2.757807 0.742188 +v 0.242188 2.757807 0.796875 +v -0.242188 2.757807 0.796875 +v 0.273438 2.843745 0.796875 +v -0.273438 2.843745 0.796875 +v 0.203125 2.906245 0.742188 +v -0.203125 2.906245 0.742188 +v 0.156250 2.953120 0.648438 +v -0.156250 2.953120 0.648438 +v 0.351562 3.031245 0.617188 +v -0.351562 3.031245 0.617188 +v 0.351562 2.968745 0.718750 +v -0.351562 2.968745 0.718750 +v 0.351562 2.874995 0.781250 +v -0.351562 2.874995 0.781250 +v 0.437500 2.843745 0.765625 +v -0.437500 2.843745 0.765625 +v 0.500000 2.906245 0.687500 +v -0.500000 2.906245 0.687500 +v 0.546875 2.953120 0.578125 +v -0.546875 2.953120 0.578125 +v 0.625000 2.757807 0.562500 +v -0.625000 2.757807 0.562500 +v 0.562500 2.757807 0.671875 +v -0.562500 2.757807 0.671875 +v 0.468750 2.757807 0.757812 +v -0.468750 2.757807 0.757812 +v 0.476562 2.757807 0.773438 +v -0.476562 2.757807 0.773438 +v 0.445312 2.851557 0.781250 +v -0.445312 2.851557 0.781250 +v 0.351562 2.890620 0.804688 +v -0.351562 2.890620 0.804688 +v 0.265625 2.851557 0.820312 +v -0.265625 2.851557 0.820312 +v 0.226562 2.757807 0.820312 +v -0.226562 2.757807 0.820312 +v 0.265625 2.671870 0.820312 +v -0.265625 2.671870 0.820312 +v 0.351562 2.757807 0.828125 +v -0.351562 2.757807 0.828125 +v 0.351562 2.632807 0.804688 +v -0.351562 2.632807 0.804688 +v 0.445312 2.671870 0.781250 +v -0.445312 2.671870 0.781250 +v 0.000000 2.945307 0.742188 +v 0.000000 2.867182 0.820312 +v 0.000000 1.835932 0.734375 +v 0.000000 2.195307 0.781250 +v 0.000000 2.328120 0.796875 +v 0.000000 1.742182 0.718750 +v 0.000000 2.921870 0.601562 +v 0.000000 3.085932 0.570312 +v 0.000000 3.414057 -0.546875 +v 0.000000 3.078120 -0.851562 +v 0.000000 2.585932 -0.828125 +v 0.000000 2.132807 -0.351562 +v 0.203125 2.328120 0.562500 +v -0.203125 2.328120 0.562500 +v 0.312500 2.078120 0.570312 +v -0.312500 2.078120 0.570312 +v 0.351562 1.820307 0.570312 +v -0.351562 1.820307 0.570312 +v 0.367188 1.624995 0.531250 +v -0.367188 1.624995 0.531250 +v 0.328125 1.570307 0.523438 +v -0.328125 1.570307 0.523438 +v 0.179688 1.546870 0.554688 +v -0.179688 1.546870 0.554688 +v 0.000000 1.531245 0.578125 +v 0.437500 2.374995 0.531250 +v -0.437500 2.374995 0.531250 +v 0.632812 2.476557 0.539062 +v -0.632812 2.476557 0.539062 +v 0.828125 2.664057 0.445312 +v -0.828125 2.664057 0.445312 +v 0.859375 2.945307 0.593750 +v -0.859375 2.945307 0.593750 +v 0.710938 2.999995 0.625000 +v -0.710938 2.999995 0.625000 +v 0.492188 3.117182 0.687500 +v -0.492188 3.117182 0.687500 +v 0.320312 3.273432 0.734375 +v -0.320312 3.273432 0.734375 +v 0.156250 3.234370 0.757812 +v -0.156250 3.234370 0.757812 +v 0.062500 3.007807 0.750000 +v -0.062500 3.007807 0.750000 +v 0.164062 2.929682 0.773438 +v -0.164062 2.929682 0.773438 +v 0.125000 2.820307 0.765625 +v -0.125000 2.820307 0.765625 +v 0.203125 2.609370 0.742188 +v -0.203125 2.609370 0.742188 +v 0.375000 2.531245 0.703125 +v -0.375000 2.531245 0.703125 +v 0.492188 2.578120 0.671875 +v -0.492188 2.578120 0.671875 +v 0.625000 2.703120 0.648438 +v -0.625000 2.703120 0.648438 +v 0.640625 2.812495 0.648438 +v -0.640625 2.812495 0.648438 +v 0.601562 2.890620 0.664062 +v -0.601562 2.890620 0.664062 +v 0.429688 2.953120 0.718750 +v -0.429688 2.953120 0.718750 +v 0.250000 2.984370 0.757812 +v -0.250000 2.984370 0.757812 +v 0.000000 1.749995 0.734375 +v 0.109375 1.796870 0.734375 +v -0.109375 1.796870 0.734375 +v 0.117188 1.679682 0.710938 +v -0.117188 1.679682 0.710938 +v 0.062500 1.632807 0.695312 +v -0.062500 1.632807 0.695312 +v 0.000000 1.624995 0.687500 +v 0.000000 2.320307 0.750000 +v 0.000000 2.374995 0.742188 +v 0.101562 2.367182 0.742188 +v -0.101562 2.367182 0.742188 +v 0.125000 2.289057 0.750000 +v -0.125000 2.289057 0.750000 +v 0.085938 2.226557 0.742188 +v -0.085938 2.226557 0.742188 +v 0.398438 2.468745 0.671875 +v -0.398438 2.468745 0.671875 +v 0.617188 2.570307 0.625000 +v -0.617188 2.570307 0.625000 +v 0.726562 2.718745 0.601562 +v -0.726562 2.718745 0.601562 +v 0.742188 2.890620 0.656250 +v -0.742188 2.890620 0.656250 +v 0.687500 2.929682 0.726562 +v -0.687500 2.929682 0.726562 +v 0.437500 3.062495 0.796875 +v -0.437500 3.062495 0.796875 +v 0.312500 3.156245 0.835938 +v -0.312500 3.156245 0.835938 +v 0.203125 3.132807 0.851562 +v -0.203125 3.132807 0.851562 +v 0.101562 2.945307 0.843750 +v -0.101562 2.945307 0.843750 +v 0.125000 2.414057 0.812500 +v -0.125000 2.414057 0.812500 +v 0.210938 2.070307 0.710938 +v -0.210938 2.070307 0.710938 +v 0.250000 1.812495 0.687500 +v -0.250000 1.812495 0.687500 +v 0.265625 1.695307 0.664062 +v -0.265625 1.695307 0.664062 +v 0.234375 1.601557 0.632812 +v -0.234375 1.601557 0.632812 +v 0.164062 1.585932 0.632812 +v -0.164062 1.585932 0.632812 +v 0.000000 1.570307 0.640625 +v 0.000000 2.562495 0.726562 +v 0.000000 2.726557 0.765625 +v 0.328125 2.992182 0.742188 +v -0.328125 2.992182 0.742188 +v 0.164062 2.656245 0.750000 +v -0.164062 2.656245 0.750000 +v 0.132812 2.726557 0.757812 +v -0.132812 2.726557 0.757812 +v 0.117188 1.828120 0.734375 +v -0.117188 1.828120 0.734375 +v 0.078125 2.070307 0.750000 +v -0.078125 2.070307 0.750000 +v 0.000000 2.070307 0.750000 +v 0.000000 2.187495 0.742188 +v 0.093750 2.242182 0.781250 +v -0.093750 2.242182 0.781250 +v 0.132812 2.289057 0.796875 +v -0.132812 2.289057 0.796875 +v 0.109375 2.382807 0.781250 +v -0.109375 2.382807 0.781250 +v 0.039062 2.390620 0.781250 +v -0.039062 2.390620 0.781250 +v 0.000000 2.312495 0.828125 +v 0.046875 2.367182 0.812500 +v -0.046875 2.367182 0.812500 +v 0.093750 2.359370 0.812500 +v -0.093750 2.359370 0.812500 +v 0.109375 2.289057 0.828125 +v -0.109375 2.289057 0.828125 +v 0.078125 2.265620 0.804688 +v -0.078125 2.265620 0.804688 +v 0.000000 2.226557 0.804688 +v 0.257812 2.203120 0.554688 +v -0.257812 2.203120 0.554688 +v 0.164062 2.273432 0.710938 +v -0.164062 2.273432 0.710938 +v 0.179688 2.203120 0.710938 +v -0.179688 2.203120 0.710938 +v 0.234375 2.265620 0.554688 +v -0.234375 2.265620 0.554688 +v 0.000000 1.640620 0.687500 +v 0.046875 1.648432 0.687500 +v -0.046875 1.648432 0.687500 +v 0.093750 1.695307 0.710938 +v -0.093750 1.695307 0.710938 +v 0.093750 1.773432 0.726562 +v -0.093750 1.773432 0.726562 +v 0.000000 1.734370 0.656250 +v 0.093750 1.765620 0.664062 +v -0.093750 1.765620 0.664062 +v 0.093750 1.703120 0.640625 +v -0.093750 1.703120 0.640625 +v 0.046875 1.664057 0.632812 +v -0.046875 1.664057 0.632812 +v 0.000000 1.656245 0.632812 +v 0.171875 2.734370 0.781250 +v -0.171875 2.734370 0.781250 +v 0.187500 2.671870 0.773438 +v -0.187500 2.671870 0.773438 +v 0.335938 2.945307 0.757812 +v -0.335938 2.945307 0.757812 +v 0.273438 2.937495 0.773438 +v -0.273438 2.937495 0.773438 +v 0.421875 2.914057 0.773438 +v -0.421875 2.914057 0.773438 +v 0.562500 2.867182 0.695312 +v -0.562500 2.867182 0.695312 +v 0.585938 2.804682 0.687500 +v -0.585938 2.804682 0.687500 +v 0.578125 2.710932 0.679688 +v -0.578125 2.710932 0.679688 +v 0.476562 2.617182 0.718750 +v -0.476562 2.617182 0.718750 +v 0.375000 2.578120 0.742188 +v -0.375000 2.578120 0.742188 +v 0.226562 2.624995 0.781250 +v -0.226562 2.624995 0.781250 +v 0.179688 2.812495 0.781250 +v -0.179688 2.812495 0.781250 +v 0.210938 2.890620 0.781250 +v -0.210938 2.890620 0.781250 +v 0.234375 2.874995 0.757812 +v -0.234375 2.874995 0.757812 +v 0.195312 2.812495 0.757812 +v -0.195312 2.812495 0.757812 +v 0.242188 2.640620 0.757812 +v -0.242188 2.640620 0.757812 +v 0.375000 2.601557 0.726562 +v -0.375000 2.601557 0.726562 +v 0.460938 2.632807 0.703125 +v -0.460938 2.632807 0.703125 +v 0.546875 2.726557 0.671875 +v -0.546875 2.726557 0.671875 +v 0.554688 2.796870 0.671875 +v -0.554688 2.796870 0.671875 +v 0.531250 2.851557 0.679688 +v -0.531250 2.851557 0.679688 +v 0.414062 2.906245 0.750000 +v -0.414062 2.906245 0.750000 +v 0.281250 2.914057 0.765625 +v -0.281250 2.914057 0.765625 +v 0.335938 2.921870 0.750000 +v -0.335938 2.921870 0.750000 +v 0.203125 2.687495 0.750000 +v -0.203125 2.687495 0.750000 +v 0.195312 2.742182 0.750000 +v -0.195312 2.742182 0.750000 +v 0.109375 2.976557 0.609375 +v -0.109375 2.976557 0.609375 +v 0.195312 3.179682 0.617188 +v -0.195312 3.179682 0.617188 +v 0.335938 3.203120 0.593750 +v -0.335938 3.203120 0.593750 +v 0.484375 3.070307 0.554688 +v -0.484375 3.070307 0.554688 +v 0.679688 2.968745 0.492188 +v -0.679688 2.968745 0.492188 +v 0.796875 2.921870 0.460938 +v -0.796875 2.921870 0.460938 +v 0.773438 2.679682 0.375000 +v -0.773438 2.679682 0.375000 +v 0.601562 2.515620 0.414062 +v -0.601562 2.515620 0.414062 +v 0.437500 2.421870 0.468750 +v -0.437500 2.421870 0.468750 +v 0.000000 3.414057 0.289062 +v 0.000000 3.499995 -0.078125 +v 0.000000 2.320307 -0.671875 +v 0.000000 2.054682 0.187500 +v 0.000000 1.539057 0.460938 +v 0.000000 1.710932 0.343750 +v 0.000000 1.945307 0.320312 +v 0.000000 2.031245 0.281250 +v 0.851562 2.749995 0.054688 +v -0.851562 2.749995 0.054688 +v 0.859375 2.835932 -0.046875 +v -0.859375 2.835932 -0.046875 +v 0.773438 2.781245 -0.437500 +v -0.773438 2.781245 -0.437500 +v 0.460938 2.953120 -0.703125 +v -0.460938 2.953120 -0.703125 +v 0.734375 2.468745 0.070312 +v -0.734375 2.468745 0.070312 +v 0.593750 2.390620 -0.164062 +v -0.593750 2.390620 -0.164062 +v 0.640625 2.507807 -0.429688 +v -0.640625 2.507807 -0.429688 +v 0.335938 2.570307 -0.664062 +v -0.335938 2.570307 -0.664062 +v 0.234375 2.164057 0.406250 +v -0.234375 2.164057 0.406250 +v 0.179688 2.101557 0.257812 +v -0.179688 2.101557 0.257812 +v 0.289062 1.804682 0.382812 +v -0.289062 1.804682 0.382812 +v 0.250000 2.015620 0.390625 +v -0.250000 2.015620 0.390625 +v 0.328125 1.601557 0.398438 +v -0.328125 1.601557 0.398438 +v 0.140625 1.757807 0.367188 +v -0.140625 1.757807 0.367188 +v 0.125000 1.976557 0.359375 +v -0.125000 1.976557 0.359375 +v 0.164062 1.570307 0.437500 +v -0.164062 1.570307 0.437500 +v 0.218750 2.234370 0.429688 +v -0.218750 2.234370 0.429688 +v 0.210938 2.289057 0.468750 +v -0.210938 2.289057 0.468750 +v 0.203125 2.343745 0.500000 +v -0.203125 2.343745 0.500000 +v 0.210938 2.124995 0.164062 +v -0.210938 2.124995 0.164062 +v 0.296875 2.203120 -0.265625 +v -0.296875 2.203120 -0.265625 +v 0.343750 2.367182 -0.539062 +v -0.343750 2.367182 -0.539062 +v 0.453125 3.382807 -0.382812 +v -0.453125 3.382807 -0.382812 +v 0.453125 3.445307 -0.070312 +v -0.453125 3.445307 -0.070312 +v 0.453125 3.367182 0.234375 +v -0.453125 3.367182 0.234375 +v 0.460938 3.039057 0.429688 +v -0.460938 3.039057 0.429688 +v 0.726562 2.921870 0.335938 +v -0.726562 2.921870 0.335938 +v 0.632812 2.968745 0.281250 +v -0.632812 2.968745 0.281250 +v 0.640625 3.218745 0.054688 +v -0.640625 3.218745 0.054688 +v 0.796875 3.078120 0.125000 +v -0.796875 3.078120 0.125000 +v 0.796875 3.132807 -0.117188 +v -0.796875 3.132807 -0.117188 +v 0.640625 3.265620 -0.195312 +v -0.640625 3.265620 -0.195312 +v 0.640625 3.195307 -0.445312 +v -0.640625 3.195307 -0.445312 +v 0.796875 3.054682 -0.359375 +v -0.796875 3.054682 -0.359375 +v 0.617188 2.843745 -0.585938 +v -0.617188 2.843745 -0.585938 +v 0.484375 2.539057 -0.546875 +v -0.484375 2.539057 -0.546875 +v 0.820312 2.843745 -0.203125 +v -0.820312 2.843745 -0.203125 +v 0.406250 2.343745 0.148438 +v -0.406250 2.343745 0.148438 +v 0.429688 2.320307 -0.210938 +v -0.429688 2.320307 -0.210938 +v 0.890625 2.921870 -0.234375 +v -0.890625 2.921870 -0.234375 +v 0.773438 2.374995 -0.125000 +v -0.773438 2.374995 -0.125000 +v 1.039062 2.414057 -0.328125 +v -1.039062 2.414057 -0.328125 +v 1.281250 2.570307 -0.429688 +v -1.281250 2.570307 -0.429688 +v 1.351562 2.835932 -0.421875 +v -1.351562 2.835932 -0.421875 +v 1.234375 3.023432 -0.421875 +v -1.234375 3.023432 -0.421875 +v 1.023438 2.992182 -0.312500 +v -1.023438 2.992182 -0.312500 +v 1.015625 2.929682 -0.289062 +v -1.015625 2.929682 -0.289062 +v 1.187500 2.953120 -0.390625 +v -1.187500 2.953120 -0.390625 +v 1.265625 2.804682 -0.406250 +v -1.265625 2.804682 -0.406250 +v 1.210938 2.593745 -0.406250 +v -1.210938 2.593745 -0.406250 +v 1.031250 2.476557 -0.304688 +v -1.031250 2.476557 -0.304688 +v 0.828125 2.445307 -0.132812 +v -0.828125 2.445307 -0.132812 +v 0.921875 2.874995 -0.218750 +v -0.921875 2.874995 -0.218750 +v 0.945312 2.820307 -0.289062 +v -0.945312 2.820307 -0.289062 +v 0.882812 2.492182 -0.210938 +v -0.882812 2.492182 -0.210938 +v 1.039062 2.515620 -0.367188 +v -1.039062 2.515620 -0.367188 +v 1.187500 2.609370 -0.445312 +v -1.187500 2.609370 -0.445312 +v 1.234375 2.765620 -0.445312 +v -1.234375 2.765620 -0.445312 +v 1.171875 2.874995 -0.437500 +v -1.171875 2.874995 -0.437500 +v 1.023438 2.859370 -0.359375 +v -1.023438 2.859370 -0.359375 +v 0.843750 2.804682 -0.210938 +v -0.843750 2.804682 -0.210938 +v 0.835938 2.687495 -0.273438 +v -0.835938 2.687495 -0.273438 +v 0.757812 2.609370 -0.273438 +v -0.757812 2.609370 -0.273438 +v 0.820312 2.601557 -0.273438 +v -0.820312 2.601557 -0.273438 +v 0.843750 2.531245 -0.273438 +v -0.843750 2.531245 -0.273438 +v 0.812500 2.499995 -0.273438 +v -0.812500 2.499995 -0.273438 +v 0.726562 2.515620 -0.070312 +v -0.726562 2.515620 -0.070312 +v 0.718750 2.492182 -0.171875 +v -0.718750 2.492182 -0.171875 +v 0.718750 2.554682 -0.187500 +v -0.718750 2.554682 -0.187500 +v 0.796875 2.718745 -0.210938 +v -0.796875 2.718745 -0.210938 +v 0.890625 2.757807 -0.265625 +v -0.890625 2.757807 -0.265625 +v 0.890625 2.749995 -0.320312 +v -0.890625 2.749995 -0.320312 +v 0.812500 2.499995 -0.320312 +v -0.812500 2.499995 -0.320312 +v 0.851562 2.531245 -0.320312 +v -0.851562 2.531245 -0.320312 +v 0.828125 2.593745 -0.320312 +v -0.828125 2.593745 -0.320312 +v 0.765625 2.609370 -0.320312 +v -0.765625 2.609370 -0.320312 +v 0.843750 2.687495 -0.320312 +v -0.843750 2.687495 -0.320312 +v 1.039062 2.843745 -0.414062 +v -1.039062 2.843745 -0.414062 +v 1.187500 2.859370 -0.484375 +v -1.187500 2.859370 -0.484375 +v 1.257812 2.757807 -0.492188 +v -1.257812 2.757807 -0.492188 +v 1.210938 2.601557 -0.484375 +v -1.210938 2.601557 -0.484375 +v 1.046875 2.515620 -0.421875 +v -1.046875 2.515620 -0.421875 +v 0.882812 2.499995 -0.265625 +v -0.882812 2.499995 -0.265625 +v 0.953125 2.804682 -0.343750 +v -0.953125 2.804682 -0.343750 +v 0.890625 2.624995 -0.328125 +v -0.890625 2.624995 -0.328125 +v 0.937500 2.578120 -0.335938 +v -0.937500 2.578120 -0.335938 +v 1.000000 2.640620 -0.367188 +v -1.000000 2.640620 -0.367188 +v 0.960938 2.687495 -0.351562 +v -0.960938 2.687495 -0.351562 +v 1.015625 2.749995 -0.375000 +v -1.015625 2.749995 -0.375000 +v 1.054688 2.703120 -0.382812 +v -1.054688 2.703120 -0.382812 +v 1.109375 2.726557 -0.390625 +v -1.109375 2.726557 -0.390625 +v 1.085938 2.789057 -0.390625 +v -1.085938 2.789057 -0.390625 +v 1.023438 2.953120 -0.484375 +v -1.023438 2.953120 -0.484375 +v 1.250000 2.984370 -0.546875 +v -1.250000 2.984370 -0.546875 +v 1.367188 2.812495 -0.500000 +v -1.367188 2.812495 -0.500000 +v 1.312500 2.570307 -0.531250 +v -1.312500 2.570307 -0.531250 +v 1.039062 2.429682 -0.492188 +v -1.039062 2.429682 -0.492188 +v 0.789062 2.390620 -0.328125 +v -0.789062 2.390620 -0.328125 +v 0.859375 2.898432 -0.382812 +v -0.859375 2.898432 -0.382812 +vt 0.890955 0.590063 +vt 0.860081 0.560115 +vt 0.904571 0.559404 +vt 0.856226 0.850547 +vt 0.888398 0.821999 +vt 0.900640 0.853232 +vt 0.853018 0.521562 +vt 0.920166 0.524546 +vt 0.847458 0.888748 +vt 0.914672 0.888748 +vt 0.798481 0.569535 +vt 0.795104 0.838402 +vt 0.870622 0.589649 +vt 0.828900 0.590771 +vt 0.826436 0.818537 +vt 0.868067 0.821510 +vt 0.854402 0.604754 +vt 0.828171 0.633354 +vt 0.827598 0.775964 +vt 0.852534 0.805700 +vt 0.791018 0.645443 +vt 0.791018 0.762238 +vt 0.855181 0.668527 +vt 0.856142 0.742025 +vt 0.844839 0.707525 +vt 0.854107 0.625459 +vt 0.853157 0.785002 +vt 0.867508 0.642291 +vt 0.900375 0.666964 +vt 0.901223 0.745592 +vt 0.867293 0.768782 +vt 0.842358 0.702491 +vt 0.921180 0.713713 +vt 0.931889 0.636832 +vt 0.918898 0.699697 +vt 0.931368 0.777093 +vt 0.968213 0.770220 +vt 0.905882 0.627902 +vt 0.890474 0.641909 +vt 0.904990 0.784860 +vt 0.906232 0.605742 +vt 0.904357 0.807013 +vt 0.931250 0.820926 +vt 0.933717 0.593037 +vt 0.968392 0.645333 +vt 0.965038 0.841671 +vt 0.968392 0.573812 +vt 0.889591 0.593275 +vt 0.887178 0.818729 +vt 0.900583 0.804677 +vt 0.902359 0.607909 +vt 0.898822 0.786233 +vt 0.899781 0.626257 +vt 0.890219 0.770183 +vt 0.887351 0.775442 +vt 0.887842 0.636527 +vt 0.870376 0.775972 +vt 0.859881 0.623942 +vt 0.870908 0.635245 +vt 0.858859 0.786774 +vt 0.859664 0.608186 +vt 0.857942 0.802505 +vt 0.871664 0.593961 +vt 0.869299 0.817249 +vt 0.879400 0.616512 +vt 0.878029 0.795063 +vt 0.536419 0.062072 +vt 0.518916 0.050294 +vt 0.540260 0.053805 +vt 0.501452 0.062043 +vt 0.518925 0.059681 +vt 0.542788 0.064089 +vt 0.551930 0.058338 +vt 0.495083 0.064047 +vt 0.497626 0.053770 +vt 0.555073 0.061900 +vt 0.482805 0.061829 +vt 0.485955 0.058273 +vt 0.563812 0.076586 +vt 0.546290 0.072669 +vt 0.491565 0.072625 +vt 0.474014 0.076511 +vt 0.583135 0.108495 +vt 0.548333 0.084893 +vt 0.489507 0.084858 +vt 0.454527 0.108481 +vt 0.605512 0.165134 +vt 0.621513 0.227818 +vt 0.553118 0.209599 +vt 0.416514 0.229490 +vt 0.432024 0.165644 +vt 0.485339 0.210053 +vt 0.676379 0.233241 +vt 0.647395 0.200502 +vt 0.360308 0.235899 +vt 0.372747 0.256357 +vt 0.683908 0.279995 +vt 0.664761 0.253225 +vt 0.353696 0.284606 +vt 0.707254 0.310054 +vt 0.715342 0.265392 +vt 0.330721 0.316853 +vt 0.351187 0.317440 +vt 0.697446 0.332673 +vt 0.687515 0.311539 +vt 0.341964 0.339667 +vt 0.362723 0.329722 +vt 0.662817 0.372521 +vt 0.676824 0.323937 +vt 0.379297 0.378686 +vt 0.402772 0.362131 +vt 0.618316 0.375151 +vt 0.639050 0.357330 +vt 0.424583 0.379267 +vt 0.604826 0.397804 +vt 0.626842 0.395792 +vt 0.439252 0.401540 +vt 0.442396 0.381222 +vt 0.553095 0.390512 +vt 0.600808 0.377857 +vt 0.490934 0.391862 +vt 0.482938 0.358497 +vt 0.521923 0.386009 +vt 0.559674 0.357011 +vt 0.521086 0.343868 +vt 0.599845 0.344815 +vt 0.577279 0.340156 +vt 0.441977 0.347815 +vt 0.615546 0.342005 +vt 0.634472 0.332311 +vt 0.425972 0.345582 +vt 0.662406 0.312804 +vt 0.406362 0.336480 +vt 0.668440 0.297958 +vt 0.377061 0.317685 +vt 0.664101 0.277872 +vt 0.370304 0.302644 +vt 0.639236 0.253047 +vt 0.374100 0.281778 +vt 0.613992 0.242662 +vt 0.398938 0.255633 +vt 0.572941 0.258564 +vt 0.424464 0.244473 +vt 0.519760 0.248864 +vt 0.466409 0.259709 +vt 0.558527 0.316594 +vt 0.482619 0.317843 +vt 0.520277 0.294764 +vt 0.556923 0.291214 +vt 0.483433 0.292249 +vt 0.563905 0.272007 +vt 0.475886 0.273078 +vt 0.525483 0.068967 +vt 0.512375 0.068956 +vt 0.531231 0.073829 +vt 0.506626 0.073811 +vt 0.531019 0.087431 +vt 0.555621 0.121749 +vt 0.532669 0.090920 +vt 0.505177 0.090908 +vt 0.482177 0.121781 +vt 0.506827 0.087416 +vt 0.518981 0.151749 +vt 0.532042 0.127713 +vt 0.538112 0.158382 +vt 0.505828 0.127728 +vt 0.518941 0.128358 +vt 0.518925 0.093952 +vt 0.518927 0.085180 +vt 0.548362 0.173560 +vt 0.535214 0.166808 +vt 0.502799 0.166857 +vt 0.489683 0.173693 +vt 0.499851 0.158434 +vt 0.544281 0.193366 +vt 0.537959 0.175966 +vt 0.500100 0.176033 +vt 0.493996 0.193428 +vt 0.528757 0.191785 +vt 0.519841 0.200843 +vt 0.509219 0.191626 +vt 0.500890 0.187571 +vt 0.519132 0.185382 +vt 0.517577 0.190607 +vt 0.518998 0.159028 +vt 0.519016 0.165599 +vt 0.506910 0.171667 +vt 0.528222 0.186316 +vt 0.509787 0.186260 +vt 0.533528 0.184215 +vt 0.537248 0.187577 +vt 0.504547 0.184206 +vt 0.504604 0.176791 +vt 0.531131 0.171631 +vt 0.533449 0.176739 +vt 0.519099 0.179457 +vt 0.561572 0.167779 +vt 0.476363 0.167996 +vt 0.478371 0.149447 +vt 0.559475 0.149319 +vt 0.596138 0.133426 +vt 0.441395 0.133592 +vt 0.601169 0.147885 +vt 0.436337 0.148194 +vt 0.528933 0.084957 +vt 0.508915 0.084945 +vt 0.518925 0.083865 +vt 0.529036 0.075429 +vt 0.508820 0.075415 +vt 0.523751 0.070508 +vt 0.514106 0.070501 +vt 0.518928 0.067899 +vt 0.518929 0.069468 +vt 0.518928 0.074259 +vt 0.516297 0.074966 +vt 0.524236 0.076691 +vt 0.521560 0.074970 +vt 0.513619 0.076684 +vt 0.524601 0.079886 +vt 0.513252 0.079879 +vt 0.518926 0.079331 +vt 0.571787 0.277295 +vt 0.568351 0.292904 +vt 0.468070 0.278617 +vt 0.471978 0.294282 +vt 0.573085 0.311386 +vt 0.467790 0.313081 +vt 0.584855 0.327708 +vt 0.456477 0.329961 +vt 0.458737 0.268049 +vt 0.611720 0.255725 +vt 0.580734 0.266620 +vt 0.427062 0.257728 +vt 0.632494 0.262853 +vt 0.406068 0.265508 +vt 0.653658 0.279971 +vt 0.384904 0.283634 +vt 0.656064 0.297636 +vt 0.383015 0.301864 +vt 0.386858 0.314615 +vt 0.652752 0.310186 +vt 0.411556 0.327673 +vt 0.614408 0.331972 +vt 0.629040 0.323864 +vt 0.426727 0.335361 +vt 0.601033 0.333624 +vt 0.440344 0.336537 +vt 0.601799 0.328453 +vt 0.439372 0.331331 +vt 0.450408 0.323919 +vt 0.613335 0.327083 +vt 0.427623 0.330358 +vt 0.626851 0.320513 +vt 0.413648 0.324175 +vt 0.646248 0.306421 +vt 0.393381 0.310510 +vt 0.649541 0.296225 +vt 0.389662 0.300183 +vt 0.647785 0.283486 +vt 0.391040 0.287071 +vt 0.629829 0.267263 +vt 0.408893 0.269959 +vt 0.612641 0.261560 +vt 0.426254 0.263693 +vt 0.585166 0.270991 +vt 0.454369 0.272583 +vt 0.578124 0.281900 +vt 0.461798 0.283441 +vt 0.579548 0.309340 +vt 0.590644 0.321516 +vt 0.461204 0.311233 +vt 0.577524 0.293776 +vt 0.462754 0.295432 +vt 0.553209 0.433063 +vt 0.523031 0.433628 +vt 0.492809 0.434538 +vt 0.609819 0.431516 +vt 0.435860 0.435740 +vt 0.416915 0.400552 +vt 0.396518 0.425416 +vt 0.648174 0.419316 +vt 0.350292 0.396229 +vt 0.692106 0.388274 +vt 0.312756 0.350588 +vt 0.735879 0.312112 +vt 0.726332 0.341754 +vt 0.301067 0.320593 +vt 0.320452 0.270303 +vt 0.304876 0.261087 +vt 0.698172 0.216906 +vt 0.729900 0.256393 +vt 0.337414 0.219179 +vt 0.663103 0.190671 +vt 0.373474 0.191872 +vt 0.649444 0.022378 +vt 0.621440 0.048089 +vt 0.626908 0.015608 +vt 0.388827 0.021586 +vt 0.416419 0.047631 +vt 0.376796 0.075296 +vt 0.577206 0.032801 +vt 0.567460 0.000144 +vt 0.411318 0.015131 +vt 0.460782 0.032656 +vt 0.547413 0.041724 +vt 0.518922 0.024886 +vt 0.470636 0.000144 +vt 0.490511 0.041669 +vt 0.558059 0.053871 +vt 0.479842 0.053785 +vt 0.576951 0.057998 +vt 0.460920 0.057845 +vt 0.611687 0.078268 +vt 0.425932 0.077985 +vt 0.660451 0.076084 +vt 0.626663 0.111357 +vt 0.410618 0.111244 +vt 0.629482 0.130456 +vt 0.407648 0.130594 +vt 0.413741 0.147158 +vt 0.619303 0.159841 +vt 0.418035 0.160361 +vt 0.389677 0.201890 +vt 0.886245 0.121777 +vt 0.891780 0.036916 +vt 0.945900 0.079569 +vt 0.141314 0.112482 +vt 0.142277 0.021467 +vt 0.183115 0.092127 +vt 0.849114 0.099732 +vt 0.805584 0.010786 +vt 0.232648 0.003484 +vt 0.246353 0.076510 +vt 0.687018 0.077204 +vt 0.672384 0.022201 +vt 0.349875 0.075955 +vt 0.365979 0.020991 +vt 0.760215 0.193244 +vt 0.789046 0.233323 +vt 0.271553 0.193871 +vt 0.241255 0.236977 +vt 0.909112 0.183261 +vt 0.994525 0.167705 +vt 0.107928 0.179083 +vt 0.078961 0.060719 +vt 0.862868 0.338556 +vt 0.962901 0.344752 +vt 0.911671 0.402429 +vt 0.160557 0.356821 +vt 0.043968 0.367038 +vt 0.123776 0.315519 +vt 0.915360 0.259804 +vt 0.999856 0.254640 +vt 0.098965 0.266968 +vt 0.000144 0.259113 +vt 0.011829 0.155367 +vt 0.749542 0.334683 +vt 0.766337 0.300809 +vt 0.789162 0.313727 +vt 0.267408 0.310142 +vt 0.288183 0.346496 +vt 0.242992 0.325552 +vt 0.815314 0.276388 +vt 0.846174 0.293397 +vt 0.213065 0.285164 +vt 0.178537 0.304983 +vt 0.845007 0.256352 +vt 0.873517 0.265922 +vt 0.179662 0.263312 +vt 0.147089 0.274284 +vt 0.859075 0.228168 +vt 0.886999 0.233769 +vt 0.162803 0.231720 +vt 0.131514 0.237587 +vt 0.875030 0.184705 +vt 0.842355 0.195160 +vt 0.145224 0.182749 +vt 0.894128 0.301884 +vt 0.794286 0.364062 +vt 0.770185 0.379538 +vt 0.239776 0.382592 +vt 0.845499 0.449967 +vt 0.106400 0.432652 +vt 0.815858 0.445381 +vt 0.755700 0.418603 +vt 0.287033 0.442912 +vt 0.219260 0.477186 +vt 0.268122 0.398737 +vt 0.185281 0.484099 +vt 0.819845 0.468071 +vt 0.215894 0.503605 +vt 0.809631 0.233887 +vt 0.219168 0.237388 +vt 0.829287 0.219562 +vt 0.199067 0.222464 +vt 0.788458 0.080826 +vt 0.715482 0.139727 +vt 0.319538 0.139409 +vt 0.246666 0.114850 +vt 0.785486 0.152330 +vt 0.245969 0.151002 +vt 0.623495 0.146796 +vt 0.837382 0.156361 +vt 0.196622 0.155241 +vt 0.171653 0.132294 +vt 0.786480 0.117591 +vt 0.858171 0.137775 +vt 0.432388 0.894943 +vt 0.491058 0.881714 +vt 0.506166 0.904851 +vt 0.321637 0.893225 +vt 0.263032 0.878321 +vt 0.315867 0.868209 +vt 0.572792 0.860484 +vt 0.604825 0.879946 +vt 0.181486 0.854693 +vt 0.247207 0.901159 +vt 0.148729 0.873349 +vt 0.619962 0.791615 +vt 0.136063 0.784093 +vt 0.169745 0.787474 +vt 0.586396 0.793977 +vt 0.563786 0.739211 +vt 0.194086 0.733241 +vt 0.208656 0.740879 +vt 0.549027 0.746412 +vt 0.508270 0.697693 +vt 0.250811 0.693249 +vt 0.258399 0.707497 +vt 0.438641 0.680683 +vt 0.434803 0.658882 +vt 0.320962 0.677959 +vt 0.325318 0.656224 +vt 0.500314 0.711729 +vt 0.452955 0.700023 +vt 0.306136 0.696976 +vt 0.505666 0.730944 +vt 0.252524 0.726592 +vt 0.568148 0.787367 +vt 0.188269 0.781375 +vt 0.214575 0.750414 +vt 0.555495 0.826352 +vt 0.199850 0.820889 +vt 0.501231 0.844356 +vt 0.253846 0.840502 +vt 0.457832 0.840040 +vt 0.297562 0.837358 +vt 0.783193 0.187449 +vt 0.246955 0.187075 +vt 0.233625 0.175620 +vt 0.394766 0.686125 +vt 0.391039 0.611891 +vt 0.364838 0.684445 +vt 0.391747 0.862097 +vt 0.438797 0.870229 +vt 0.363377 0.861308 +vt 0.435018 0.718280 +vt 0.323658 0.715731 +vt 0.384658 0.710299 +vt 0.433669 0.729661 +vt 0.374400 0.708969 +vt 0.410995 0.747662 +vt 0.427812 0.742828 +vt 0.324726 0.727177 +vt 0.347028 0.745816 +vt 0.330270 0.740536 +vt 0.384657 0.795423 +vt 0.418086 0.784946 +vt 0.372270 0.794472 +vt 0.431333 0.817535 +vt 0.401605 0.841460 +vt 0.324790 0.815460 +vt 0.338952 0.783073 +vt 0.354026 0.840297 +vt 0.825107 0.209762 +vt 0.199767 0.214827 +vt 0.816266 0.203086 +vt 0.209828 0.206161 +vt 0.226485 0.183086 +vt 0.796021 0.176969 +vt 0.802192 0.184609 +vt 0.448505 0.804621 +vt 0.473386 0.824700 +vt 0.307886 0.802031 +vt 0.282357 0.821525 +vt 0.321237 0.777208 +vt 0.423718 0.754191 +vt 0.435868 0.779569 +vt 0.334089 0.752045 +vt 0.319919 0.747250 +vt 0.437950 0.749777 +vt 0.312907 0.729222 +vt 0.440995 0.724383 +vt 0.445392 0.731997 +vt 0.317510 0.721697 +vt 0.455277 0.713731 +vt 0.303460 0.710657 +vt 0.512485 0.828811 +vt 0.242975 0.824574 +vt 0.550942 0.811814 +vt 0.204839 0.806417 +vt 0.552139 0.787682 +vt 0.204331 0.782156 +vt 0.539407 0.764539 +vt 0.542850 0.755753 +vt 0.217774 0.759319 +vt 0.508439 0.743135 +vt 0.249419 0.738732 +vt 0.454776 0.761665 +vt 0.302729 0.758742 +vt 0.286960 0.745020 +vt 0.470841 0.748408 +vt 0.475403 0.783904 +vt 0.281439 0.780511 +vt 0.268291 0.766661 +vt 0.503673 0.787562 +vt 0.494476 0.802470 +vt 0.252972 0.783410 +vt 0.261790 0.798626 +vt 0.516802 0.807339 +vt 0.239243 0.802891 +vt 0.237920 0.787045 +vt 0.518562 0.791602 +vt 0.484068 0.628776 +vt 0.543385 0.683538 +vt 0.276936 0.625067 +vt 0.216123 0.678120 +vt 0.581052 0.726933 +vt 0.177176 0.720426 +vt 0.616701 0.759965 +vt 0.140379 0.752377 +vt 0.660647 0.741167 +vt 0.707492 0.759884 +vt 0.097038 0.732052 +vt 0.677256 0.670436 +vt 0.745511 0.652100 +vt 0.049526 0.748824 +vt 0.083564 0.662038 +vt 0.671403 0.592656 +vt 0.740843 0.572428 +vt 0.019409 0.639749 +vt 0.092820 0.589862 +vt 0.834705 0.206959 +vt 0.051216 0.522659 +vt 0.033664 0.564403 +vt 0.620420 0.565675 +vt 0.498072 0.552315 +vt 0.145041 0.562595 +vt 0.264218 0.550140 +vt 0.369913 0.610196 +vt 0.464579 0.342230 +vt 0.176788 0.196179 +vt 0.770572 0.444261 +vt 0.271364 0.473316 +vt 0.488870 0.770464 +vt 0.834578 0.206879 +vn 0.9693 -0.0118 0.2456 +vn 0.6076 -0.5104 0.6085 +vn 0.8001 -0.0028 0.5999 +vn -0.6076 -0.5104 0.6085 +vn -0.9693 -0.0118 0.2456 +vn -0.8001 -0.0028 0.5999 +vn 0.6802 -0.5463 0.4888 +vn 0.8682 -0.0048 0.4961 +vn -0.6802 -0.5463 0.4888 +vn -0.8682 -0.0048 0.4961 +vn 0.1193 -0.8712 0.4763 +vn -0.1193 -0.8712 0.4763 +vn 0.7290 -0.6566 0.1934 +vn 0.0995 -0.7515 0.6522 +vn -0.0995 -0.7515 0.6522 +vn -0.7290 -0.6566 0.1934 +vn 0.0314 -0.9670 0.2529 +vn -0.4563 -0.5362 0.7101 +vn 0.4563 -0.5362 0.7101 +vn -0.0314 -0.9670 0.2529 +vn -0.5539 -0.6332 0.5406 +vn 0.5539 -0.6332 0.5406 +vn -0.6899 -0.0041 0.7239 +vn 0.6899 -0.0041 0.7239 +vn 0.8097 -0.0070 0.5868 +vn -0.6506 -0.6883 0.3210 +vn 0.6506 -0.6883 0.3210 +vn -0.9521 -0.0102 0.3057 +vn -0.4560 0.5222 0.7207 +vn 0.4560 0.5222 0.7207 +vn 0.9521 -0.0102 0.3057 +vn -0.8097 -0.0070 0.5868 +vn 0.5306 0.6258 0.5717 +vn 0.1031 0.7402 0.6644 +vn -0.5306 0.6258 0.5717 +vn -0.1031 0.7402 0.6644 +vn -0.1257 0.8416 0.5253 +vn 0.0258 0.9726 0.2312 +vn -0.6644 0.6821 0.3056 +vn -0.0258 0.9726 0.2312 +vn 0.7364 0.6521 0.1803 +vn -0.7364 0.6521 0.1803 +vn -0.6102 0.4956 0.6181 +vn 0.6102 0.4956 0.6181 +vn 0.1257 0.8416 0.5253 +vn -0.6682 0.5371 0.5148 +vn 0.6682 0.5371 0.5148 +vn 0.9645 -0.0127 0.2639 +vn -0.9645 -0.0127 0.2639 +vn -0.7216 0.6556 0.2224 +vn 0.7216 0.6556 0.2224 +vn -0.0432 0.9389 0.3415 +vn 0.0432 0.9389 0.3415 +vn 0.6644 0.6821 0.3056 +vn 0.6237 0.6285 0.4647 +vn -0.6237 0.6285 0.4647 +vn 0.9270 -0.0130 0.3749 +vn -0.6159 -0.6366 0.4641 +vn -0.9270 -0.0130 0.3749 +vn 0.6159 -0.6366 0.4641 +vn 0.0426 -0.9404 0.3375 +vn -0.0426 -0.9404 0.3375 +vn 0.7152 -0.6625 0.2227 +vn -0.7152 -0.6625 0.2227 +vn 0.1836 -0.0053 0.9830 +vn -0.1836 -0.0053 0.9830 +vn 0.1554 -0.7590 0.6323 +vn 0.0000 -0.9677 0.2523 +vn 0.1596 -0.9753 0.1529 +vn -0.1554 -0.7590 0.6323 +vn 0.0000 -0.7753 0.6316 +vn 0.3502 -0.6392 0.6847 +vn 0.5267 -0.8347 0.1611 +vn -0.3502 -0.6392 0.6847 +vn -0.1596 -0.9753 0.1529 +vn 0.9457 -0.2579 0.1977 +vn -0.9457 -0.2579 0.1977 +vn -0.5267 -0.8347 0.1611 +vn 0.9728 0.1003 0.2087 +vn 0.5557 -0.2264 0.8000 +vn -0.5557 -0.2264 0.8000 +vn -0.9728 0.1003 0.2087 +vn 0.9557 0.2492 0.1565 +vn 0.5652 -0.0297 0.8244 +vn -0.5652 -0.0297 0.8244 +vn -0.9557 0.2492 0.1565 +vn 0.8916 -0.3307 0.3095 +vn 0.3842 -0.5671 0.7286 +vn 0.0402 -0.2722 0.9614 +vn -0.3842 -0.5671 0.7286 +vn -0.8916 -0.3307 0.3095 +vn -0.0402 -0.2722 0.9614 +vn 0.5875 -0.7849 0.1970 +vn 0.3489 -0.9371 -0.0082 +vn -0.5875 -0.7849 0.1970 +vn -0.4991 -0.3761 0.7807 +vn 0.5666 -0.3188 0.7598 +vn 0.4991 -0.3761 0.7807 +vn -0.5666 -0.3188 0.7598 +vn 0.8451 0.4434 0.2985 +vn 0.9070 -0.4009 -0.1290 +vn -0.8451 0.4434 0.2985 +vn -0.4607 -0.1448 0.8757 +vn 0.5171 0.8291 0.2125 +vn 0.4607 -0.1448 0.8757 +vn -0.5171 0.8291 0.2125 +vn -0.4801 -0.1833 0.8578 +vn 0.5976 0.7847 0.1646 +vn 0.4801 -0.1833 0.8578 +vn -0.5976 0.7847 0.1646 +vn -0.3085 0.0039 0.9512 +vn 0.2666 0.2166 0.9392 +vn 0.3085 0.0039 0.9512 +vn -0.2666 0.2166 0.9392 +vn -0.6051 0.7680 0.2098 +vn 0.2313 0.9570 0.1751 +vn 0.6051 0.7680 0.2098 +vn 0.1574 0.1660 0.9735 +vn -0.8242 0.5468 0.1473 +vn -0.1574 0.1660 0.9735 +vn 0.8242 0.5468 0.1473 +vn 0.0611 -0.0253 0.9978 +vn 0.0000 0.9636 0.2673 +vn -0.0611 -0.0253 0.9978 +vn 0.0000 -0.0827 0.9966 +vn 0.2582 -0.1265 0.9578 +vn 0.3679 -0.2836 0.8856 +vn -0.2582 -0.1265 0.9578 +vn 0.1490 -0.1542 0.9767 +vn 0.2190 0.0372 0.9750 +vn -0.1490 -0.1542 0.9767 +vn 0.2254 -0.3608 0.9050 +vn -0.2190 0.0372 0.9750 +vn 0.3588 -0.1192 0.9258 +vn -0.2254 -0.3608 0.9050 +vn 0.4602 -0.1651 0.8723 +vn -0.3588 -0.1192 0.9258 +vn 0.4279 -0.3895 0.8156 +vn -0.4602 -0.1651 0.8723 +vn 0.3322 -0.3667 0.8690 +vn -0.4279 -0.3895 0.8156 +vn -0.1522 -0.2549 0.9549 +vn -0.3322 -0.3667 0.8690 +vn -0.0000 0.0643 0.9979 +vn 0.1522 -0.2549 0.9549 +vn 0.0316 -0.1782 0.9835 +vn -0.0316 -0.1782 0.9835 +vn -0.0000 -0.2220 0.9750 +vn -0.2006 -0.1350 0.9703 +vn 0.2006 -0.1350 0.9703 +vn -0.2393 -0.3012 0.9230 +vn 0.2393 -0.3012 0.9230 +vn -0.0589 -0.3784 0.9238 +vn 0.0589 -0.3784 0.9238 +vn 0.1307 -0.3187 0.9388 +vn -0.1307 -0.3187 0.9388 +vn 0.1460 -0.1202 0.9820 +vn 0.5937 0.1082 0.7974 +vn 0.1815 -0.0452 0.9823 +vn -0.1815 -0.0452 0.9823 +vn -0.5937 0.1082 0.7974 +vn -0.1460 -0.1202 0.9820 +vn 0.0000 -0.4760 0.8795 +vn 0.1341 0.0063 0.9909 +vn 0.5003 -0.4293 0.7520 +vn -0.1341 0.0063 0.9909 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -0.0341 0.9994 +vn -0.0000 -0.5870 0.8096 +vn 0.9304 -0.1242 0.3448 +vn 0.5836 -0.6929 0.4235 +vn -0.5836 -0.6929 0.4235 +vn -0.9304 -0.1242 0.3448 +vn -0.5003 -0.4293 0.7520 +vn 0.4931 -0.3412 0.8002 +vn 0.9306 -0.2353 0.2804 +vn -0.9306 -0.2353 0.2804 +vn -0.4931 -0.3412 0.8002 +vn -0.2405 0.9491 0.2036 +vn 0.0000 0.5166 0.8562 +vn 0.2405 0.9491 0.2036 +vn -0.6286 0.7688 0.1177 +vn 0.0000 0.8287 0.5597 +vn 0.0000 0.9515 0.3076 +vn 0.0000 -0.8654 0.5011 +vn 0.0000 -0.4815 0.8764 +vn -0.1833 -0.5864 0.7890 +vn -0.1858 0.5956 0.7815 +vn 0.1858 0.5956 0.7815 +vn 0.3611 0.4713 0.8047 +vn 0.6286 0.7688 0.1177 +vn -0.3611 0.4713 0.8047 +vn -0.4488 -0.3147 0.8364 +vn 0.1833 -0.5864 0.7890 +vn 0.4488 -0.3147 0.8364 +vn 0.0000 0.1578 0.9875 +vn 0.7752 0.0387 0.6306 +vn -0.7752 0.0387 0.6306 +vn -0.6507 0.1488 0.7447 +vn 0.6507 0.1488 0.7447 +vn 0.9278 0.3530 0.1209 +vn -0.9278 0.3530 0.1209 +vn 0.9306 0.3435 0.1263 +vn -0.9306 0.3435 0.1263 +vn -0.1369 -0.5273 0.8386 +vn 0.1369 -0.5273 0.8386 +vn 0.0000 -0.9619 0.2732 +vn -0.6351 0.0428 0.7712 +vn 0.6351 0.0428 0.7712 +vn -0.4141 0.5798 0.7016 +vn 0.4141 0.5798 0.7016 +vn 0.0000 -0.3465 0.9380 +vn 0.0000 0.5588 0.8293 +vn 0.0000 0.5334 0.8459 +vn 0.2959 0.4750 0.8288 +vn -0.6738 0.1155 0.7299 +vn -0.2959 0.4750 0.8288 +vn 0.6738 0.1155 0.7299 +vn -0.5177 -0.7041 0.4860 +vn 0.5177 -0.7041 0.4860 +vn 0.0000 -0.6989 0.7152 +vn -0.0101 -0.0700 0.9975 +vn 0.1581 -0.0843 0.9838 +vn 0.0101 -0.0700 0.9975 +vn -0.1581 -0.0843 0.9838 +vn 0.2934 -0.0602 0.9541 +vn -0.2934 -0.0602 0.9541 +vn 0.1588 -0.1065 0.9816 +vn -0.1588 -0.1065 0.9816 +vn 0.0317 -0.2198 0.9750 +vn 0.1845 -0.1863 0.9650 +vn -0.0317 -0.2198 0.9750 +vn -0.1845 -0.1863 0.9650 +vn 0.2990 -0.0356 0.9536 +vn -0.2990 -0.0356 0.9536 +vn 0.2943 -0.1021 0.9502 +vn -0.2943 -0.1020 0.9502 +vn 0.1776 -0.0608 0.9822 +vn -0.1776 -0.0608 0.9822 +vn -0.2944 0.0046 0.9557 +vn 0.2944 0.0046 0.9557 +vn -0.0887 -0.1272 0.9879 +vn 0.2036 0.1032 0.9736 +vn 0.0887 -0.1272 0.9879 +vn -0.2036 0.1032 0.9736 +vn 0.1435 0.0966 0.9849 +vn -0.1435 0.0966 0.9849 +vn 0.2886 -0.2786 0.9160 +vn -0.2886 -0.2786 0.9160 +vn -0.4508 -0.4658 0.7614 +vn 0.1133 -0.3142 0.9426 +vn -0.1133 -0.3142 0.9426 +vn -0.2741 -0.8556 0.4391 +vn 0.2741 -0.8556 0.4391 +vn -0.1423 -0.5826 0.8002 +vn 0.1423 -0.5826 0.8002 +vn -0.4229 -0.1078 0.8997 +vn 0.4229 -0.1078 0.8997 +vn -0.1921 0.1914 0.9625 +vn 0.1921 0.1914 0.9625 +vn -0.1653 0.6098 0.7751 +vn 0.1653 0.6098 0.7751 +vn 0.1431 0.5587 0.8169 +vn -0.1431 0.5587 0.8169 +vn 0.4323 0.5833 0.6877 +vn -0.4323 0.5833 0.6877 +vn 0.6881 0.2985 0.6614 +vn -0.6881 0.2985 0.6614 +vn 0.7894 -0.2032 0.5793 +vn 0.4508 -0.4658 0.7614 +vn -0.7894 -0.2032 0.5793 +vn 0.8016 0.0110 0.5977 +vn -0.8016 0.0110 0.5977 +vn -0.4603 0.8619 0.2127 +vn 0.0000 0.8592 0.5116 +vn 0.4603 0.8619 0.2127 +vn -0.4792 0.5120 -0.7129 +vn 0.4792 0.5120 -0.7129 +vn -0.2313 0.9570 0.1751 +vn -0.1217 0.6503 -0.7499 +vn 0.1217 0.6503 -0.7499 +vn -0.2275 0.8745 -0.4283 +vn 0.2275 0.8745 -0.4283 +vn -0.3456 0.9125 -0.2192 +vn 0.6957 0.5814 -0.4218 +vn 0.3456 0.9125 -0.2192 +vn -0.6957 0.5814 -0.4218 +vn -0.9070 -0.4009 -0.1290 +vn -0.9302 -0.3062 -0.2024 +vn 0.5444 -0.8372 -0.0533 +vn 0.9302 -0.3062 -0.2024 +vn -0.5444 -0.8372 -0.0533 +vn 0.4720 -0.8637 -0.1768 +vn -0.4720 -0.8637 -0.1768 +vn 0.0000 -0.7711 -0.6367 +vn 0.2771 -0.3147 -0.9078 +vn -0.0000 -0.2133 -0.9770 +vn -0.2771 -0.3147 -0.9078 +vn -0.6894 -0.6687 -0.2786 +vn 0.1514 -0.1510 -0.9769 +vn 0.0000 -0.2974 -0.9548 +vn -0.1514 -0.1510 -0.9769 +vn 0.0675 -0.7832 -0.6181 +vn 0.0000 -0.8818 -0.4716 +vn -0.0675 -0.7832 -0.6181 +vn 0.5551 -0.4762 -0.6820 +vn -0.5551 -0.4762 -0.6820 +vn 0.6204 0.0835 -0.7798 +vn -0.6204 0.0835 -0.7798 +vn 0.7799 -0.0105 -0.6259 +vn -0.7799 -0.0105 -0.6259 +vn 0.6894 -0.6687 -0.2786 +vn 0.8957 0.2578 -0.3624 +vn -0.8957 0.2578 -0.3624 +vn 0.9787 -0.1959 0.0615 +vn -0.9787 -0.1959 0.0615 +vn -0.8872 -0.1577 0.4336 +vn 0.7857 -0.5715 0.2368 +vn -0.7857 -0.5715 0.2368 +vn -0.3489 -0.9371 -0.0082 +vn 0.4455 -0.3584 -0.8204 +vn 0.0000 -0.6913 -0.7226 +vn -0.0000 -0.3049 -0.9524 +vn -0.4455 -0.3584 -0.8204 +vn -0.5223 -0.6536 -0.5477 +vn 0.5223 -0.6536 -0.5477 +vn 0.0000 -0.9417 -0.3365 +vn -0.5071 -0.8376 -0.2033 +vn 0.5727 -0.8197 0.0120 +vn 0.0000 -0.9831 -0.1833 +vn -0.5727 -0.8197 0.0120 +vn 0.7211 -0.6898 0.0651 +vn 0.9850 -0.1605 0.0631 +vn -0.7211 -0.6898 0.0651 +vn -0.9850 -0.1605 0.0631 +vn 0.4730 0.1763 -0.8632 +vn 0.0000 0.3650 -0.9310 +vn -0.4730 0.1763 -0.8632 +vn 0.4442 0.7244 0.5271 +vn 0.0000 0.9997 0.0226 +vn 0.0000 0.8306 0.5568 +vn -0.4442 0.7244 0.5271 +vn -0.4135 0.9096 0.0395 +vn 0.3913 0.8153 -0.4268 +vn 0.0000 0.8343 -0.5514 +vn -0.3913 0.8153 -0.4268 +vn 0.7717 0.6311 0.0785 +vn 0.4444 0.7886 0.4250 +vn -0.7717 0.6311 0.0785 +vn -0.4444 0.7886 0.4250 +vn 0.7418 0.5164 0.4279 +vn 0.6682 0.6719 0.3195 +vn -0.7418 0.5164 0.4279 +vn -0.6682 0.6719 0.3195 +vn 0.8486 0.5288 -0.0140 +vn 0.6784 0.7314 -0.0695 +vn -0.8486 0.5288 -0.0140 +vn -0.6784 0.7314 -0.0695 +vn 0.8722 0.3146 -0.3747 +vn 0.6075 0.5696 -0.5536 +vn -0.8722 0.3146 -0.3747 +vn -0.6075 0.5696 -0.5536 +vn 0.6197 -0.0605 -0.7825 +vn 0.6708 -0.0453 -0.7403 +vn -0.6197 -0.0605 -0.7825 +vn 0.4135 0.9096 0.0395 +vn 0.3406 0.8832 0.3223 +vn -0.3406 0.8832 0.3223 +vn 0.0000 0.5293 0.8485 +vn 0.9983 -0.0283 -0.0502 +vn -0.9983 -0.0283 -0.0502 +vn 0.8403 0.4934 0.2246 +vn -0.8403 0.4934 0.2246 +vn 0.5071 -0.8376 -0.2033 +vn 0.5790 -0.8027 0.1427 +vn -0.5790 -0.8027 0.1427 +vn -0.5633 -0.8173 -0.1213 +vn 0.3123 -0.9500 0.0012 +vn -0.3123 -0.9500 0.0012 +vn 0.8872 -0.1577 0.4336 +vn 0.3255 -0.6029 -0.7284 +vn -0.3255 -0.6029 -0.7284 +vn -0.5292 -0.5051 -0.6817 +vn 0.5633 -0.8173 -0.1213 +vn 0.5292 -0.5051 -0.6817 +vn -0.2793 0.7683 0.5759 +vn 0.5512 -0.0788 0.8307 +vn 0.0188 0.8723 0.4887 +vn 0.2793 0.7683 0.5759 +vn -0.5512 -0.0788 0.8307 +vn -0.4493 -0.0383 0.8926 +vn 0.3215 -0.0923 0.9424 +vn 0.3836 0.8630 0.3288 +vn -0.3215 -0.0923 0.9424 +vn -0.0188 0.8723 0.4887 +vn -0.3836 0.8630 0.3288 +vn 0.7788 0.1678 0.6044 +vn -0.7788 0.1678 0.6044 +vn 0.1545 -0.1239 0.9802 +vn -0.1545 -0.1239 0.9802 +vn 0.6526 -0.4768 0.5888 +vn -0.6526 -0.4768 0.5888 +vn 0.0411 0.3108 0.9496 +vn -0.0411 0.3108 0.9496 +vn 0.5029 -0.7810 0.3703 +vn -0.5029 -0.7810 0.3703 +vn -0.5384 0.2953 0.7893 +vn 0.3300 0.3157 0.8896 +vn 0.0295 -0.6350 0.7719 +vn -0.3300 0.3157 0.8896 +vn -0.0295 -0.6350 0.7719 +vn 0.5384 0.2953 0.7893 +vn 0.1629 0.8581 0.4870 +vn -0.1629 0.8581 0.4870 +vn -0.1868 0.9538 0.2351 +vn 0.1868 0.9538 0.2351 +vn -0.9848 -0.0996 0.1426 +vn 0.9848 -0.0996 0.1426 +vn 0.7622 0.6471 -0.0193 +vn -0.1496 -0.7455 0.6495 +vn 0.1496 -0.7455 0.6495 +vn 0.5605 -0.6609 0.4991 +vn -0.5605 -0.6609 0.4991 +vn 0.6842 -0.5558 0.4722 +vn -0.6842 -0.5558 0.4722 +vn 0.8572 -0.4931 -0.1483 +vn -0.8572 -0.4931 -0.1483 +vn -0.7312 0.1144 0.6725 +vn 0.7312 0.1144 0.6725 +vn 0.4493 -0.0383 0.8926 +vn 0.5998 0.5131 0.6139 +vn -0.5998 0.5131 0.6139 +vn 0.9610 -0.1188 0.2499 +vn 0.8420 -0.1763 0.5098 +vn -0.9610 -0.1188 0.2499 +vn 0.8515 0.0414 0.5228 +vn 0.4814 0.6344 0.6048 +vn -0.8420 -0.1763 0.5098 +vn -0.8515 0.0414 0.5228 +vn -0.4814 0.6344 0.6048 +vn 0.8303 -0.4790 0.2850 +vn 0.6864 -0.6234 0.3746 +vn -0.8303 -0.4790 0.2850 +vn 0.7261 -0.4989 0.4732 +vn 0.7949 -0.2332 0.5601 +vn -0.7261 -0.4989 0.4732 +vn -0.6864 -0.6234 0.3746 +vn -0.7949 -0.2332 0.5601 +vn 0.6593 -0.4685 0.5881 +vn 0.6482 -0.4206 0.6347 +vn -0.6593 -0.4685 0.5881 +vn -0.6482 -0.4206 0.6347 +vn -0.5725 -0.4189 0.7048 +vn 0.7584 0.2665 0.5948 +vn 0.5725 -0.4189 0.7048 +vn -0.7584 0.2665 0.5948 +vn -0.4492 0.3799 0.8086 +vn 0.4492 0.3799 0.8086 +vn -0.2929 0.3709 0.8813 +vn 0.6450 0.3102 0.6984 +vn 0.2929 0.3709 0.8813 +vn -0.6450 0.3102 0.6984 +vn -0.0331 0.9449 0.3256 +vn 0.0331 0.9449 0.3256 +vn 0.4618 -0.3291 0.8237 +vn -0.4618 -0.3291 0.8237 +vn -0.2624 -0.5331 0.8043 +vn 0.2624 -0.5331 0.8043 +vn -0.7529 -0.0338 0.6573 +vn 0.7529 -0.0338 0.6573 +vn -0.5831 0.4999 0.6403 +vn -0.7622 0.6471 -0.0193 +vn 0.5831 0.4999 0.6403 +vn 0.0650 0.7039 0.7074 +vn -0.0650 0.7039 0.7074 +vn 0.1951 0.0390 0.9800 +vn -0.1951 0.0390 0.9800 +vn -0.4085 0.1273 0.9039 +vn 0.4085 0.1273 0.9039 +vn 0.3347 -0.0046 0.9423 +vn -0.3347 -0.0046 0.9423 +vn -0.4448 -0.0937 0.8907 +vn 0.3144 -0.1038 0.9436 +vn 0.3343 0.1068 0.9364 +vn -0.3144 -0.1038 0.9436 +vn -0.3343 0.1068 0.9364 +vn 0.2897 0.3158 0.9035 +vn -0.2897 0.3158 0.9035 +vn -0.3831 -0.0685 0.9211 +vn 0.3831 -0.0685 0.9211 +vn -0.0989 -0.8408 -0.5322 +vn -0.0253 -0.6796 -0.7331 +vn 0.0989 -0.8408 -0.5322 +vn 0.0253 -0.6796 -0.7331 +vn 0.6366 -0.5043 -0.5834 +vn -0.6366 -0.5043 -0.5834 +vn 0.9253 0.0918 -0.3680 +vn -0.9253 0.0918 -0.3680 +vn 0.2870 0.5978 -0.7485 +vn -0.2870 0.5978 -0.7485 +vn -0.4142 0.5509 -0.7245 +vn 0.4142 0.5509 -0.7245 +vn -0.6501 0.5847 -0.4854 +vn 0.6501 0.5847 -0.4854 +vn -0.6708 -0.0453 -0.7403 +vn -0.3679 -0.2836 0.8856 +vn 0.4448 -0.0937 0.8907 +usemtl None +s 1 +f 55/15/7 11/16/8 53/17/9 +f 12/18/10 56/19/11 54/20/12 +f 53/17/9 13/21/13 51/22/14 +f 14/23/15 54/20/12 52/24/16 +f 11/16/8 15/25/17 13/21/13 +f 16/26/18 12/18/10 14/23/15 +f 9/27/19 17/28/20 11/16/8 +f 18/29/21 10/30/22 12/18/10 +f 19/31/23 23/32/24 17/28/20 +f 24/33/25 20/34/26 18/29/21 +f 17/28/20 25/35/27 15/25/17 +f 26/36/28 18/29/21 16/26/18 +f 29/37/29 25/35/27 23/32/24 +f 30/38/30 26/36/28 28/39/31 +f 21/40/32 29/37/29 23/32/24 +f 30/38/30 22/41/33 24/33/25 +f 31/42/34 35/43/35 29/37/29 +f 36/44/36 32/45/37 30/38/30 +f 35/43/35 27/46/38 29/37/29 +f 36/44/36 28/39/31 38/47/39 +f 41/48/40 37/49/41 35/43/35 +f 42/50/42 38/47/39 40/51/43 +f 43/52/44 35/43/35 33/53/45 +f 44/54/46 36/44/36 42/50/42 +f 45/55/47 41/48/40 43/52/44 +f 46/56/48 42/50/42 48/57/49 +f 47/58/50 39/59/51 41/48/40 +f 48/57/49 40/51/43 50/60/52 +f 53/17/9 49/61/53 47/58/50 +f 54/20/12 50/60/52 52/24/16 +f 55/15/7 47/58/50 45/55/47 +f 56/19/11 48/57/49 54/20/12 +f 45/55/47 57/62/54 55/15/7 +f 46/56/48 58/63/55 60/64/56 +f 43/52/44 59/65/57 45/55/47 +f 44/54/46 60/64/56 62/66/58 +f 33/53/45 61/67/59 43/52/44 +f 34/68/60 62/66/58 64/69/61 +f 31/42/34 63/70/62 33/53/45 +f 32/45/37 64/69/61 66/71/63 +f 31/42/34 67/72/64 65/73/65 +f 68/74/66 32/45/37 66/71/63 +f 21/40/32 71/75/67 67/72/64 +f 72/76/68 22/41/33 68/74/66 +f 19/31/23 73/77/69 71/75/67 +f 74/78/70 20/34/26 72/76/68 +f 9/27/19 57/62/54 73/77/69 +f 58/63/55 10/30/22 74/78/70 +f 69/79/71 73/77/69 57/62/54 +f 58/63/55 74/78/70 70/80/72 +f 71/75/67 73/77/69 69/79/71 +f 70/80/72 74/78/70 72/76/68 +f 69/79/71 67/72/64 71/75/67 +f 72/76/68 68/74/66 70/80/72 +f 69/79/71 65/73/65 67/72/64 +f 68/74/66 66/71/63 70/80/72 +f 69/79/71 63/70/62 65/73/65 +f 66/71/63 64/69/61 70/80/72 +f 69/79/71 61/67/59 63/70/62 +f 64/69/61 62/66/58 70/80/72 +f 69/79/71 59/65/57 61/67/59 +f 62/66/58 60/64/56 70/80/72 +f 69/79/71 57/62/54 59/65/57 +f 60/64/56 58/63/55 70/80/72 +f 182/81/73 99/82/74 97/83/75 +f 183/84/76 99/82/74 184/85/77 +f 180/86/78 97/83/75 95/87/79 +f 181/88/80 98/89/81 183/84/76 +f 93/90/82 180/86/78 95/87/79 +f 181/88/80 94/91/83 96/92/84 +f 91/93/85 178/94/86 93/90/82 +f 179/95/87 92/96/88 94/91/83 +f 89/97/89 176/98/90 91/93/85 +f 177/99/91 90/100/92 92/96/88 +f 87/101/93 154/102/94 172/103/95 +f 155/104/96 88/105/97 173/106/98 +f 102/107/99 154/102/94 100/108/100 +f 103/109/101 155/104/96 157/110/102 +f 102/107/99 158/111/103 156/112/104 +f 159/113/105 103/109/101 157/110/102 +f 106/114/106 158/111/103 104/115/107 +f 107/116/108 159/113/105 161/117/109 +f 108/118/110 160/119/111 106/114/106 +f 109/120/112 161/117/109 163/121/113 +f 110/122/114 162/123/115 108/118/110 +f 111/124/116 163/121/113 165/125/117 +f 110/122/114 166/126/118 164/127/119 +f 167/128/120 111/124/116 165/125/117 +f 114/129/121 166/126/118 112/130/122 +f 115/131/123 167/128/120 169/132/124 +f 116/133/125 168/134/126 114/129/121 +f 117/135/127 169/132/124 171/136/128 +f 75/137/129 170/138/130 116/133/125 +f 75/137/129 171/136/128 76/139/131 +f 136/140/132 170/138/130 118/141/133 +f 137/142/134 171/136/128 169/132/124 +f 136/140/132 166/126/118 168/134/126 +f 167/128/120 137/142/134 169/132/124 +f 164/127/119 187/143/135 134/144/136 +f 165/125/117 188/145/137 167/128/120 +f 162/123/115 134/144/136 132/146/138 +f 163/121/113 135/147/139 165/125/117 +f 160/119/111 132/146/138 130/148/140 +f 161/117/109 133/149/141 163/121/113 +f 158/111/103 130/148/140 128/150/142 +f 159/113/105 131/151/143 161/117/109 +f 156/112/104 128/150/142 126/152/144 +f 157/110/102 129/153/145 159/113/105 +f 154/102/94 126/152/144 124/154/146 +f 155/104/96 127/155/147 157/110/102 +f 172/103/95 124/154/146 122/156/148 +f 173/106/98 125/157/149 155/104/96 +f 122/156/148 185/158/150 172/103/95 +f 185/158/150 123/159/151 173/106/98 +f 170/138/130 120/160/152 118/141/133 +f 171/136/128 121/161/153 76/139/131 +f 120/160/152 186/162/154 191/163/155 +f 186/162/154 121/161/153 192/164/156 +f 189/165/157 186/162/154 185/158/150 +f 190/166/158 186/162/154 192/164/156 +f 143/167/159 184/85/77 182/81/73 +f 184/85/77 144/168/160 183/84/76 +f 141/169/161 182/81/73 180/86/78 +f 183/84/76 142/170/162 181/88/80 +f 141/169/161 178/94/86 139/171/163 +f 142/170/162 179/95/87 181/88/80 +f 174/172/164 193/173/165 176/98/90 +f 194/174/166 175/175/167 177/99/91 +f 139/171/163 176/98/90 193/173/165 +f 177/99/91 140/176/168 194/174/166 +f 198/177/169 195/178/170 152/179/171 +f 198/177/169 196/180/172 197/181/173 +f 195/178/170 77/182/174 193/173/165 +f 196/180/172 77/182/174 197/181/173 +f 139/171/163 77/182/174 138/183/175 +f 140/176/168 77/182/174 194/174/166 +f 150/184/176 199/185/177 152/179/171 +f 200/186/178 151/187/179 153/188/180 +f 148/189/181 201/190/182 150/184/176 +f 202/191/183 149/192/184 151/187/179 +f 205/193/185 148/189/181 147/194/186 +f 206/195/187 149/192/184 204/196/188 +f 79/197/189 147/194/186 146/198/190 +f 79/197/189 147/194/186 206/195/187 +f 152/179/171 78/199/191 198/177/169 +f 153/188/180 78/199/191 200/186/178 +f 199/185/177 216/200/192 78/199/191 +f 200/186/178 216/200/192 215/201/193 +f 79/197/189 208/202/194 205/193/185 +f 209/203/195 79/197/189 206/195/187 +f 205/193/185 210/204/196 203/205/197 +f 211/206/198 206/195/187 204/196/188 +f 210/204/196 201/190/182 203/205/197 +f 211/206/198 202/191/183 213/207/199 +f 201/190/182 214/208/200 199/185/177 +f 215/201/193 202/191/183 200/186/178 +f 212/209/201 208/202/194 207/210/202 +f 213/207/199 209/203/195 211/206/198 +f 207/210/202 214/208/200 212/209/201 +f 215/201/193 207/210/202 213/207/199 +f 147/194/186 172/103/95 185/158/150 +f 173/106/98 147/194/186 185/158/150 +f 148/189/181 219/211/203 172/103/95 +f 220/212/204 149/192/184 173/106/98 +f 152/179/171 219/211/203 150/184/176 +f 153/188/180 220/212/204 222/213/205 +f 195/178/170 221/214/206 152/179/171 +f 196/180/172 222/213/205 175/175/167 +f 217/215/207 174/172/164 89/97/89 +f 218/216/208 175/175/167 222/213/205 +f 223/217/209 221/214/206 217/215/207 +f 224/218/210 222/213/205 220/212/204 +f 87/101/93 219/211/203 223/217/209 +f 220/212/204 88/105/97 224/218/210 +f 138/183/175 230/219/211 139/171/163 +f 138/183/175 231/220/212 80/221/213 +f 141/169/161 230/219/211 228/222/214 +f 231/220/212 142/170/162 229/223/215 +f 143/167/159 228/222/214 226/224/216 +f 229/223/215 144/168/160 227/225/217 +f 145/226/218 226/224/216 225/227/219 +f 227/225/217 145/226/218 225/227/219 +f 226/224/216 239/228/220 225/227/219 +f 227/225/217 239/228/220 238/229/221 +f 226/224/216 235/230/222 237/231/223 +f 236/232/224 227/225/217 238/229/221 +f 228/222/214 233/233/225 235/230/222 +f 234/234/226 229/223/215 236/232/224 +f 80/221/213 233/233/225 230/219/211 +f 80/221/213 234/234/226 232/235/227 +f 232/235/227 237/231/223 233/233/225 +f 238/229/221 232/235/227 234/234/226 +f 233/233/225 237/231/223 235/230/222 +f 236/232/224 238/229/221 234/234/226 +f 191/163/155 242/236/228 240/237/229 +f 243/238/230 192/164/156 241/239/231 +f 120/160/152 240/237/229 262/240/232 +f 241/239/231 121/161/153 263/241/233 +f 120/160/152 264/242/234 118/141/133 +f 121/161/153 265/243/235 263/241/233 +f 122/156/148 242/236/228 189/165/157 +f 123/159/151 243/238/230 261/244/236 +f 122/156/148 258/245/237 260/246/238 +f 259/247/239 123/159/151 261/244/236 +f 124/154/146 256/248/240 258/245/237 +f 257/249/241 125/157/149 259/247/239 +f 126/152/144 254/250/242 256/248/240 +f 255/251/243 127/155/147 257/249/241 +f 128/150/142 252/252/244 254/250/242 +f 253/253/245 129/153/145 255/251/243 +f 132/146/138 252/252/244 130/148/140 +f 133/149/141 253/253/245 251/254/246 +f 134/144/136 250/255/247 132/146/138 +f 135/147/139 251/254/246 249/256/248 +f 134/144/136 244/257/249 248/258/250 +f 245/259/251 135/147/139 249/256/248 +f 187/143/135 246/260/252 244/257/249 +f 247/261/253 188/145/137 245/259/251 +f 136/140/132 264/242/234 246/260/252 +f 265/243/235 137/142/134 247/261/253 +f 264/242/234 284/262/254 246/260/252 +f 265/243/235 285/263/255 267/264/256 +f 244/257/249 284/262/254 286/265/257 +f 285/263/255 245/259/251 287/266/258 +f 244/257/249 282/267/259 248/258/250 +f 245/259/251 283/268/260 287/266/258 +f 248/258/250 280/269/261 250/255/247 +f 249/256/248 281/270/262 283/268/260 +f 252/252/244 280/269/261 278/271/263 +f 281/270/262 253/253/245 279/272/264 +f 252/252/244 276/273/265 254/250/242 +f 253/253/245 277/274/266 279/272/264 +f 256/248/240 276/273/265 274/275/267 +f 277/274/266 257/249/241 275/276/268 +f 256/248/240 272/277/269 258/245/237 +f 257/249/241 273/278/270 275/276/268 +f 258/245/237 270/279/271 260/246/238 +f 259/247/239 271/280/272 273/278/270 +f 242/236/228 270/279/271 288/281/273 +f 271/280/272 243/238/230 289/282/274 +f 264/242/234 268/283/275 266/284/276 +f 269/285/277 265/243/235 267/264/256 +f 262/240/232 290/286/278 268/283/275 +f 291/287/279 263/241/233 269/285/277 +f 240/237/229 288/281/273 290/286/278 +f 289/282/274 241/239/231 291/287/279 +f 75/137/129 292/288/280 81/289/281 +f 293/290/282 75/137/129 81/289/281 +f 116/133/125 294/291/283 292/288/280 +f 295/292/284 117/135/127 293/290/282 +f 112/130/122 294/291/283 114/129/121 +f 113/293/285 295/292/284 297/294/286 +f 110/122/114 296/295/287 112/130/122 +f 111/124/116 297/294/286 299/296/288 +f 108/118/110 298/297/289 110/122/114 +f 109/120/112 299/296/288 301/298/290 +f 108/118/110 302/299/291 300/300/292 +f 303/301/293 109/120/112 301/298/290 +f 104/115/107 302/299/291 106/114/106 +f 105/302/294 303/301/293 305/303/295 +f 104/115/107 306/304/296 304/305/297 +f 307/306/298 105/302/294 305/303/295 +f 102/107/99 308/307/299 306/304/296 +f 309/308/300 103/109/101 307/306/298 +f 317/309/301 346/310/302 316/311/303 +f 317/312/301 347/313/304 337/314/305 +f 316/311/303 344/315/306 315/316/307 +f 316/317/303 345/318/308 347/313/304 +f 315/316/307 348/319/309 314/320/310 +f 315/321/307 349/322/311 345/318/308 +f 97/83/75 314/320/310 348/319/309 +f 314/320/310 98/89/81 349/322/311 +f 95/87/79 348/319/309 342/323/312 +f 349/322/311 96/92/84 343/324/313 +f 93/90/82 342/323/312 338/325/314 +f 343/324/313 94/91/83 339/326/315 +f 91/93/85 338/325/314 340/327/316 +f 339/326/315 92/96/88 341/328/317 +f 338/325/314 346/310/302 340/327/316 +f 347/313/304 339/326/315 341/328/317 +f 342/323/312 344/315/306 338/325/314 +f 343/324/313 345/318/308 349/322/311 +f 340/327/316 336/329/318 334/330/319 +f 341/328/317 337/314/305 347/313/304 +f 89/97/89 340/327/316 334/330/319 +f 341/328/317 90/100/92 335/331/320 +f 350/332/321 223/217/209 217/215/207 +f 351/333/322 224/218/210 353/334/323 +f 334/330/319 217/215/207 89/97/89 +f 335/331/320 218/216/208 351/333/322 +f 223/217/209 354/335/324 87/101/93 +f 224/218/210 355/336/325 353/334/323 +f 354/335/324 100/108/100 87/101/93 +f 355/336/325 101/337/326 309/308/300 +f 332/338/327 312/339/328 85/340/329 +f 333/341/330 312/342/328 361/343/331 +f 360/344/332 86/345/333 312/339/328 +f 361/343/331 86/346/333 359/347/334 +f 86/345/333 356/348/335 313/349/336 +f 357/350/337 86/346/333 313/351/336 +f 313/349/336 336/329/318 317/309/301 +f 337/314/305 313/351/336 317/312/301 +f 336/329/318 350/332/321 334/330/319 +f 337/314/305 351/333/322 357/350/337 +f 304/305/297 326/352/338 318/353/339 +f 327/354/340 305/303/295 319/355/341 +f 324/356/342 85/340/329 84/357/343 +f 325/358/344 85/359/329 333/341/330 +f 366/360/345 311/361/346 310/362/347 +f 367/363/348 311/364/346 365/365/349 +f 311/361/346 362/366/350 83/367/351 +f 363/368/352 311/364/346 83/369/351 +f 83/367/351 324/356/342 84/357/343 +f 325/358/344 83/369/351 84/370/343 +f 300/371/292 370/372/353 372/373/354 +f 371/374/355 301/375/290 373/376/356 +f 372/373/354 376/377/357 374/378/358 +f 377/379/359 373/376/356 375/380/360 +f 374/378/358 378/381/361 380/382/362 +f 379/383/363 375/380/360 381/384/364 +f 380/382/362 384/385/365 382/386/366 +f 385/387/367 381/384/364 383/388/368 +f 386/389/369 384/385/365 322/390/370 +f 387/391/371 385/387/367 383/388/368 +f 324/356/342 382/386/366 386/389/369 +f 383/388/368 325/358/344 387/391/371 +f 362/366/350 380/382/362 382/386/366 +f 381/384/364 363/368/352 383/388/368 +f 364/392/372 374/378/358 380/382/362 +f 375/380/360 365/365/349 381/384/364 +f 366/360/345 372/373/354 374/378/358 +f 373/376/356 367/363/348 375/380/360 +f 300/371/292 368/393/373 298/394/289 +f 301/375/290 369/395/374 373/376/356 +f 368/393/373 310/362/347 82/396/375 +f 369/395/374 310/397/347 367/363/348 +f 292/398/280 296/399/287 298/394/289 +f 297/400/286 293/401/282 299/402/288 +f 292/398/280 368/393/373 82/396/375 +f 369/395/374 293/401/282 82/403/375 +f 81/404/281 292/398/280 82/396/375 +f 82/403/375 293/401/282 81/405/281 +f 304/305/297 370/372/353 302/299/291 +f 305/303/295 371/374/355 319/355/341 +f 318/353/339 376/377/357 370/372/353 +f 377/379/359 319/355/341 371/374/355 +f 320/406/376 378/381/361 376/377/357 +f 379/383/363 321/407/377 377/379/359 +f 384/385/365 390/408/378 322/390/370 +f 385/387/367 391/409/379 379/383/363 +f 358/410/380 392/411/381 356/348/335 +f 359/347/334 393/412/382 395/413/383 +f 392/411/381 328/414/384 326/352/338 +f 393/412/382 329/415/385 395/413/383 +f 306/304/296 392/411/381 326/352/338 +f 393/412/382 307/306/298 327/354/340 +f 308/307/299 350/332/321 392/411/381 +f 351/333/322 309/308/300 393/412/382 +f 350/332/321 356/348/335 392/411/381 +f 393/412/382 357/350/337 351/333/322 +f 308/307/299 354/335/324 352/416/386 +f 353/334/323 355/336/325 309/308/300 +f 330/417/387 386/389/369 322/390/370 +f 331/418/388 387/391/371 389/419/389 +f 386/389/369 332/338/327 324/356/342 +f 387/391/371 333/341/330 389/419/389 +f 394/420/390 330/417/387 328/414/384 +f 395/413/383 331/418/388 389/419/389 +f 360/344/332 394/420/390 358/410/380 +f 361/343/331 395/413/383 389/419/389 +f 332/338/327 388/421/391 360/344/332 +f 361/343/331 389/419/389 333/341/330 +f 396/422/392 410/423/393 408/424/394 +f 397/425/395 411/426/396 423/427/397 +f 408/424/394 412/428/398 406/429/399 +f 413/430/400 409/431/401 407/432/402 +f 412/428/398 404/433/403 406/429/399 +f 413/430/400 405/434/404 415/435/405 +f 414/436/406 402/437/407 404/433/403 +f 415/435/405 403/438/408 417/439/409 +f 416/440/410 400/441/411 402/437/407 +f 417/439/409 401/442/412 419/443/413 +f 400/441/411 420/444/414 398/445/415 +f 421/446/416 401/442/412 399/447/417 +f 418/448/418 426/449/419 420/444/414 +f 427/450/420 419/443/413 421/446/416 +f 416/440/410 428/451/421 418/448/418 +f 429/452/422 417/439/409 419/443/413 +f 432/453/423 416/440/410 414/436/406 +f 433/454/424 417/439/409 431/455/425 +f 434/456/426 414/436/406 412/428/398 +f 435/457/427 415/435/405 433/454/424 +f 436/458/428 412/428/398 410/423/393 +f 437/459/429 413/430/400 435/457/427 +f 410/423/393 424/460/430 436/458/428 +f 425/461/431 411/426/396 437/459/429 +f 328/414/384 450/462/432 326/352/338 +f 329/415/385 451/463/433 453/464/434 +f 398/445/415 452/465/435 328/466/384 +f 399/447/417 453/467/434 421/446/416 +f 318/353/339 450/462/432 320/406/376 +f 451/463/433 319/355/341 321/407/377 +f 390/468/378 422/469/436 396/422/392 +f 423/427/397 391/470/379 397/425/395 +f 420/444/414 448/471/437 452/465/435 +f 449/472/438 421/446/416 453/467/434 +f 454/473/439 448/471/437 446/474/440 +f 455/475/441 449/472/438 453/467/434 +f 442/476/442 446/474/440 444/477/443 +f 447/478/444 443/479/445 445/480/446 +f 456/481/447 442/476/442 440/482/448 +f 457/483/449 443/479/445 455/475/441 +f 456/481/447 458/484/450 438/485/451 +f 457/483/449 459/486/452 441/487/453 +f 438/485/451 424/460/430 422/469/436 +f 439/488/454 425/461/431 459/486/452 +f 320/406/376 438/489/451 390/408/378 +f 439/490/454 321/407/377 391/409/379 +f 450/462/432 456/491/447 320/406/376 +f 451/463/433 457/492/449 455/493/441 +f 450/462/432 452/494/435 454/495/439 +f 455/493/441 453/464/434 451/463/433 +f 424/460/430 460/496/455 484/497/456 +f 461/498/457 425/461/431 485/499/458 +f 440/482/448 460/496/455 458/484/450 +f 441/487/453 461/498/457 471/500/459 +f 440/482/448 468/501/460 470/502/461 +f 469/503/462 441/487/453 471/500/459 +f 444/477/443 468/501/460 442/476/442 +f 445/480/446 469/503/462 467/504/463 +f 446/474/440 466/505/464 444/477/443 +f 447/478/444 467/504/463 465/506/465 +f 446/474/440 462/507/466 464/508/467 +f 463/509/468 447/478/444 465/506/465 +f 448/471/437 482/510/469 462/507/466 +f 483/511/470 449/472/438 463/509/468 +f 436/458/428 484/497/456 472/512/471 +f 485/499/458 437/459/429 473/513/472 +f 434/456/426 472/512/471 474/514/473 +f 473/513/472 435/457/427 475/515/474 +f 432/453/423 474/514/473 476/516/475 +f 475/515/474 433/454/424 477/517/476 +f 432/453/423 478/518/477 430/519/478 +f 433/454/424 479/520/479 477/517/476 +f 430/519/478 480/521/480 428/451/421 +f 431/455/425 481/522/481 479/520/479 +f 428/451/421 482/510/469 426/449/419 +f 429/452/422 483/511/470 481/522/481 +f 464/508/467 486/523/482 466/505/464 +f 465/506/465 487/524/483 489/525/484 +f 488/526/485 492/527/486 486/523/482 +f 489/525/484 493/528/487 491/529/488 +f 492/527/486 496/530/489 494/531/490 +f 497/532/491 493/528/487 495/533/492 +f 496/530/489 500/534/493 494/531/490 +f 497/532/491 501/535/494 499/536/495 +f 472/512/471 494/531/490 500/534/493 +f 495/533/492 473/513/472 501/535/494 +f 492/527/486 484/497/456 460/496/455 +f 493/528/487 485/499/458 495/533/492 +f 470/502/461 492/527/486 460/496/455 +f 471/500/459 493/528/487 487/524/483 +f 466/505/464 470/502/461 468/501/460 +f 471/500/459 467/504/463 469/503/462 +f 482/510/469 464/508/467 462/507/466 +f 483/511/470 465/506/465 489/525/484 +f 480/521/480 488/526/485 482/510/469 +f 489/525/484 481/522/481 483/511/470 +f 496/530/489 480/521/480 478/518/477 +f 497/532/491 481/522/481 491/529/488 +f 498/537/496 478/518/477 476/516/475 +f 499/536/495 479/520/479 497/532/491 +f 474/514/473 498/537/496 476/516/475 +f 499/536/495 475/515/474 477/517/476 +f 472/512/471 500/534/493 474/514/473 +f 475/515/474 501/535/494 473/513/472 +f 400/441/411 512/538/497 510/539/498 +f 513/540/499 401/442/412 511/541/500 +f 402/437/407 510/539/498 508/542/501 +f 511/541/500 403/438/408 509/543/502 +f 402/437/407 506/544/503 404/433/403 +f 403/438/408 507/545/504 509/543/502 +f 404/433/403 504/546/505 406/547/399 +f 405/434/404 505/548/506 507/545/504 +f 406/547/399 502/549/507 408/550/394 +f 407/551/402 503/552/508 505/548/506 +f 408/550/394 514/553/509 396/554/392 +f 409/555/401 515/556/510 503/552/508 +f 510/539/498 514/553/509 502/549/507 +f 511/541/500 515/556/510 513/540/499 +f 502/549/507 508/542/501 510/539/498 +f 509/543/502 503/552/508 511/541/500 +f 504/546/505 506/544/503 508/542/501 +f 509/543/502 507/545/504 505/548/506 +f 390/408/378 514/557/509 322/390/370 +f 391/558/379 515/556/510 397/559/395 +f 322/560/370 512/538/497 330/561/387 +f 513/540/499 323/562/511 331/563/388 +f 328/466/384 512/538/497 398/445/415 +f 513/540/499 329/564/385 399/447/417 +f 55/15/7 9/27/19 11/16/8 +f 12/18/10 10/30/22 56/19/11 +f 53/17/9 11/16/8 13/21/13 +f 14/23/15 12/18/10 54/20/12 +f 11/16/8 17/28/20 15/25/17 +f 16/26/18 18/29/21 12/18/10 +f 9/27/19 19/31/23 17/28/20 +f 18/29/21 20/34/26 10/30/22 +f 19/31/23 21/40/32 23/32/24 +f 24/33/25 22/41/33 20/34/26 +f 17/28/20 23/32/24 25/35/27 +f 26/36/28 24/33/25 18/29/21 +f 29/37/29 27/46/38 25/35/27 +f 30/38/30 24/33/25 26/36/28 +f 21/40/32 31/42/34 29/37/29 +f 30/38/30 32/45/37 22/41/33 +f 31/42/34 33/53/45 35/43/35 +f 36/44/36 34/68/60 32/45/37 +f 35/43/35 37/49/41 27/46/38 +f 36/44/36 30/38/30 28/39/31 +f 41/48/40 39/59/51 37/49/41 +f 42/50/42 36/44/36 38/47/39 +f 43/52/44 41/48/40 35/43/35 +f 44/54/46 34/68/60 36/44/36 +f 45/55/47 47/58/50 41/48/40 +f 46/56/48 44/54/46 42/50/42 +f 47/58/50 49/61/53 39/59/51 +f 48/57/49 42/50/42 40/51/43 +f 53/17/9 51/22/14 49/61/53 +f 54/20/12 48/57/49 50/60/52 +f 55/15/7 53/17/9 47/58/50 +f 56/19/11 46/56/48 48/57/49 +f 45/55/47 59/65/57 57/62/54 +f 46/56/48 56/19/11 58/63/55 +f 43/52/44 61/67/59 59/65/57 +f 44/54/46 46/56/48 60/64/56 +f 33/53/45 63/70/62 61/67/59 +f 34/68/60 44/54/46 62/66/58 +f 31/42/34 65/73/65 63/70/62 +f 32/45/37 34/68/60 64/69/61 +f 31/42/34 21/40/32 67/72/64 +f 68/74/66 22/41/33 32/45/37 +f 21/40/32 19/31/23 71/75/67 +f 72/76/68 20/34/26 22/41/33 +f 19/31/23 9/27/19 73/77/69 +f 74/78/70 10/30/22 20/34/26 +f 9/27/19 55/15/7 57/62/54 +f 58/63/55 56/19/11 10/30/22 +f 182/81/73 184/85/77 99/82/74 +f 183/84/76 98/89/81 99/82/74 +f 180/86/78 182/81/73 97/83/75 +f 181/88/80 96/92/84 98/89/81 +f 93/90/82 178/94/86 180/86/78 +f 181/88/80 179/95/87 94/91/83 +f 91/93/85 176/98/90 178/94/86 +f 179/95/87 177/99/91 92/96/88 +f 89/97/89 174/172/164 176/98/90 +f 177/99/91 175/175/167 90/100/92 +f 87/101/93 100/108/100 154/102/94 +f 155/104/96 101/337/326 88/105/97 +f 102/107/99 156/112/104 154/102/94 +f 103/109/101 101/337/326 155/104/96 +f 102/107/99 104/115/107 158/111/103 +f 159/113/105 105/302/294 103/109/101 +f 106/114/106 160/119/111 158/111/103 +f 107/116/108 105/302/294 159/113/105 +f 108/118/110 162/123/115 160/119/111 +f 109/120/112 107/116/108 161/117/109 +f 110/122/114 164/127/119 162/123/115 +f 111/124/116 109/120/112 163/121/113 +f 110/122/114 112/130/122 166/126/118 +f 167/128/120 113/293/285 111/124/116 +f 114/129/121 168/134/126 166/126/118 +f 115/131/123 113/293/285 167/128/120 +f 116/133/125 170/138/130 168/134/126 +f 117/135/127 115/131/123 169/132/124 +f 75/137/129 76/139/131 170/138/130 +f 75/137/129 117/135/127 171/136/128 +f 136/140/132 168/134/126 170/138/130 +f 137/142/134 119/565/512 171/136/128 +f 136/140/132 187/143/135 166/126/118 +f 167/128/120 188/145/137 137/142/134 +f 164/127/119 166/126/118 187/143/135 +f 165/125/117 135/147/139 188/145/137 +f 162/123/115 164/127/119 134/144/136 +f 163/121/113 133/149/141 135/147/139 +f 160/119/111 162/123/115 132/146/138 +f 161/117/109 131/151/143 133/149/141 +f 158/111/103 160/119/111 130/148/140 +f 159/113/105 129/153/145 131/151/143 +f 156/112/104 158/111/103 128/150/142 +f 157/110/102 127/155/147 129/153/145 +f 154/102/94 156/112/104 126/152/144 +f 155/104/96 125/157/149 127/155/147 +f 172/103/95 154/102/94 124/154/146 +f 173/106/98 123/159/151 125/157/149 +f 122/156/148 189/165/157 185/158/150 +f 185/158/150 190/166/158 123/159/151 +f 170/138/130 76/139/131 120/160/152 +f 171/136/128 119/565/512 121/161/153 +f 120/160/152 76/139/131 186/162/154 +f 186/162/154 76/139/131 121/161/153 +f 189/165/157 191/163/155 186/162/154 +f 190/166/158 185/158/150 186/162/154 +f 143/167/159 145/226/218 184/85/77 +f 184/85/77 145/226/218 144/168/160 +f 141/169/161 143/167/159 182/81/73 +f 183/84/76 144/168/160 142/170/162 +f 141/169/161 180/86/78 178/94/86 +f 142/170/162 140/176/168 179/95/87 +f 174/172/164 195/178/170 193/173/165 +f 194/174/166 196/180/172 175/175/167 +f 139/171/163 178/94/86 176/98/90 +f 177/99/91 179/95/87 140/176/168 +f 198/177/169 197/181/173 195/178/170 +f 198/177/169 153/188/180 196/180/172 +f 195/178/170 197/181/173 77/182/174 +f 196/180/172 194/174/166 77/182/174 +f 139/171/163 193/173/165 77/182/174 +f 140/176/168 138/183/175 77/182/174 +f 150/184/176 201/190/182 199/185/177 +f 200/186/178 202/191/183 151/187/179 +f 148/189/181 203/205/197 201/190/182 +f 202/191/183 204/196/188 149/192/184 +f 205/193/185 203/205/197 148/189/181 +f 206/195/187 147/194/186 149/192/184 +f 79/197/189 205/193/185 147/194/186 +f 79/197/189 146/198/190 147/194/186 +f 152/179/171 199/185/177 78/199/191 +f 153/188/180 198/177/169 78/199/191 +f 199/185/177 214/208/200 216/200/192 +f 200/186/178 78/199/191 216/200/192 +f 79/197/189 207/210/202 208/202/194 +f 209/203/195 207/210/202 79/197/189 +f 205/193/185 208/202/194 210/204/196 +f 211/206/198 209/203/195 206/195/187 +f 210/204/196 212/209/201 201/190/182 +f 211/206/198 204/196/188 202/191/183 +f 201/190/182 212/209/201 214/208/200 +f 215/201/193 213/207/199 202/191/183 +f 212/209/201 210/204/196 208/202/194 +f 213/207/199 207/210/202 209/203/195 +f 207/210/202 216/200/192 214/208/200 +f 215/201/193 216/200/192 207/210/202 +f 147/194/186 148/189/181 172/103/95 +f 173/106/98 149/192/184 147/194/186 +f 148/189/181 150/184/176 219/211/203 +f 220/212/204 151/187/179 149/192/184 +f 152/179/171 221/214/206 219/211/203 +f 153/188/180 151/187/179 220/212/204 +f 195/178/170 174/172/164 221/214/206 +f 196/180/172 153/188/180 222/213/205 +f 217/215/207 221/214/206 174/172/164 +f 218/216/208 90/100/92 175/175/167 +f 223/217/209 219/211/203 221/214/206 +f 224/218/210 218/216/208 222/213/205 +f 87/101/93 172/103/95 219/211/203 +f 220/212/204 173/106/98 88/105/97 +f 138/183/175 80/221/213 230/219/211 +f 138/183/175 140/176/168 231/220/212 +f 141/169/161 139/171/163 230/219/211 +f 231/220/212 140/176/168 142/170/162 +f 143/167/159 141/169/161 228/222/214 +f 229/223/215 142/170/162 144/168/160 +f 145/226/218 143/167/159 226/224/216 +f 227/225/217 144/168/160 145/226/218 +f 226/224/216 237/231/223 239/228/220 +f 227/225/217 225/227/219 239/228/220 +f 226/224/216 228/222/214 235/230/222 +f 236/232/224 229/223/215 227/225/217 +f 228/222/214 230/219/211 233/233/225 +f 234/234/226 231/220/212 229/223/215 +f 80/221/213 232/235/227 233/233/225 +f 80/221/213 231/220/212 234/234/226 +f 232/235/227 239/228/220 237/231/223 +f 238/229/221 239/228/220 232/235/227 +f 191/163/155 189/165/157 242/236/228 +f 243/238/230 190/166/158 192/164/156 +f 120/160/152 191/163/155 240/237/229 +f 241/239/231 192/164/156 121/161/153 +f 120/160/152 262/240/232 264/242/234 +f 121/161/153 119/565/512 265/243/235 +f 122/156/148 260/246/238 242/236/228 +f 123/159/151 190/166/158 243/238/230 +f 122/156/148 124/154/146 258/245/237 +f 259/247/239 125/157/149 123/159/151 +f 124/154/146 126/152/144 256/248/240 +f 257/249/241 127/155/147 125/157/149 +f 126/152/144 128/150/142 254/250/242 +f 255/251/243 129/153/145 127/155/147 +f 128/150/142 130/148/140 252/252/244 +f 253/253/245 131/151/143 129/153/145 +f 132/146/138 250/255/247 252/252/244 +f 133/149/141 131/151/143 253/253/245 +f 134/144/136 248/258/250 250/255/247 +f 135/147/139 133/149/141 251/254/246 +f 134/144/136 187/143/135 244/257/249 +f 245/259/251 188/145/137 135/147/139 +f 187/143/135 136/140/132 246/260/252 +f 247/261/253 137/142/134 188/145/137 +f 136/140/132 118/141/133 264/242/234 +f 265/243/235 119/565/512 137/142/134 +f 264/242/234 266/284/276 284/262/254 +f 265/243/235 247/261/253 285/263/255 +f 244/257/249 246/260/252 284/262/254 +f 285/263/255 247/261/253 245/259/251 +f 244/257/249 286/265/257 282/267/259 +f 245/259/251 249/256/248 283/268/260 +f 248/258/250 282/267/259 280/269/261 +f 249/256/248 251/254/246 281/270/262 +f 252/252/244 250/255/247 280/269/261 +f 281/270/262 251/254/246 253/253/245 +f 252/252/244 278/271/263 276/273/265 +f 253/253/245 255/251/243 277/274/266 +f 256/248/240 254/250/242 276/273/265 +f 277/274/266 255/251/243 257/249/241 +f 256/248/240 274/275/267 272/277/269 +f 257/249/241 259/247/239 273/278/270 +f 258/245/237 272/277/269 270/279/271 +f 259/247/239 261/244/236 271/280/272 +f 242/236/228 260/246/238 270/279/271 +f 271/280/272 261/244/236 243/238/230 +f 264/242/234 262/240/232 268/283/275 +f 269/285/277 263/241/233 265/243/235 +f 262/240/232 240/237/229 290/286/278 +f 291/287/279 241/239/231 263/241/233 +f 240/237/229 242/236/228 288/281/273 +f 289/282/274 243/238/230 241/239/231 +f 75/137/129 116/133/125 292/288/280 +f 293/290/282 117/135/127 75/137/129 +f 116/133/125 114/129/121 294/291/283 +f 295/292/284 115/131/123 117/135/127 +f 112/130/122 296/295/287 294/291/283 +f 113/293/285 115/131/123 295/292/284 +f 110/122/114 298/297/289 296/295/287 +f 111/124/116 113/293/285 297/294/286 +f 108/118/110 300/300/292 298/297/289 +f 109/120/112 111/124/116 299/296/288 +f 108/118/110 106/114/106 302/299/291 +f 303/301/293 107/116/108 109/120/112 +f 104/115/107 304/305/297 302/299/291 +f 105/302/294 107/116/108 303/301/293 +f 104/115/107 102/107/99 306/304/296 +f 307/306/298 103/109/101 105/302/294 +f 102/107/99 100/108/100 308/307/299 +f 309/308/300 101/337/326 103/109/101 +f 317/309/301 336/329/318 346/310/302 +f 317/312/301 316/317/303 347/313/304 +f 316/311/303 346/310/302 344/315/306 +f 316/317/303 315/321/307 345/318/308 +f 315/316/307 344/315/306 348/319/309 +f 315/321/307 314/320/310 349/322/311 +f 97/83/75 99/82/74 314/320/310 +f 314/320/310 99/82/74 98/89/81 +f 95/87/79 97/83/75 348/319/309 +f 349/322/311 98/89/81 96/92/84 +f 93/90/82 95/87/79 342/323/312 +f 343/324/313 96/92/84 94/91/83 +f 91/93/85 93/90/82 338/325/314 +f 339/326/315 94/91/83 92/96/88 +f 338/325/314 344/315/306 346/310/302 +f 347/313/304 345/318/308 339/326/315 +f 342/323/312 348/319/309 344/315/306 +f 343/324/313 339/326/315 345/318/308 +f 340/327/316 346/310/302 336/329/318 +f 341/328/317 335/331/320 337/314/305 +f 89/97/89 91/93/85 340/327/316 +f 341/328/317 92/96/88 90/100/92 +f 350/332/321 352/416/386 223/217/209 +f 351/333/322 218/216/208 224/218/210 +f 334/330/319 350/332/321 217/215/207 +f 335/331/320 90/100/92 218/216/208 +f 223/217/209 352/416/386 354/335/324 +f 224/218/210 88/105/97 355/336/325 +f 354/335/324 308/307/299 100/108/100 +f 355/336/325 88/105/97 101/337/326 +f 332/338/327 360/344/332 312/339/328 +f 333/341/330 85/359/329 312/342/328 +f 360/344/332 358/410/380 86/345/333 +f 361/343/331 312/342/328 86/346/333 +f 86/345/333 358/410/380 356/348/335 +f 357/350/337 359/347/334 86/346/333 +f 313/349/336 356/348/335 336/329/318 +f 337/314/305 357/350/337 313/351/336 +f 336/329/318 356/348/335 350/332/321 +f 337/314/305 335/331/320 351/333/322 +f 304/305/297 306/304/296 326/352/338 +f 327/354/340 307/306/298 305/303/295 +f 324/356/342 332/338/327 85/340/329 +f 325/358/344 84/370/343 85/359/329 +f 366/360/345 364/392/372 311/361/346 +f 367/363/348 310/397/347 311/364/346 +f 311/361/346 364/392/372 362/366/350 +f 363/368/352 365/365/349 311/364/346 +f 83/367/351 362/366/350 324/356/342 +f 325/358/344 363/368/352 83/369/351 +f 300/371/292 302/299/291 370/372/353 +f 371/374/355 303/301/293 301/375/290 +f 372/373/354 370/372/353 376/377/357 +f 377/379/359 371/374/355 373/376/356 +f 374/378/358 376/377/357 378/381/361 +f 379/383/363 377/379/359 375/380/360 +f 380/382/362 378/381/361 384/385/365 +f 385/387/367 379/383/363 381/384/364 +f 386/389/369 382/386/366 384/385/365 +f 387/391/371 323/566/511 385/387/367 +f 324/356/342 362/366/350 382/386/366 +f 383/388/368 363/368/352 325/358/344 +f 362/366/350 364/392/372 380/382/362 +f 381/384/364 365/365/349 363/368/352 +f 364/392/372 366/360/345 374/378/358 +f 375/380/360 367/363/348 365/365/349 +f 366/360/345 368/393/373 372/373/354 +f 373/376/356 369/395/374 367/363/348 +f 300/371/292 372/373/354 368/393/373 +f 301/375/290 299/402/288 369/395/374 +f 368/393/373 366/360/345 310/362/347 +f 369/395/374 82/403/375 310/397/347 +f 292/398/280 294/567/283 296/399/287 +f 297/400/286 295/568/284 293/401/282 +f 292/398/280 298/394/289 368/393/373 +f 369/395/374 299/402/288 293/401/282 +f 304/305/297 318/353/339 370/372/353 +f 305/303/295 303/301/293 371/374/355 +f 318/353/339 320/406/376 376/377/357 +f 377/379/359 321/407/377 319/355/341 +f 320/406/376 390/408/378 378/381/361 +f 379/383/363 391/409/379 321/407/377 +f 384/385/365 378/381/361 390/408/378 +f 385/387/367 323/566/511 391/409/379 +f 358/410/380 394/420/390 392/411/381 +f 359/347/334 357/350/337 393/412/382 +f 392/411/381 394/420/390 328/414/384 +f 393/412/382 327/354/340 329/415/385 +f 306/304/296 308/307/299 392/411/381 +f 393/412/382 309/308/300 307/306/298 +f 308/307/299 352/416/386 350/332/321 +f 351/333/322 353/334/323 309/308/300 +f 330/417/387 388/421/391 386/389/369 +f 331/418/388 323/566/511 387/391/371 +f 386/389/369 388/421/391 332/338/327 +f 387/391/371 325/358/344 333/341/330 +f 394/420/390 388/421/391 330/417/387 +f 395/413/383 329/415/385 331/418/388 +f 360/344/332 388/421/391 394/420/390 +f 361/343/331 359/347/334 395/413/383 +f 396/422/392 422/469/436 410/423/393 +f 397/425/395 409/431/401 411/426/396 +f 408/424/394 410/423/393 412/428/398 +f 413/430/400 411/426/396 409/431/401 +f 412/428/398 414/436/406 404/433/403 +f 413/430/400 407/432/402 405/434/404 +f 414/436/406 416/440/410 402/437/407 +f 415/435/405 405/434/404 403/438/408 +f 416/440/410 418/448/418 400/441/411 +f 417/439/409 403/438/408 401/442/412 +f 400/441/411 418/448/418 420/444/414 +f 421/446/416 419/443/413 401/442/412 +f 418/448/418 428/451/421 426/449/419 +f 427/450/420 429/452/422 419/443/413 +f 416/440/410 430/519/478 428/451/421 +f 429/452/422 431/455/425 417/439/409 +f 432/453/423 430/519/478 416/440/410 +f 433/454/424 415/435/405 417/439/409 +f 434/456/426 432/453/423 414/436/406 +f 435/457/427 413/430/400 415/435/405 +f 436/458/428 434/456/426 412/428/398 +f 437/459/429 411/426/396 413/430/400 +f 410/423/393 422/469/436 424/460/430 +f 425/461/431 423/427/397 411/426/396 +f 328/414/384 452/494/435 450/462/432 +f 329/415/385 327/354/340 451/463/433 +f 398/445/415 420/444/414 452/465/435 +f 399/447/417 329/564/385 453/467/434 +f 318/353/339 326/352/338 450/462/432 +f 451/463/433 327/354/340 319/355/341 +f 390/468/378 438/485/451 422/469/436 +f 423/427/397 439/488/454 391/470/379 +f 420/444/414 426/449/419 448/471/437 +f 449/472/438 427/450/420 421/446/416 +f 454/473/439 452/465/435 448/471/437 +f 455/475/441 447/478/444 449/472/438 +f 442/476/442 454/473/439 446/474/440 +f 447/478/444 455/475/441 443/479/445 +f 456/481/447 454/473/439 442/476/442 +f 457/483/449 441/487/453 443/479/445 +f 456/481/447 440/482/448 458/484/450 +f 457/483/449 439/488/454 459/486/452 +f 438/485/451 458/484/450 424/460/430 +f 439/488/454 423/427/397 425/461/431 +f 320/406/376 456/491/447 438/489/451 +f 439/490/454 457/492/449 321/407/377 +f 450/462/432 454/495/439 456/491/447 +f 451/463/433 321/407/377 457/492/449 +f 424/460/430 458/484/450 460/496/455 +f 461/498/457 459/486/452 425/461/431 +f 440/482/448 470/502/461 460/496/455 +f 441/487/453 459/486/452 461/498/457 +f 440/482/448 442/476/442 468/501/460 +f 469/503/462 443/479/445 441/487/453 +f 444/477/443 466/505/464 468/501/460 +f 445/480/446 443/479/445 469/503/462 +f 446/474/440 464/508/467 466/505/464 +f 447/478/444 445/480/446 467/504/463 +f 446/474/440 448/471/437 462/507/466 +f 463/509/468 449/472/438 447/478/444 +f 448/471/437 426/449/419 482/510/469 +f 483/511/470 427/450/420 449/472/438 +f 436/458/428 424/460/430 484/497/456 +f 485/499/458 425/461/431 437/459/429 +f 434/456/426 436/458/428 472/512/471 +f 473/513/472 437/459/429 435/457/427 +f 432/453/423 434/456/426 474/514/473 +f 475/515/474 435/457/427 433/454/424 +f 432/453/423 476/516/475 478/518/477 +f 433/454/424 431/455/425 479/520/479 +f 430/519/478 478/518/477 480/521/480 +f 431/455/425 429/452/422 481/522/481 +f 428/451/421 480/521/480 482/510/469 +f 429/452/422 427/450/420 483/511/470 +f 464/508/467 488/526/485 486/523/482 +f 465/506/465 467/504/463 487/524/483 +f 488/526/485 490/569/513 492/527/486 +f 489/525/484 487/524/483 493/528/487 +f 492/527/486 490/569/513 496/530/489 +f 497/532/491 491/529/488 493/528/487 +f 496/530/489 498/537/496 500/534/493 +f 497/532/491 495/533/492 501/535/494 +f 472/512/471 484/497/456 494/531/490 +f 495/533/492 485/499/458 473/513/472 +f 492/527/486 494/531/490 484/497/456 +f 493/528/487 461/498/457 485/499/458 +f 470/502/461 486/523/482 492/527/486 +f 471/500/459 461/498/457 493/528/487 +f 466/505/464 486/523/482 470/502/461 +f 471/500/459 487/524/483 467/504/463 +f 482/510/469 488/526/485 464/508/467 +f 483/511/470 463/509/468 465/506/465 +f 480/521/480 490/569/513 488/526/485 +f 489/525/484 491/529/488 481/522/481 +f 496/530/489 490/569/513 480/521/480 +f 497/532/491 479/520/479 481/522/481 +f 498/537/496 496/530/489 478/518/477 +f 499/536/495 477/517/476 479/520/479 +f 474/514/473 500/534/493 498/537/496 +f 499/536/495 501/535/494 475/515/474 +f 400/441/411 398/445/415 512/538/497 +f 513/540/499 399/447/417 401/442/412 +f 402/437/407 400/441/411 510/539/498 +f 511/541/500 401/442/412 403/438/408 +f 402/437/407 508/542/501 506/544/503 +f 403/438/408 405/434/404 507/545/504 +f 404/433/403 506/544/503 504/546/505 +f 405/434/404 407/551/402 505/548/506 +f 406/547/399 504/546/505 502/549/507 +f 407/551/402 409/555/401 503/552/508 +f 408/550/394 502/549/507 514/553/509 +f 409/555/401 397/559/395 515/556/510 +f 510/539/498 512/538/497 514/553/509 +f 511/541/500 503/552/508 515/556/510 +f 502/549/507 504/546/505 508/542/501 +f 509/543/502 505/548/506 503/552/508 +f 390/408/378 396/570/392 514/557/509 +f 391/558/379 323/562/511 515/556/510 +f 322/560/370 514/553/509 512/538/497 +f 513/540/499 515/556/510 323/562/511 +f 328/466/384 330/561/387 512/538/497 +f 513/540/499 331/563/388 329/564/385 diff --git a/examples/src/ray_scene/mod.rs b/examples/src/ray_scene/mod.rs new file mode 100644 index 0000000000..886d0c0183 --- /dev/null +++ b/examples/src/ray_scene/mod.rs @@ -0,0 +1,569 @@ +use bytemuck::{Pod, Zeroable}; +use glam::{Mat4, Quat, Vec3}; +use std::f32::consts::PI; +use std::ops::IndexMut; +use std::{borrow::Cow, future::Future, iter, mem, ops::Range, pin::Pin, task, time::Instant}; +use wgpu::util::DeviceExt; + +// from cube +#[repr(C)] +#[derive(Debug, Clone, Copy, Pod, Zeroable, Default)] +struct Vertex { + pos: [f32; 3], + _p0: [u32; 1], + normal: [f32; 3], + _p1: [u32; 1], + uv: [f32; 2], + _p2: [u32; 2], +} + +#[repr(C)] +#[derive(Clone, Copy, Pod, Zeroable)] +struct Uniforms { + view_inverse: Mat4, + proj_inverse: Mat4, +} + +/// A wrapper for `pop_error_scope` futures that panics if an error occurs. +/// +/// Given a future `inner` of an `Option` for some error type `E`, +/// wait for the future to be ready, and panic if its value is `Some`. +/// +/// This can be done simpler with `FutureExt`, but we don't want to add +/// a dependency just for this small case. +struct ErrorFuture { + inner: F, +} +impl>> Future for ErrorFuture { + type Output = (); + fn poll(self: Pin<&mut Self>, cx: &mut task::Context<'_>) -> task::Poll<()> { + let inner = unsafe { self.map_unchecked_mut(|me| &mut me.inner) }; + inner.poll(cx).map(|error| { + if let Some(e) = error { + panic!("Rendering {}", e); + } + }) + } +} + +#[derive(Debug, Clone, Default)] +struct RawSceneComponents { + vertices: Vec, + indices: Vec, + geometries: Vec<(Range, Material)>, // index range, material + instances: Vec<(Range, Range)>, // vertex range, geometry range +} + +struct SceneComponents { + vertices: wgpu::Buffer, + indices: wgpu::Buffer, + geometries: wgpu::Buffer, + instances: wgpu::Buffer, + bottom_level_acceleration_structures: Vec, +} + +#[repr(C)] +#[derive(Clone, Copy, Pod, Zeroable)] +struct InstanceEntry { + first_vertex: u32, + first_geometry: u32, + last_geometry: u32, + _pad: u32, +} + +#[repr(C)] +#[derive(Clone, Copy, Pod, Zeroable, Default)] +struct GeometryEntry { + first_index: u32, + _p0: [u32; 3], + material: Material, +} + +#[repr(C)] +#[derive(Clone, Copy, Pod, Zeroable, Default, Debug)] +struct Material { + roughness_exponent: f32, + metalness: f32, + specularity: f32, + _p0: [u32; 1], + albedo: [f32; 3], + _p1: [u32; 1], +} + +fn load_model(scene: &mut RawSceneComponents, path: &str) { + let path = env!("CARGO_MANIFEST_DIR").to_string() + "/src" + path; + println!("{}", path); + let mut object = obj::Obj::load(path).unwrap(); + object.load_mtls().unwrap(); + + let data = object.data; + + let start_vertex_index = scene.vertices.len(); + let start_geometry_index = scene.geometries.len(); + + let mut mapping = std::collections::HashMap::<(usize, usize, usize), usize>::new(); + + let mut next_index = 0; + + for object in data.objects { + for group in object.groups { + let start_index_index = scene.indices.len(); + for poly in group.polys { + for end_index in 2..poly.0.len() { + for &index in &[0, end_index - 1, end_index] { + let obj::IndexTuple(position_id, texture_id, normal_id) = poly.0[index]; + let texture_id = texture_id.expect("uvs required"); + let normal_id = normal_id.expect("normals required"); + + let index = *mapping + .entry((position_id, texture_id, normal_id)) + .or_insert(next_index); + if index == next_index { + next_index += 1; + + scene.vertices.push(Vertex { + pos: data.position[position_id], + uv: data.texture[texture_id], + normal: data.normal[normal_id], + ..Default::default() + }) + } + + scene.indices.push(index as u32); + } + } + } + + let mut material: Material = Default::default(); + + if let Some(obj::ObjMaterial::Mtl(mat)) = group.material { + if let Some(kd) = mat.kd { + material.albedo = kd; + } + if let Some(ns) = mat.ns { + material.roughness_exponent = ns; + } + if let Some(ka) = mat.ka { + material.metalness = ka[0]; + } + if let Some(ks) = mat.ks { + material.specularity = ks[0]; + } + } + + scene + .geometries + .push((start_index_index..scene.indices.len(), material)); + } + } + scene.instances.push(( + start_vertex_index..scene.vertices.len(), + start_geometry_index..scene.geometries.len(), + )); + + // dbg!(scene.vertices.len()); + // dbg!(scene.indices.len()); + // dbg!(&scene.geometries); + // dbg!(&scene.instances); +} + +fn upload_scene_components( + device: &wgpu::Device, + queue: &wgpu::Queue, + scene: &RawSceneComponents, +) -> SceneComponents { + let geometry_buffer_content = scene + .geometries + .iter() + .map(|(index_range, material)| GeometryEntry { + first_index: index_range.start as u32, + material: *material, + ..Default::default() + }) + .collect::>(); + + let instance_buffer_content = scene + .instances + .iter() + .map(|geometry| InstanceEntry { + first_vertex: geometry.0.start as u32, + first_geometry: geometry.1.start as u32, + last_geometry: geometry.1.end as u32, + _pad: 1, + }) + .collect::>(); + + let vertices = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { + label: Some("Vertices"), + contents: bytemuck::cast_slice(&scene.vertices), + usage: wgpu::BufferUsages::VERTEX + | wgpu::BufferUsages::STORAGE + | wgpu::BufferUsages::BLAS_INPUT, + }); + let indices = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { + label: Some("Indices"), + contents: bytemuck::cast_slice(&scene.indices), + usage: wgpu::BufferUsages::INDEX + | wgpu::BufferUsages::STORAGE + | wgpu::BufferUsages::BLAS_INPUT, + }); + let geometries = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { + label: Some("Geometries"), + contents: bytemuck::cast_slice(&geometry_buffer_content), + usage: wgpu::BufferUsages::STORAGE, + }); + let instances = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { + label: Some("Instances"), + contents: bytemuck::cast_slice(&instance_buffer_content), + usage: wgpu::BufferUsages::STORAGE, + }); + + let (size_descriptors, bottom_level_acceleration_structures): (Vec<_>, Vec<_>) = scene + .instances + .iter() + .map(|(vertex_range, geometry_range)| { + let size_desc: Vec = (*geometry_range) + .clone() + .map(|i| wgpu::BlasTriangleGeometrySizeDescriptor { + vertex_format: wgpu::VertexFormat::Float32x3, + vertex_count: vertex_range.end as u32 - vertex_range.start as u32, + index_format: Some(wgpu::IndexFormat::Uint32), + index_count: Some( + scene.geometries[i].0.end as u32 - scene.geometries[i].0.start as u32, + ), + flags: wgpu::AccelerationStructureGeometryFlags::OPAQUE, + }) + .collect(); + + let blas = device.create_blas( + &wgpu::CreateBlasDescriptor { + label: None, + flags: wgpu::AccelerationStructureFlags::PREFER_FAST_TRACE, + update_mode: wgpu::AccelerationStructureUpdateMode::Build, + }, + wgpu::BlasGeometrySizeDescriptors::Triangles { + descriptors: size_desc.clone(), + }, + ); + (size_desc, blas) + }) + .unzip(); + + let build_entries: Vec<_> = scene + .instances + .iter() + .zip(size_descriptors.iter()) + .zip(bottom_level_acceleration_structures.iter()) + .map(|(((vertex_range, geometry_range), size_desc), blas)| { + let triangle_geometries: Vec<_> = size_desc + .iter() + .zip(geometry_range.clone()) + .map(|(size, i)| wgpu::BlasTriangleGeometry { + size, + vertex_buffer: &vertices, + first_vertex: vertex_range.start as u32, + vertex_stride: mem::size_of::() as u64, + index_buffer: Some(&indices), + index_buffer_offset: Some(scene.geometries[i].0.start as u64 * 4), + transform_buffer: None, + transform_buffer_offset: None, + }) + .collect(); + + wgpu::BlasBuildEntry { + blas, + geometry: wgpu::BlasGeometries::TriangleGeometries(triangle_geometries), + } + }) + .collect(); + + let mut encoder = + device.create_command_encoder(&wgpu::CommandEncoderDescriptor { label: None }); + + encoder.build_acceleration_structures(build_entries.iter(), iter::empty()); + + queue.submit(Some(encoder.finish())); + + SceneComponents { + vertices, + indices, + geometries, + instances, + bottom_level_acceleration_structures, + } +} + +fn load_scene(device: &wgpu::Device, queue: &wgpu::Queue) -> SceneComponents { + let mut scene = RawSceneComponents::default(); + + load_model(&mut scene, "/skybox/models/teslacyberv3.0.obj"); + load_model(&mut scene, "/ray_scene/cube.obj"); + + upload_scene_components(device, queue, &scene) +} + +struct Example { + uniforms: Uniforms, + uniform_buf: wgpu::Buffer, + tlas_package: wgpu::TlasPackage, + pipeline: wgpu::RenderPipeline, + bind_group: wgpu::BindGroup, + start_inst: Instant, + scene_components: SceneComponents, +} + +impl crate::framework::Example for Example { + fn required_features() -> wgpu::Features { + wgpu::Features::EXPERIMENTAL_RAY_QUERY + | wgpu::Features::EXPERIMENTAL_RAY_TRACING_ACCELERATION_STRUCTURE + } + + fn required_downlevel_capabilities() -> wgpu::DownlevelCapabilities { + wgpu::DownlevelCapabilities::default() + } + fn required_limits() -> wgpu::Limits { + wgpu::Limits::default() + } + + fn init( + config: &wgpu::SurfaceConfiguration, + _adapter: &wgpu::Adapter, + device: &wgpu::Device, + queue: &wgpu::Queue, + ) -> Self { + let side_count = 8; + + let scene_components = load_scene(device, queue); + + let uniforms = { + let view = Mat4::look_at_rh(Vec3::new(0.0, 0.0, 2.5), Vec3::ZERO, Vec3::Y); + let proj = Mat4::perspective_rh( + 59.0_f32.to_radians(), + config.width as f32 / config.height as f32, + 0.001, + 1000.0, + ); + + Uniforms { + view_inverse: view.inverse(), + proj_inverse: proj.inverse(), + } + }; + + let uniform_buf = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { + label: Some("Uniform Buffer"), + contents: bytemuck::cast_slice(&[uniforms]), + usage: wgpu::BufferUsages::UNIFORM | wgpu::BufferUsages::COPY_DST, + }); + + let tlas = device.create_tlas(&wgpu::CreateTlasDescriptor { + label: None, + flags: wgpu::AccelerationStructureFlags::PREFER_FAST_TRACE, + update_mode: wgpu::AccelerationStructureUpdateMode::Build, + max_instances: side_count * side_count, + }); + + let tlas_package = wgpu::TlasPackage::new(tlas); + + let shader = device.create_shader_module(wgpu::ShaderModuleDescriptor { + label: None, + source: wgpu::ShaderSource::Wgsl(Cow::Borrowed(include_str!("shader.wgsl"))), + }); + + let pipeline = device.create_render_pipeline(&wgpu::RenderPipelineDescriptor { + label: None, + layout: None, + vertex: wgpu::VertexState { + module: &shader, + entry_point: Some("vs_main"), + compilation_options: Default::default(), + buffers: &[], + }, + fragment: Some(wgpu::FragmentState { + module: &shader, + entry_point: Some("fs_main"), + compilation_options: Default::default(), + targets: &[Some(config.format.into())], + }), + primitive: wgpu::PrimitiveState { + topology: wgpu::PrimitiveTopology::TriangleList, + ..Default::default() + }, + depth_stencil: None, + multisample: wgpu::MultisampleState::default(), + multiview: None, + cache: None, + }); + + let bind_group_layout = pipeline.get_bind_group_layout(0); + + let bind_group = device.create_bind_group(&wgpu::BindGroupDescriptor { + label: None, + layout: &bind_group_layout, + entries: &[ + wgpu::BindGroupEntry { + binding: 0, + resource: uniform_buf.as_entire_binding(), + }, + wgpu::BindGroupEntry { + binding: 5, + resource: tlas_package.as_binding(), + }, + wgpu::BindGroupEntry { + binding: 1, + resource: scene_components.vertices.as_entire_binding(), + }, + wgpu::BindGroupEntry { + binding: 2, + resource: scene_components.indices.as_entire_binding(), + }, + wgpu::BindGroupEntry { + binding: 3, + resource: scene_components.geometries.as_entire_binding(), + }, + wgpu::BindGroupEntry { + binding: 4, + resource: scene_components.instances.as_entire_binding(), + }, + ], + }); + + let start_inst = Instant::now(); + + Example { + uniforms, + uniform_buf, + tlas_package, + pipeline, + bind_group, + start_inst, + scene_components, + } + } + + fn update(&mut self, _event: winit::event::WindowEvent) {} + + fn resize( + &mut self, + config: &wgpu::SurfaceConfiguration, + _device: &wgpu::Device, + queue: &wgpu::Queue, + ) { + let proj = Mat4::perspective_rh( + 59.0_f32.to_radians(), + config.width as f32 / config.height as f32, + 0.001, + 1000.0, + ); + + self.uniforms.proj_inverse = proj.inverse(); + + queue.write_buffer(&self.uniform_buf, 0, bytemuck::cast_slice(&[self.uniforms])); + } + + fn render(&mut self, view: &wgpu::TextureView, device: &wgpu::Device, queue: &wgpu::Queue) { + device.push_error_scope(wgpu::ErrorFilter::Validation); + + // scene update + { + let dist = 3.5; + + let side_count = 2; + + let anim_time = self.start_inst.elapsed().as_secs_f64() as f32; + + for x in 0..side_count { + for y in 0..side_count { + let instance = self.tlas_package.index_mut(x + y * side_count); + + let blas_index = (x + y) + % self + .scene_components + .bottom_level_acceleration_structures + .len(); + + let x = x as f32 / (side_count - 1) as f32; + let y = y as f32 / (side_count - 1) as f32; + let x = x * 2.0 - 1.0; + let y = y * 2.0 - 1.0; + + let transform = Mat4::from_rotation_translation( + Quat::from_euler( + glam::EulerRot::XYZ, + anim_time * 0.5 * 0.342, + anim_time * 0.5 * 0.254, + anim_time * 0.5 * 0.832 + PI, + ), + Vec3 { + x: x * dist, + y: y * dist, + z: -14.0, + }, + ); + let transform = transform.transpose().to_cols_array()[..12] + .try_into() + .unwrap(); + *instance = Some(wgpu::TlasInstance::new( + &self.scene_components.bottom_level_acceleration_structures[blas_index], + transform, + blas_index as u32, + 0xff, + )); + } + } + } + + let mut encoder = + device.create_command_encoder(&wgpu::CommandEncoderDescriptor { label: None }); + + encoder.build_acceleration_structures(iter::empty(), iter::once(&self.tlas_package)); + + { + let mut rpass = encoder.begin_render_pass(&wgpu::RenderPassDescriptor { + label: None, + color_attachments: &[Some(wgpu::RenderPassColorAttachment { + view, + resolve_target: None, + ops: wgpu::Operations { + load: wgpu::LoadOp::Clear(wgpu::Color::GREEN), + store: wgpu::StoreOp::Store, + }, + })], + depth_stencil_attachment: None, + timestamp_writes: None, + occlusion_query_set: None, + }); + + rpass.set_pipeline(&self.pipeline); + rpass.set_bind_group(0, Some(&self.bind_group), &[]); + rpass.draw(0..3, 0..1); + } + + queue.submit(Some(encoder.finish())); + } +} + +pub fn main() { + crate::framework::run::("ray_scene"); +} + +#[cfg(test)] +#[wgpu_test::gpu_test] +static TEST: crate::framework::ExampleTestParams = crate::framework::ExampleTestParams { + name: "ray_scene", + image_path: "/examples/src/ray_scene/screenshot.png", + width: 1024, + height: 768, + optional_features: wgpu::Features::default(), + base_test_parameters: wgpu_test::TestParameters { + required_features: ::required_features(), + required_limits: ::required_limits(), + force_fxc: false, + skips: vec![], + failures: Vec::new(), + required_downlevel_caps: + ::required_downlevel_capabilities(), + }, + comparisons: &[wgpu_test::ComparisonType::Mean(0.02)], + _phantom: std::marker::PhantomData::, +}; diff --git a/examples/src/ray_scene/screenshot.png b/examples/src/ray_scene/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..d238d489dc359272505d18e621236ea9dab1352f GIT binary patch literal 77656 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 literal 0 HcmV?d00001 diff --git a/examples/src/ray_scene/shader.wgsl b/examples/src/ray_scene/shader.wgsl new file mode 100644 index 0000000000..f6bd2398c8 --- /dev/null +++ b/examples/src/ray_scene/shader.wgsl @@ -0,0 +1,164 @@ +struct VertexOutput { + @builtin(position) position: vec4, + @location(0) tex_coords: vec2, +}; + +@vertex +fn vs_main(@builtin(vertex_index) vertex_index: u32) -> VertexOutput { + var result: VertexOutput; + let x = i32(vertex_index) / 2; + let y = i32(vertex_index) & 1; + let tc = vec2( + f32(x) * 2.0, + f32(y) * 2.0 + ); + result.position = vec4( + tc.x * 2.0 - 1.0, + 1.0 - tc.y * 2.0, + 0.0, 1.0 + ); + result.tex_coords = tc; + return result; +} + +/* +The contents of the RayQuery struct are roughly as follows +let RAY_FLAG_NONE = 0x00u; +let RAY_FLAG_OPAQUE = 0x01u; +let RAY_FLAG_NO_OPAQUE = 0x02u; +let RAY_FLAG_TERMINATE_ON_FIRST_HIT = 0x04u; +let RAY_FLAG_SKIP_CLOSEST_HIT_SHADER = 0x08u; +let RAY_FLAG_CULL_BACK_FACING = 0x10u; +let RAY_FLAG_CULL_FRONT_FACING = 0x20u; +let RAY_FLAG_CULL_OPAQUE = 0x40u; +let RAY_FLAG_CULL_NO_OPAQUE = 0x80u; +let RAY_FLAG_SKIP_TRIANGLES = 0x100u; +let RAY_FLAG_SKIP_AABBS = 0x200u; + +let RAY_QUERY_INTERSECTION_NONE = 0u; +let RAY_QUERY_INTERSECTION_TRIANGLE = 1u; +let RAY_QUERY_INTERSECTION_GENERATED = 2u; +let RAY_QUERY_INTERSECTION_AABB = 4u; + +struct RayDesc { + flags: u32, + cull_mask: u32, + t_min: f32, + t_max: f32, + origin: vec3, + dir: vec3, +} + +struct RayIntersection { + kind: u32, + t: f32, + instance_custom_index: u32, + instance_id: u32, + sbt_record_offset: u32, + geometry_index: u32, + primitive_index: u32, + barycentrics: vec2, + front_face: bool, + object_to_world: mat4x3, + world_to_object: mat4x3, +} +*/ + +struct Uniforms { + view_inv: mat4x4, + proj_inv: mat4x4, +}; + +struct Vertex { + pos: vec3, + normal: vec3, + uv: vec2, +}; + + +struct Instance { + first_vertex: u32, + first_geometry: u32, + last_geometry: u32, + _pad: u32 +}; + +struct Material{ + roughness_exponent: f32, + metalness: f32, + specularity: f32, + albedo: vec3 +} + +struct Geometry { + first_index: u32, + material: Material, +}; + + +@group(0) @binding(0) +var uniforms: Uniforms; + +@group(0) @binding(1) +var vertices: array; + +@group(0) @binding(2) +var indices: array; + +@group(0) @binding(3) +var geometries: array; + +@group(0) @binding(4) +var instances: array; + +@group(0) @binding(5) +var acc_struct: acceleration_structure; + +@fragment +fn fs_main(vertex: VertexOutput) -> @location(0) vec4 { + + var color = vec4(vertex.tex_coords, 0.0, 1.0); + + let d = vertex.tex_coords * 2.0 - 1.0; + + let origin = (uniforms.view_inv * vec4(0.0,0.0,0.0,1.0)).xyz; + let temp = uniforms.proj_inv * vec4(d.x, d.y, 1.0, 1.0); + let direction = (uniforms.view_inv * vec4(normalize(temp.xyz), 0.0)).xyz; + + var rq: ray_query; + rayQueryInitialize(&rq, acc_struct, RayDesc(0u, 0xFFu, 0.1, 200.0, origin, direction)); + rayQueryProceed(&rq); + + let intersection = rayQueryGetCommittedIntersection(&rq); + if (intersection.kind != RAY_QUERY_INTERSECTION_NONE) { + let instance = instances[intersection.instance_custom_index]; + let geometry = geometries[intersection.geometry_index + instance.first_geometry]; + + let index_offset = geometry.first_index; + let vertex_offset = instance.first_vertex; + + let first_index_index = intersection.primitive_index * 3u + index_offset; + + let v_0 = vertices[vertex_offset+indices[first_index_index+0u]]; + let v_1 = vertices[vertex_offset+indices[first_index_index+1u]]; + let v_2 = vertices[vertex_offset+indices[first_index_index+2u]]; + + let bary = vec3(1.0 - intersection.barycentrics.x - intersection.barycentrics.y, intersection.barycentrics); + + let pos = v_0.pos * bary.x + v_1.pos * bary.y + v_2.pos * bary.z; + let normal_raw = v_0.normal * bary.x + v_1.normal * bary.y + v_2.normal * bary.z; + let uv = v_0.uv * bary.x + v_1.uv * bary.y + v_2.uv * bary.z; + + let normal = normalize(normal_raw); + + let material = geometry.material; + + color = vec4(material.albedo, 1.0); + + if(intersection.instance_custom_index == 1u){ + color = vec4(normal, 1.0); + } + } + + return color; +} diff --git a/examples/src/ray_shadows/README.md b/examples/src/ray_shadows/README.md new file mode 100644 index 0000000000..2b751e8e82 --- /dev/null +++ b/examples/src/ray_shadows/README.md @@ -0,0 +1,13 @@ +# ray-shadows + +This example renders a ray traced shadow with hardware acceleration. + +## To Run + +``` +cargo run --bin wgpu-examples ray_shadows +``` + +## Screenshots + +![Shadow example](screenshot.png) diff --git a/examples/src/ray_shadows/mod.rs b/examples/src/ray_shadows/mod.rs new file mode 100644 index 0000000000..adf25cd454 --- /dev/null +++ b/examples/src/ray_shadows/mod.rs @@ -0,0 +1,385 @@ +use std::{borrow::Cow, future::Future, iter, mem, pin::Pin, task, time::Instant}; + +use bytemuck::{Pod, Zeroable}; +use glam::{Mat4, Vec3}; +use wgpu::util::DeviceExt; +use wgpu::{vertex_attr_array, IndexFormat, VertexBufferLayout}; + +// from cube +#[repr(C)] +#[derive(Clone, Copy, Pod, Zeroable)] +struct Vertex { + _pos: [f32; 3], + _normal: [f32; 3], +} + +fn vertex(pos: [f32; 3], normal: [f32; 3]) -> Vertex { + Vertex { + _pos: pos, + _normal: normal, + } +} + +fn create_vertices() -> (Vec, Vec) { + let vertex_data = [ + // base + vertex([-1.0, 0.0, -1.0], [0.0, 1.0, 0.0]), + vertex([-1.0, 0.0, 1.0], [0.0, 1.0, 0.0]), + vertex([1.0, 0.0, -1.0], [0.0, 1.0, 0.0]), + vertex([1.0, 0.0, 1.0], [0.0, 1.0, 0.0]), + //shadow caster + vertex([-(1.0 / 3.0), 0.0, 1.0], [0.0, 0.0, 1.0]), + vertex([-(1.0 / 3.0), 2.0 / 3.0, 1.0], [0.0, 0.0, 1.0]), + vertex([1.0 / 3.0, 0.0, 1.0], [0.0, 0.0, 1.0]), + vertex([1.0 / 3.0, 2.0 / 3.0, 1.0], [0.0, 0.0, 1.0]), + ]; + + let index_data: &[u16] = &[ + 0, 1, 2, 2, 3, 1, //base + 4, 5, 6, 6, 7, 5, + ]; + + (vertex_data.to_vec(), index_data.to_vec()) +} + +#[repr(C)] +#[derive(Clone, Copy, Pod, Zeroable)] +struct Uniforms { + view_inverse: Mat4, + proj_inverse: Mat4, + vertex: Mat4, +} + +/// A wrapper for `pop_error_scope` futures that panics if an error occurs. +/// +/// Given a future `inner` of an `Option` for some error type `E`, +/// wait for the future to be ready, and panic if its value is `Some`. +/// +/// This can be done simpler with `FutureExt`, but we don't want to add +/// a dependency just for this small case. +struct ErrorFuture { + inner: F, +} +impl>> Future for ErrorFuture { + type Output = (); + fn poll(self: Pin<&mut Self>, cx: &mut task::Context<'_>) -> task::Poll<()> { + let inner = unsafe { self.map_unchecked_mut(|me| &mut me.inner) }; + inner.poll(cx).map(|error| { + if let Some(e) = error { + panic!("Rendering {}", e); + } + }) + } +} + +struct Example { + uniforms: Uniforms, + uniform_buf: wgpu::Buffer, + vertex_buf: wgpu::Buffer, + index_buf: wgpu::Buffer, + pipeline: wgpu::RenderPipeline, + bind_group: wgpu::BindGroup, + start_inst: Instant, +} + +const CAM_LOOK_AT: Vec3 = Vec3::new(0.0, 1.0, -1.5); + +fn create_matrix(config: &wgpu::SurfaceConfiguration) -> Uniforms { + let view = Mat4::look_at_rh(CAM_LOOK_AT, Vec3::ZERO, Vec3::Y); + let proj = Mat4::perspective_rh( + 59.0_f32.to_radians(), + config.width as f32 / config.height as f32, + 0.1, + 1000.0, + ); + + Uniforms { + view_inverse: view.inverse(), + proj_inverse: proj.inverse(), + vertex: (proj * view), + } +} + +impl crate::framework::Example for Example { + fn required_features() -> wgpu::Features { + wgpu::Features::EXPERIMENTAL_RAY_QUERY + | wgpu::Features::EXPERIMENTAL_RAY_TRACING_ACCELERATION_STRUCTURE + | wgpu::Features::PUSH_CONSTANTS + } + + fn required_downlevel_capabilities() -> wgpu::DownlevelCapabilities { + wgpu::DownlevelCapabilities::default() + } + fn required_limits() -> wgpu::Limits { + wgpu::Limits { + max_push_constant_size: 12, + ..wgpu::Limits::default() + } + } + + fn init( + config: &wgpu::SurfaceConfiguration, + _adapter: &wgpu::Adapter, + device: &wgpu::Device, + queue: &wgpu::Queue, + ) -> Self { + let uniforms = create_matrix(config); + + let uniform_buf = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { + label: Some("Uniform Buffer"), + contents: bytemuck::cast_slice(&[uniforms]), + usage: wgpu::BufferUsages::UNIFORM | wgpu::BufferUsages::COPY_DST, + }); + + let (vertex_data, index_data) = create_vertices(); + + let vertex_buf = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { + label: Some("Vertex Buffer"), + contents: bytemuck::cast_slice(&vertex_data), + usage: wgpu::BufferUsages::VERTEX | wgpu::BufferUsages::BLAS_INPUT, + }); + + let index_buf = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { + label: Some("Index Buffer"), + contents: bytemuck::cast_slice(&index_data), + usage: wgpu::BufferUsages::INDEX | wgpu::BufferUsages::BLAS_INPUT, + }); + + let blas_geo_size_desc = wgpu::BlasTriangleGeometrySizeDescriptor { + vertex_format: wgpu::VertexFormat::Float32x3, + vertex_count: vertex_data.len() as u32, + index_format: Some(wgpu::IndexFormat::Uint16), + index_count: Some(index_data.len() as u32), + flags: wgpu::AccelerationStructureGeometryFlags::OPAQUE, + }; + + let blas = device.create_blas( + &wgpu::CreateBlasDescriptor { + label: None, + flags: wgpu::AccelerationStructureFlags::PREFER_FAST_TRACE, + update_mode: wgpu::AccelerationStructureUpdateMode::Build, + }, + wgpu::BlasGeometrySizeDescriptors::Triangles { + descriptors: vec![blas_geo_size_desc.clone()], + }, + ); + + let tlas = device.create_tlas(&wgpu::CreateTlasDescriptor { + label: None, + flags: wgpu::AccelerationStructureFlags::PREFER_FAST_TRACE, + update_mode: wgpu::AccelerationStructureUpdateMode::Build, + max_instances: 1, + }); + + let shader = device.create_shader_module(wgpu::ShaderModuleDescriptor { + label: None, + source: wgpu::ShaderSource::Wgsl(Cow::Borrowed(include_str!("shader.wgsl"))), + }); + + let bind_group_layout = device.create_bind_group_layout(&wgpu::BindGroupLayoutDescriptor { + label: None, + entries: &[ + wgpu::BindGroupLayoutEntry { + binding: 0, + visibility: wgpu::ShaderStages::VERTEX_FRAGMENT, + ty: wgpu::BindingType::Buffer { + ty: wgpu::BufferBindingType::Uniform, + has_dynamic_offset: false, + min_binding_size: None, + }, + count: None, + }, + wgpu::BindGroupLayoutEntry { + binding: 1, + visibility: wgpu::ShaderStages::FRAGMENT, + ty: wgpu::BindingType::AccelerationStructure, + count: None, + }, + ], + }); + + let pipeline_layout = device.create_pipeline_layout(&wgpu::PipelineLayoutDescriptor { + label: None, + bind_group_layouts: &[&bind_group_layout], + push_constant_ranges: &[wgpu::PushConstantRange { + stages: wgpu::ShaderStages::FRAGMENT, + range: 0..12, + }], + }); + + let pipeline = device.create_render_pipeline(&wgpu::RenderPipelineDescriptor { + label: None, + layout: Some(&pipeline_layout), + vertex: wgpu::VertexState { + module: &shader, + entry_point: Some("vs_main"), + compilation_options: Default::default(), + buffers: &[VertexBufferLayout { + array_stride: mem::size_of::() as wgpu::BufferAddress, + step_mode: Default::default(), + attributes: &vertex_attr_array![0 => Float32x3, 1 => Float32x3], + }], + }, + fragment: Some(wgpu::FragmentState { + module: &shader, + entry_point: Some("fs_main"), + compilation_options: Default::default(), + targets: &[Some(config.format.into())], + }), + primitive: wgpu::PrimitiveState { + topology: wgpu::PrimitiveTopology::TriangleList, + ..Default::default() + }, + depth_stencil: None, + multisample: wgpu::MultisampleState::default(), + multiview: None, + cache: None, + }); + + let mut tlas_package = wgpu::TlasPackage::new(tlas); + + tlas_package[0] = Some(wgpu::TlasInstance::new( + &blas, + [1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0], + 0, + 0xFF, + )); + + let mut encoder = + device.create_command_encoder(&wgpu::CommandEncoderDescriptor { label: None }); + + encoder.build_acceleration_structures( + iter::once(&wgpu::BlasBuildEntry { + blas: &blas, + geometry: wgpu::BlasGeometries::TriangleGeometries(vec![ + wgpu::BlasTriangleGeometry { + size: &blas_geo_size_desc, + vertex_buffer: &vertex_buf, + first_vertex: 0, + vertex_stride: mem::size_of::() as u64, + index_buffer: Some(&index_buf), + index_buffer_offset: Some(0), + transform_buffer: None, + transform_buffer_offset: None, + }, + ]), + }), + iter::once(&tlas_package), + ); + + queue.submit(Some(encoder.finish())); + + let bind_group = device.create_bind_group(&wgpu::BindGroupDescriptor { + label: None, + layout: &bind_group_layout, + entries: &[ + wgpu::BindGroupEntry { + binding: 0, + resource: uniform_buf.as_entire_binding(), + }, + wgpu::BindGroupEntry { + binding: 1, + resource: tlas_package.as_binding(), + }, + ], + }); + + let start_inst = Instant::now(); + + Example { + uniforms, + uniform_buf, + vertex_buf, + index_buf, + pipeline, + bind_group, + start_inst, + } + } + + fn update(&mut self, _event: winit::event::WindowEvent) {} + + fn resize( + &mut self, + config: &wgpu::SurfaceConfiguration, + _device: &wgpu::Device, + queue: &wgpu::Queue, + ) { + self.uniforms = create_matrix(config); + + queue.write_buffer(&self.uniform_buf, 0, bytemuck::cast_slice(&[self.uniforms])); + queue.submit(None); + } + + fn render(&mut self, view: &wgpu::TextureView, device: &wgpu::Device, queue: &wgpu::Queue) { + //device.push_error_scope(wgpu::ErrorFilter::Validation); + const LIGHT_DISTANCE: f32 = 5.0; + const TIME_SCALE: f32 = -0.2; + const INITIAL_TIME: f32 = 1.0; + let cos = (self.start_inst.elapsed().as_secs_f32() * TIME_SCALE + INITIAL_TIME).cos() + * LIGHT_DISTANCE; + let sin = (self.start_inst.elapsed().as_secs_f32() * TIME_SCALE + INITIAL_TIME).sin() + * LIGHT_DISTANCE; + + let mut encoder = + device.create_command_encoder(&wgpu::CommandEncoderDescriptor { label: None }); + + { + let mut rpass = encoder.begin_render_pass(&wgpu::RenderPassDescriptor { + label: None, + color_attachments: &[Some(wgpu::RenderPassColorAttachment { + view, + resolve_target: None, + ops: wgpu::Operations { + load: wgpu::LoadOp::Clear(wgpu::Color { + r: 0.1, + g: 0.1, + b: 0.1, + a: 1.0, + }), + store: wgpu::StoreOp::Store, + }, + })], + depth_stencil_attachment: None, + timestamp_writes: None, + occlusion_query_set: None, + }); + + rpass.set_pipeline(&self.pipeline); + rpass.set_bind_group(0, Some(&self.bind_group), &[]); + rpass.set_push_constants(wgpu::ShaderStages::FRAGMENT, 0, &0.0_f32.to_ne_bytes()); + rpass.set_push_constants(wgpu::ShaderStages::FRAGMENT, 4, &cos.to_ne_bytes()); + rpass.set_push_constants(wgpu::ShaderStages::FRAGMENT, 8, &sin.to_ne_bytes()); + rpass.set_vertex_buffer(0, self.vertex_buf.slice(..)); + rpass.set_index_buffer(self.index_buf.slice(..), IndexFormat::Uint16); + rpass.draw_indexed(0..12, 0, 0..1); + } + queue.submit(Some(encoder.finish())); + device.poll(wgpu::Maintain::Wait); + } +} + +pub fn main() { + crate::framework::run::("ray-shadows"); +} + +#[cfg(test)] +#[wgpu_test::gpu_test] +static TEST: crate::framework::ExampleTestParams = crate::framework::ExampleTestParams { + name: "ray_cube_shadows", + image_path: "/examples/src/ray_shadows/screenshot.png", + width: 1024, + height: 768, + optional_features: wgpu::Features::default(), + base_test_parameters: wgpu_test::TestParameters { + required_features: ::required_features(), + required_limits: ::required_limits(), + skips: vec![], + failures: Vec::new(), + required_downlevel_caps: + ::required_downlevel_capabilities(), + force_fxc: false, + }, + comparisons: &[wgpu_test::ComparisonType::Mean(0.02)], + _phantom: std::marker::PhantomData::, +}; diff --git a/examples/src/ray_shadows/screenshot.png b/examples/src/ray_shadows/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..53e99aa7f7cacedce15d871c2ab4ccc33d058b16 GIT binary patch literal 11969 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 hX87-6|Nr8kQQQBg9, + @location(0) tex_coords: vec2, + @location(1) normal: vec3, + @location(2) world_position: vec3, +}; + +@vertex +fn vs_main(@builtin(vertex_index) vertex_index: u32, @location(0) position: vec3, @location(1) normal: vec3,) -> VertexOutput { + var result: VertexOutput; + let x = i32(vertex_index) / 2; + let y = i32(vertex_index) & 1; + let tc = vec2( + f32(x) * 2.0, + f32(y) * 2.0 + ); + result.tex_coords = tc; + result.position = uniforms.vertex * vec4(position, 1.0); + result.normal = normal; + result.world_position = position; + return result; +} + +struct Uniforms { + view_inv: mat4x4, + proj_inv: mat4x4, + vertex: mat4x4, +}; + +@group(0) @binding(0) +var uniforms: Uniforms; + +@group(0) @binding(1) +var acc_struct: acceleration_structure; + +var light: vec3; + +const SURFACE_BRIGHTNESS = 0.5; + +@fragment +fn fs_main(vertex: VertexOutput) -> @location(0) vec4 { + let camera = (uniforms.view_inv * vec4(0.0,0.0,0.0,1.0)).xyz; + var color = vec4(vertex.tex_coords, 0.0, 1.0); + + let d = vertex.tex_coords * 2.0 - 1.0; + + let origin = vertex.world_position; + let direction = normalize(light - vertex.world_position); + + var normal: vec3; + let dir_cam = normalize(camera - vertex.world_position); + if (dot(dir_cam, vertex.normal) < 0.0) { + normal = -vertex.normal; + } else { + normal = vertex.normal; + } + + var rq: ray_query; + rayQueryInitialize(&rq, acc_struct, RayDesc(0u, 0xFFu, 0.0001, 200.0, origin, direction)); + rayQueryProceed(&rq); + + let intersection = rayQueryGetCommittedIntersection(&rq); + if (intersection.kind != RAY_QUERY_INTERSECTION_NONE) { + color = vec4(vec3(0.1) * SURFACE_BRIGHTNESS, 1.0); + } else { + color = vec4(vec3(max(dot(direction, normal), 0.1)) * SURFACE_BRIGHTNESS, 1.0); + } + + return color; +} diff --git a/examples/src/ray_traced_triangle/README.md b/examples/src/ray_traced_triangle/README.md new file mode 100644 index 0000000000..1f9f3435cb --- /dev/null +++ b/examples/src/ray_traced_triangle/README.md @@ -0,0 +1,14 @@ +# ray-traced-triangle + +This example renders three triangles with hardware acceleration. +This is the same scene set-up as hal ray-traced triangle + +## To Run + +``` +cargo run --bin wgpu-examples ray_traced_triangle +``` + +## Screenshots + +![Triangle example](screenshot.png) diff --git a/examples/src/ray_traced_triangle/blit.wgsl b/examples/src/ray_traced_triangle/blit.wgsl new file mode 100644 index 0000000000..a79e0657d6 --- /dev/null +++ b/examples/src/ray_traced_triangle/blit.wgsl @@ -0,0 +1,54 @@ +// same as ray_cube_compute/blit.wgsl + +struct VertexOutput { + @builtin(position) position: vec4, + @location(0) tex_coords: vec2, +}; + +// meant to be called with 3 vertex indices: 0, 1, 2 +// draws one large triangle over the clip space like this: +// (the asterisks represent the clip space bounds) +//-1,1 1,1 +// --------------------------------- +// | * . +// | * . +// | * . +// | * . +// | * . +// | * . +// |*************** +// | . 1,-1 +// | . +// | . +// | . +// | . +// |. +@vertex +fn vs_main(@builtin(vertex_index) vertex_index: u32) -> VertexOutput { + var result: VertexOutput; + let x = i32(vertex_index) / 2; + let y = i32(vertex_index) & 1; + let tc = vec2( + f32(x) * 2.0, + f32(y) * 2.0 + ); + result.position = vec4( + tc.x * 2.0 - 1.0, + 1.0 - tc.y * 2.0, + 0.0, 1.0 + ); + result.tex_coords = tc; + return result; +} + +@group(0) +@binding(0) +var r_color: texture_2d; +@group(0) +@binding(1) +var r_sampler: sampler; + +@fragment +fn fs_main(vertex: VertexOutput) -> @location(0) vec4 { + return textureSample(r_color, r_sampler, vertex.tex_coords); +} diff --git a/examples/src/ray_traced_triangle/mod.rs b/examples/src/ray_traced_triangle/mod.rs new file mode 100644 index 0000000000..d508e6113e --- /dev/null +++ b/examples/src/ray_traced_triangle/mod.rs @@ -0,0 +1,443 @@ +use glam::{Mat4, Vec3}; +use std::mem; +use std::time::Instant; +use wgpu::util::{BufferInitDescriptor, DeviceExt}; +use wgpu::{include_wgsl, BufferUsages, IndexFormat, SamplerDescriptor}; +use wgpu::{ + AccelerationStructureFlags, AccelerationStructureUpdateMode, BlasBuildEntry, BlasGeometries, + BlasGeometrySizeDescriptors, BlasTriangleGeometry, BlasTriangleGeometrySizeDescriptor, + CreateBlasDescriptor, CreateTlasDescriptor, TlasInstance, TlasPackage, +}; + +struct Example { + tlas_package: TlasPackage, + compute_pipeline: wgpu::ComputePipeline, + blit_pipeline: wgpu::RenderPipeline, + bind_group: wgpu::BindGroup, + blit_bind_group: wgpu::BindGroup, + storage_texture: wgpu::Texture, + start: Instant, +} + +#[repr(C)] +#[derive(bytemuck::Pod, bytemuck::Zeroable, Clone, Copy, Debug)] +struct Uniforms { + view_inverse: Mat4, + proj_inverse: Mat4, +} + +impl crate::framework::Example for Example { + fn required_features() -> wgpu::Features { + wgpu::Features::EXPERIMENTAL_RAY_TRACING_ACCELERATION_STRUCTURE + | wgpu::Features::EXPERIMENTAL_RAY_QUERY + } + + fn required_limits() -> wgpu::Limits { + wgpu::Limits::default() + } + + fn init( + config: &wgpu::SurfaceConfiguration, + _adapter: &wgpu::Adapter, + device: &wgpu::Device, + queue: &wgpu::Queue, + ) -> Self { + let shader = device.create_shader_module(include_wgsl!("shader.wgsl")); + + let blit_shader = device.create_shader_module(include_wgsl!("blit.wgsl")); + + let bgl = device.create_bind_group_layout(&wgpu::BindGroupLayoutDescriptor { + label: Some("bgl for shader.wgsl"), + entries: &[ + wgpu::BindGroupLayoutEntry { + binding: 0, + visibility: wgpu::ShaderStages::COMPUTE, + ty: wgpu::BindingType::Buffer { + ty: wgpu::BufferBindingType::Uniform, + has_dynamic_offset: false, + min_binding_size: None, + }, + count: None, + }, + wgpu::BindGroupLayoutEntry { + binding: 1, + visibility: wgpu::ShaderStages::COMPUTE, + ty: wgpu::BindingType::StorageTexture { + access: wgpu::StorageTextureAccess::WriteOnly, + format: wgpu::TextureFormat::Rgba8Unorm, + view_dimension: wgpu::TextureViewDimension::D2, + }, + count: None, + }, + wgpu::BindGroupLayoutEntry { + binding: 2, + visibility: wgpu::ShaderStages::COMPUTE, + ty: wgpu::BindingType::AccelerationStructure, + count: None, + }, + ], + }); + + let blit_bgl = device.create_bind_group_layout(&wgpu::BindGroupLayoutDescriptor { + label: Some("bgl for blit.wgsl"), + entries: &[ + wgpu::BindGroupLayoutEntry { + binding: 0, + visibility: wgpu::ShaderStages::VERTEX_FRAGMENT, + ty: wgpu::BindingType::Texture { + sample_type: wgpu::TextureSampleType::Float { filterable: false }, + view_dimension: wgpu::TextureViewDimension::D2, + multisampled: false, + }, + count: None, + }, + wgpu::BindGroupLayoutEntry { + binding: 1, + visibility: wgpu::ShaderStages::VERTEX_FRAGMENT, + ty: wgpu::BindingType::Sampler(wgpu::SamplerBindingType::NonFiltering), + count: None, + }, + ], + }); + + let vertices: [f32; 9] = [1.0, 1.0, 0.0, -1.0, 1.0, 0.0, 0.0, -1.0, 0.0]; + + let indices: [u32; 3] = [0, 1, 2]; + + let vertex_buffer = device.create_buffer_init(&BufferInitDescriptor { + label: Some("vertex buffer"), + contents: bytemuck::cast_slice(&vertices), + usage: BufferUsages::BLAS_INPUT, + }); + + let index_buffer = device.create_buffer_init(&BufferInitDescriptor { + label: Some("vertex buffer"), + contents: bytemuck::cast_slice(&indices), + usage: BufferUsages::BLAS_INPUT, + }); + + let blas_size_desc = BlasTriangleGeometrySizeDescriptor { + vertex_format: wgpu::VertexFormat::Float32x3, + // 3 coordinates per vertex + vertex_count: (vertices.len() / 3) as u32, + index_format: Some(IndexFormat::Uint32), + index_count: Some(indices.len() as u32), + flags: wgpu::AccelerationStructureGeometryFlags::OPAQUE, + }; + + let blas = device.create_blas( + &CreateBlasDescriptor { + label: None, + flags: AccelerationStructureFlags::PREFER_FAST_TRACE, + update_mode: AccelerationStructureUpdateMode::Build, + }, + BlasGeometrySizeDescriptors::Triangles { + descriptors: vec![blas_size_desc.clone()], + }, + ); + + let tlas = device.create_tlas(&CreateTlasDescriptor { + label: None, + max_instances: 3, + flags: AccelerationStructureFlags::PREFER_FAST_TRACE, + update_mode: AccelerationStructureUpdateMode::Build, + }); + + let mut tlas_package = TlasPackage::new(tlas); + + tlas_package[0] = Some(TlasInstance::new( + &blas, + Mat4::from_translation(Vec3 { + x: 0.0, + y: 0.0, + z: 0.0, + }) + .transpose() + .to_cols_array()[..12] + .try_into() + .unwrap(), + 0, + 0xff, + )); + + tlas_package[1] = Some(TlasInstance::new( + &blas, + Mat4::from_translation(Vec3 { + x: -1.0, + y: -1.0, + z: -2.0, + }) + .transpose() + .to_cols_array()[..12] + .try_into() + .unwrap(), + 0, + 0xff, + )); + + tlas_package[2] = Some(TlasInstance::new( + &blas, + Mat4::from_translation(Vec3 { + x: 1.0, + y: -1.0, + z: -2.0, + }) + .transpose() + .to_cols_array()[..12] + .try_into() + .unwrap(), + 0, + 0xff, + )); + + let uniforms = { + let view = Mat4::look_at_rh(Vec3::new(0.0, 0.0, 2.5), Vec3::ZERO, Vec3::Y); + let proj = Mat4::perspective_rh(59.0_f32.to_radians(), 1.0, 0.001, 1000.0); + + Uniforms { + view_inverse: view.inverse(), + proj_inverse: proj.inverse(), + } + }; + + let uniform_buffer = device.create_buffer_init(&BufferInitDescriptor { + label: None, + contents: bytemuck::cast_slice(&[uniforms]), + usage: BufferUsages::UNIFORM, + }); + + let mut encoder = device.create_command_encoder(&wgpu::CommandEncoderDescriptor::default()); + + encoder.build_acceleration_structures( + Some(&BlasBuildEntry { + blas: &blas, + geometry: BlasGeometries::TriangleGeometries(vec![BlasTriangleGeometry { + size: &blas_size_desc, + vertex_buffer: &vertex_buffer, + first_vertex: 0, + vertex_stride: mem::size_of::<[f32; 3]>() as wgpu::BufferAddress, + // in this case since one triangle gets no compression from an index buffer `index_buffer` and `index_buffer_offset` could be `None`. + index_buffer: Some(&index_buffer), + index_buffer_offset: Some(0), + transform_buffer: None, + transform_buffer_offset: None, + }]), + }), + Some(&tlas_package), + ); + + queue.submit(Some(encoder.finish())); + + let storage_tex = device.create_texture(&wgpu::TextureDescriptor { + label: None, + size: wgpu::Extent3d { + width: config.width, + height: config.height, + depth_or_array_layers: 1, + }, + mip_level_count: 1, + sample_count: 1, + dimension: wgpu::TextureDimension::D2, + format: wgpu::TextureFormat::Rgba8Unorm, + usage: wgpu::TextureUsages::STORAGE_BINDING | wgpu::TextureUsages::TEXTURE_BINDING, + view_formats: &[], + }); + + let sampler = device.create_sampler(&SamplerDescriptor { + label: None, + address_mode_u: Default::default(), + address_mode_v: Default::default(), + address_mode_w: Default::default(), + mag_filter: wgpu::FilterMode::Nearest, + min_filter: wgpu::FilterMode::Nearest, + mipmap_filter: wgpu::FilterMode::Nearest, + lod_min_clamp: 1.0, + lod_max_clamp: 1.0, + compare: None, + anisotropy_clamp: 1, + border_color: None, + }); + + let compute_pipeline_layout = + device.create_pipeline_layout(&wgpu::PipelineLayoutDescriptor { + label: Some("pipeline layout for shader.wgsl"), + bind_group_layouts: &[&bgl], + push_constant_ranges: &[], + }); + + let compute_pipeline = device.create_compute_pipeline(&wgpu::ComputePipelineDescriptor { + label: Some("pipeline for shader.wgsl"), + layout: Some(&compute_pipeline_layout), + module: &shader, + entry_point: None, + compilation_options: Default::default(), + cache: None, + }); + + let blit_pipeline_layout = device.create_pipeline_layout(&wgpu::PipelineLayoutDescriptor { + label: Some("pipeline layout for blit.wgsl"), + bind_group_layouts: &[&blit_bgl], + push_constant_ranges: &[], + }); + + let blit_pipeline = device.create_render_pipeline(&wgpu::RenderPipelineDescriptor { + label: Some("pipeline for blit.wgsl"), + layout: Some(&blit_pipeline_layout), + vertex: wgpu::VertexState { + module: &blit_shader, + entry_point: None, + compilation_options: Default::default(), + buffers: &[], + }, + primitive: Default::default(), + depth_stencil: None, + multisample: Default::default(), + fragment: Some(wgpu::FragmentState { + module: &blit_shader, + entry_point: None, + compilation_options: Default::default(), + targets: &[Some(wgpu::ColorTargetState { + format: config.format, + blend: None, + write_mask: Default::default(), + })], + }), + multiview: None, + cache: None, + }); + + let bind_group = device.create_bind_group(&wgpu::BindGroupDescriptor { + label: Some("bind group for shader.wgsl"), + layout: &bgl, + entries: &[ + wgpu::BindGroupEntry { + binding: 0, + resource: uniform_buffer.as_entire_binding(), + }, + wgpu::BindGroupEntry { + binding: 1, + resource: wgpu::BindingResource::TextureView( + &storage_tex.create_view(&wgpu::TextureViewDescriptor::default()), + ), + }, + wgpu::BindGroupEntry { + binding: 2, + resource: wgpu::BindingResource::AccelerationStructure(tlas_package.tlas()), + }, + ], + }); + + let blit_bind_group = device.create_bind_group(&wgpu::BindGroupDescriptor { + label: Some("bind group for blit.wgsl"), + layout: &blit_bgl, + entries: &[ + wgpu::BindGroupEntry { + binding: 0, + resource: wgpu::BindingResource::TextureView( + &storage_tex.create_view(&wgpu::TextureViewDescriptor::default()), + ), + }, + wgpu::BindGroupEntry { + binding: 1, + resource: wgpu::BindingResource::Sampler(&sampler), + }, + ], + }); + + Self { + tlas_package, + compute_pipeline, + blit_pipeline, + bind_group, + blit_bind_group, + storage_texture: storage_tex, + start: Instant::now(), + } + } + + fn resize( + &mut self, + _config: &wgpu::SurfaceConfiguration, + _device: &wgpu::Device, + _queue: &wgpu::Queue, + ) { + } + + fn update(&mut self, _event: winit::event::WindowEvent) {} + + fn render(&mut self, view: &wgpu::TextureView, device: &wgpu::Device, queue: &wgpu::Queue) { + self.tlas_package[0].as_mut().unwrap().transform = + Mat4::from_rotation_y(self.start.elapsed().as_secs_f32()) + .transpose() + .to_cols_array()[..12] + .try_into() + .unwrap(); + + let mut encoder = + device.create_command_encoder(&wgpu::CommandEncoderDescriptor { label: None }); + + encoder.build_acceleration_structures(None, Some(&self.tlas_package)); + + { + let mut cpass = encoder.begin_compute_pass(&wgpu::ComputePassDescriptor { + label: None, + timestamp_writes: None, + }); + cpass.set_pipeline(&self.compute_pipeline); + cpass.set_bind_group(0, Some(&self.bind_group), &[]); + cpass.dispatch_workgroups( + self.storage_texture.width() / 8, + self.storage_texture.height() / 8, + 1, + ); + } + + { + let mut rpass = encoder.begin_render_pass(&wgpu::RenderPassDescriptor { + label: None, + color_attachments: &[Some(wgpu::RenderPassColorAttachment { + view, + resolve_target: None, + ops: wgpu::Operations { + load: wgpu::LoadOp::Clear(wgpu::Color::GREEN), + store: wgpu::StoreOp::Store, + }, + })], + depth_stencil_attachment: None, + timestamp_writes: None, + occlusion_query_set: None, + }); + + rpass.set_pipeline(&self.blit_pipeline); + rpass.set_bind_group(0, Some(&self.blit_bind_group), &[]); + rpass.draw(0..3, 0..1); + } + + queue.submit(Some(encoder.finish())); + } +} + +pub fn main() { + crate::framework::run::("ray-traced-triangle"); +} + +#[cfg(test)] +#[wgpu_test::gpu_test] +static TEST: crate::framework::ExampleTestParams = crate::framework::ExampleTestParams { + name: "ray_traced_triangle", + image_path: "/examples/src/ray_traced_triangle/screenshot.png", + width: 1024, + height: 768, + optional_features: wgpu::Features::default(), + base_test_parameters: wgpu_test::TestParameters { + required_features: ::required_features(), + required_limits: ::required_limits(), + force_fxc: false, + skips: vec![], + failures: Vec::new(), + required_downlevel_caps: + ::required_downlevel_capabilities(), + }, + comparisons: &[wgpu_test::ComparisonType::Mean(0.02)], + _phantom: std::marker::PhantomData::, +}; diff --git a/examples/src/ray_traced_triangle/screenshot.png b/examples/src/ray_traced_triangle/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..888f674b83b75c48bab830295c43816046cc9b93 GIT binary patch literal 118301 zcmeFY_g7O})CGDHLKkVGqEtZ;0a1_+f>;0%P?TOTRk{S}V4`40iu8^mAiW0xC9%-! z6+?i4AVrj3q$fFVhx>hRyuaa%?}y7}3`x#Dd#^RuTyw7d?1qsp2iq|=2!c5D^)8!0 z5DNUt0I@KE|1~!9aX^TkY5mI=ZwHSod}JRDu+<`||7u*Ku6%vT#r;a@89F%2?#Gs_ z+mG9?h8$n?xOTNlsQM(HGAWkTPfXOi#@w;95E7DQS12HT)8ul;rP!q<#o6XrMbd}X zpYWb=YvW+V`25P={R@2oFWq|2wOP$K&f37|Xim}NzIsxI&$x70M5E|G+ki^Skn0Yo;uwEzXVA4 zyVTEFkRnI_=-C*6e~ff6lkA%xwO8}rs(_a}GK|O{=TU^L`L%%A#ok!EZTsf{1|46D zDQsO4NNf0_qQj!fPKU$H^A)6fBTGlJaABl;b&@`IekNn#J+}@E;zMr$)6UYFm~M@m z;Nj;xriB|<@P|dG6Zd!V+XtcFwPSKju>AjQ&4C!PuH`WLn=3@p-@Ie36jp_8l4;}P ztg!4%$lx!dc+~q_GC#u!@YH<#-Bmy|DpTn? z#HC{tGdpUn?!CU;F!fm7d#mIVObJ_hZ)=-Uq3&z^Vd51W9mR#NvhZ`>iO|)TPyicm zbbNo~Th@i{ja=<_C;#w5yw4Lyl$XO9A+EN~9rU2F5$|iTBVo4GV!FG}IhP!uk%p>U zQs`}c@B5PZOv#u~uRLp|rU@N*+n%U z7aoTif5!J#uD*5)8E3XDuCa)we6faOUHJH8#0*ZTeiA2`CR{%=)y`nIV7>qEswekj z1LaGdU+)WPb#=Ae#V5`ikxxwD4xC6fB3s#kEt6tb)jWk)0T1RvvvyZG%S6GgS=fbi z?ec^UPmKm-$8?X6G{L0V2zfRcY}J0jmHb4ehMIY1GtMAj%`dIaA@(s~q^UFPF(z@wkt4Uv)fadbbeBH{p1q<9G zSeJ=9rGD34c^zY#IR6Qr{A0tS`f;0Nws_tGpD|*;YrQi*!E0f+SX8~=icBQX)1h5;?I6i>!}F(> zY)mP>-W18-7C*Cffl{leAWK@t}w-}wGnsnb0czhHBas# zbUHXg|F%VYn}zXou(0@`k(00HRpi&Bo{A}0bL+a6Uk0fuIjQGJkKgZS5!x)ORzLpW z`?PAni?YIF!%6FoJuAcWxSAfLvC&fNd%Yd?m6*CvJ0y2J@4wekaFvVLXcq{o#MV?@w)= zK6VkHRpOC<3+m{gRULdwcDfeC{6QNdWaZRV5UJOX>kb~3M(}8afx{6^ZQHnV@G*jks9D3wXn2JA7E)P2N83tVhqd??+ ztMz*;1fbB#OUAhiB_AWU@w|GkY3QbPw+}rrbUEmWkvD0p4i2Rb*6Q1hRh~2io92Ft zgGL&6;n8M6Hh)dA|BXk|VZc*H>JeP4B46Xh*!~&gBG6HSxF!e*=-!o2s{#+x*niX0 zzl^Nq)x8zGc_uu}n@@LUIC9Q@<0hX5h}|R9o0f^%ev-1oc@ZFTXVa%oa5t~%LO(bS zVt_!}aJrv!>oo~UI&A1N?l0}<7$$(G^DPQqnZO^Sb&(M6;@um9B!b$w!6R;tR zXxo1)o6yYe_2^ko;W42Kv%fCD4Vd+QOPn+;iyK%A8?aEV(=qa7_GvdzS+1rZY+HAj zjQt?V08Z&GyG<27&OTiATudb}v81ck8J%I#TMk_cWOM*YCxDQ@%t7f(Ko7Bn{%cqWob1zGmxUzx&QJ<#nu@T+Vebo@@AX@mE z2bI}SPyUi-=1EA|RZrQ9z0&*8{OG`vogEWwyqx{9cIOd0+!c3=u_ZpuWZPFB<($&! z4I=V9uG&Swvd{OBIre8kCL@9$WKA1le+xhF(UjeZ=M@w^dT!lp&BCR#18N z^?osMzvW3`*7)|hY z725I*FU7ic%0T4amA7n-=l_Re`f)A&py3h32;G}blOH(eJaM~F9Phn7>{Rm~j1%A-p zvD)193BKJDZ+huh%q!G8Q~2fr!B4#HVCHqZ0ElUV?X1HK%T@sFPIUI)E;dW`arOG< z)930Rh(kscxy5WfeyQ(bfgOjW)j7N5sb&X=pErnv3 zw^qh7oIH^Zzy6G|2}mH?iyQ#CAn(P#>QIUKUUjLJI}z1CsV93th2_5|PDSlMafXTs zp;?yD>dg#Kv7VJGhC>Stm&lh{AAE@Rzhi@#iy}<^`5=z+u|e4V^0l4R5>>ru=hCDR zBvn=dWsi<^{n_QuY!HgJIfu|Tid0QbEQY&EVcyQUDnM**u)&s9Q^n84P6axcV_h7^ z57Gi&439mRr&CO^|9L*ceam7+l9{2Wu3@pF@$)%6(Y>qYyk5H$CvE;@rn@9lDlc-Y zmk6mMP{m#)Oe!Y->2lnJJ8XFzemy&`iOn#D%(ViZVIjM7uA|~s&X^)Nf3T@{mg>>t4y|vI>V;D`fO?nE7p;Z zK%v-Dr?1dHwy)N-#;4u<8b3o5ELn8&^s1U{?=HA@mgMKGS|JIFfAx3SEU2<&;RZWW z9{yoWbm*u&TNZWo3~$fxAEBC!JJ{E@kQG*3`+vrz9Co#_v}asn$K(+v*c zwIAatX4qg%DMqGmVveoSnsw#4*4Ag5BCBXD1HBx?Mse=St@kxG@n`TC?P>w&X~;7x zp}C0`>J`cgCjj`I`tw0xzsj^sfSzFKrQ$>vK;D=aq(*%5($dmTmlcff7Nu^+EwFEF zVBRGt6(!QfNT=mRX&Y^R&eV@mG49}hWi9bC6iHhI(?93J@cqp1Y!UQA8GD$%2+l06 z=K0!xe&W@M)jcCjcey=u7-;%8slHu{RWd)$6QZ;aGbMsLmvmBu3mrO)zwZa*rd2|+ z#wPHYR6M6EJZ}mG`E(jr%&2RHs$$Ngzu)l_w}zA6ROK^h$A~RrG42M%w7j7Q;PI(k zcc%2b&sjI__b@`5`-gE_*yi5IwUUC48&u!2^c%X~Cb!`-BWqcf)JHI2*w!e-x_qxy zPsmUMGEv8fbFO(|*5-%SS=DRFD8kqnRejyL(UNOrVz`O9E6B$T(QU(d6@;4ZX90tP ztJ+GE3HfvIZ5Ei=F|8CM@>8p9R3gDo;9pr+YjbSoZM#wg>Ax1@=RT;vUK7RNE}^BE z8790Lj4n-=5TPi8Jk>*08X*s`oAbQKqm#NkP#~YL2Cv$G2j49y3GtdOj#b0(dug>;jhj*G=~TU4EFi{G#ikCDN9KEbNR$W(Lz)*X^crxzio!iVI3 z8IixgqfKeTCL0*!HTYKEXeKdJ3>1gg-007&hy}L()9Rc(8zXH|D{A0V zh|0v7)7UgmO{}_HV>Elk!Jv94z-fV7?y{7WuK5Mbk1Y&7bp{_)!{!ho z&_Q~bnvPur;KPU@JCaL^;2ohryO1it}`DD!?%xwyj%s|JmL)}QxHo)V&@06<4u zXOBr*h)Gh$6LHf_Yf0=ysaYdy9Mk1;D1_53kTLk~f-*JVpoy_v?ALJ50z5dpg-=|5 zT3yauDO1#20@(#`Vs5PkfAVuC#>E!{mQ))VZdpDB4yqh5^`VCXE*|Dskj&=TZ;r`y z!gP1P{XctQO^fsy(_YM4L^Jq_Hz^AlxHqTNiWM$W<(yQz=Vkp&Eh$S)eENGMGBFZ1 z?P=gb?;7TWs462u-fHY&%JVh$@Q-kqjb=>QhhAD9iqLZ!%MXhCrO(gBx~k|sX$&Z? zcl=O-1I%!!*TpKQ+l+{KX##IXBoBUeyj%jWvbE81DaJb7+aLI};h(rmi0B_75D`ARi~=CD}Q!lEu}dTNOzL9N3cL z4|52OkL4`ElZ>-_Z6{+Nf$DcX>2WlGm&QiyLTIzlN}m_9%H^)0%iESx8M(f>-1o@# zujv1D7=eTIB2@n?4|AVZ#0vjYBJp;295fvdvG4K`aAV>Y@n%bUkIWjdTPqLZ%hPE{Q zbM>4SUWS?zxV1LK(w_XLDu8FASYIM<=yglH0Owt=PsOm6j&>}-9(P;B`4^TVEZfg> z{8W`00UYnAn_2kvbKCZ1>D9(H-o*2Y#qh1yf3^6FVeaFEjvJn>tOzM&YEo9pgOB$Z z+n@IW96K@n6$Pns^^s+%!a=b8(%$%CGmQ0}y(fy0hc!XkqBj(3;@6je+8=<1yAkV^ zcD?sA##^4h?O@Tau)ai!-`8rycU#2cs7bw%GL;%xSCTlPpfc4KG(0Dx;;8$Iob(0U zpV~4r!-mMmuOK?7qZzD96m>61E6Zh-kERVQW;mlER#j1uD97${;f(U*Ze^ji|FSn- zYJVN_1GX?27K><*yJh7@acRh&0nBQRLR|XMLT3}5FGVI^oMYAYVU7{=Ssg#I+^(>echK<`=UX& z{hyGou?el^J!9p){FEun4Xq|*@E(nfHly|ds6CDCG2FSzInmNQGfMkD&HZm{yvBU& zBe;_;_jnLtGZa_LLD`t^td9KFr9T2r* zX2+IH{bOcWohQMFsIpSPAq0*Aag~WHr6!oyh$XQE(HW7Uu=OZz;55s7Yr4ocoNy8$ z0?HiOr;=qt@I4!pQt_OKFxTd~Tho-1;-o;@I?oF^8~;KPig&dXSP{eWF)~}8ivoEq z@iRgjj?6~L-+tmGB4Dfi7Tq4tT%6Cnm}=i`GD1=sy58#paD7DY80^9+m`sdgiG(d6 z7aMJYbtdiZ1zGw3q7W(T47G^NLqtr;fYRY&*jp!e6p&^L%- zVHwUly}_g`9hBv_Pboje3Asbi8z-vLshy8RV?UwYyTz&>R^ zdM}vfV;&MGNnUojnOB)}E*ZIOPqFjzDKBUbDh=oxNo%7GKmo_Zq3432yz=ESkxiTU-) zN4T2V*Swn+wntl^!>VgDyaqMlX+?1X)#jPdYLY}|n z=^d|6GnrmE0T-sY>w}X|ozBsT-yeE=te2{_;cv0+dtTjJZ`*h3lrpIp&d(Zu`%V!s zQZw<&TBh2hjGHl%$kH6|G~RFGrgvIm-u{&zn;VZ`0KCF8D+16hT|%TTninnAJ*;dzn3JTtylC^vEN#9pO1^dSN^Xvmzg zuTx$yg`{?B;NvZPgnt=8tvpp)g({-OIsm|v{iy2*e}Y}#Rv~hdt-qDq(mYly zV65yZkYMOtsLuVus|E%pxO} zY1~_miT-;lgN>1I7G!vlZO5dD}_!=Dehdz!+!0V`Sqr>XUT5d*|vuwX~d z6~jYJcW;De$Ah%B()2cTnXP81_d)cRA`FaYzs4LdvfzQ{yWzEk8MNvYeA&;YcP;iV zA7Sk}ZYFe7t8Z2u;(7h=>S z*io>K)k4vo72!-2XQt#|!1^!@1&++|9|vqy0#U7)dyi3D9|{~jlNB^#m>;W*!x)=| zQ5Pd%6-58i9;tI)M(Y~%^)Iw`4SW0|K@x5$f)nDb*QD;QRFu#Iw1U08T)MN?S>A+7 zLOHwWShIN;qYe=svg=GPZ?fO`^z?pf=0ds1U zK|_n)7vb&Y#b%gab#J_8*UIj~yf^T5njF#wCT+kUvFgzxzfjr@%Rq5I{$OPs9Xn%r-atS>$aj=8)p@O7oQ=srxrAfeI-c4{!jR zt{VYr#>Ge9-8ikST zFaR@3sFf9H8Zuj>Z{N|xJhe2zuTDE3D*(fwI2_paw6>7Ni5w>kDnd=j?ZY+sxbC$D zdSB~Ek5KOL5qym)?B-nP{p++d@$EB;?5v__A>w-r5a-k;e90c_!9z^_)d3z?Akw_I zIV8oRA_gkq;#4oiNKAV9!*R-N1U#~UDckj3-t&!hBVyhnDj)69#6qEbX~>H4#%~1W zF(&X0tn>EBAzjz=KeY@uFi}-`*UvhUEf(0$VjI)*4xm%`v5{CIYiCD(Pvm78*L-Pg z_P#r7L0@Ch_TQXmmWuB5Be$>dSWBekbL8IkOn&z8;!XeZE3|Ju9R-J2feMPN_WuZD z>X^O)#Vmi)s|mSK3*DDi_euGz4v$c7jRRpETE4fuXYY2~1?eC*7fKf=;<}y-5e&{E z?n;G^^vP`fJ#>TGhp(E0PdTj7S6 z*ir%!_bwqBRcVU|)W@2;wJnZ@q}W^Ek5y)cFyrv=-tDOfIIkE{iD+AGhC{DFgOIi~ z0w`M_zG|sa_xKX4+E{F09{lP@QoNxppXu_p>zrZ)xaPEd}Qm2xj z;9pwB%vc^MTbkf=65@s2x&#cYe&Pj;y@;?{wjL3#`j)Vo(BUGm>IG4UZsJ_XkkLzn z>z3w0Dekha@$@V|Xw@wb+-)AZA|;6VIUZ_eh_mw7oJavUWXj8fE>`#EKCZ255E+#j zCyl-B37j6xM^FtAH&uVJ-3Xj`4q|8T-Fh=ZE-r{#S9dQcHUhR%#Vu>u*Z=v(ppCYb}!>SnCcq zED!>kkQAI&NN@emE2};|&2WCS7fgwO-`Pk)wWiSK0wxP0?9l)RQA0ogQ7477yYc*0 zRX{&G6ldFO4M;hr6Se;CYfSh7$)|ZrSe3w9Kk@oUqi%C5C+0mOF=Rf68)GiXv&P2z zV-(lG8mB++bmyo=gBaY!%YRQ*_Fz8vOkqa}+sNWjGFVE6%G=J1N+zO)PCdk`h+-KL zE;>*n@&l8)&+O+W>KtW&yfvP@E`!IP(9T$`aNC)g!*bNJ{B?srnnDJazY!nAd7;_Q z_LQQTY}{?wtpGcR`IzOUSl)`H-~YryDiBnvsZBOds!KffUvIPZ`qM2 zW?ZL_RX%d*37_K{Y24j^CngMZwAFzGira*6aQEH)7}nRx=bbUS3-K z`^r902M$H8rrlk!2Py4bUA}AI79)LyXm21PMxQ-!AYue`N9Hw;Yx6&e!+L!MY4Y{8 zcfak`0J^U-{RR-aIQCz1WA{ex5i!#wuM$Pybfc_89^YO;>FvVRzUc>u@ZhHYX?1HQ zthd{Z<=T!<_%q0%z&W28wv}U;N#s)R`ZO@4WyfS6%9&AP0h)K2+wLFr_G!ox2Q-LM zW`a1O!?7(sbq+72evb&>xGOH2OAN1=56e9NXzHOL;Qy=qKUDKO}(|IhcLh2dC!U z5cvxT{n@>OSs0}++^d+QzQji zwls7`tEQ>YtsL}YYX-*C_Hnh{Rd3BV@G+uh3#YtY{N(wYkQRO@>%BjYHS$WiD(5BS zVuBCX=mGGFNtM<Iy2_T#cl>bO)?$HJxL^;d_sutgI+j z&80Ce;Wo8i&D)ztJBTq(9~$G!wfMY4)}nmy?N^xA46K1w5i8Ez*a#v+yu|V{KN^Wd+wb_seA8e1Tw~*?hR`I(L)?UQGOU~VDL`H`6sWWPV7#nPCK-3D~b9NT0c zeqZ@h+5;d0sTb^4w8fO%ScrRwWw@7EG^H2jb#{_P&GjT|4p%9S^*Q&#QTMCuufTHp z?1Rk-&~&0NQix#wk5&u^7WPzc4w(LzVwd*i?!lJ9`{^zYniIn5TX!0ezmp%-2Qj`& zfRf?{Jn#Pw8GkR?9k%GaRH(DfNv3JuL`|s+9)o6N@C69$CKb5;$6W%n&-ngq#@I55 zq^vJ!RWoLWgz_;v^Gw|Nck<~O3aMgO_=Vtcmn#;6ocCS~Uwn4yk_s;R@g;1uLSsv* zud*k2rr+BxdTEM#@c?w5XQKKpSQN?@>@I`0F*o+ioIr?KvF; z!{0hLAg9$xk?|>x$O(%yr)P&~O<8l87DJYrg5*9Y)JvRh(?a281@$z9d=76VDY#Jk44J8;{^Sx&4H-Q zx9IiOyNpL|qzjc;x%?U5m1W*D$1;C7tnSm+8U|k*p&lm}!!ymWe%4G%C`1EPE_r-_ zVaO~%lLIPczH4tQ80QTy@sZNXA-Rn!ZIr&S_)@>Gx2P2f5LoPm?Rv*2xIX)!#Hu8k z^$W|=UAZZi>ZB{>P{0}iU_sV2;U61BT#J_@C;~eBWon{=>fC_ZIa>?|6!w@=+h!F@ zB>tdshn4EQ_06$n+>NGASCb#;HH1vPM;^G!yo4)AibbuUB_1dHhfQS6?F4X6j%PSmC0$<%+Am!u^i?a& z`rm(JMl}u#8gW&MK`WT;0{6&b!`@1fIP1df>)ln4`1>d`4y}M=%6tea*v=-M;jMq} zS?F1IXj`-Z-F+}vsua};m>B{CfaJ+%?~pdB^9nS}Q~mbbST~rtjZdUc=gbzmh~C+q zTP59hq@|h1mjSU;GvX)_4(~Rj<|OhtnGl6J*Cb83`s)!gQ+ht^tVoZ;H9NaF*{+*R zO-LY0Y*=WdWdiSMeD%|8FgveKAfW#3Y3r(23T35V0)Y(Bz??Za+LuA)9V?=%SpNw6 zIT<=ZM~EBN436>I_6__enZrd3(X6xR15HTm$;^fKnt?xN@n!i<$_j87p1Ml`o{Y)1 zF&lDoVb6YLgHu<5{kv8zeF!f^kP_1~}P3%DFmou-_Q3M+lg(iKFhBLk8M|HHhy#j20W? zfs6#dc7P~OPwp{RzUr9qf4UDVnPPNUDWJR*UI${p5~?hH*A)I}M1EVWxCh)D*=e@i zVdbBVPTwv=%8#YB%SJUA6EmF3p}KboOKfo_i+>Khg7E9G+IYsEUI-orqmqUWzwoko zmNYd)f6cPiNl@+oWzYuh$Y$tY=mwJD&v?fid59Ievu%L+R7Fk5(FAj~_~la_&PBVi z%oMQFARr9c3RquN46J>KmB;;7!deMDx9)Crd?BO`cI$1+0(H*vHdsAq`cKkV|2X_d zEb%i4gj;98d5zcjepB}bvI~ovM}p{@8yT8xv_NrLYgz)?Y118J4yB=n=+lwJ35==# znW)VBv&`8Yf)SJt<8l@GO)WBw6}xigh<0?j|I8i8Yx6t9)5SfK8MB@_RJ)9q<-BN) zo!NdVMCdxpy7I1avVCn2I8e>HEzu#qdsQ#cocldn8YoPT_`318Y{*Gx1rWKDdSipBjt3F*HEzQ_gZdDCgsw!KFdt5682b@r zbDn+>uHnsO_l%-P@GB2utq|FM1EUH=!0}c9H?%J`yB6(5i{ah}%pvQB5VljwpgSas ziUdvY)S?^57k*}T&}Bv;rDgkWT3!T<20G|y2&ht}A8i=>lh+SK7(tiKP}>SLRm4OC zvUJPyf)Ie7PT(AUV`wjdQc=M}iGI!ngK9JxLJE6C%Vj z^4slw*o$@n9#dsp>xOt@1)HUz>QuwxrtSkq^yUw3M9*OU)g3K)SY}IjJ_|R(v~rgY zp9&^UF&2t--W^fc+KA6UHs8Q+gbdmu!jBWEwg@kmSr@rklV&+E5hT=W)$Xnww%!QO zHjGZ{wlP!CP0JXjVcKvptjeEqn~d+cNv(I=`S;p`Y~XzP88SF<1?00#q!ZR`5NiQC zTz4pxkpDr4T-^qgRHmK3ENc_!9{C*KnxV&p`zw_!hl__nKxF}aPA{7+hM z2wZIYtAY+Q$L4!kcLQ$SG`kd#h7y^!*{@?ieV3Tv5Qt~FcILsOf)V3@&nYBVP zLoV7@iRHM-t$9oM~y3E~#{5uStXqlygsXrrI&9F!tgq3Jv;-kz|DELk|K~AnO z>*KPP))T2DR>+qwR=-JtB5Ek+Epw1MqQ8VWju(oYVvAcQZf;ZGa4fJvf5A<+;5*a6 zkfM^N^knJt(>E4|j5mbKj@EcXfQBB|y`clKwtFN$FcEeD1mL$mMCKFu#f5bQvwCsI z%ptk7%sD<4K!P$E>0u^8DHARtrt{vQ=3KA)_2IA9N#n8x`wcB1KR6Mic#-cTpQw4% zwdc5Us4Tu79c4paRrAJy*?(OFWa3OHQ{4^!`(s;L&rpGEjJDg4 zvlT{|haEndyK66rdTZrx+5B=2|HFNNm@cWifuZ|bFGHLTZ0FD6m)QD!8IA&OOxBq+ zbSd<)7LaSn@Bqg$4F-Gg7}8$W)FNz=$_xtiM_CGKX>SX(vWw$MZCHnfhZuLOmE z>>H0ca@>UwE9?4kh})mBa!L;nUwIn@m|Bg?xd@7NFFU5pl*W^8N^4r>Le<0@1yd>_&A?-@6b>=#PBz;`3VYvQC9bP z;;0V+FWsNNXKlU&GPxEr2Y;_y#%snfQGc9<7FE)Be7k-u;D51k^#dPl!Xf+7TLIB1@oQ?Mjq3pIHN~2 z!+?dnOw;O}E|;8^r;8Q5v%bf(aD#cnK>hAg_AV(%+`LKcYx{t}yAo@&+kl_5$r{wW z(rh%kvj!@We9aPDuC*$#jZuO~V5ltA0!1#eZ%T!wTo>TyHBog4fzo3mz)&0FCTS+L!mpq0Zi} z=pL(9eMoBhHksj?Io5V|apT9<^=zzepD-*3{FIGh>yQ(*%j2N)G)H(nSNb~){{V8F z!0=W@*}->p(i-Macz70l92QJLxWJ(&_Wl8uz>lvT)6xMe`1^Q?OB>@cvJqfJc-{l_ z#K2gw?4DzFls@J{%hs3=`L*GmR7 z-3~?6x!O+m)gYp!lmVpQtUZ~OH6vr#a2t~s`2E^Rpz9HYSK9WgWuxsMwthC%e|%>b z*ecmnPX>7U4aqztkh%!Z>yQSJPT^*Eh^9$mO*>7Do2 zDW5u~DK@ykntu9hOpJ(#lTc0&*krcV~}FVcB1w!K5s3E9aVCOT*}w28tcZbMV{VUu_$ZPacA6d~3Y?SUV`u(%P3fb3Z&;uX20d2t;bR zJ=JGlQ>WU~yI=WTE~cfFwEz8tISksTix-wuJ4cP^^=Dvn$9nMoEs=|*ZK9USzt}{k z+81pQ3qzu|h)%bDTxuDLegQ#Mm3}~9x8DeV$O0TwEFUfr*Gv@y=myB9+vm=nbd_6W zyIRKrZqi-9R{@HOu4D3*0Nj>q{{hWyyVO{sr?8tl$0-!T9{y;&b2IpD_=;SQmM0No zye-$aP2QuCF7olLyy#u)QrdOh5hGpMq~;M3*7+R31*~PMWkj%>V^f@vBAv$!3S9Yy zO?;SPU^4R{t8sG}jkM9i-PlrxIu*y0sH^o$xvktGRPf`To$yLnIbLKf9YCAVOV6{_D_Upa+S2sFaf>q5eN>QY=zMRq zw*I_P8DgGOmQorDC_f!{8QU37FR-m(l^xo8rY_xg7aU4{R)24uQZ^9*2e;xcJl@>h ztD($9?*Z(_gdB8MeZzeA=~O%sk*-9bwz5@f3<{Appyw!p&Fsttb#5>K;+kygJpZw{ zEuLRCur?B-o+g7&33D{KzM&;NF!|KfoR?NJ>hjn@eg^=1yQs*gb-n9>s7TDhnJJ5I zdgrzOQmm_6_X#{Sx~=K)6aV%g?bf$a>cRZooW4E4tUrJ=Qp>`Pejjjq&6ox@ zg4$9EP0U)`o^#^vF=!X$n#~BU#Ric)H6sH@tb^OKSTDq^nsO*GO5Wvy*(JVX^4|1o zg9c-RzkEL$S0p<7jSvABvffexh!J87+{b{37nT@8&iv%iPcZNt-pwb%4-nAM;kd4= z%)T{l#7oC>?&j@1(oDL-#y9vvNkQ6Rc9E$M?iEy)G{Ch``+B{xJ!i~4ApnRgJ;%6$ zI{VM{;8;m7n~-1Cz0-ql4HuO#A`Dgw29I%pYi6SAKF5T24VvfhKqmv8T3_iPE4Ez* zZzEN?EQ7yq3(6EaK-=e15M!kq9B@(l3mBrNd7MbaZ&5)te<23OoCS?XRK7ijHpLTs zK?pK!W^;%XtA7R(F}L`!lD6b`dDq3$Mq6K>JE|MUi(O=!05edInf@{%6$AHGSQ@zY zVQ+i#$c&M-&|L>2oCs{`CLY34?Vm6eFo%jEVusxTLnJrqJ!Q2#=x7evH&_}V0bdwm zy3vRfZ|iiw;pPSA&4=9w9%UvE4~+5jx>ZdLuDxzqfYXD&gi&*Tr>=s5?`7pKds5a! z!29U0w7+YRD`n4|IXD!e+tv;tV)PLZu5LeP+g*FlHa)~}IOlvZeCJA<&!S`kl#VSG zwtoDUlcuQ)1ZZFqGqAVM9j@8MYWbX-Z$Rb_y+Q`ol(9Hm^G0h+BqaO<3byZmohgdW zRFUBwFJ$O-w+Od4;7tRR(Tf=M3Id%XiJ0!Bgw-@Nobd$LF;da%_sby@t{XxFSF%QM z{n0P)F%q(rY}?%pksoFoG}Xe^|G~d!YO~t*rEXo*-VpBD4g>Q`ehq96s%PAG0)V%f zPk5~eEu>L5?%Txdl`!B4XKoxpeg6yHvnHe!lGeH~W+&L~(F)rnMrU9*v~kzI>3%M# zlBR)e#Bn&p&VdeGY<{l8ne3?K!SIxae2lZDF;9u+W$EOpCK{WgeQ`uGme5-d7N`k)~DSU5eC5FwAWmY1|AubEa0IK4U{ zGB261`n)Q_6yEcKHX6%{wVq!Ri`G{;2sm2k!c%c@1ILkLJASNmKQPaXl8H(Cm)>Le z>4}D>(YAWD{0a?0=W1rywQRL*T)%V4qbKBs$h^?i4Pn6nCV1_riPH~p;IAy)2?5%t zEtyaI^bY81OLu((My`Ql7uBv|Dt(kW7x7)$8u8<)U_B>%#eQR7bC2}4Br#NOQQKU1 zX09RJ*^g$d0wb<=elV;wLU?x$8$LR~P$`R?S-}5cTUo=Lv{m~b!}a6r32I*sX;0OICeCA<#M1Bqb zv$azU0~TjiHjMK~{}gs!Qnzde5W?*bZj1FfrU`|Ag-v~88j!)AJw-v~>7vx}AvWf)0h_`nq0{DAb|WOXZTO>$E(ON^0WMS9oUF6wFb^X0 zvVbMVGe*ANoZ2`0v2o9;dy@8+o?HscB;{rT{X1KU6@yhFYgBaQXu zefl+{^J1C=%g_jF5VX$28OqIn>GyZ=eY*?9YjE})#%mmNhSUa(hs-3B8Cz}=6mNMS z_)*nr4kh3JHD}J{L+rf2u(u5K{WXOvSuS8*l2CI{L!soQ4g3eU{FR);;9hII$~U0| z@S66VuXpjaGbJ=nR!0Hd=@6i#kaR~~R(4W3z-<$6TQDqxuLn#RL$XE;q6vHxFX4LL z`)C$bdpcn1?J$q?f{n>i?kQ${rX14Q-3+cKFU7qvGt{JeEF981B#-XJW}~vm*#_iL zK-(dImUn&iS*rUAFYZm|A#-TdUBMRdV|q=^N4P43D(7aPNyPO0;G9Q*&a2La#;pmR zuc=@~hDswVS8|rwZjgpQD}jvjc%kilcG1Oq(G`D%s}Rvm$nUG#OH@)q2X5*BPePrHYYH0N%s~R{ ztq_bmLjD6gQ9`<;Z^5ow_8*y!SNLaC>{Giez6g z0A|5Tc*nOY<`L6jL^8c;Iko)H0N(_-`El!m=GNyJF>uxMCH;C>!$Dvgh+_}yjyOsE z@k6!6P;bK<^T6mOJDM4D=`vIHnvid&ExS)}@b}oZ)}+c#>2>o>tWAP9Lek%e-?PxW z0JQRT9@mQMHUTfG1WmpVF}W_rW;9!$mo}j0Z8wJaUdH!YH?Q1n@7_^!&;vMw>%5;p zCG_=o56YM`%95D=erDFj)%TcaA-e$tW{QAuQ&qit35Nk8grV~zC9;IMGC&5o9+CbE93XHXrALAb?o91wH@Bm-r6^lbLrMkgaMG#{Ap64< z{dh2L48pRb-UjHDQ)EfuZu`|wQ%#x$$-_JBU>@KdJ^o+v0ud@ zQC+6}w}e-k*1y4NLSRmXRYcvRW1&`5RI+TqEaYjcWR&nVABNuE3YmO&?8A5ZvBr z#KhDEe6+lu20bmJ+dSa`gu~y5Pm@|U{?nG*+t#zE1&_p`wEw$WIH+XC8z*a?*z&5Q zouA29)H?PL1MOwnUm`P%!^$+;)juUp-T3N=>*IrlQ4)3K+1EE0UBTVZ3kmrW+M|3E zX!=poFL()X!@ryISH`=)zuvXCmaj82lsfq(n|1l;_tNw^9N?I8v5VvGHQ!Ss$c1+1 zknynUSmI6FOq5>nyIT2@^;@IEdn@0plt?`h)BA< zy0u6hnLPq76DaHzT^ssoN&Dn2Mq0H&gf|g(w+r+wX7&_Plsi{PAA`~fX4ne)uFrOA z?Jk9D8H1bm+hEjQz;anwGp5~1UyxD};Nqq4v!D_^r**-%gtnY20I}g9ZnzL2v^gpidLfXpjBkzA`gz%1P^bpc^}fX&ME7S6LgFL3+yq|EW>g z(I{`i@%^a{35ZA607hLPx>FAMb!q>vmSb|cABQe>dx$d}3so)r1;$TNKt3ER{gaX9 zhnzU_D+fJ}S$toWxJXCP@x!ziVD>GRjKiGMgodwrjpM!9kB)EIpHZ|UgH8jupC(sv z*nIh&=zfOaM+!zzI0>ikPU=Nmj}-(B%q-4}h*3YN zZ;H8X4#usQ{vVpoJRZva`~Nf6C=^k$7AYa2WH+sps0cB(?As)2DBDbFQOX`!LZw@> zZ=-CZvLwq$_KA@tW$cW>F!MXp=llEX?r}fre%!9E>-|3GbzZOMVMO-lyB$yC0Qvt~ zJ>dmL1YeVCQ?`+k%UUE4aD3ABS@x{UQ^^Jm=PHr9Gb z!oF{9@8punGbP?rZ12S(({9E0P18a1owPuE=)SYuvSydkB~9wVfgE!U;_o|bU`Cu& zYRsX>*nm@(wv|dLPFFFlRv)I%fp7c9Z%1$lb^J8ZN7NQVb^2rj!-3iM8yl9#Su9=O zTR@&dejUJ3M6-H0W0jB@4%E8Oj>eNb?DXurDR7DY82uVtG}wzPm@`EdrbMeO9qF-k>$c7fG(& zD18>ZB12mIH$u@8W`1ctrjPL5dX==w{x@$oE_@$`xr+FH2<^Py%7QB8_8FUM4;g4l zZNk8Ce{WXZ_8uKH5jA?s7ic-=_+_cl=k445&knXL^w=xB&F<#{OX0+n`YG_CB7o@t zf1!&n)|!uNXo4I;99ojG+{{d!NLvePc&`}rZV_vnBLD%stODbl_PnUXv>CIsoF+Z( zh}Cdw#PpARn5*XC6}_y?f^!N)xghWa_?1Q716(j=9UA`Y!TKc^dT(Xy4er%2-B72D zh2^LRGevhC`&U^W6vK>0qonYOwH2-FZ~WY4(7dzNbHs`rk_~GG@C!SsSaK&w%`1g- zf2~)a-a6b?a+;r|e_3F)m2u14ofXIK%5oZaq|0_R^Io!!lIsoH2!~Mq)8f(CO(~g@ z7cfpT4ieX1@)KCC&=M|tA$50NhLA@4mqknGy6WI_jwAh|^4{^CY+19p&2X&)JIB&N zc(F4RsxT4Rs@)R3M;H^YK{M_r5xl+W=E2a8yl1`pkpt~w_lq1?G=tWU=#{ET)O&-H@0B(I(5kaN`=E%bWnIG(Z%E z9=`P#Insj+3r2hpfN9VzN54N^oc)I|zSr)E+~W3(5kd($-I4h$IwE?}kgvEY?#c|K zlG|0khb1Wloh3gVVmjUV`_SJAZ=Mofx0ME0ejo?LrVdL?r2TYgO>L6C50s$Y5{?i zLOt<=FKF1{_hcV#m*R#sdh>Z60*;-b6(Ju)Rv0UoL$Y$;PL_GOz50!=he(eJ_G&-K@!DJi!^fJQN6yCDU}S$UG*sH#}Ujg?P*;MJMpW zds(NLHy5A`3X}eKkb_5|)1^5v8UgOE=TK#$vClDGhmy79w(YJTCx~Qb^cJVS=CE!XvX8f4OmG_5`fC!7%L8 zMwtV|UY((t)8V^xxaVme)5M2pS_)#(4I|}Vuh!P%D*IV%UyXPB)fP&ncRbA3w4Hj+ zm}v37Nq4e$MZV3|mizat59K4#dvi`i<_^8nHk@3B1D>(uQxBeXBk&VcZo)5)g%HE_ z5kp-?`m@y>`J|i*^LjEpliY7Dwe=IXEC! zHVfclHt33P=@LajosV5qE2ycNU7zc5;q=@J*W4v}LV4M2r9WHxSBo0ZJe!3iURNV4 zEZO$qUnt>4AvsU)kcYcmkbRfCjAVlSveb6zvq-zLss7T{*|lT{icjIlYw;(|Y;#O0 zUlet1&2O+r0$|Xxa_OC#o#Y=;Jbs`e;$UN1v1I~$rv*r?=%j%)V*Kw@Zls6z#YtYh z$(J!}YI&)VOc&|2Im=CY0%9hp=BWym5*pCp znsX@nw3OTRoOPLJQk54Kj3Cx-uOH~SM;(6t-mtSxVy&WCp_-7M>b3cAn7>$oVx|f| z|6%seFZWxieuOB7dC$w786grxp}lC;Pw$G*cJ4`x2gj%K`m!1N0+hYMT~xvAL*#0X za_mG1%DWBo86mVtE_ResIpikVb;` zl-P|psKPNPifx6|<2;@cs>6o|bjoL3-W0CxBKqz(tJRB5AkI#?IsE#{>D*qYSlJF&IEh6PJY(46DW}Q-%hK`Vcf`C=Kq4$KOV#A zl#_iMMy@@{`JH*E#oenX@yaivQY_aWI0@qsU64#a7NUtuwX`@tQ+J{EM{m*koDHin zKXs!jb;e>S*Tj2B?XTwDDzJd8tJ)(s%+hB0FKyL62ZJnG%h_M~%ZQAS4XMf)#ziWn zsQc&D@0P43iqvDou>Z<>pIc2EjsmVtbylP_Dn)DX#bm|G4dH7zeSASz28?*;ek2~< zQU464#^&C1dD6!3izdw-dyJ+&vDPKp*G+nGiW?qqCbqbKB*|!ha{?n@u2O-6#iAvP z#-%3AthR?T7se8&&K2YxNU-?K87?jaW<>YnpwNv^S~SI3Z9ifdGT9o zNXdg*t65{ij65?!*xg3U7lgXNlfnExg%3Humh!q5RFoZ{qJ-7v_#g*p!_V`sWP?zI zYhf&ZGZu3>QBSKjiIMYRq_$In=gy466>$wFqi9BB68jK*dC^qcT`h{slWmxJ zgb(zw5q@3z7HYU{ph63U8_v;XW^Nk&-}?|*v_V*#?DA^Wh?y9{ZQ2J8f7566XDEtJ zyqhx2Xh{yya?!-u0{Z4lh*m+>=6jY2T5ZDpO3=36MyZ-{!Bv{LgiWPGVM>e_AgR!5 zV7>aP7&Lz=r+{`V zrtmjUw<$~1E$K~LcGHe4?AC$NkOFR<-m!4|kI$5ajTY}n8tGZ%7uVXGH=yaqVfEtf z;hT5C$j_Rswe4L}t-~^HI#5Xf%b3Yv>GtG9@)xq6RGX#`|N5}}RA`J7^|*gO`@_|! zgGt&~jv?Jjt8&Rw8D}>TS^8N!+$IwTJDhUYRUf45DIHMU66wp)>Xtqs-C;HGQ7m9k zg|bmQck3u=C?4@4Wa%S$0B5>N0vKpaUl~gs3GR)e7_te2ZZCC&t5BkfJReO)bB{8Z z)E?xTL60@^PZ^6K>jZNEud(1G0jJp)NIneKiQh$zM0YP_L#gG`85v#~0dEAaA->e!wB1I8>nV0HTL~3XL%@PwI|$yCqyz+U zuEg+W=7+S+%#)`h4b@FQy3gTepT^%4bjymG-K4I>RK!P@x&27n9$apdWQlj_^OP_j;+I_J zoZrMaTbKoUCwk(eec^yNk8Fi|w_*Y(^PLh(7=vlV=h=Vu;?sWqj|2nRjii{OrIp8q zl}WQ=pJrN|#j5NzU&g;(hMsz&{=EtWFelpTYRyrZ0~9|j{-0P@i@9C4F?b#s=1%mL zgJf5){glZG6j>!J{jMFEtpkEF6cu~)Dj8eHvXmMs@u^oR`xYa0sgb(@6ld>KZ#ET+|VlsQY=|3 za79CoGhmiodYu~0BQ_GeImu4L)|h{<5&+c# z>-V;LQVb8vq3hqKli$%0(ut01r0nK1W{B~(tYAr-nCBg8wt%)&AAR7qH?KKvWj7dY zC=2S*SuR@9Uzb2*3YmO^HL5Ipeh}3%E^iP6*NieJO{U-70s4EH(?%g^T_3uwdO3> zco&tr6j9|zi;meyVaTh2OPc{@N3Tccp;jDWhJ>x>)I3yC#vNBYtCFgJZl} z#%X>kG-rh!M!gJPu(rNuoeNF&?hU8CN8A~XI`t@8YIVc2*OX6b6Yam{z_wAbvUC3F zAZ0H1xP85R*0!w>W*d_i6_Q|9iw0)k*Dvhczch#AlIapjZ_D@mRNLy4eA-8IAvzH5ro%o&IdnRJFSZ+v@1yk5Ok(FE->8s>CaRCnGCTiE8`0ET#Owqke0kzpF}m+01W zMUaU`tK}}^o@aknC#+E|;rMZyg0QDn!dpWAog-B5b~U%(fD4S&5)87R4u}fUR3uXvUHp{YDa5dSCY|e}AKEF4oM&^eJ$7xH}g7UM& zKXb6-%VrX@krRRX6~DtLeqTig+qZ%#K6n>~&R@%}XEcxU&>DO@0}MB~c)($j5PZ8PPd1L?OmZ zJsoA7beJsK;@K*3<7MTXOl75j78l4wr9kt72-|}r19nUmoQ}TlpjN!c=B^%`QuLqC zIQ8g;_!c#wl{(0_qDWKNH=%vkyXP?N&MUDCP80|U=I+(VjktX)jK3R(X%^ltwr!$_ z<~Yq2&uH}tjT#kU4qM5~D(-+j9nWGP$jG%SKjmaul2m1+<&O(W8wYq<6N{##jNCx( z-KZQhkh=l6dE*>fAlAIvPTjfZN?jAC`vo1;CTg@hgtx+MnPP8jj_;oy%SY>j>aW<+ zgP3vX2;}onfBtgG8$ZaGl~LPLrbS9L$)Wt7kr~uDF2vk5KaH#Q)tSjS0mhj_j(1Zw zmE6RJ`ZyztI69|1`vmT;Jj_x;mCqo(c^klLhdI5nnLN`nz{-H6tOR&&9ZGcgsyOr- zE-g2kKVfk5L;nq3YkXv* za&K%2RiRN-cE9#WC7V39j~fXCL+6jCvL>}Dn1#@@%I-3jaFutlMIuhMph0s$c_cHz zzxFX**W1U2pJQs}g8BAhFe~S&$$i=n0+evTXQ}tbIWvJ)W|f!kNLvJuPkzSTt~adj za8lY5S?K4nN|r~}_E}KNTka!LOTS_`ze*_|Wfc}_cp$#Dq|mfPZXkNYbI;$HjH)&qF>J6hhomVjI?`-?O?`(CwC=-{|>#_qZT6stBZl-n-6!$B3+)qFlr)VRO zxnBh1D4%QsF97jnzTCsB<^6XmS1n|6jBVWdX*D43Lyf-MAuAT}q>3YJAoIkn!Qz4+ z0d-;l@!vXTgw3-5*pY^z8b9%aTs!kAswYouzqIV^=LdHbm5e?^z*Z5089K-9|<0Sw0Mt%Y#YwkRga1TPM*BT9C4Ir zAb-Zq_~&vw3(JU$P0;+J>S$fX(T%MzLo1En7iM$YY9DF5)!AF@3nroCd5B?VF`HrW z&k%c6$jQ8bIj;;Lm=Q8_t!(4NGe~04{PmP5IlPc7p03u(x-M5b2VYv}xAi()xej70 z2ZuiXlmepeFo`)SpCo2f3L0IXa`OvlD}tV$LjgiH@=Qdi>Gn>Obu;gpPN+tDSlu)! znWAc(WNE@DEr&mI-%DR$9&AE{X|b$FXWP|i^#bD&&A)=ku05AxiU>yO|*H}-Y)}kT-k9T4X%Ko zx&{eO2t34mgUpR(*3*?$KMpMDJ!-Xh+FI!?uF*VBJ$=L`ZBTP+g)K*z)e0lLxJIf7 z()CUL-1EzbK}$sDZEDE6#HSIW-8!Wy4*QpAm+S1eH)^nHkfRh%ut2Bb3{~P>Tt%kz zqfWZ!@X5gb+r@s8=Uc$hgXy7=wFFzVoEu-k7(+sJs-YYVO$v&#dHa)&fxca${J$&g zU$#!=g)U}7*46t8D>=ZYCy~BE=41x^Exy3feV)}7VRJ~MlKp?aT2prtMIE{JOAb8E zUB9|tfOB&a6_m)q6!JqP;RxJ~sdhgC# zQ61!*4d21A!s_GA#WOO{V0;Q=6-cAB^HNcFIIa1ePM~0(6)>||uF2ESa~^Tpn)m6b z4(6eQ&zlPhUV(RSs~R5idrmKTkS9>ggTie6p!kjRpb#{tb;-$$JJxk)gtMN>RZLKV zS-lGl5Wu1whiN02FxY-P&UfUd9RQ)tlzFOkudt7YwW@2NpV;3SBHbs|Ln!Ae(fk51 zBzC13j|*#iA~&O!%U6sQ=D@Jg!F`s9M~@+TtpjRr=>f`eMaAk>vR4B1V1IG?#>I(g zDsNc?i#~pqK-P6Tnj;X}>)WDLx4iqvGa|loU>1{~9{fBF)5B7G6_z$w@33p9uS#-u zEI?dU>C8&VBCJkh2bXr(umQ@L%{9 zeHBu#hR;11p#kh6;-IWU84uVV{jKr9xuLeTR9XEW`WJV;YftfoE!}7&zfXP8^xTKA zDWW4QoB-1}HmTGa;YY#gqW!2yPYnjpH{J~Lq>9ghFQnoZ75N9#KeNVQ(w=h+*Wua^ z7as;ayoMk3gYyQP9wlO~%AOm2&&NTN#yBEucU_-0{huG zgf8`!N5lpUl(?@Qzxmu5oG*9w;ehKry}g3tTETqg@AjJB=kHk=6^`mUn5!nT{}rcq zUF&{PKo^A?sOrt2S1Z=&jlKQXb7>{Hq%rYu#VsG|j0%3ZE9&}v!sk`+!J(Mb)4raHKSG3 zPo%p<<&&G@)HchA z^w+8kV<)f+0itE;_?3n6?En%fWy6bJhPGN$txUHDCCa0;sYTdsV3sNIWkqf5o%-*()q2`M%gXNDpoT#4;f&m5KIG8*7HVWqUkJ8BKYjCC`(<)Y_vOAy zZ*cO@)7UE*5?^&>xc9)$i^QT`mDqUx4(v$)jHZ|$vO_BG&6(I}7lr~lX;y>o!5XqX zB;r>G`uzkDwrNjs(vmK}hz9xyd#++5A%xBRFZMUZO1!}aG@wE*Zi4$U07C7`TR!+h zzRh!Mf1w~;Zy64-7|4+CNHg4PxUjh?j?w}xw~qn&((_P9ZlZ&M(2b?_-{T#tnj${k zb(LoLpsw=x5M?3v&FqY`$<*~qsrx=NQ&5x+!DPbDKFQ^jJi!=g0|Ydqlt>6O|F(G` zR(2QYmh7X*m=`RA?!slPfZX5R?~YBDy2G5(eI{qCw!rJdI#z)Vu10w?2=H27efE*` zUXhsjV$Tv7A!^L*r`{>)S~^tsuP8dkG;&&a^UmI8Pc5%OQeM8(I?$mo??HM%+FR** ztH0$#ysht)j(NOUTA2)t!1=8Z;rv04drVbbC-qa~aGQ75iNpx_7ANYaQL=?|R2-unHQLerKPr zp8gGGFNUm0?$s5(M0hH>Y~4(j60G5(;etN4ztgKs*W3D>wM(!2W>}n|E9w68%PZYd?s963my_hD4xwpQ$N4^wkF;pD5pS- z`9qjvLcN0lh*IubG{jS``pR(2+GU(~60?;-H+x?h?% z$~ApXK}gY=vp<|d1!vh4Rrw8%{X!3;wT^zE{QCQ5aQuwOyq=a{222y*06Zj9t`W97F|S1ngyHniNoG zNR82jopMebY-4P9$BMu?3p62tm-EH1&I05c?>2ZnyDg9J$JMKP_$u_@@g`S1NY6Ku z3gj-npFWPS6XWX^;daPTA@zT~Ur$JRIrJYg5H_<#ux#7cK9vNm>yM@|%5hLgG}1Sd z-9G9c7}ATd65o%Qn*3tB1Mj}_FYn*!RLyom6~wfUK*sK?ZKt=(g~1j4>Um_%91-Iu zH|0H{>18SH(+VsGpgQM;**$59qe(|M#BE44?;sCej8ZXYkGZrQM#g6DsMtvE;JP5I z`Ij?zE`)4$_@@COTYs=;EV5^I_mfk(Kv~%8W#j{)<~WpYNxm)&if!1JnFE+1PRc_) zBs@Z{3t--hzc=K($cv&c28ibF6CulpVD}Y^E-*2Q2N7#OVZM~nquw!n z`mX8Y_x|B`s(d8O4N14b_jgsa0uAkw$Tq!8q@5F>Gg8+5_W{x5ap8LA=`{d_C&M8W z^kdZ6;34Q|Uo)Sc!bqOLGAvmYq8`DLag^3vDq}cC&H)`R`Iztk>PE3L2gxogG5L{$ zE{y8;Xov8wA%(9npP;oI*AdJc_DyQa=qsY<0z?I zsv_{Lf5Pau_5!URh$#?A1|7aZWu(wh9-2}0!vmXPJ}GPP5xcOKVU||Vl-^eLhAiHF zKmA4k0vZ)K1`ErP%V#*``0iqss<06J=1^!BbrKCYZ`nNa1NUF(YSldjg zs{6u-Zz<6l!|bBoOc(D7oCpeqtaD+6vk(E9h`lUXD(QB1;ldP5PBk%61GWioN_jRm zNhbHVvl9sZt1CDIR-y^(7(mV5v+dr`)5u6e9V^m!r7dEe|88*Lc7Zkvnlv>!U2~PL zERH?r1HFLmmm(ZvSJ5i$TBFDBkrXT!D^arirl!j(O zY(hCtz6b}*4^t$p@rLs?uw(Az$0-F-lFT7UxxqW*`7nHEgi38;(Q+nA{bCWhgV_w3 zMjfag3j~U4hcyS0Co)f=>Y4|~(4IkBxBeg-tk}clJEHZ?hy1evx_Az6rTd@gvz}4o z=v{%n;y?ReD{ewjFa@_x@FI$z-l**ELiu%&Z+p}(FcLXJd&~J|;IMQ9{2oi-5}feQ zuRuzk)4O(dtY2u{Z29RsVPogXs}F;|RGn zg0dy+09KO-O^Am(Q90xZbG7QS9;rmr`5u17AatfGL-Xj~PyOeSeiXy-i^iOY0gi8_ zll-w%u>SB)taEshjQM3ntZabaLX2=r_s@=DvQ=ZRhqe$=q9OS|Bx?^BF<01 zxpEFsB$s4fq=dSd(++{jslzj)X5v$!1BXaHX>Z~^JDRf}Qo)4bAoF zn8qMH&iw5&%!h}E(;R0DLf4sIou=-4cq_>h zYA2)QjQ=`5sT;kkT^ihD=UgnCm7&-9U~}I+e5I)Z{T(x;q&db0`q;5cKSfaxUlVCP zcoyn`O62Ls6Dm*TAjcmq*SUvn?v-UfoB4Z1u~w#h%Iq{9S^P6Qqvd`6+%B&C;g{L)w7SoZ0LzzgR2vj29MhVH;m{OO;K3BKihh;bqOp4nt~*_b;|> z&(M8vBN>XJn^3;rN58IzLVY=7g_l=xXN}wx{vRR^ziXpx&0`oh4V+r2j|kQ7U_scI!la z=!LYB?**yF##zH&KJ?qk7>tN{pcxQ>K8iYd1;Lr!Pc;mp8~FYrLY1h6+z!p_0OOiI zg7}nsV>u-Zt(zrgB~d*%59p>dxV+j7&2J1ojA*16;w$)s?6Zp4;M3Y*#DB6QoEht% zNarg6xDH4}xZ3JC7My^^eRcdIp+~UmJB>5)RLSjExy+Cj_lvT+^23Da%lpJkRJi@=>i3<8d)rA;2?Tm33nic--5OtiatHFmd z-U`>;(a>hYM(ANJe*m_$vh{fKQe3oc-cR4h8x>{#1zm>b*Uw^kW9=Yx;=^%iEo{xZ zwZ*e<>gyRPt_?E@ZzXQ(XdwES`!xSZo?g*pNvuWfBat4OFQS$D=A|a4sR_o%y?B}B z_0}#{VtyFx{4uL<1lgn1U@0c%jZKhz_aibi8V^zSMbUxbl(7sY)Zv&{n!t@H^(Auz zGnf+#&^lPHSRuy)@_6UFg~AJkVI&JEGW6wM*p*6rbJO=bpj4C)%;;p!U?m6NpSNT0 z+s|y@sBQ#JA+yqUOOJ;4?Kr6ppIXwV&Syxpb^&s4zhJ6I>ASh`Lf9rRx+}9S08Lh$5MGl10#qPO9_X1Jw~8 z+FV&K{iBMNZ;N=|ai>iMXsum6!Mr*VFmyIsXxU5>VbcJP9 z`7DgS=>sNOfY%DZNCqIv1)Orwy!9Y~b?vtU_>~`QxaT=DWg?+)2X2mb;D}Z{v5(73981#-z`^s4tw~TpWKHd$Yv4RD1%=H zI=afgk&=RL>bt1w;(?kMHf$#C8KNb}-+FmrKNTy-$Jshq)c5`zKkLpR5;zz6v|H|@ zl!W{1jO>eZ1Gm4^y*)Gi?8?o<$v4~&;OQZpfWG711TPFZz$d3Si8cT#+r0byOu$^5 zLF#jQ$C&1n_{|hVF?~AZJ!|;ROql!)AzRFCr7f=P?iO5!h-4GBQd$@^Ix?&Gx^)oU zWlUIiRd|qmltNB(lFW^H-q+GEOLH9$(i4kqT-XN;#Kx$dtAZDYDD=VM(9IBXQPcxQ z&Fv%Fl!XLwkZG5@L;c1YG@ht*Sp{+|pvcnOZzjh1yJAd$M|{RDu2K00_wD547w^Zi zXV(KI?0c+-RSKKSAOu$(`r|yuAL%wViTV?NNB)jpp!sZbx7Ri<(hVDyHQ4Wn(H`C* z@iP!~Tm5UrMf~N3P0B?-9FfZipyX4aQduin|I@qQ-ca|qc#BvlDtIp?T5TO`;yoIpsHDY*J4WkKdS{i(-F z7?@E5>|@vsoNsG^bbUPH;Mh48Sy+9t$4@gvp1qjOC2D7EBV_?2Su)zFuw5vdabcPv z-Mlq)L$hUkXY@Id)!~fp)ns$|JDrpKvW9binjpT>^w>?GP~I~4{h3@P6%}^@ zSZ9me@{zq&IzNUrS}`+6V`Z`5)JL=8m0=s>;Nd-wn<=iE!#-AS~~_q>Q+X_w99j5u8*b+ z@js@)zC51JkVTKB+UFc$u*F0QCyIy5%Np76?QQJ@|1IuSrm7h10G=Q_tg zZ-`bQxNKXG_G{d@A^8bg@!Z{^rZ}N)9Y4&*kD=t*M)qFn)PmDJ%7R1up2n?uS$$Lc zei4l&7o1I$HXc=`>~9ox+72Sg?BWunb9TZo3!>`mrIou#L1Al<3xWlFFgiO2gO)XS z14`i3!)_1G$meM{^)W&oX-A4-*;>_1+odVVh69yLuEg1$#)ns55>}RMUlIs~Jzl3~ zMr}fX1#I|bcYahuO19fbu!F+RqvQj%Kaxl${~k}ra80wsc{Z;^h_nccTq@Ya=oKyD zC5X9|2l%?nJf5a?ECQ2YrtLOq3ZdO9gI3&Lxt>RkwCj7roAns6@&_r4MqLyd$(>_$ zjfTT^pcw!REp-zCOvi(@CC z6O&MNZQH|%)rVBf*;W7S0;NjsZhv?1TB*Zit@RALr)T2m=e{ zS|Z>u!}I>DipaThvU$qZ3^9RK{HuxYGPrRAa2g^g#i`|4lJ^4^KwifJD0M7gXINP$ z(LRN^V)5xc87DPX1Es<&PmtQ`dNT|~Vg{pXq=)H5gFcYVDNTW-9%P0z3e+@$UHe&s zgNC%%swP*D64?55X^xa!fwN0VBl@!D!IEolwq+gvbbC8wzT|nA=Vo?3LH^OmMlELP zXL4YFWcYs#;EpZXyI;KQ7O<7&k2tGIM5(|opBWgmr(cD|jZ%dO+fg+AsLv2n|ykkqQbDRHEKr64ul)1;$2nNxJ&)!;!Xl{>YdZygX? zHhZah@DCrye>dz+XcUQY`mI4%BNN=v<;`tfJllKD?8Cu|GIF0yrJDeAq9nM@J-g6M$WikV7=4X#5<&)DBjA0lCrrn5aZ38$T}PtQu-{?K8u*_=%ZT44#^bt zEP(LV3^A^^p@w!VkfL0KP+(MD4RGcutZ$Oz)N?@cd$Z3!+W|EH2IDqxb-pVUGpf1W znS9|abyhGya~RdFN$|D9}ns7ae#Zb4uo1gZZ!O%nILXDw_puy?rNeX)VY-(#iLh8Y}dm|E0FxN9Z<2Y#Ps&2x@bTBtsL z$DmZxH*neC0Zc|@{uU^nVF^Vj#V`Rx{oZ;2KVnLUfpIMs{i(tgRbRn>y|nNVIL#}_2N6Ab}GgD>zfZqtvS z`-ifQjdGRVFuDRxo%NV2EG%G7)>XCl;bx>eLffX^+3dqr4F;%t(8yJwS17!5%~L}c zxhZOlRpnOO>$R%um77US8UHcxW(>6^9e~`kE*rg=+hU_XuxoUbjSL<+93_+4V*M8(a|Iy)$$vyV?D>EHs`bQ4PSDXosD->3vNA7AH)2{R2Hf6r}AaiMK7a#p@D zWL{cRG46O^$KIW^3nByKqpQQX;*JfHBtW&4j#FVh7*W2dZ&K=G@0kqx=N%S?&y1s= zXFGO2evJQ8WrbiWb3{V*J!_?oRb|Kic%V0c`2)?L)TR2GSN5fDz9x^61?mTzqjxYf z7k=KEV>Ern!gG#(u_Le7V?+=jf6aWTyyM#)dVc*L|K_u#ah%|$K>g0-XnywB;ZkiN2TB=o3@KfaxB~lU3GSM$7)DY_#l?1 zKin}LQnmqR4Nt<|sRsIHtERIOw=?D|Y4<-~AB+;I?4UiWFz-1?6tF*=!g%g=&xCPo z>%dBgRMf`b*Ci8p8G$yMitCzA-u2Tcf}ymh|5@-+j>WFjVk)Wod7T&PV>DK=M&GZW zPsJ+-JG#8PPHa@(GcVVUH+B|p-;e<)hCY-l$*@aq{Pk)b(U1*Sg~As;CCcn~7y;t+ zMvR)r7u$kyZU7#`>D;{ zDJP|Q^o&3V;WAU=)m{48p^zB&6@Ly{2oR8dj`i?_VNScR)h@1x0Y>Tdv*0Aq3Bms( z7L1@QS(>toGKQZ#P?SJsN0-!^F2S;n9k(`}nqC5W;@F%uufAfTd)*&$2{IEmrk%~54Kl?b=1Ss?YYWWeY z2X6DMBM^GMeA0B%b>OkVTG>hy3z1VeSC%-IQMI@G?Apg=@zA{56JZxu^7VpEKPKb0RUUsgr$~T30ia9|`u|VS zLWGH;4p#;vd^lve+33(uCD&XUc5FyF5_)FmE`H)F*%%(a)woqvI(wcTrYuNnhb zs4V@*|Da+fk~q7?FhW%}ukn@IHI=(Mnx2o{#tjm{Z>JlbNSe9^f%5{y<8$yd*oDi( zU7MRmZ`S96x{IfXghwKz&!=IhQOSvOJO6O{f-B8>(vRG8|Aq6*6I5)1&91p$<<#GS z-|ysE{NBp*x(`CW`=s zR!c;xbp4O&s*7PH>%4P#NU~gViQ0(nqP8{YBK-i@%>9|BGK1gP3FuFPMU)5(W)WT>u2Mb)x60;Yjg; zY8FX%XN8bEJr*je;#Mw6#0`WNF#9X`Q9g2S|F9Jrw%kWWDo^wuLf9P+YXJ^_ANy-L z=B4fub%niDP2ZSp;EB!(W2T<*B_}1l>ly8QW2|5_8tZ5srO)_KzX~x{jX|n{+d~;* zky_(e=Zko8^dMI$pm%IGH3?vrBPgL}w!<_|nZ1roAK=E5LU5W)uQ647Em;<}?qV_z z*`T1vo>a67enoF~S)lm3a7zU3MeipljFtkB`ze5e)I$8sS_f*;`sZSJ7u(RiQ%WXarRis^q=Wq zfP*k$#qNTbRoO84IuI?tUA6d6o{Ukan(mz=w;EoNn0x_vq!=b*`vgC5)bvRxoa_K<+1G)kO`IQd?GMOw<-~^!$(H)cA zg!cwW?dcB&cVI`q-dJ4KDz-CZifv%>=%ZO}_hcU&MCE4o`NB4KV?J6+lHB0zKo{O` zk)H1k3X6#6dIw8H`|m+4Tq_VVzGesI}%v0aPAvgWVa7qDiEpy7$lDDJVyfAe5)?y?I(7wdLFL2<_RWsY&RP|=Tv zj$7Nm`CwbalK%vo%Almn5?=!2?@|YI+{JHcI*>wylr+?8Fe)Ahom;Jg6?1u)-KMe{h7TpV@u&&w;1~ zpI22b^I^{v_dMF@SLYdv+=b45^Yk}=YyxMUQvHo3-Esc;VZYe_#Th+Xg~H?P){AnP zeZ9CxmYd1<@TW?B5fkA~-QT;EnNuk#k=sS~`1;s#1P>VpARf!pfCdbjxRdOZ{4cPw zwXbjUtRJ48=r;T!?|wx;nR9yR=Pc5mvWsxLH1Xwx0gIsG%2?L)a|eRgj(Xi(Fd|va z!nJE)V*AnK42t3VdUHDMcSe7XK-daJY$mFFmygS|CrOMeF;5_P@Q zOPBZZEN>Zn(y&8P^x+N-cPK{`ETuJ7V~_Qr$Qvi%1T(nV7^ zZyokRw4-kl%z>L}Wg7692t#fepJZ3tzSiiZ;oO8~s!O29rCoSimLoOt&P&Z|`(^2b z?}b6qte5#V`<2JXvGdEK922rKWP?{2q`Gz%T+nm$f+ufTtv>W=M)L%WLzv1qN*&HF zy63sZa*23ok=dFbwQ@3-ZN!S(WYo2yE(kf5SxXe4CJfxNdD*V^zeqscvuCnO^~WQ2 zzZyV%+s{1b&*>?`uTIFCn>Q`Ba;j*FxH=RzcA`NP(U{*&t6Htr8ZML)auqfUu{U(D z@IQ@n4A@>|9~0k*@y+G^ZE;eptV+P?<%OmRqghx&gwVENe`^~^;Vno z=@hW{RoUJYp0EN|fA_2VcZWXxSVj&;KYn>+o@yJSKd@`C^>t+%>ltA)I@+AG zA34e~x1siYP3&>FD6!6n{J@<>-|46bS-rXEmFFeUZ}o>@s|e+IYZY6TO@|zH%{=*Z zIta0Kueafvjhv&No(lE_3@3qvT2&md8Vz(f*!C zMm!^wHjg<+jfn{FwZMKC7pM6djL1k=`M`#b{bz8LmWjyEFTiK;@pG&xI{b{+BDhk&{LkpC;NpPDn3JUq~k3x-|6F|LB%E zn;n-7(}uCe|BtCRkB0hv|Ho$rSzgN0f^3zfg%lL)R3 z;U@A-xskf^%{b7GAq#WOnMZ$9dzpQ+uc^nrMQ=0aB^3Ak>D3>u`zL>@vi%2jv#oF4 z*~|j=kgbwE>pQUh$4E{LJYN7bSCZqt*#+53XQB-V?rM)ex8V)G^O7%?uIlS-aPWi6 z(|go?w~fpWPzUEvNyoyMij~S}U~UQfZ?_79Q9K(IJAhB39cdUWe8Rv0SM6{39FV7J z9~)|n)>S+>Z?PO`Kn|JDRIG}9_4wC8D(&86`{jKFkBY4yHKWs3N{DrW$US$bTTCy| zVt468ZAO~YeqM&)f36)#1gefn+1OId|7~6zB8|)kxn21867xxr$#Svw&0o37mmjMF zOxY%no6XcN*r!nC^WIozGBlc^yM@ypH;?y5{VEmNx0i&~JpaY(r(WzJRJjj({9WqR zuYBbB?|b|Fy8P~}U^)KKK7tGxI%`9(0M-%5uL(ZHtq}WQ9Aw_z(nq3RpnAp}iMujT z!6FSu+*(1;d5y&!dj!c~9S&Ms!D0U!Tk@!8gnLx|$COM$ zwk6njJOJ?$KdTF77hB5@0`Gw6Xpo|!*AJ2ectb=M>-g;#|Hv-Y-^o(0sN%)V;%tdY z*%I=k7?~}EtM*Fkj3#1!b>(2<0-p~wMwhGiY}s|lmCEY{Ma1ESnkZJz!Ul!UhHh|< z8v;cu>mV90r1pY6(R^+xyO??m(B^5|{4nrIvm8H=u~p&qgJ1YM?SkO{kRz^j&IFJ? zlhxl9&BpNtQ)U>9tx4)j@lGQSzc&v|HK;}QB8FWUM{aHe!uHCm#SwS|98rb@#6x1& zB0QHMSvu{74Py$2RVbGLOHcV1Dyd3ERT=h;HG9leRXgG|^~e?`tJ}>Y-}*5HU`X4P zqnLK|^pk;|gN1WXMAl%XRx&R zen(u_s)(86&#Tqe))d_{|9il_{5UPV_*v!tdPiXr_s-5qSEG$xH@?wFZ79R~zK0!a>~m@+H`%HJO# z>Z#3V-kb!CyJc}`FSW}~OS>@r(YpJkmy=+&DhR8aF|qDdcOLm8JdhiLOdW_PIethTQ#zt_$j+yd zhb&c10g1U?%6Sa%^!>A+%o7IO%Q%?~20*r`jqwaiA6CfkV@JLX{13xF#)0R;>!+oj z29Fl6asz2iJ~4wpuCcejl#x#tTw*lMP7fY9#&(Erht_NLpaak?ir5v2BMu;5$)eWv?JP zgdTJhwGW^OVQcax-O&z3;Q<`1YCs67FfjzU*K?+zmmf3Zmmue1XVw3kcC-=-HC)f% zsy%+7<2J%Hy^S?*wW+@DXg*k&0sXA7Cp0gEjC4}eyOS&+j;6>jBAs{mChMP3o z;-k=R72w1F7afi&sX`7nF0P=lm*2=(B)%bC$6=wjuFQ~uF+LnNY-Umm0|Ey6KrVKUc*vJe0AJ%h*d$S1CcusvxEaabEPxjj$*t&eVN63V z->V@RkjJYh!JH8+5Q21cIErE_-P(Ykv2vLoM4i2JbDs<_09`I1FJ2o)AE|wIKY@JG zo!F&4pIyO@2h>FJ5rdJ~G2=wEX0x#QA3$@hJKk_cWpg>eyv7b+5=PHHxkIO@1DAE) z27>Nm$~yognLbmu-sy!qnQN%$saR?uP-y9zdlII!3SE% z0XPAGB|&J`4`Bv+6jdP=exJ!Fik9O@#PYDUK#+r)1&5{ijAB0v$n8J`AiN@6r08~1j6*tcS ztHDSAZbp2bBn2*$WK?w{Cj8V+MefJN+u$ahxUk15sS0v6V5re4Y4+GzGCqCQPm7cV zKScfEcgw90VAobm%PF}SQqPTdb-~GpNf8cK+jGxd9{gfy>&<5!%PlIBP|siipY^zW z|Nk}}*zgM^;Af7MneO+kcm`#aE2VYL7%d#<+tm~X z$ijOx5P-$e*b6M{bw0uDIm0e`9|7lg3u)2nCM$Nws;@yEucm#0l5X2gWS9yu;#QOk z-Uy@Gh1{nwde9wsO8<&3v3|%B9@2XdUXVPla>9`&umMiLHv3I#V814SmK8Gx;QT__ z7VNyBoAMkB*q+wPR}z4$Y=HgqTfNT~AYLjq?Z?wf)o^ysvBnWzEd zeupauayRPCR?mXWtagE_gT6fhW%D6daphI)V`Ern;n?}hBC zW04ZpX~y0ysVl!)Us}4%AlaU^G01JicMe7VT6{nhMJIobDZn+{+E7hJ7WL$7ZRn`+ z0o-yCst9t$#}@+NhUFtNb#J6J&^Ud=0|W>dtSe{nfv7^FJnCIPC8TFDiY6wzSM>ST zFObH10vBEzTo#rGPrdVNfzB=h5k>+rLCw0_TluD~&3r5nW?u7w=YvonMGJ5`K;S~# zVK(Y>Bi2TU+$l!h@(5hU-is49bE5EKBic%JI4WM@vPhd)Yx_|l%d=}0V@ zVUQ_@5yuxr&}yH(_;H@r-fbJrxq38mol7{dvB%qUdRrEeg-XG6Vak1sv|Ct(eT6feTdOSW;eRh>;fPtuXBw@r2-deY85bk zdko#}gIy@Cy+8XR(frt>_j6_5FB{$@(1F1IM0DnI zoJ)n-uf~q>I4j&l!w+MqI*8a)mVwTWffPQle+F38qfJ?uPb(v%5z@|vgz!it(LTat zQ+x;)q^@EMa8~nN$J9Q$cC0(<-F=A<23>?88Q_jWLP55aN8cGmRbV{37pi{G$kPyF zoWfzv-e1-yMP9Z!6@bntCAN;Y6mK&QetdIsCdgO|K(*$9Q_7>Um%F|GZMVJ!XK4fH zsq&`JutU!g!)pe7H^l~vsn`J36QGn z4|X;d(szR&w~U{<5u35~QC~N^`RQmh@y8p-L%fHI?T1&5?8ijxyIIGs&$`}q=f!BW z_{UibI3={96i5*5qG!`O*~0r6cLyOpL{gO~1sI9rjkQ~86(Yb&5$j;F7m$A2cFhd9 z2qJrd-+5%@OlZ?dv0*PYbqbnCnF2a6Hm|yz@h=42Dj#hTI{+2|=m<9I10^tiHOsBx zAxUpM-z@a7m`;DfSlE`abl*6oB=#nAnnCMBAC2hzIeG{!KELHXG4`BEqKS#1ODp+` z-u~QIi4nAFdtJoL)=UZ<1E?b!83!R?4>^2|x1aD*$;KEoz$RbaMVw&uTeqcqWD(Rc zXy6{NN?FPVv0*6SwLiQ+WdQPee81SBcpQ4kO?SQ~{MD)hrsr_Xw_PEj*{9-j6{ADD ze*SI$biDfc$fV8DLNm5+UE4#m@$<%t-&T2J)F{hDut$|SyId6>bLhZ-1M%xeYt34L zEp5ebFLdXhFxmSZuIuEbyEO{;l|7TlU+%=z-`A+e17!+vC5>)w)j4L0A!hF*&i9QcDMnM;>1OPDy&)>A(N_n!RX~oZmj$dW ztAjm~*{IGnmcu1>n*X`TkDuq?qddj_X(SC@1HAQ zGe9Z?RK8mj=gapcbkr|lZM1U5JTK^*=OK}aXJ~-cg0*L+-(Fspk)TZGXIe^~&{N&p zb&4F^Pv#Yt7ALKsKcEEFOagN@zdDSP-^k(RzL6O1qoO4+Ei=9MX`? zXS*Y~sTCNnQK-~0=l$rTtMUrAK62ts>Mos!fN!GF#ymcWUrJ1)LzwisQVpz2^dsf z^zGrzOOS`5Mz5i`Gq5~)awnkw?33ncCW8QOho|+*&2myZdrjT=u?%BT^6JsqYnnb6 z`?Qj0-pHljDeuoC5<>NkT=2_Z))^-QW{O|uYiFk&^Iol$Igg>hyaO;hmtR~0+Ic53 zF(BZ#%KS#cVCg6!xR;?UuK)TvJBW5(nCxA_{CM&$$<=l9$bZ_MF`37@0 zgo@wZjlbaoXKdPhH6g$)Hf^5}c%!#gh(e8JPuTzA7Y&xecwI>}-C(&b8l$_-xId6# zD(&iZ0h4Ec9MD^U)AmM&UAz!vhXZh!yB&AujM~}5kkImjfF;L!k!A$kT|j9y)NLDR zzu72~R6hJ}-7pZPgiS{8HZN$4NjR?_*}4w?`{h^)J*#S3RgLdw22F4TPHrSu5MCpD zz+RcEoxXJ(IB9?_8xB;}IH;=h94u!5P->6LY`*H0Mxp@u-qP}cgIHksNPl%n(^yr( zj(z#e;yT}uHzlcdUKo?gfKfcbmGB(l*N~A(y~uo@N=G>egR1sEIdd%7FaKxXCtZzipT3>bdqA+rFM#-K+6i&&6E?|Jr0sV?_&Q%<8f-u3eGCSVs@b$@?JQI&qhsu_T4 zz*FCqQUfD(V-MnF>jmJI31XUdARMM@zEv3@-mXuv-)epscc1;zYfB|37B>_U#8`-b zZT0g^afAi4rJ;tizdqYOrTP7~-(X#l(Avs$d8nx@`CbrOY%B^P?8)3AH;ux#u0^bt zH~k8Eumkt&53Uqq$bNP&0|h9%SAU6$NVd|Y(^9{%^7a#A^K6NE>)=f(fYA9Me=8{<7mqh$W#Z4I$oaV;Y!Exmud zQ>pi*l`vk^peeGes@QnO@7Zh*3ljz$CdB$6-Y&~6JpGgdUhp)Gd8rk2e&!v|yN=ce z6vjkD9Ct<|vg%M?Xt@MKNv9*QodS$iWJN+mM1}3y>!qociFPY-b@$sEqzQW8Wft8t zSJxSJwB~`mg80fHV_jd(ldlXskOo#xv~DDoN{QjEfb*U1{;Cmcx-OovPr~w&;$h*!PNMrSjT0lyT$D8cW2_hlSWyx7`g~JHo!FGuTKbkmfkr4Wv1<2CF@P zj;dk;L^{Ph?e|4r*O`}_j&&))35KrI(8NpA^cEmJneX7eQ{!J7wt{{#EA0Veg{Ag2 zh5izGewlQy#?>@gNo8Th((k}=q5}^iK;lP$fknQK1a(Rr$vplcz85eL9=0Uq)-wt0yy`O(a={-DUIOLCNN!ssgM zz4}6a8kVBkaHf!SUn3#Q!>7C}Uxpyp?SKR-<1(RutMXE9aE8UluJ{Tpg|}ByMplkyc37dQ{9PYf3n`|N$pIyc;8qb31y7nVSi0rYNW*|e*kr+2c1r+UqDli7T5c7lDv zP)e1%--W-al$w(ERj>w@23Std9|PE*@yFr*D_%Dow1@j_S^1`|0J@M_mVt1nBhd5z zOl4~UV^bHkv)S?~17Co<7z$P%2#Ra(`>4&HUPAhuZgbe~e_FROg@LJeFad7k6rdgS zdspfhh96tGtojUSB%P+}tv(UFR*a(-8bQ*B?&GU;6_9rg*-usr0i|UqE3Glc%nDfw zP&_0E*qQIYWy+kEd`!Eryw?n}rw#sS8tX$f_yp`IIOril{uV+H?Mrl~2bGq3j~B3< z6e~__=b@rYi^C#l7kd~~dC86V;Zx$3EeOA{?=yht0Ehl2DeUP0eyCuL8=nQQ@Bp$c z5jQ};jMa&GvvSrJ3{hzPXTRsd@?Q{JSQNi3hA^j6)+D$5V9v+_EE7}7pwX!W=~$J& zFGBL<5dm585I5L{pnv>;QA;T+_HzV`f$EC}s+)JZ_Z%$JW80Iq=@rgADfrqd0meW< zI%-25izxPLWpB$3YpJwl7$AQLRM7wx${;*WzJyNyqh99t9IUuKy{4cE{7CoPdaM8U zVMG&x$=A!diW2wDwN!7A=NwW6Vi|0VVqbs@I(|T>dri^RTUBu~**pZz5gG2g;IIwetP; zm=Zqo5@X@;uY>;?xK$s@YoIXV)dnx!Yz0n6BrRafCF-F{FBbYq5+>D)N_Ez%6s}cAzyKx1HZHx2bOv_ zEaDi}qcxAy-h73SYBHC_e<{DR35Bi2=Qr0+FsJ3>1v=+%#aJKGD<`yu-*2P<=1^W; z>>pBqO&L%U*zpMp3I#h5?-ftj$%Cn)wpaxwxko*8TTiyg%Ku&Hcun$tR+w9xzZqIK zjdeH+Ojq56vl1+rkxKklO#zK}0tTdH9OobnFQdW`$NtH4V8BNr8Dr{tZ~SuiGkTCU zcX$Ec_SbV7G%v?6(!B>i_w+SnMZY{<6H%0?23jCi!sp2?SccRy>pw(eC$mC2*opO5 zgZM39jGndP%HDaW$>=1u&)u$QRE+LNhsZyHtDd15nN*jAYRpwHVC?qp2Uw@)vwebu zl3+0)*3`cEFlGVGBfy>jvk361-X8yK-!Y!F6T?3GON~)qVCbGs)ew4rj z93wl&O(JThI-sWwI~EoFTK07|qDmn;*Mruwx?T(q#mJTII<4jp{h7 zDv9z#O*!ag?trWpb<}|v4q0RT=DI@0J>0~AoF7!O8GxkL0P@mPkaEpC;d_6>FAK6g ziA#nn`809!8BN50_FANAl0y%CPsPitRx4uax;Tf_yXO4=g8O3dVaEvP$76}kIArhx zZ57+Yq=i)Kko$;|IaJ4;Joet}#bFkN8#8#-b*mwIHUTf4@{@Ba*;!?6DMosti2X$5HmMtGFlk;JI2wbA*OoWVG; z?X2Y>&{NP>C(p=?+PwX$zh1V{raqKo$A<+Y(2gJs!enK}JmcM?ny(?isQuxkmG4ww zm|u}@x9uaqvyOj>73wUyhcl!{?dC}*Rkgu%oYKayZKK{19_iTpRJ{x2)o+pl3;zX9 z`H#oF-Gen|#2ynu>SopYx_I68IQ(IOeIIkQE->Wk^dY6C>x1JXNI2pBZW7n-2QaIh z&y5(Y2$6y*^1%SMo@Gc-I<(EELL?-t0%wC&(+xaV4e8|+K*j$7ESSf-u_!x+Atc-`e-wF(nfxFVBhY&SQ2y$`kg5DPxI$kr+l;d2=Zhk^~L!j(N}4`j``ZDshn3R=I=#VM8T#R+{eK_$C4in#L4rmfnyb zYhgha&`}gHm>nGa*$gH9gr3ci_DU^9KQt_wEnGePHBc9Br>eGMXB~+b15zD|S!Y4@A#CUEX%^ z%sS@_7xtJzKbKyv5z}0npFZTP)-Wq4c=NujP!I;Ra4fL}iBvu@cy-GO`fa>B5cg7t zWBz-$`YZ0g$|t@WtK-^T*!Yo0_Y3c$wJ0%8BGF?dUWy|Fu|NfgEChj0nyo;G3~2PW z&|TLbvl`_Qj@U7k`MvOq3E;|kYOkQVVuE+-!`!ydW;)59Wf4gGd9QVw7j$NzL;!&m zlsCcw3s`SDyl4n$kc$h3Jp}d7AS1KDzA<3))=)J`*aHAGZ-D31{?vw*Ku_-{wqs`oWVr})%R5PAM^p9P#;hL3$4cX?(JX^)*wJn15TGu?m$h*s8P7;OW9TQH@sg(^nknc z^hSW)hMzgyoS+J}Ly=s3h=6DXEG2Cg%?U#3fRKk{RL_|z=`x3rq=y-+n@+=^n_h>9 zhxvg&aKB3hTYs-JYC9-@b3=9tZs@?=zD+eaZRmb==M4%yS6u(~%vilY;}qhA((Q~L zn>W^&w>OT(O->75R#5{NEpm3}?54)^CWglZW5d@dj2Ec;we%SApJ!w2G$lha(bgSe zNPc}45*iGR)D}R}o7$dZm)sO4It&@EV?6fSmh)kT)1-eKt&AH<3&k>3>CKI;CCS-x3QsQQk*&}Ze0P{vgs^vraC7$dYwGlIhHRsEg49G6t8A|Z#^e? zpaN~HATY<{1XUK8;T$ST>K6QC+KN{;8<^*d63h+i#C`1Ko^ednI|^~dXd(x9QjzD$a);-3$&wA(lb@LN=qj(HQeLwCn%=mgT?CpYc-qL`-xS*~t{g1@S{+6q^i(C;Bw zex&t^v$J-h^{A^m+-|kVdGPkIASGgl>3C&tLKix#AfKnd^WSt?wb@+=zBlNI1i_fy zr7E}`@=ND2VKHsgLok}vALUQ`28GxB7omE|QpdGtb&6mKp6j8S6s?PpL-sKV6O%Kw zQZuGh`;320YZrD#%=3|Ql86!N+75H(CQR)3!SFjR3Lv)}{kt)F_Q|RP4c;oTPb-(T zVsc8UpYA@@s<&dDwCftvLfArY;`>&s)V;P@yTD3*;q`Qwj0zp zPWmo!i1wLm|B{21eoU6&Z&9Tb<6!tg5FYn`lr(AUA z2=Y7Rrwp(qrXzg>O3x-J{r&mM2^hXSGU>)O^#{*2Mk2o?rVOj4S08QDycXDr=$zB) zi~l74LaVr*xbD(rX=gK6E@3_}$#z#VI?NsY=>r7y92~=%@G;20u>Ra$tF?$p`Tktu ztLHg^%8C9oUZbf8R9lS|8yWbxfCwbODicR8d) zjWQqU-Z8l?i>bT!`MKbfHjZ%31Ct!xJ2|hj8|w_w&zx#cHwl7uNhf@>HG7sm z_B#;iq(QePpH`TnnPrj;bn+@BW8e{@`-Tb}iCOmHEzRj$>7(`UBb33&B?<1>cwbJ4gvs$b3^xm(-Re#m$Kc zxlMAQa4aCdk~!LjpenZ^X-iuM! zpM4ib3f)cwI^S(wMv}!Tf5iB1X!si(MRCKW>o^024RVI$=h*p<6xNmNhv2BA+_c8d zm~s+c52f&pQv^#HA+}2b|8O-DBi|Fw>5p=VPI(R0#ewGH#n{uh2kj*N)J<}`l+V7j zP~WJ0e!Ki-%EpMA1c;Fu&Ts9=Nyj6a_a<-dfo#qJ_E46Q@Wei8pVEm*5%ZOFQ{rYs zE{{a%PJ^UcoY|+eWGrnd7vBtI_5>a+4Hokp@ft9$uJuFX#_WSPZPUz?2BW`beAaG( z?!I1Gf5g%}7B;uKq4Xv8y}l&er=|%zD@J~9lD={uHXw?AF45woZ5`&v;Hx#rHMQl> z3KOkt^X78D3q!^a23In+-C56Mo`Nmfn`3P@=F5*CtQUFcJgCQZDxTm`6NAz@e29x2 zSzCXe+eP1XNLA%(3^QM zZ7+;3cr1>0&{voqA*udbS6!|4cf-6wRK1#{v7YkzS7`ymL|nJS-$?lLM%!{SrnzmI z0Pfp*>@UZ;duO<;d(7`z$$b2GA+`QDC`8lJwC>o}Z)GbX<@MO{$04uft~+QG>b1i2 zRxj)xf-cu98RFcPv=`Zg+sX9ISJ}V>4zh=WaRYhsJ=T!Qk2pV}cIsfVBAe{j>ze~! zyPKr7w)10&=S4ZIc|wg@qgHE1*9oi_7xi_ZLgeH~e||lmz|}7;X|*&>bxx5!Npz;3 z^CuJ$dwRw(RhPH#Jp-WcVSEeXIdDz(x5chnDDn~M>~Jrb?H#gWdda)ZCl)yX+wV?P2^ICo~ zcR}hs{#yJIyDjSdI~9m&R>TpdTS-U+X>wxnHKgl_55>_4RgJZ>g-B<8*eW7FSGKjz zp+X;XtUZg7<#lV(S|{j7nDPoE4~XKP9LP?U5d>50>H+br3UkC6X`bB&DMP1L$K{$DD!uJ$c|14*taD=D6URn>K+?Q?btw~awc$_Cpwl6ytRZ0fV~HgbBAP(@tPp7=(Nz-+_8Xs9FKgXo)OhIDI5Fj%rg3UQ z`##uNw($?8JhaaqVpnPb=6<&|4q3WuA$Q_875QXoNpaS9lx}xa)LLJup9rq1=R6V| zoy^0g!OlLB?3Kg4ZRFSYTiCfFzRkpnhC|EWK(LPadtpp%2~-SbH{Y%{zyTttul9j<`Y>2$ziC z^bI)d*O=TtH_w&yNlV3vZHt3`3|dfvd1}A#W|f+ca6joT|2Kodn4wgazuQg@a{edH zc3n`hizqow?#bp8MJiV+V*)Bc?e)7r!9K-%?MUnj-7#87LgeAi1}d^orrq%8WF*|9 zour%4hg~xVH!zrM<8njrhb6@#$?~rB6zOylPv0JaN9}z(7UnHwmJfA2HfXqqjP>?8 zFnvc@CGa*h3(+K{T(q4w_;6*)KJOFnDYsXtY52k(cc_OJ&!l2pKo8KjW}1EjA@Uj5n*b ztDgpMAjMgJNN#}luf2l`!q$kq+kFfYx)PE)h$*_nSY;F`X)w>;TUK*6sftGoXBi3g zuu?k=_CaDB&Ae;9ss60^J3V=mFr^`8{^Jbs>!5UgQemcOYcBSvLRm{6r888$>zXv~ zA>u93knQ1%&|R5#S|JqlSbIi7-fC=E*!ACSHD8tc5iN~jjjdZIRaGT{2@ih{)F8tG zW*Vd;@A6jqRr@oJqM?P`%l+*wH8Q`nj`s1BxqXhQOY-h!jdFujw020!i_7|6W90MS zk@`uvAMG1H(5*VI6*cjs9$-v(!h=^6J+UY{>C~(h3oHHnc-p2UwyGSkIC(?$G+8X7a9hqc|h{h za-!#keG!h0Ea93+cU)4)>!9=v1g_M8HZ4yYqxTXIZn^5YiFohyIHBgqZom4nA zu(B)liNww_QE3_3y!u3Ue}nvl)m*|aOX8hGh4FTkldea19AQvsnZ@)=>gHDi(V5p zsEJx*GT+TEpjT1CCcV+GzN(F|oU*8Nzowt!l99yDLA4WgNv?e+zne%UNzz)PR_XLc z(dE-PZbs>9m1)K0CdAZfg_LI;Z6t0l;cK-(Rk30M%hSym=8Nh_a&rU zou9fU0nOIfh~&-Ul8*~cl5rw=0@a5VFBW{B^M374VZmDr>PGB^!-sIIfSn*28^=bL zmc81~J6rbgw!fUkjg*QNvlH)lPX=eYtJA9&Aj~OJ<=-%}`KhfSevrize@fy=W4Uk8 z+-0ut*H)ZUa-R^1<`!H+$4ODn2(c*#m0(WN*Du?1HCpE%W1}2!$A#p}%`++q$zDOM zOFGs^&h>Rfc9e1EU(4|iL0_HkJgBH-%9&h%rsYWMNcUmZgFlzTf}t84M^>^Je+RgkQLXf*cb7V>n z!QMUQ+SLn7G|no6vUK;ymQg>zHYDL(mG}w&)up%VgQyC)y>VwprndRclwF6hI>l=7 zsb>j^B!lpkn?~bLCX7LSfzI})eTg{!GP{7cN-Fhq6PY;E;cPbE!)7ZLi!~@%{ye)9 zf^o*JQ^u`?9KDXa07)4aGf{sQB|32)I&QI-hx=3^9y-ro7~8L7?lG4&tbB;C9E3H{ z+Jfs|Wbncar05O#dtp-+bdQyg`0J2Aa{cpZ>hthM7YG(U#j0%`Cm2>gbxPRbM%~wd zJbQrb;rhL2R#)wE{_X0T(6A}0CCaM zQL`DB-&k6rQdWg_B1>k70S;)E4#aUEXeq)TfJ!a+q%YaMz|daC6Q#CH5@x>D1-BcI zRh?`-Ds|9!GWR!fU-UQ;Um-y!ixv+4gH3N2b=@@NT(mIt2`X)k*C{3>_oXiB6L*cd zWpFf&zPahf|6NpDsxx&MKS_;AXt!T>oE}>Sw}9iDpVh%)LkD5F?0W0I2LC9j!SXoX zzwlSNgb|2$ic*sC<|G~)#Z5rw$+El6(fxo$>?+7j zi4f925tl-EK zFX%uTi5De&vNeo)eNCefN?)95B2}3jj$xVU&r+&5on8u|(m5t`v<3Z^N}>#Z)qq4jGd@ac*lkllYfOP zpblzC6G7O%Ux8VUXRuK|&%$DpW0@lX_?Lnq_#0-fA03@Y%}+T&vd#6!5 z#sxHHIalMyr(JHM$;2NzYT!jM%9MVvk3qfP->H*VF0oXUJhq(=GnNDBnZ=_OzpSAf z49O(1+L29B3IL|~q>ANfF)$4t`iQ|Utj2ex6NVz2J}j})@SBv?ByvbXphpbVxcwV; zY4Utpk`4y0VZx=aFBo1z>%089;DYqvTp}8B-CjlyKWI}n{IDrGb~iFe#N4!Hd?5!P z-)rGG?TRm!MwfyEHrNqaLwkrVqBWdsvDARZl-2|q37f(@m+|nB^PPXhmh9ISo4QwE zKEIn-WfcCS!tl4;){_>~nB##_6LF`Z;1UetZzPI=l`y$vdVBuG4iHRHO#wVdLE83 zAgGM2Rtb7Y4(8im9ig6twoHD$uRafs)m@0Q(kBOW^mcO3_r0U=S%_1ZQ8nVOicOA~47iu#HoEk6z;%niiP7UKF=Ux=* zS8GkH!{aU2@jdtcpaz;Qh5a=@k{Xp#LruAcSXgg*YwIzFZ{O@Za#C#gU|&fqGNoR6 zdZQ#Wgi>gr(B+8ccxyxnAal4hV7x`EU`UA0!LflDyo2HQvEVE0SoZ`oxlF-9d!eX4 zyk7qtxoyW>eO>OPT$k*!v)Z^J$E${QGY!4LX;Bik0#{OU4N{o^;gI~Key4>xhUAk* zkeZr2rCJ3{B;kkm#fBYd{pKM?@zy)N#4}P}kYQ&xFJ5@`V)Dhr`}9V?+Z!c4+;twT zo=Y=#JjNi%wFpwg#+Iz(uKsHgZn|B3xlc``fVFveSbu5i5xD~g$jAi;;|JEMU@ka5 z#>D)d4bfdT-}F;cdeH^f0A}u1I4K*nTi0s>rZgF?bV zSlSBfqLSU>8p;R9KAt51A*N0>my^3N)A1-iKyp4<78m`z5&RLK^DDrkG zJVb|2x7G?0-jFZL03v6$go&9EPz8{s>I;xiBUsi=wUO_P#oj-TV}?JUCOT*0(;7Ka zGvbT`Br)=zJ?rqOat+_lSr|T#_aMqa!zdcdhYM>X^t9pTbAc(=axG5wPMRr2uzoN) zeS=I$z(nSfgKyZAcR?u>>`5k%V}b#;Iw|YeE+!0Fd=@lgK~+mK{P{cR9K?C-!-p%}BnMNqDGQr#eD@u%7zF*E=@Nkz=#j zwg~|@QPIQ;X^KGxY>!n_Du48^MH3r%c!vYh8j4Gw)Ji1}v(CehBBX*THX8{81Ay5v zxTX7I8fa9tbt>YdY4%$NHyCUqw`)glU#kD)Wq=mU9=ds;y(@Y@*K?A@X`I0_L4T%| zvarz*&oPq!p~q%sM6<4i7r%tJ|Fus4i=5^=)jJT7N#ad^9wRk_P2&Xz7OxyPj^Ew9 zxM%FkPNoq6#<;a-xPqi)bAKMI1{UdC%I&Vx4+W)$8xbRcF;_=zpSc~$&w=<7BVA7;M_qU@rQ_NtkvO7g|+QA`tG z%auc%a)f+`TxmKd&-eYLHo#yG@v3VKLmAyAtNwXGbp?Ucv}NxL@cH|Su{mJyRE)gt z-bxG>CD@D5xvgn(pSB}%#|X$8byU=8T=}rB@$wR`?Kg?X1#sdM^()wQOsmcEqF#oR z<~<+KvF*N3kP2#YWq6sm(eSZ|hCJdSTmb-fg;&zuNsvpa{c+1iOlkT4jR(jFySr`Q zpmY7k4|h`rvUfNDbTP5#JTd zeiKjOc&dQsVKC?_VueS*)v5gT!*cVD{<1%p;ui6}gSSR}=S^|F>qiiAX z2`cOdBp|}0mFofoZ2dQp?h4*@aklPcuxPw5zt@l)s zi6I~FNFu|XMPBH2!n%mb-x){x zWHL?=?T9-R2M3!WmF~&ca+m+FBuBtqReT)tv?0u1nC9j9`s8gjvbk`wV^JAu6em?R z#Jw}X`tO_vh@vl@6u9#WGy(EcGn1IQ56h#fI4xb$&FpUUWvKC;60WOhpZqu@4tm9t z3(Ki8+>o?>%P{KxFUh3F72Z?Q*oYe$max2C(i@k<)V<|3 zUS^yl>q{j|(PnFc>Z0Y(zT`Ir6=CtB$0i5l5_rU#diV8-fq9wjq zT4WRXt9Q%QFXqlEq4P#q`wL>mi9*I%a}rL{C&a&o?74v@!XNVRM$k<*!q7CYwYbN` z7fUm)!OpK&j#{*k4%5LRMB}l?8ixx;3V&Y9ouA@;P<6IecpWEwrn-fN-J@Ok0Cr;y zPWI#A>ml1C$3M^R!&0f+lYM8=0W?2nvHeHGe)OxoYO@996trT>lIb@9I1?7yT1jBm7zd`M32|*YAJdWVVmBmEoCNPF-xjjsSL%2gJTs1 zK9@$zKG6%ByR5_5y@Yh`5R!iX2#u7gG%gcXOXF5Rf6;?q*^B9Cccl*#3Jj}RDNga` z*>=riNi`fB;niO5U-Qu{4M?)rpsh-RkN@Aje3V%_EWnl0gja%o73mR=VhGrR;Q!$L zjkFN4A)JtV_*aCJC_0iKYHFR+*f8s=IAyUZPI`#@)8FXf4g!zjqPUA5?UFNl5&uZ1 z{?!x8>X>j!1?vHKH(OiB(U7c7Pn{4XK;r2n)Nt!_5c{xdyI@1-+FCg(3$uSGepGp}i8^QFn ztKm1}lh__SXdqBkw)qdI+DH>G!q+HYDb!oHiz&6fu}5jDZLX>Tm1VMYSWn> zFpF;rwqWLTkwXl1;IEIeB_6b_R|jE3t5M;yJ0JHN^5)Y2$JDpSGu{6GZ*!Jo$(cFS zouV8%D2>UnySkH(N|~Z4iEb$~wz(C`Vd+FC$GTMxBRSRBiV)T4V4^l>YS?DBvD5o^ zt^4zRJbr)lSpG8C`*mH{>-9Xn0sGdyO?~0LdUXbUj6Q8^!^HOxBCbiAKTc~igJ$m5 z3Y7-!j?dgqK=yh>WG@xVMJJviV*g&!Q*%A6j*E9+?n$=VV+N>r0@9kO4#!y%aj!2E z2Wu}GBMQL$e+h^Hey^9FoVn^dexMi%V?x^QJmi{1M&k4qThC-C#+yaKC;TSsAsa(B z)OjK6Ff>?mY4&xp{5lKo@hd}M%AaumgV6n|hi$dY@nmzuBgVGyq#DntjBE>r)xS)p z>7h9HsmC)x9Fh2HGLyiTk!@phT0~9JfncOnqdn7;3S=2T;@R!5rapdE6eNy!e0iB7 ztu2r}$!gl3a`>Ut4u*ac%B&^h81yN?FU>zEh~ddsEE5AZjgE^bP%Z`9^u}`()_BMr zO7i*_~Fd*@Kk(gI@oCyL4cW+CI1k^y*KW z*8us~FqI5r!qLPRY9!}Lf|e}CJ^jhdI0QhUHkBeAOJAcXTCbft=l7bzmBdzDmp0tIkF= z4sTbOo0uI?xDw{}+)p(@;KH^HlS?A5r-#X!#?PM(G31*Ma%}4|#c< zT;g&96xtjY5Z%6sskHtEqEN10L?J-eNgZb#%?_USbe}G`X|`pol5o=ViFHSL)65}@|eP?0uYmy0~jqGsAKX;C2mnx zb8#KCkc4wF^lb;!3S?mg$JUo6d$AvW36!C{!xih;aBo4U>3wt2y~0P&-u?Nb+^x)7$MFq8uwY?h*^m%sw0W@xe`g zd`U`te$Mpm++}3RWmHjR64D(FA z?G{Ng?rxTj=W`hziV4Zl>e6RHpl@XEd`TF07eA1&X&gqCeTbS-nTyB;*m% zPkL#d#P`#I1$HAw06;iower>QUHzd3g2ngrdCoQp=?jZ=1hOlqTFP5G(o|1X)FCr6 zuurlp0?`Sj$varVKFtB;$1^s^Ei|AR%2g|J z?JIUkNj9Jf$+tE4n6U8P;2QM+lX@)gFLanl$|4?y#!s8&NnagbA~O1>`!jhz&Egvq zN{a6zyn2DOfro1$B=PQEv^xUAt3IzRfi7>LKkhPdXLLegxr<4zX5=EWqA-a?+vQS~}gI z_#j5hL;Rw7@0aBELI3&h_^6MYF?o+?Vy5C^rZH+a=!u3aEo$Rwvj?a6{6Tt<)^yP@~!-_2DHsg1;9Z<90V= zGi_4eeeQ5UdBB*NIY4gk-VZFCLHD?0aTFaVv<;EFtn@Z@H^yG+dFuXx@6t#il+R4c zO8-u=MS9Lee?dXXPze`)7656|bPNYSiIu=1#il*@!qYKxye#SszRTi1AJh z*-MWq-^Xin_+Nv_A5&Z3tsM(`wFc(FB|U|O-1Q`{ArgLLL_%RweHv_rOFpEMApS1< z7aVbCLFaaStQ}84ZPBfR>$hjs_k1_q~kiP4f78! zs25BT-L$a&JJlOyl8G3Z_+wae_F*MSN^*6`Wl&wsdNbO6mngzZAARp-KcC(x=2r)L zF#^}$tL#dq{Nj>M4zmrN>M`DMc3m7~G&O?+U>)%wChdQF7Qcq}4`_Sizv^x>bRl_e-?(-dq) z*rvThS-a~yTz=gq{W>~T_danE%vO=89G&V?&FbArOhUQZ`aaQuE)}b3M(CODZ6MNxZUPOW_Lc^>;5s5lbJdOw%Wl1t`ESbO)Jo8c$3wMb9?E!PDq)g>cb5m3AWQt2db8VSwgywB5u;hbi~y z4tK9^+PvSW40*ONbIS3ItUI^r5<&a@g{+VXuBpS{+oBxs*4Jv}gO~pjH}{5&wMYU+ zgP@Hg=r4xXMbtG|=#vz%%Af)H3o*rmhw3(F7_PSJVb8p)wnenv8h)3VFe2e-o*!Fl zG&T0FdJ?-*W(=s8D=n_$h=(Vz&>gM6R+)fpJ%xo1;=ZuDCH|+Co_G=Oh)4sK`b85; zPbj&6uSX=M){fh$0Qpj7P?V=JrYk-2!c!mq6t+nt)WUj?ztRv`y3fyG!IDZ@(@rH% zgyPm+&YIhoqc^4i*@EU5-)^3#0y&S4JVXu+HzVDXHnFM6P7T_K481*DJsaEx($CMV z9LE~NkHnPKsip<8a9ciMG8Ue}5El%5)dD#;>q9mmsgb9*+`Lo#hH(Dq*265>XmlSW zHbK#xWB`O+b=j3Qsg%#3W{iScb~JyBNg@Hm3o~bT2OoF{X4dm$6nWn+%X_XJYCT<< zU3O*hOAn~ttmTZ);R@HgfHC#RBiKz5sYL15(NPQh0peqO?M4Xq9aFc479&?}glZ() zpe?SX!6kxb_)OS9zxdL}X*C(%=8dmmmbKtsU@0rYuSslb2{x+`9d*{4vB!tx!PSx8 zD^3AAg{-gp;D#bD%Z$C}F3ov)=+gz5ct0^mkJ}(uy0Lv;fq>8&q+|b$s+%T}H9#7B zb9sFOp+>*RRo$V-YN$pI0&cRlh2}NcF}}vl)$oeYM~{F%Gzdk;kUH$G+DvdbMRh!fz0e%wf?6 zG~TYN>SVQcW(v0P3&t@fzT;YuW#ZU3QfDNg@FgXX`nLBSzs=Sp%Thl;vc;qqi$4JK zQ;mzU3Bj-M-esci0UNtIX`_OQY4IR~)~x;*qWbnF-HESZ!6ZVo`4e3mGiFtL-waT5 z#)ws`=|Qa9rTTTycV=1Q;g`LP0c2B+pzeC$8<&jCmm#N+KP5gV+VCSuEzfW(#Yr0| zPJdU{TnX}a?mK0%(6OI*<%y<`YV+BvXGrF z72G=NtjnuEgpnM@ov*=k#m?GX>hEJXwG36x_rD~gH@5{rHLh>_*so;lwLE0Em@rjU zH%K8o9k?gLIC46;@Tpvw+v-B(#v&vWOa)n4K|aI`ivcv}Dtg)KYUREJcQsGwZ=7G+ z?6*SE+~|Hd#!sU{A3L%UFscKn=J!@P2GxL9z-Ii0Ey+Hi-D*Ip@kAXC$*5{VYdl&n z)(X|WwzW1(>$6uAx>jW-sXO>lH?hP?aL3j3R&}dl_Akd{;v{zB#gm8^o09s47km=yFc+3A zmOTD>rZOe@JWAX$NME3Rh5&X~8o`=?MHadns1Um)*`pEelK8=}`G#HOOG7H(8*XVGYoxNSNNsXu_ z16#FHHW4GmrCDF()QXhG#?MJ49#No-#K~>uw4>`P(? zG|GIikn6k}Bs!p`^j_>3FgOZ_-CksCBft>0Nge2gGu~lbjk5ybo$5vBHTuJPj}IV& z*%^(niag_E{(s$R1Ys(PJN;)=S~uDCt7*>vb1K_HayGfWGd<+a+v7z)1wZhH9b$5x z%zGEaDZk+LSPob^JC}oRx*cz8eOO;*!MsZ$7z{Yx48a%b#loWwd%2uQOqlr=se~z; zqPVQIZC4x0`|0iW=XO5_H&3s*1QWbM&(5{<(Vpss3s8aKK$pDMZD{7-wR63+SWta*B6>ejHK<@$#l&mot-xn4ALdmyp06Jg(h|I*t%Bg$H0PnkTC^Hpm^ z8f4x@2f`O6s-g4H0Tn>TH}@91b4OngWm|lgBaWP)@wmY1G)o`VPvNh_M}W4(3|y!Q zX}a>u?#fuYd!IKHY)f1AR^7=(){qN3avFULqGnvyLI7>ULenYK6IaZbLgjWhRrWq8 zxj@jAk(@D!DUd47=aZi{XU!Lez1j9iSM*Ou?)sm8OQa=_uLPapi#OIMCNm1-^`Nf> zkTZh?Ak4zQ#ufn`-!DNY@@Ig$^jx9Esk7{_6YdKIS-?@E{{!a4zG^fs>9AxsaCUbE z?fx0Ko6Txj@M|A%dv`0#t1>XHrhxJ!tEA!zS+6IN&&H?O!pb`YdYN1E)?(0O zYhP0HKSawevWd~O62N+iy3*v!o)&UaIl>{J9AQp>T%Z|?!f_rCNk86;u;aPe0yIv< zeT^hYu4X`cfSfIHgzEO4r6Ut%!!kdS)8*`T_ys3_EHto0^_S64Z>Y{lJ^QDz#T>7{ z)(>{Kv8r=n=_k_ig}oF0W>aocj-j1J#0v)F9vRO=qVc#NVz+{Z@W&zMy3H+Y`Yc~A ziU@cX5ujWnC+{%zWRZd(68-KR{>UTGwp!8_*np(`=OgTwQkOeK)DOPHxw|b-Ruzy8 zGTt>ZyEz~1jXJ^gTD99{W$B(M^OFk0iDpnHa`n)-j6IGRh5FHs2A5)9ORm=;gK$i{ZsAyzdXU5EADWEwe=8ZhpneVTY8BXjjmsb zWb0avg2a%;hNTsde<6z*E^H$dY=hN_(1I|J5ya;3fk3!N9#J?_W1N0kQf*PLIn>-1 z*(8`c`Qu2c0FW|vzY=>W-v8pAFvm#OwcMuoYm?h+EZNkz>D&Slw5+}d3iALGGhev5 ztWreS0CSp_13gqUEQ1e^47r$GF(Eh=?ywEJY_4DhgGH8#t%P!urKR- zgB5mouQ#>7wL4-?-Vv#^+wu-Dt@tx$2ahtLNT;9&cCe=do84$tnz817OsO=+z=v{a zUcl-eJ>DWSCjh>bJCc0OSualQVsu4wz+uVaX8PyAG)bh1Zlc8@e}7c{?N^_|c$06p zNNr=#A7$i@ditj`pb1vDSYXU<@os{WuhE3l!#Ou%UQJJPz%X7r9V|u-#S}H`oRE4 zyrrL>^%h7&R<^&YGA;~Oi!`J&J)<5QBd^#<6vwqXpDC6pb95SYjQWOKgfTv9xE=$^3C3rf$cr%r1$Y%(1Up2 z!AtG@*ycRe&A{E2C+E+s=cD?dzrFkd8Fp1#BwedDwt&F^SI2Vq*&j8HA3)(O!rFmk z@F|Qsd;jv&=}*G1)I#6u#kXZSBH`+fo(>c7GwuP5*DgD~>nF%u=2hoAVH}JS zBRgwtYfzwQ$m@N?p9p;1=sC44AoPmweVw#HJ(T1Ai$%WD39s9-#A!uB zn1H^vc>=Y#WIoNRxj)ZEIK=GYs>5ZeO>YBxFgrb2nuJxtB}InXd&nYN`3E7FfWqx{ z#|=_DlHQA{7iDwvTfUUQa)b|E4l3ByYKh2Y_5rr@bCqHvqn@MMGpovs+rkqP9gI3R z+j6EUmB-dyH@Y3DYO*xLz!O*~ij*nR{CuaStBE#RHi1f_&|@OcRUaf6l7$9*W{P+( zH>pr`aH9|aQ>?{Pt@cz1sNr%v2;d?%zTqjXu8=)+9KnL+ba&arjxuW0tx@AdjuDxs z$lY1)RWZ4;!@Zy-V*;SKY`Hmo88F$MES^hwj1$JLp`Aarc5M-0cM7QW3U(*P6dn@s z2tKs2y@Bw3W)(o$(GF}R+r-^~^%pOAz55(K6=?9Ji`dt$N(2VAnZrIncaP$rt2Foc z!_6D7te`GNwY>YDuJ<~GfRu5f(^fduH#jkjJI*xC^;?}YSvfDrXwt0{>03}{1O>-s z9Zk>@>z(M!l3qmVQR*6E0AdQc;D6Y+XPEU&)2UuG`C>vTp)Apo6{vMy+ho!RAMq!p zV7n46D(eR*V=9cId|uxnQko&ao5&c}Xaa&e zRI>bFT{fs50j8k-P~DHj#m9^Hjegpy_{GTkfheiRz4KBDmYZu?pXF>}HS3EUKm9z} z1pf%;*xGk`lSsb9B;-%39TH~S8YXkJHpwhW-!pgC19rM^ygQ#R@lQ+uH1<)eXL`hP z#5_24sa1Nw8M9Ew(h?Q-23440d_RJ$X8zsgE8px7kD!yaGo1s1NlZggXf(m7zde<& zCZ6h-ze4;B8j`C287irmZ&!IBA(g6#TdBe=3b*IG|1+fh(5pV6a(x4g(ymy%YcWv2 zqGe8>lMkjsZkHvbVyHmB=r3*0ft%h)d^BYq9r^~2q3u=XH%d37!B4W%fL+}!&M0I(|1B@V0PkLiyyiD( z3H#AaHiOwPlg5e*`P1Fp>8LQ1nC6Sz93aaiv@R94v0hVO$GLp$+`2V@QF_$MaZM>+ zBafJeF-ryRnI|bFrmzVc1uHv{kE>p1ZsC*&1uGGO1hz!!jNhEaT40vr+%FV;h(!XH zf`fY{OLmg%zn>F|`@{=rBD5nbDmNCXBVHU5vMtD&@fp54Lu|ix@$>dNqrGHAUvNfE zBCvq=tx-4dz4K7B$5d@#KM+hTL!3#1IV~T`{G`rx1Gh2Rx@FYgGF{JPhx|v+q!bAV zvva(My)Ca#h&j3%KqdYu%K|eJh|3#~gP)D#2FYlr{ncZ`aSwRJcTfZdb^ZJ{v_ll% zSFh;?kO#7_li86Ldnf|UFXvZ8yh*o09SkNvZWVI;rT=6Drk@3DF<&j4Ay9szxu{&& zj5S6yjXsZ(2o|=U0Z6W3nlU51GI*nbh84fG!7d!VK+Jb3=~XRgI3JQ$_1XKw;K19X z-4v~3t27c8ZKX=}XaBOC>ng<_c|_!l`#)Ba)qt~5p_%}4SI3lRu*ylyq*6a{MM@8_ z95P17r@YhWqgqBsaZBcgMw2^T_Lj=Bt>w$cO^=>K_vJdT3*zT{gO^@rxJ%1R!<_q~ z#^t03@Wvm=?~?COh+&rum_|9-7XfE72m7Ls>hy!+mLb<%Wh^-jOVH+7pryjvld>4# zrk%=$#ebw)im4ySKqZXU;j`o@=PjY^tF3Br?N*`LUv;_kFcq+z9? z2iQ_I!WZwGHTjI%lL>Q%C)OUpZQ`Jx-CV`dbVQ@cdqk%`+N0|SYa%XO8<$C3DC+-s zRjdR^)I2aQs{H{}!R&X4xbifJGrsOBy)~akwS5hki+rWvM44 zxmil(8BLawp=?I%j}-hYmt2P6wh`W^AhE!o!Av2nR8Ul%d}?Jwj^2|ka0L-$u5$n` z4>g5_xGL_6)?no4M5q$TG4*#z(?QWWrO9KSH}*i$(pU?{mzY-$DPe1Gj zlX3kY-IAnp6A5Ry_Sj^pCfE2>$cjAH#1dN6)012*)c9dc*035OGX_xk*K@7cMf9(L)RG4O zsl>$-nw$50aUURfz!9(F3y59PvT`prn0bhWVDT17= zBbp>{q783aCtxg^%<-*2_dq3$j0r{~Q?C>-&}JhO!-H5TsNQ0AD2{Bj zqbyFLZ;dE1K#|1pE;-J!Ai}YN-5L95atD}%}S(x%yhkm7pu&!Ih7H&%)@z{7g zo>7|p7FV3?M5>YF3dvj#QhI{qCD6+z4RQ7*9|U3m+3V&z@kd*`WynEE+_Q#;^U0@a zxyxuzG`aqt)wwSLAWGI}ime+8H?g5e<%AMrxE>GLC1Fj5_CXgxfI`o9>7IOO-4YXJ z6cB}JO!}t(Om{(4hxtx>Q|c{uSD^`T1_M2*tu0gaXc_v(?!8d0akE0&ExwdJ`1fns=)~F56f%-m~5^$vqEazsh)AsYe^en}V5u zN}TqOzlQx%*pPL?ywhf;glUGGrtDriw_xOzwu(e{AWqaJI^`nnbwD8-cL1YkJ-$-8 zXtx1ydH^&EJsCXgaYcJvz}YlsL6~9wGnrYG+O+(1nl7zx7(X5SLl7ycs#A5yL-!PJ zk&2$ez9#~zwgwZR+jA0_a#}VF^+s4M;GTQ>sP`k~9AC8bKG?HCp!|#!d-gR8vbN>1 zjw@Fyumaec#j0&cey>L47x4 za8rL(DQA@j>Yj z`{K}l!?Hr=)seuy5Yqu(<1U#zZ1C`GfOJQvS)ow?bEM*=#+2)Q5vlz>_6u1!2c)JG z7oMNYSY7(ylSa4Q3(CQ?wE+euT57b-j!Re5!1k5dl86Tl_r!Gfa1H@LDMtQ0CY~B4 zpqf!!eT1p9Z|yjx8&`C@@3lm-EEq$+CExtc{V*;ew79ijsi9KoCtftyBrddkt=Hk* zTcYAk%; zSQy|Y)-7K0Hk(EJseI3!nW2*>5ylBeZQscj_cIeL~ID=Vb9b8NK%y%vCdc^iJlQI!kA$9)>6O9s(dA#yjR?o(cYk^;fv`DM+(16xBBXz8yHZYy{*N=tX+nr_*=O9 z$pQ}@J9ld#M*1DijdC;OmFovRfcK>!adQ7ANn`yP+LO{tLmY+h;uAtRIgj5g4L$&0 zGdhS2u%-Pz6_upA(DbZ~6-NU0CE*YYr>?IN8ZaAS0ypf{LPWC=1A{?rTtcV6D*P`) zw|ox!$om?G8N9#7rhpe3ucfN{R!q07k2Y!65ihZvP#Xdd)xYhTRgXvzg&WgKma@yQ_3| zsNvsl8M>`;HV*RlPE8&{zC!>56p&n`!KlBzszxf@Rr0bM3Ex3)Y})~GQ_rFGc^HdX zPP#m%P!yf(Jjv>Y8r)^3XyWWUYHC3u5chOH*BQL@#dV2^spRxlk34J8xule zh1bz7yN2i;f_}#n4{|nh_HIx8=V9wps@2fOzNoEzlH-LQ&*kis5HQ{y_)}?0GI-5= zuY2t$*$+mTZ;}TwBLbtE%Cc((bP%Cie-<`99x=zA!9LKM89$t{9qz$FPmB{9r-)JW z`Qu7KDXZ@1270;iTr_V*bWgQr`eSpu5cnoq$SM$Mf+uheJiNdm1RGYL%lrfc0-I5} zt|-8xi5s+8brM;JWcy$lp`%nr1ny@KPW5{|C>ytgiE}7*ztq@pVP5B_tQok4nEheR z7iX#DFl%jXm8l_%h1>>AxfO9AT-*suQwvSP2j2C301T}Fvnt#LD$dUoX6ek7M_i;s z+5l>CnqLF{VU%XlD&(Tz=RSAnQ`vPS%x)M6G1a>Div3{CCKq_2jFKMfyB?;0_0aDfaHkPtW(ps z`#heDoFy539mc73QIRkEf4XY%3hVunn@6hBdwWgUCT%lH$+xCS&O5T6Yu2Qlm;#D* z#_Zk0*+P$;RT|*~gAZ_}&FK3;t)r5sD*Y_L?HF+eVhfUS4D>mA3cAQ8^MUuvVHWPv<~mb!w`9@*BB>f{6nP*Cx7W3X43-guQAF`mdDO;3WV zXMXl~S7Q=ZBxNutEAF+(I4_U2rYGy1l3}(n(XC>_y!-h+R8z8bITD4`l^Xv zh`>}n2+ZIGx}Guo1Mox-qTABY*4k&V!ujZZtZp%9(+QMbB6+&ds5_z4Y~|)rm|~aq zyNS~;Xk@t)78t@vb}T&`5I%rUy-$AkY!as?7jJ#!F(z8=m3;YkW>FN7b9bw8FAAoc zMccT%xepNx`7v7G+&)5t`VtQJolKc)$N1s zEpR*^;zzNI!6Q^9L9GdYj-*OFOmDHHC!+5Fs*BM>Fxq@3R6029E}5Y`(K3&=nnyXF zc%5iy>EjknyfNZuJDd|Y8_O|qIym}rsd0IC z-6z!rC2D=aiC)C3GAJl1$ z@3W#ULtHC2I^|V=7~)woKLv&-JvGIg9iYFRY7N0kuBcO$ou_;6IqYUta#}q^O1CEo zu9TUf-_R37LQhx>d_?OPmcsVntlNKuwLLW-njB;^UNeFtO?tP(9hZiB4A2rk_6wI6 z$gu7^wx{*DI9(z-4t~DM>tgr96JNlMRy+MN1+GF}J$b+6-4v|Z3)n0~06j^9aZF(z zyg@Hk_kjG5U&EhVch%xn-grAT$bKwyKN4m9c{w+v>7`pq4b$?h#fV7(aViDLK7e** z#%C6%;)jrn@C}FYvxI27P#tO55n#rwn-MOWmm{*GJJq-m(5f2=M-{h28?+F>{Qo?1 zp|uKj`!@~5N?*jOrif!%q#51$`$=soL;foBj<8E(uPM~o6UJ&3_8GOQP9PFArf5|_ z`Z3o8e}7^3v~VLIXD4{86u4Fu_ldSbe-{X-!fAF09$=qnQu%<8BDLEKy9vv&76akT zsAYqTF}>xGp&kyPPWIL@y8#kUd*>N72JX_qTEdmxD=);Ha+idRrCg2&lH#>kd==pb zX$P{MFR$EmUxe=J>4rZ)02j-zkTtoP)Q4gqA!W2Md?~5%;W548znFma-0Qvsri4cOR(42Bj$sPILA?6l;|w5i30XNajZ;>@@5eeeR0 zO9T&alxc$^3s0CVjO3GoN6^hv-Cp)#YVn{Mq)ClP7ASQnlV|(``E#U zHXasFE;Wv_D6&mYI)A|+;aJ=9*!K;nbA3xb*QD{TT>0tkm?ot3N#f>{CoxwJE5M(L zMNYFcj1UF$41{InLGPS4O?)%z?OHgl+vwU}u1WLLcK8^C3E8EJjJEph@?uhm^;J7+ zuUmO#R7r0i$*#;37<-+uz8hgqxjF+0)Gkl!3p3qUis@^=b!@XX{SRRRe;!ie&jG*W zNhxd-WpPQ%4`~RKLl!hM%@V^Toz5(`pv=TQbwaOb9XG4djXv3G1IJB~QlNAg0pm;@i@bE^24Fz6~K=Tx%U}9h1JUd+r{7ifjSewDX*p0W}aT0WdjV zL~I3A4~G5vjWLZz8;PiS{9(@@_VgObAY&LMp=2dIBJTQSz^kHv^qxs)ghdS=fQKJZ z{q$7tdG{k=kicZ>40X%bUIvajmgTFu#b>a4lORa;k7tOpvUnUABjc#8(vW&#ZZo-H z{VUQmbr}w7El6O0JDvf}Z%n|QOkR6G5Tk7I$-QaRvF)&m4K%^SVpMDf}Sk zccxHX-HN^wD#ME~;3V6jbS8~>M>q67RKS~Ye5^lI14dMmI!7ATP-w=6hOtS6OFbaM z?pG=m1Q;YSYZHNB%vc;_ru;$)t;uJhL6=(|UUYHuco5V~_a}*x?s{$|xSn(B(WSj) zmOl*}yB<@SvVO;c8tJjbh97=d&FKE2qCSx~8nTiP(tzMjiAWcdx))9ZCR@N-r5s+O zxpKq$KhZ!W8pnM}et05e@c^i}Ci!T* z=9kuPko{M@_cG7|Y|09{$uNb_PZ2NOBN+8Chrrx5(Y&a^I&PkZ8#RlfJr||c)7KLh z)1%L3dBm7=b$BK754ZH-qB6`EB%+(Q&*BP=_NIHiN9szOCkcvS0U5Vp#B+wmI;34) z{y#6P*^qGi1BFkH{4e~!l~d+OOB)IW){lON|A`+!9^VU>$U6LBZCutzWUH*HhrqH5 z#R`H+GGpta4|i8HIv(kS9v;}4<$lN2_-xqqqxyY~L&uCBn@mIg#n)PjPf%1>Em?1| z-fcQ+p@-E!DdW(YIin^o;$$7dlvDwRgoxzJv5HQYN@%a6*F<2_oB<%QLHF2apsKi# z-N_vrZYA#eX&`!n8NN+0#ulhiIeFJD19zvmJih7J`cZ;plvwoiQno*W6#_oCgD)R6 zNWlYVPf<+f8#O@d>tXp3N$JmZ-?lJ%hXV^;O|RTdt^1>#*sA8~waE-#j38&mhNL*;}g5qsGF#v|i2WZ-62-pBfCdzwo$n?2+kb?KIJm$Q{)N%em zF=J~R-BdXrm2}LpxV=wYg2G9$u>J350@)}ku_F4;Xf zwQ_RNS}P7~RLL_v7NinwZ5Q?UcOlkIPy#pYa1AmCQ$8i1P^OO!3to3!pWnvkSKTo> zmU+jXuv_)hY2?;by4}@`f5y(Agcj6O4;EOgrunEjVWG;`q3{`PPjWY`umWmvRiSc=1VzsS zb~Qd$U#Ha1<`z>IfkAHL@W1=%tX^n~SJ*nfK;9lo90=(eovh`;MmNiAdoIQpB#y zDSdtWR2rvXWMwOG@~{~@U~>RUlBeZQAEPYtSk_vv3+fuO=&$OKv1)P0?kunS7hUN1 z?;4skg&C}LX$aZMk3O7RGiq&qtU-^zv5#j(&&2eMS;}4 zT$6heRMb}hfE+R(FBN-l|FAhn!7?m^eu8_`eBC^>V18wh6St?45bU3{(i*dGw}At?mKea%GLw z1;N-~Y#t*B8nlDyzgGk5cz;s-WnHV0Z$`WzD48yIZU??f_6yiU!+olKr|$v<=V!fg1B)|3N$wc6b7Y^~Gr8VwF{q4Vm*TZ}hR26? zfL9#)m1?yoC9#jZo#IRe=fWj%R|cBlwE?=G0I>v`W@_>p*dKu4dizovgis!kt-GG^ z6*#328IR+b_}O&5b@K!Xh5kR++!;0eL%rBsk9oo?Ll^ZT;ku|XgfVc;I(X#QjuA^m z_`GrC2;Ep2BscE{8Y|%mo34opvOn>=dLA*KT}N>a^4E8!z!n|{YSQJ) z6P;Xq1hM{{^p4d9Ded)Y_zK1j_Qu48X11aC zxvi{K8a^|!MfUz_%j361AFY0) zyielfg%_B>Ee9&2gKpGiRb-|nUR<(4-8?ySt0D3Z=M58EX<@4zu8j~M#{n1OIi}Rw zBe65$jXf`D>?0EVALL=e zckyZl?j5=h)cxbKb{2XW2o@QzWlBT*Br*e037hdCkM}%5NbWoBy(K;-=c4|HC{p_X zd(A$VN4;UUBK)<%M&0~|cBU3Y**S~45~|h^*V!IiJ~V~2g+F@+LrU&QEONy2$&d0j z&f4B_z!UhwuFlt{W@$^D~3w94H<7WRTf`# zTw7;jRrY)QFC_GLJa56bv_6;+UI< zEJkoj>X(k83@a}!PgAqPFCYb_YAw>7|2 zDVn5LX;!1wx2z0t2lj~E?JLx!JTzXiWkMD+6a<|&plSaPz$p~WjXDG4Um|MsDv1lX zdbpW`Hu^L4U9dSea;?6}d9rjd<4V*Rwg76O9*sq#=lwLJK9fFbr+_`f3ns3h#M~?ML=gBUeHa}U}64R zb>3a#fh1m5WPgMVR@-gsS^s1{qHn}t) zNwUe^ZoEK;(8*mNwDScl;ar1kblAcd9_k3$rM_czgvfy-D0yKus2g%-Rn zs|ldV%7^|Pdzh_bENI*vf&$4|fxF4}>q_lhfPs0z4hBNB4j)>vHxz{8@~262`BNaq zP8FE1B0=ivAXIo|1%!r>H^3rjSO5tv_)xkJ9}1OWzJeT}1OQ5YkWf=1z>gWkXo|-l zBjXGk6);iucN3Ck#|KNDr83tw#!K+*?p6Lh`ygN;I$M zq25>w)ygG|TCqRy~v(EIWIeAu!Dr=nh2^oPfs7$L6>~>gHnu zkKHPbd7|M8aO&kR*o5;{P+wo`uq`mYE61WPug^sc9KX+-w$)u&o&>wM`{+8VMa#$W z>Gk24vnEZt6Aq&!huAB=pwf~Y->jx}avPO2Ywjd4(VtQ?4XXF4P=2Qp`Sk!`?_^s! z7*7&GgmkPP0))tc(zx(naTYNK?mm(Pn>@Jy8l&wg8^=C~;ua6t1h6s< zKu&DbD5nghf{RCix>dmsC@8(M?Lg_5yIt$Qny>>k(GTLd4+QL#mNkS`K=zS}eX_Wh zV2*^%g=DS{J74ty3}+$pFAKwdHgxNbJV+)x6mhQP_?UfpUK%o=f2d#;oZ=O-0_0-` zPDN$z``7V}MJU;q-z9l0zq6-~=ruLwtLel{s{C+EJqt+5Cf6=gv^5ReB$YduI6ort zhAI)%=oDy06dwQ^@82eE*hZI#g22>G3z~~z11l5wpT+g#IAIN(c-6E=XAmrrB`{8o z4V#O%^5Y!ysP01_#;3!SJm2#jj1tGmylIR*31oKX|0s+0Q2UsV{iT5C6Gh>D4wx^zG8CK3CAZ z!r97P0ijh=_!u@{K*$yV^+L~KC|=RZ&@vI8AWw+X9sEb5lEXKTFseKKPD+Q3?9P(# zP;8vOYHdOCZj!x?N`kI?Svp;9hz%kD9@Hc~BD&H)(aSaUt{Oy+^RQ4n0mUIqi=H9o zqr>%r3LeA0j1j{Q5HIoQWxuQD;(t}M=Bz60p#a2Lwuayf1nAjue^9E{NjbW}xQrp) z4HI>!676glypmG?^QhQ_jUnugILUi8=ka8=EUfY4399(k!wbS&V8@53Bs#@*ntA9ggon`~6 zUhP}xa_`Qqj^6f55<17nZxgjh0%{M#j66CnvvsFz2Thm*-CjS^S8Zw~EZzhxL!c_? zi+}D=vXn)G7nl8Bkb?gpCPQ{35|dz;JkvVVfW6(& zi+Q4}hdJU9AMHl5_LVU@sMsMnIU6^%jui&WesR=9pn@>v|6&K@P102Mh0| zLWt~RV|^bE?mgDP)`MRG^a1~_IHeSGJQ53fIDQa>rQ_{WNo#1MhrW(>CkO>ce*IGO?kBfGE*x8FrBIi(x!dj0 z-O4GnmrMc|cKC}?aPx`tgANe!Ogp7RD#o@dC=X&pAPjn=dqYt!4}b4&-jUIZ3oNeR zc$1kn%#;l=Jtm4ZVIZWWt(&|I;j$=EJS%v$-kc#nt~=QA+U`0OO9?-ja2@mw3E6yR ztmBVRradw^6IsKhoID$c^wKTSQRMr+*$G#%7~AHQ-Lh#04#YIc*{gD z2McvP`!7Ry&C;QCxs~GNVSvU@@txMzw?f)L9rzGbx1V%UF`-j1;K;EbWe8dNE{5^U zlq*BXp76E>SnQuD(s87(S!6VNfN1;j)z;Ov2hR@ySWVZOQ+#3R<25vj*4S-KY6$k& zszAXI2qNS6W_jo~;8?_f{{>>Y2; zef)XeFKrL|8r!*R?M*Syz_hzx{q1EW%#aZnsiOvPw1-LN=>Jn zn*VwWKgt?fA3-;~{{Z|2FnuF^m4Ul37^>Y*B>kzl;S-ww`)WsqsR@Y-nDQP1Nx-5@ zI1)h*l%Ge)GT@fN04Do!8M$_z@i)l906y{VFqFh=Y>tmY^e?dhX0|@e%-H~*8Dyg0epJZXQb{8ftP*`y`>Kt=;n;ekO_!CVOU4>H3JaQ%G$;O z??gU7=A5-qiMp@nbR&#Kj=DRcU#$VZTjvx0fZw$Kh1ZA=S!hLJ9-R}_JxN*bwmh!DZ@QyKZi~G*w#}Zb=K>a}RIB+2tt1wfam0|Dma7XQNUH0= zX>`L6-1EF6|9f1tLb-P|lWoY;^lXQjI8r}|kw7Qv0=ji)N9w8o`_~cgf`7!y z4_m_bCz2Q%W-!Z-_Q=EClvM?})_GMsNo#sIF>Ut9V>>mz-}m~i6i^n#q#`Yx%vL+y z7twvxzNeQe#a^YEfer|qiTgZ=NFjYYXjD=EH9e?A=}$D!34oCy8U&s=axffVe4055 z)nG=IxF;QUKk}?_uxeGK;e@%AD?!~ZCehWGFB~ZgfB*ledi!{$_y2!G+|RE#95F-5LfPL6eH!c2y-nPFGo z$7{~#ef$0X+U<5aw{EXqujj?%aev$|BD;m-r{d8TLD@Gg3>yP0K9|^D6X0ImTzE_1 zGH;W;&3YvRUJ}$nP-j#KzuO?=5PUA zwWOOpFY0dsUPSg)a_7R%Gn!c>g;WG+&xZJQM^(FOo$5XJ8Z$C;(hWxkg|=oX$^e$Q z(v4N7I>}`1ZS=;zhj&z%wDsDDKr6Jdbc-=K^=}Dw&F@~Qes^CRhp0!hcc2_mX8LDC zr$Rd_*;mQbSKdMU2n7<=wv@m7-$fk z<8JArGG`8c2|GkHP1CGeyXk7fvdvVrEqWLK<(GM=4L^8#pFiI!^;Pn|ywaWgWy?Mx zy?3fi8MtIcZWGuS?Adimz~}NetfG{r+|pIFO8s)Ue?rH|@*rX7M7Y)-E>ygff2Xty zIu?SP9@QFXmZ^li1Mb5?pdXZdHHSQtglk8M3)Zh(;@C6GNKSu@s>8irS7p~X6rje~ zwm(LJk7or=5-zp`)gsMRa3g(PGWTBm{%$G_Ox zVcE613#5a9^s788V%#hS6Z#4h3-JOMLn7(HPdOWQx-}GqFWik0v=FA6W(Hb~*rye< z++GAwS@{lmY%JES=L$6BEB9@lpQ1x^cZEe`!#tx80ACGZ19BXHoW3LaN8atLP$!~S z)=mLyev^=Wvx#YpvU5OHJ}_Mb$YCcKUV7`KTZ<@dX*l{0R05axYa~C8r_ zeDvz;oqTZKqdqxAues6Eu;Afb$%qo<_ccXhQDR61I9Pj2#H*vSihKUkrAFsY2Oy3ZDK{85JxE!zGN{$t zRMz(;P0JzOA@2i)KE+CLC*gL#xoIFRWM)2fY38{*yMDdMQ5P(>vi^Xbj4KfQLBY(;4P*kAu9fRrUgN_C>n zYe(&rX?igvMm@(dn{zWtuvg}?@g}FcguQ9wM+6yyNtBUsbf@}In~v=oj=8=cOWgJ> z0k-jJV2iG)H_vUb{u$PZ2b^`_*-=l`7lk=tJ0nR5=qlPCq~|}gMvzd@Lx!% znZ zM3@KNJOC=;vymH2^unnK$NZS*6rQqXC6=@#H>YgIeQl(0P-E(W>zk@7p0N`0Uit}e zTXz#5BHa~kzNYNM=_xYz=>xr;*AWB>6MobfHb`#;N_jNuNk|vhFXE~CV{##-0ns_K z)>!W2@XPAPWptTSU6|Je`_X8WaHd#cnJ}3&v-Y)v(4Al^U3rhPrfBKnhreC0&-h?} zd0pNNX#ZGADNsI;T%h!-`&X;>F$(l?!_W#_#?!Vb9;uU&qYjx_!!I#TElxf|s9>q{ zD!#{@SzOgd|3hu?nr)|i@+nn<4o*>x8+9(?Xfm20oMD9(4d3+$K2%kIydb;jQ$WYF zcd$@!s3hyx1VZl;alilTUls`Ig|#CBY_{!Ph&Q57Ww9np7f*fGl3MDnG? zQavNXpn~Mi{HFf)G4ck@ZOzj~`H~J!lXbkC|9&0A6+T2gA3!A#@Na~r7NI!QCf(rY zWd~`R_2Ypgh(RND3D0TM!0-rp8(rJy%G8D@J7MKO$y5 z(ps%g)cc4DejwYjD|N5P^B zj9S9ir6bmcaNQZM*pv$8Uy8C+#)B9ttOg2X-O(U%5o<;RaxkhbzycdYfUBu5)jO_e z6;&t-=605_-;QGP*lU7dG?vD)=gt$IGX1Ywf#8Y2V=xg5pxU zY95lg^^OXGPtM(krVnK6%P)t#VzoBET~0Qe8j$>TNg@ z&1Mdarm)_9w{&C#xH4Kla-7#YpY4anxHY+zX+4}F;J&3i&(p89Hf8GhkS)xr1HqnK<}=r0iO-FrU{_(T)%p7uTQPdN`@Asyp77u-uD99M#QChGM|kC| zUhpCGDT=Sv+fV(drw8u&KTn+03hSOkl_O4ixtJd4)29sc*Ewo#&?kuL9qfHQ^}mKw z6!rd6?_-1=(1v;rU^V#Q9bJg!aI^);y?kyhq}?Y5e5_lYaP9$(n6>Rip23{a<&jT6 zWEmbw0*@j7nj6;C49wX$-0bG$r~DIvnDC8W_iw%t#+&Qk+C5XtFDrR|mA|^r54^y4 znE8Oc>3!|tI8Y8d0+#n2ZCX{Q%vlW}H)+ZAm$RKh|0fFK**v_UWVt!8lxOw@+b7|J#;^d%n#0dvzrLU3-t7aR@~v+VfZM zqn01vP$v-hjPb2w18sp<{9;)o>$hg8zEYo2{{UO%Z7C4)iHv7@jGCtikrgls0E?wB^v7E3 z{{ncDZ2g8SgB5o;HHHT_PLKHh%OMQc@dlCB#3xq|1^NdErWMVtjH#IG-8tyB^~Riz zCH%$jpJ>(eF1ZZ@6#tdkdN+=isNjZqfkCF$2uXUA7@gwV`Ma4`=i}Pg;2`xLH4!<( zGpDB|%o%5NXbdS?G65X!P9k`wOsZ^PeQ}$Z8DqZpwWIYbfOd2>lf2p4`Rrg+cG$ir z796b9@T%uXg|PeS9=0jqQC_Y8k|w8?*>1Qft3fuPrQYmsyd>f`3-c7pxJOq-snD>99%EcwOLG~fD5Qi$D`>z*DT+E6GobN z{X5a5nP>%{lpm@$>&=P<=^kH8ll}omG-muZYPhF*j^~~SURC&OA^LtNI;neSJxbFa zh(?7wS9u@WaTS3)4moN{+&xzbvZylzuw=4X*rlmmpiN84%<)wU9&6=N=7h|HZPJRA z-}f0Yun0}8at)+^aC>%-x4^+*zG%d&)n)yrz_cnQUf@pe1RJ8*4(p)&dBHDb3a=UU z?|V12d;Zi1HV6?bU^-oJ9w*AVE#NEZ+@BfhG<{T*8Xzg#=ZXK&2x~P!2!FbJ+>=aD zN4=oJ_499w9JvYkBZP4{N}n_hizMhS3QoxOSXwkBJ1f~>{0g`4QVyGNw*<()>~SfH z0-y4O@J?nN?$cQ>7zE|K0*{5`vhKdN-aTT7*-|4;>}vZihs7&$Ij?m|v5+tN4>vm6Q%tsoHU*}76n zw#%EB;fHCj)JIw3?tUAS;svXkUiYb{o~k|SNBFSxYR*p1saWcruf@c_sHoS5{$~wL z!s|U|R@uLksN^dD`_SwLX$rsgm>6~UL5&j=UvtoAf&v%nE$kANFh5cKFNk{ol>|`~ zTeKZl1B^rGPYHcNwiMGjZ>we$@Ni*@?WuiH2QOi<187;jc0h#?pbMw|(IVU43-YMW zyx6OA?@@`xmI*4+@trTbR5!bpNo_CKP$K(P(P1RTx8Vg5|EkcgTJ>qxtk}U0kCE^6-ZOdaa? zIpf#|Epkq;vPT@d%#_wLMW2T{@52CO2~wZ;`-JpuIAB|Tm;(KI^^_>_#O6afOTF@q z&O74!CL{O>VjR}6@mfRaCi~ej)Byh!abGOa>qkY>wj8Sub@kS9yiAy+kzDU}*foy8 zr0axa)Arm<8JVcN>-<%lli=L*{1AF6kU~e%(ZM+~U$sp0%Cx6nnVup6`_UU*TgE2X zyauW17eF$o-;y!kwMQUA(P*`Aob7{U)es2nFA-lW`viI$N;gc{AGzJZb!wAj0156(EGfnrnu>`u-El#PacCPli`CulP6zC%2#CL?F7v)x z$5@I?;o<&9dFOa7S*bZz*Zg;^#<53UgL!QS_3DJE9|p!A7bk)S0eKRtLP@c|LZM2n zK1Pyf!A)s4vR;XNO6VC3?^6?Wqqlyp$}D>&qou8S&YJM@8*rGkEo|hG*9tz_FWL6E ziv2?HN%mHpXKzEAgiBGt5AZu70qb^vM-DG75`mcz^ou~-0h_3D&G$2;PyeJM*z%hx za+GQa`s|9ljWg?em8RuSNLk)kwH+1$LNm3-{MVm+fLgSo%cfh7iO!Ldu^Wssir<4- z0sbGW>)Qw-bdGE=5WE`C+Zfw0%hYoF9(Mw^$B1BZltvX8Wbf`*O|{Kv7B#_8&cY86 zOuTU=j)Be130Sni%XTWR{h^=gTN+6IWzB z2q}hiIIYNZ{sd~lW=O?^H+kAPIdtd`ETP9m);Q*ZAH9Qf;AFR1^?hRc6O9K=*M06v znS0N_ro-$x@+s+jrNkZ_7f)rMqO2*e?SA@jZzE(4L3;oBL_v7)7`H zx+5bVICF7B>JT;fNnWl=cG7HxIqx!Y^OQgV*rJVUl?GL)@6_dtiUD#cA*o)|5;4U+ zfn0|kKG$i~(21TjcjJDV%t>zlLnpx+*HzM{Q-E95`|07(wYh2AnYfarA>mgdYLyiD zgA$55%Z+~_Fp3d#Fg57+{Dtj1>GMZ=Co{DB#44DfZWK|$cGv)ICsJqMW3EMFUZ*Px z$LXI<(G8-{-nXRG6`xY^G{Z-{Gs@$QaVZnfGi^-NvPY%o`dj}bwTz|gh ztP@aZsw85rk`(_lcAvR!inH$W6L=Mjt`7uh=U8i9Nu#Bc3Z^2li z+5|kyHz4yuo(vo#aIXnwGirc-LDrYB=TQ2k;)vL=s@*R0)~90N(GFfB?lo!&m4#i2 z7{8sAa7!>5{rpXI@6XNYEB=&KX#=tsU7T>%cMfdPa?n>f&-&q-f{?)uwZ0*vSB#gcN<>7PG*iM{s71EYh5048ru!4i%LhDnDP~sn&;1?ul@env*Vs;Db`7y(x{TNR;C% zQN6|i;;}T{EP?jO?vbNlxtE-m$V>gv8`bVo!A{Xt?B-N5KP;=Qg5gi(Y!Kde5FUL>12PO-7pz%dP%yv|Fv#a8UGyJ1L34oXXQV9`5x9P}=$) zz$Cc1y!4iCPQwS>2#$=xECLhK`#NwdFW&P0cc2su?S>CZD*&gib`U?kP-mzMkliYo z-mRhUj-$Y^BBp~%5UF*t!Dvff7mbP~5eOWZrN!m1Xc*~xCmu;-d2VDgi8U9S`~8}3 zvB#epRxow|e#(6KtzKX^Ga4H{sA`Sm_mINAm^eIH)N@&Ow%?aK4wSd^j(hW+ejIJu zNt*n36w`K{iVTQp~UhfZ_nT^X-zO_grZ z@^~7-Msr0?P8Vk{a~%|-M-^(MCmCCXC3I_paW1&^LfXcgK5fsPK>uOa^#?VO{_;Da zw7!;zf48-|l2auj>eaA1Q{3DsO*Nj!6;A`GB#YjL)P^E|4%2^Yo$AW0i-{i^0=jZC zJsy>&a8ra~3J2*ylq;hH+RLPdB(Rf%>Pp=mfpDm_K2P1s1I9uA?=z<>+4<9NYvaec zs0~8uujBa!Y8$}A?AWAn`cWCxi82X2a1RUcW~_FLWEL7ZZ4o#2SA@q0n!Pz>`Q93* z6n!5zi`%UHG{wYb*?AyntU}}1g%e7?@r3Uht+crh4&46dGGNsd^%FC5(vqs1-}%bT zZD@^reUs~qQ^>@Bp8cvWTX-mhs2K6zLj^0|@!A%uFAq$@9UHm2YFVS4{WG|nLsUwp zsR;_!K*gYGdcLS(h#v9Iw5U$qm1F}|=zZHOM^Qd~-*QLMU1#GU!sa;Yy}6dx zw90g|Q&r9cI}M?;?9!aJI7?OcH5pa=xKbuoNmUkS05~iI=1Y*nvL4un&oX~8CaL>N z1$jD4iS)@`agS0YV#QZ^fG;`Yh@;++Xyn~k?p3tEux3c z#(|rnlQ2F-Z%zuIMP-SoO}vy59wn*9yXsFm5r5T?+w zI8zRG0Z`b|k+1rvHsBiWVwJa(BSFM20B0kxQo9uQUweX{Zkv2Q&R1_+eoq})sFwTt z$#|b_$I2d1txuS~uTV_k=-=2w&2G70siEkjGVi5ips){hD-r~Bm8$yv^?P$&P8RjvSJ=2*1_z? z-D9R_GY2vc-(8*$ooDiaB`B8}>vzM!#{L!jst_uW?lkauu?wplcYwpJU@!+bWy@-) zx~|C7*;HD`nvC>5>`F~0`ZV9A7t3Y#8?LxTM%bk;>pDAWj5nkF@T@hajDC$uU2siS zNX}2cCF}Y6s_7D*X%pM=P~an*BPGl>tH>c38&wJ%8dr4vfEyJEtebp~OH^rSATbec8UPY{3cSYQ zI^zF#?4mSV;&3W^?8|sZAF?C1rGTtdHw1 zi88uO_%>W{i}Phnyi$X#S>aXK{>xtcaZx()T3w;_#*44n5ezDo+Z2AK39hLL-`zkF zn<76Feu_*HpTffu9HV%(J3ct<1C(Z!`%A~eOLA4`L2Lx`6rjT7WFZ6LkPVuBvC)M( zfgB)X2s{e$+SMo!9F*=tXD`^)-4Y}h_S2FqD*0e{A)I7{;GKE0LFT3WZymm~`-=~+ zG#^OlsNkL`U52Bt<4Wryh zv-{sT>n`T2mU>(oeg_=i*!HT5R~rkxs+1+vEt)}Sk+ke@l!=a0m5HV(-#FdCKZN6$ z)TwUkU@7eMx^z;d@NG@yAtb`06}c2frf^V-}a3{$JBjGEVXuNz1oMcJA$V%V!Ym$d0D zObSctw77jUj#Zlmcyqf_9u@w;am?YW?UmO{-SQV+gPFugc(;b227lweSw=7sX_yt2 zJ;!uaK z%(3sFcTf*20jpX8*{3%(YZ0S)rI|jPQJ@?sQ?;RJp~}=&T%5khm43C!*HawUs; z0~4H($>UVZ@bcors$CC221>x1_wfxk(Pe{BlS@bxo@Dt;(+S4z6Gse~(S93BFyYiw z>-YO?wTGTn1Qgp#oD~cHZOBB%-c?HJ1j-J${`A}V5;TMW-dga!PX}Vty_{)pr)SS0 z(+ICy4_4h#@$V%BruL5d36;X2X2B&lF5XO0MlK$lmSfdix)% z;ZNK~SqM0ZskCARhdZgvI;TT(%00qL^R#OzzN=|=@ic(%N-SwP*ER1BNm^XJFn@&S zfLAc};8vp+sZ3)?om3t*UL_e+K_w_^A^HMU{=euoh(e@))z0lmzis^<9>RbRdA_?!>gNr1eKG!9Ggl``{z)+YNOFkr;I zOLM3HF+Nmyw08~vqM?RKD3 zan|y7ERuHpSdGpumw!(iFBV>j;F|~DmRyRep$6apCtQ4r!jJRIl{ZCA8XI$+b%UeP zJw}}+z@$16PXkq#*^I+kkhP?)2U^lyxHz^T2;s5m)%Rh-n(Z$?A2S_OjZq)6nuO-< zbV!8)*x`9>e6Fp;mHC3aBsUYtDa>o%avJWj4@^aWioA^ftC41Lv8^H9MtGV1xrFLc zbAgdVc(Q0?jD`N%o-3s_xB-1*tE#3Rm;$h_$3Asivoh~Ddx~xR%@$`}Uo0V-cY-!je)fkHdco2!B@5u5aF>@KPLBJqdfY zAH%-+0(^ms>Tb|lF{X~I#w=4YuW$yHgE=r_8!T%;-%g^fxq-N4LWs^rV z3robWI3W3#dkqt-l9$?Iwo-ZNa52j|%=C>;cV!IT%`lMNkCL5gm8VjP?%1i9EOozE zG<|A`?KKwIKSGNHsaE}9U?NSL36p#W7T{)2RY03UjvM(PLi3GEo4%T-$8ql`o*d~1 zRt_g)ss|z40hFRovli8HyurG7ktkzk?<8t)=WxAySHpspoaC)t4YFakM&Pb;#f2k- z5^=fQTK`e{dr4us&FiH@_My=_qr2jSy%e39tE;Vl)D5_6$+$i9E#oo8Eb0*p*lY0V zk=K}ZHm(9g>Llzo89@jWaoa$J#4tm?@&!#HGb4d*->XEz(7B{oUJtBOq_WlYNU=L= z>B#qme_FY!^t#1k48R5EJ9F}{LJw40+U|RdM7i1(+5tdvis zFprbi|6u0{u=@zCP!i=XHCK94ZvXFGMe^kKYOAWJ373~yw&EV75Ag*+RgYbZ=-J=T zMjJ!juL+2AHZ#yv`7;vK!`mj2YA_H>T`y9fC{v#IS-(~#tb4BP6g?AAYIwgfb4v#bc&gFnY9;dX-$If)y1^4FOOO`xZe#mn*eRtM;kM z2<kzN#+*7p)P_--C$*V=C36q* zikVEIzRXhY%=h zw4S8+M}`$EHVZFPK{y(iY}KXkI2?zod)2523(M>mD~18>3h( zP_DigOo1!rHpq>OIfqQ40uepx2@C*g6?g8i>|V3i?vtg+LHwVRkQ6y`UkBs?q0y)S zvzdiA1esISjAJTQtL=}vFeiR@yyu?g3GJ$jrN+17|11+lU@{AY<6yDy^V#dM$bX9XTmx!Z6#tuS#&`LT9U zdM@n{+^e&n{qRHN-zg;qI?YOc;q*H$u^p`5L8b1|bWd*eReZUfe&xoXRg+qSlr@_~ zm!kZe@wY%F2GG`WAecFn%akeVmv9xwYmV#LOUginf=~dFip!A{TX7^&CDEk(f+H84 z^7?jt2Jel=%{!yRexKmyXZ!8X|HHVu zlm60jCOJRc%cAx!wG`*ABOa8KC}h&?!iRQ&RzR8JYo#T|hD&7du4GgVF1~R7(cP)Fs$9U{U3E`A!mHPs zR&n+sn3j>|8nNkODlZN3?nvQifg!sR+LY&DU3lzNbB_o)tLKE^?;7yfBpwhgnMVO* z4sE{pG;?p3L`-;)VrVW>DE|$=Zk63}!1j1pE$Kw;Q*2bs-@V!C?rXz`<$HV>&>6qA zeICme$9ar1F$ZShuWV+{(7;)c^BV4eVy<&c(eL_WaTQ0A^9vj@?V3a8#0WQ52~g?O z+4pl%P=$XZM@{yCS2*GAFuN3HB3Zt?ChzzsdbB?2GeZ}P=Bc3cYJgG4UzOv|Qm=+k zKC?n?!3KoyeC@r`@$`}WKNy$F1HO7UJ>7PAZMfH;+3~OPxsAyUj*!FMPwh_{fbL(VfE#ApE|>QAU%j(JG$%{HEF7 zgK-uYa}uZa1j8rxgu5TEQr0RstJk5wYGc`bN-9yRkVT`2a=f{w>T*ud6gL4Af$GlA zw@9%{4Wui|6d(MV<@tvrSip`0RpC@NZl5(WdjpC)iTMNkoF{s}$*wBRO=-VF(xPHe1945us6^kHkXRr16!IchUY9Xp z!QDe@|1Buzvr6{|w44(5D}OW`ke)BxZq`L~6Dgh+wI3cASYIceDXgR3Z*+Ec2ge=?^DY|OfXkc+ z_u5wPDY>Ssz~hYAz%gFb}L3k-2}{Nd{CJ<8YA>VA!&F z8Vn&-MUc<<;v8@cLbV5@QJno~hgEQO*9bKvYUXxCWdspt;|jPGW7w@z%&2Q{)OOw_ zjKjoaoE16Oa79-Wsof!#gzuC`w+Ag>bXn^J^W`$q32(Z;mwr%+>&W>_`YZoRw@X`8 zVlbz45R^Z&>DkGiN&L>7muxOP2Xz~m3T(E&_vpe-i?y=O58&Yf&Xz@7Pc2CVmKu-s z8N{}-b|D)U2!t69H)Kp1*6q-=CR4LYNukj{1oHo1g@%0YoF*apZ;E9dW|8`;IN}@? z2-Y1Cy~cgUOj=x|`PQm5tx62He|2jq=d1qq@EkycVhAju&8t=yy(HWN3kEx%Q(eLl z#)bCh1zN?GEm3`xGmoS z1%c{J?+pN%(UPUr7m*`vZu1IS*xNMSX58A7RZncIM$yh<)oDEFnjDauyzX;6t>;!* zMiQ;;aWSk@)m7x2VwxizEbA`~778y7^onQR<5ek{Vt74Wq54kBXC*LE@Tt^BS$&2(uxl?hKTt=8U-4Cl7d&mUN3@9~yuo^*sK3#}lr_N0eEpAb54PYGhut1;27DVS1Bmy6$Fd$vK7GNkk;KQ3*KY$PzB(!iuO>}k2 zLSu8GibFCG;2}4Eg~O`i&BsziJ^(5fyiCto6nh~7Ftm7@<^HO>iDBZ< zm%eFQ2FB9EgHi_}U)IQxiVLq9eE8+CacJ5iEs?qD=>`1xNd^8}L~mH<@#m-kP^D2k zp!v}47n}7)x#MA`_9UHM>%{4~uXANHr)SQix=o~5?EWsy)8xOG1{21l@w8>zb6a(P zBhHu$S`S3nA5nmyx!qf;c@yXVr}OXw@0R)=9;W{^A`~q@aCz#zr?*ayj0tX0li*fC z;JofzPDcrhW#zL5D7$K#_`uW&wx7KwX!!F&@Nk*&v)_8JJ-k$=^+KyI<$S2u=z)~9 zHuSm2sLY+fK(AsZT*g_B$WD>zPnH%*GrMp@cYu`e1qF#*bY;DSAV&K@kBC|cEcq7X znrCWg1T5G8##zywgmrT6GZoTf0Kw71tum&$hhDd_4`}vP0X4G1GH}d&hZ{Zp{O20U zVCMXk))M@H4gO|w$Fujgc9gUCaNl}N_`oe`4CFXA-z5tNC>1?vT4(REq&ILPha;;l zrj^|TF&v=dF7qZb^olxRM6kP81Uc&}X&9wAiFPxys!1-Jh4wa%gl92?Y*d{2jJ?na zjebT(&^3VtY*c&p*2MqfC-Ud~UKiID4_W?~kNTDz+2 z^dLu>2(CG}SfrSb__YY>+SDckyJ*!-gmI~|zK0qy8FP+WgMN33<7BW4(JBKEqP9y?P?UW!#mk6qYXV7>IvCMp%rRKV1s7(6jsnBV2rsVUoo zCX(s%J+q1+yO?ylW6t9}$6(Hl5d z$R_SJ^jFdcp6}-t$}{J{p1)L(Zm}~HRH?qWN`uOovj-L@XZf(ce}2{RzG8G(v_;%; zjdhC{vsLRY_m>=xjb3~16&@jP-v75xyA_P#25KZ|pKN3u%PxY;4F4)Zy3yd2bmf2J zuS|f=yNeO2QjIw=W`bAz82RL|P64GPDlK^o*#yA)u_Wqxd!O)ms3d(FM@WzAt{b(1 zv8p?Vj~`I7U=JW)J>uzDoBZ`MU4Fk;?KwZB9*%#rL@4$H3DPaOyYMHI6~Uxh;Oo_w z2r{l=rj-6-*%qvW>MQpbYZu_X`65u;f>%?d*mgpyMuUgiIH$Z+sVY09U1hUXQoC7QgYO2#m0w^_4;OxkA35poyOw^m6e!m}m!B|uLwQ7Q7YS@NbIZ-5@rSj7(I zHHn111`|^1wsT>Q4+hDvT|1k2jXr%YptE|znq}&^!r=X1)7T7WAM*KcX|7U(o+byT zg(?}rw~SF^ENaaZ`>_tF-pP`xz{K;%J9UP9nn3&#EhFC01a=Y zR0WtX#hJgQ7`Gj!kTIfvYuS=SNn`Te%+#@w`)d?(lkZ#0ojMQM7ksca$}Xpnej%LO zux4b3?7ogsHdG|wr^WD~Tg78yovT(|giCM&wTVarNmz@VFb4EB`1}Z6L9GoeBAlCM zLp_*y#`)qMbWopSGG&VR0EBm_+X8v?Q9$l2Q9rG{F5}V3^^Z~K*f$eJQ3oq*-1o6S zTL2u_1I^7lg!kx_r_5`s48M|jPb%CBTrNc|qi^+z#fI!V=l8Vkba0<6ycHaQQ~2?$ zkF2wAlvmH{-Ix=$E{=jTMKJ(a7%|t1#-Krwaw7mZ!xS|H6Xj;Hx2w)$ zPFJJqQ($kS>Zx@Sq#g)5Bw@gy@mZF%A zj;r^hT#TF_&-@rqJJ((nBVj_W(G(HLG-f_4XRxH|3)EdeA?wi~iNs6)$7J|Dp$kw) z-si-W;uLZgH1+XyFrZj-im-GA4cBD@z}X=h=-9&l!BwVZDPK^tJO1o^J=_wtouw#g zR`ko3H++IhIBA=D851YIv{@E5=DC^5=0>zt@VHIJE4repneX!s2cO1L$@@%_1`bjy z-%Ea@hJ=eJQP<`=*rUjZfkor2`$;HptXrgIKRpA-EJ2DJ-7HyZx9>5>7-F7j|F&y4^&qnL&Ak0V zdnKv@2`uMp;gPvYRgZQA*j&y*v@f`&nr*(iUmr?59U2@uXHY&cvM>gQ0=)S9+I=|r zms?45cX(hLytO2s536nw@sLs|F2ZLU8CS~g+%9uS!UXswS^JVK?(rvQgzjy>$Y7h^ zHvG4NoOzz=i+u4iQtl#R zsIizaHi_E%AGHCeH~n}M-t6x256~ff)+|lx^Dn9$n{I+V6$K(}2SJOZ`_b0!oVqwC zM{p!`YXHpp%$F8Q3hP3@1Sj!6+8&s#iL$^!4y zeVx_)?i zRi^sN5U=!@k^uD{FPEZ#b4OFh#VKOifl60?6dCPn_f4V{wlOfDA{@7o`ZVTE298y* z(z0ZLQ@iQ&noQFTq>;ohP!<{t(>BA1-lR}HcCXbvu>AlUEz7ve5J|iNgF$qn#5ih2C6DAg zyRpZ5&IBnI_q(JIDB}fa$IS1e=;u194Q7u2m2kT?HIa1+R$V6h-DC=+sX;?+DCnXQ z$YxVC>SGT9^BcGxM3Gk8=MED;KzV}n)`S2X$bg+z{s?TpXv zc5R>2(qK~E=P`92GYTdgu6SIwB5F}`Wm02L$J-`PZ2Ft}WWJQsII?@HI8Ap=a1iTJ z96&YykFO(dBtx;lSEEV-Q(6Sep2U4WBA8As%I4!gY^ z;?qM7`tPX&Diouo^?w>O3_;gD@lh4@PBz$d@kcKZUJUD#neT4eh%yY*uHodeQWEQ? z?Mv6zk|6TtTEkp&`fXSN%=iFm_P97t6*5;-$A5joP#bAVrG;7!L+Uj=G92ws5;bj- zrD|M&q!{3<97cKHN9o`oGgPd(mUvc-5SUcT-pie1UU^`mCOtfW^~a1lA<|-;q7!`v zbCNyF|9O3es29PFHA0pH*ytr0eg^yV_Bnj3)UUi*#5Ygf0`6mvSBTHXrAQ(p#4}<& zaDF$OW|N}^vFPk8R`j;nl<`b3BJ6Ig?u^{<7Qjx{T+~C`hSIM|0FulX6za?=3_S2LLxBG~N?Na5C4d(ce zgUjw2X9I6%7P~e1^u7}uS*5*5tJZAk?yk-VcWs+W6#3k$u@SSG$D$#Q{HG4?&K~V@ zi(2q8+UrcK(;a!ElqoLr_8~7>135E|D!W5vzYCS7col+>vF9l@aHF853_rHqm%TA4 zWGpE|CInF?i&{awJ=PbRrZo}Syd@8(RS7losw?1DLMyHPR9c@P^Su#6BK2ZsNz1w^ zfu{TOB?faUS^Xl#tA5m2+4}t9mdNi)A8;UE7A}ffe-aQthK$pkJc7;*cUd=QC1})6 zR<%NVQE)F8vm+8lflZp;-W@gF+dtIw_DiZg6wkhJ(xf@&|5rnUNS^o~Wdi$3@QGOm zsQ}>UxVo;AZOX8?OJD3LHZz#Pjo<fdzQA(&v_}x<04O%0 zz=%5bv`)9mc}72IUp+NKs2XdHc8oczQXKl3rJk1uEKM0Nbvq7O4JJUs;M`@F^`t2C zJRIP^H+IMk;NSX;E3BbNO2b|70}MBJOk8;;Z_g4RLALZgJ+gi#bSdqpDV@B#f&zZU zB-SZEqQ>bkY3zJ#YhEh_1V1-en7#KCq;A%{c;X zpGFnMU3)p$`0G{~Xnmfx;DR9Y=znAx;GiL%K7xV5N;|3q01qCtpnxxyAZYZtYmgA^ z`8CjIpFDeN`yGK)h#{|Ks@+CUwu)yx4-Kc3z(Rq+>l0fy`SdA(Z3m6%Rt%q~u4*-fZ-mc_tD(9U@w0CPLVz4$yx{yXP9HE@L5*i4 z_yHj&!ape!2u)CgSQ;r`0p~l3SW$UA3G|ClqGO)Om0ATI;OUU%e(?TCmKFZkiRTQk^0D6b#IwXp#DR~7=X z1)1;!54J(0f>a3+Q73{~*f_ zts?cc5J5A*JixyQW}o@Z=j^y>`My9{jz0{fPEl5K+%ae>KmD&dib&_Q5+ae0-d0K1P#RN|4D?fTQt{O??fX9nCpmzm53C(5xB3t zqujHT;Pg^yDv)mW-L8*MXVa~9gOTwhVhmR%eKi{C%z6*&L0`lNALpkQe$L{5dTh-m z`R){_Z)Ds}ZumpNk%IK9fR(ZPj490`+{Wq;Kd#Ku4x{$SF6Mw}!dWbqy5U*H{VbqW*Rm@s#+IvFoZFm zSX9$#*RHu4xXt)>m-Ceu7%raw($fQ5$M|rWzA1^%4h1bIGeBBp%i_I+VP12^&kW@) zFp&6g7%HkYAYn7mfgMC~K;RnW#rIQVik;c zqWXKdg@UX0qmjEj^+^_PuB$oUZsuRjk@kJ*VSf0fKPvA>B%Bek0t4e1va`k0x|<%VA^Hv_8~^sJ$KK+!05Ynxre#d0#nDKQE)4= zn{F3LyES*m?9oFx#bpp)j}@sM_lz6D+y%FjNi$dC5FctVX?P~bmI+S8>X!GdO2WL&do_3FrV zvwOR8-Nm*)YfGpZDd1Xe8y-}v(%9QAcA|r=E0Dx**10UqrIcdEf%uNPWDbpEQ3HCr z#-lX{;U#zbYZy_PbIHoF5%#+OMg-F`B|9heB#R28zV1&v)nye|8GHcSA5^yS8tQj*!G8G!lESG2*+(58t zrZJbOCR%H?`7^CxhtB*R_YZwEe1{_jvXxbfm%{aalmvtC22 z%;SEd8L<6*jT&V>&VFGHRT!Mu`ExVih;^a07Kh6(8fh&jmTg@5)@;q^HT+v0p7ASp z)fgXLmVYGW{`2RTzb~$QEcRdD>9qmW&DWEUU`jwgdQsMAtBwEDc&K_j+0}(4+}2$c zV~RUXx_)W2fgby!=-)``o{A{yb}<`j(k#2*zD4A%9TS_<`ZvVq1s9h8Z_w$voCRmR z-=@9TeeGYn2m&~(FL|J!0gX6l$a>@W(U1A*2=)o8SemhA;WrQJ6<+I}9h{#%H|Yjv zuKX1Yszm;7-A@)6lM_`Kr&`@3xCLHDx$?GF^-ADv|DxHsg)0~CG98_k`_Bpi3^o>; z)~QkR3?{#bX~?ATVc(2;IQQJdi#Y{)(41V;31#Ns1bSQgn84^1M{R_gJa895wZ&b2 z3V;t9x+*vZN4O6Tn>+A(jrAEA`B3S1Zw?_Y!O=suFX1rah+Tq(QnJ^v&-9&_`bNk-)Zn!3^Z$KZA?@3LCfen@w;-1@)vo7M zOi$ewDt6u8BaPbdut5VH1#XW65;MrLh|Y6Iyp5)U|gMfbBa7H>C>Mjhji zZq3n!+(ylM%}f~8Q)@r}5bui-(9icT>dBhx(*U|c?PiNjAKju$kA32f{HecWt-dBm z0*CflxU?k9)3oyvOj5g}K>lRXcTD-zudl?LfWpw`4qbjPbvw+K$-f3fcQlql=DMAo zfSebQG;J3D9Tp`jV`?v#UWv?pCgC6R?A^iR!p#iOfI=i@cxVnCweR=q|L}72yz6df zql1UalJ2XfCPr}1ynlZ6{U$FkCcdnUXiS_moM1>2KD(rUbn3$^*6ZF716F(O`Tbw} zZh`{pDR?f}^gZ;WK3+L5EmAu4XYKnJn>Ns0WsC)n6b^?_D_|CXQUVwXZlbVj5Z*q0 zq8QH2&;r;%d=8M7hc4AVhvb0M!ptFD?QIXBMi$}HTt2r7{k#{Wvpx@GBAh?mXhJ{n6-=3Fdz~yLzOesQ{e zYj4_kvTxk)IUkp*n!Y)jqery*e;Q$okACtsYjmWy$utDFMu~mJAnAGF?6vzr#^@4$ zl^Z7H<+*7{5A8aeq;u4nJ($Q4TR>f2bPu-!IDoGR6s}&#SfkN_+f87xmm0k`@$9FR zs+XJWR@EJf|7Y~0=Ku&KH`i$vOujH!mULaW#B$|Es6t(&spGs4V|wnmmjk+1EtwCOxSndUp;$6@J+698s@{pXTu{Zy(C@cCbZmF zc26Lmk~*@U^}GYOY$Iv=3pST{XUn@=*ty=Rio8pBmIOdrmeE7Do{Z`M;7u6*KzVA`={I&tZq74ViT!f9x5-7 z9aG6fM|LWejg^MlpWcvVqTn}z+&}f7(#f9gy==3dBTWq+?v`E;C6we@nt*JsN;!D! z7&W`OluU1V=@($LfEU5^N+3orBN^Z z26dLlU}uxAS`0Vuyb--ov$)lyd{PQ=;j5ff&P%iWWj6O(O>~N_QwHG)r*noLl5!(((~*1T)bmqR@q? zt)?i?h49S2A0HXD$r5AJ9fQQl;3F~WwXvTWoBEh9&32yG>yv)%aD9X^1e+8|7c0Mi zE&h;QFYS=X{P2mg*5kKqDG~NHuf3c?leSdb_`q zd6=z9tR1p;>$-FA?N{ijqbQ}V$=}CQq*}>%xj8Dw0#S?OJ*qPh zqBwdsd%UTeFH*!%Qr@W0Wj7qh%73QuF#N8XFFH=g@N=m&@-^}8MSRQXC~7l%oR`_t z;33;Gf3{@twWTEPD=Z+t=_G*Vs)_|7MSZr_I}7 zit0W^Q;{Cgv|%@8My=*viAv9Du|{?9jJ-)T@-GJkffj?R4_ZUCat!{;@RXSQ$0Bx< zsz9^F&ilT{lVzgKQ%Q5}rpzO>pu=x13HRS1$A`_4tk-7L5BDazhsjsGmsYDk#@LLK ze+XWChI{B&Vmv=`&iJsC_vF@kM&w2A)WB-V1#AwjhBT~(WqJISl4^SZwFu5T8hB)y%wBiGBSXZ;4)asgG% z=kP5U)?x`sP*Hf38u=p7?tbu`q<}H2K8akfR;F&^RVuBi;fjsANndamW<6>8faXMXM z^!Y_j&>9GxPR7LweX#T_cP)N>@WQ(!=9o-)K0!hpTzg_IwMo3y{Aa!sC$y3zv^nhE zM|$J#qpi|vU>4KK#PNc)@&;TX4>P2kWwTl(d^)oV)4uPv)_DgfE{- zzX<#5h|c!(hz*;vR6~wV{3r*4)nU#cT2(zy=s1d6Y-=L+OcA(7OVrWRP@Z!jFIax0 z8V36OlZPdEAwMvfb3{vyMYBt-GT`3$qB?`nIwrdfnzY`;@?iI~kPgZ&c)hh6~&T z^W&^tEhb67$3*yw}~HcX%a?q@~n>M9m8!ylOXSq7@61cR^0{0%Bd+y z-Zftnz~4v$I8GCg9@46yJSg;JmIz)G5?K5j&y;#~$Q9|?fs`wS*NSJgbEKoF9%U5S z{KqeTg)p-D<>L~Oug_m+&HsbS4@0p9Wl<{i{+c^%-ep9Z*TYL2l`;p7*;h%JN|~&oK*iu ze8bikJ=lY`(+jzVGM8(rik#6)JYyQC2vcEJ<2s*v26pi=Av# z9D`6DJf0#?L@B*$R8;Fa%t3MjBWE*mQ!(g zoi&_UJNeVo(n_-Xokm?0^7$chFnxGJEvae)25!56fZ`q@!Pq zb1Eg%W(RQ`jg1t@sYmA2REV=Jyx@!f4oRyhiSD8+%UwZ&v`XiNBAZ`~Z*v$$o$eb? z9z{jrD#`#4U@)U7PwLPB>d_Bap^B^-n}HV_j(6TlVX}8WEtHlXPmje@r^1(iHgk(r zkDbc#&fwhdcxTsKSjoEZoBLvA!?mTHI-P`j3B!$AMD1FzE}cxC)APPy{8+bmkA%^c zb90344uw-E*g_>r_?X#uF_w$mk0>o|q*Fom-}Qnr80%thr04?k(no-SGVE z(su(}&N>!Xah%dHvXj+mJ6$2H?@%_da(z!#vW~5Ex1wsKA3w}rYe&J0IXi~+r$h4c z#{==lk#C+;yhUr^CZcp}*)qvhi@TgD4`R&|EVrRjZorbxd!f?jZj~4nqs2X(F+B+< zf>VhB#8efJh>YSr0woS>8E1Q0$(n`%U$#ahxo=J6IoJh@(Zm zW_BjUEZWSS6f9H*C5eHm5$0_=BaZ2 zP*IzM?xj_QF1#Kxx76cH)x+mG5e|1o8k6tYYM(;!mlQhfjH%NaiWLbGzK3P^C74Sy zS?~=ieiUV}hXAlb0-){!YFKNKPDK^V_&La0N~flXD6(Qy8wDV8SS^WT+2g-#P-u-( ziXV)`bd1LCYgKG191#?F?mQo(5Z9k7Z+ng-X0e>&UyJvjQ5+oPqWxmKb?@;OYTM~S zwxR2{^R10lt&@Eo9nVdP=KP$UU1_>ILet@4yW7kJ;M1|1yq_ZAHXC$e==If>HRvgy z1ZKk)rhy+#kjFEH>SRJQk{*nI*LA_rs5Nj{(W6M=bS}3y#z>4ulBbe9@NLMxS8Qvi z^6AxiZ7OodbEO`wr#lx`)4Psvm)R?Ri{-lCF-g+~4Dw`KSh+vaJsXzQ6KUkceBUGH z?+h!)*q^jP)rvt%TaK{E{gS@{EsT7>4pPv9D$+g-Pv{T8PkFe8mxyvb&V^dP)jI_i zbo6U ze~rwGQ4+qp(V5HXEe(VrRBP%+1|ct$FPi?OUB zD2tI`b@m@!SG>;as>NPWzT=QM*ktjvqxz7h=;5L@JX<{7D!H)ZZSU*AdlyZPys=eO zWH#m?G4LiY8#Cm>9Cp-t221`@Q*H@*@b(9UngMNepxq0zp3;s}646zyjPO0|@{cJq zefyXlm#zpkwkCk2=f-nzmNlFy!~G_-c~iDpqZZACSY0A9_OE1BKW0F+S8CL~p`Ue< zHm3W%WTTEEEk^m*h|d?z8n#BsdB$Lz3+v8pE)vAXGQ1`g?PLBkqkh8?r)B30;UqXM zC7CN#jCHM3#L36vD{{g+6RGqX5V%c z02yZheWX0d_61 z)u)|s6yn@dWUH9SWuK$vFO?%wCvD4^f3eL|UBI8RU+RQCb@6}tp4IJW*4vP{rwju@ zBS!{gI&^UCbt1vPt2N=p23r4Z3~UjO=cQ0%Y&rd*-Jk9E2*J!j{6~}ONlvDo3gdHp zAAhaobqIy6fC3jiRv9~<=ZOl8b`z-OLCKh&Q_U_y9#FBBQu84sFTi3@=)fH@bmJIL zc%eU^VMC8qE-MsjA`^K|vYFNy?f#RU#X7eq%Q!Nebzb{mieIGTlQk-f(u3H{QX%&F z5nsNqA>Q@o$+`V5&ug1+;_b)aeSXB;>s+L~!fOvU=}{>I3_l&7!#e3x0 z=*CgUNU|F%@oe)|RY9DkWSKxnV{(%&R18@q8v(qv{Mg4~>)i4Lxz$14bmNC{szmIP z?d_+zm~u}xFtih-h_pBzLpv-oDyk6P|`J2bH?f6y^27!tg>XaQ$L9 zd>UtPWib&v!%se>8iA%(C0%Qa3to7bebbpU#%7QBAT18yZ`teqDZ8ae!(-?ytR^L% zN#7C}N{F;OZz9JhX|l?8tL76NXR8Vx$cOxt+)E#6PEX=Fmm)u3F1`EvwcJaLiya2N zn$o7ald8P)fkLfnU3%k%+1&t5{ca}LcF{e15&MN%yDZr)CSii$s4PYi z=tnF2owHEJ)JdomC?2TeLjW84${9+gaeDfCweM#gsbDDz_G2aWK0t=mNx3q9NeO%h zQfxu12{G4;`9}z@H<-}JMT;=G@ApLhO0cV}>sG!BKhu-b+5G@(ncBF2nIXh8i!m$P8@6JH6hE!K*uuxVrWI+X zFtb--EoGTdI?nJ|I;qiYSb6No8%{JwVAkU{UH-Cg zymX?eK|ZIMdG|4^7w?1>x0}+QV*&J12#!ph1&Bw^S&r(4fL>Gsg*w9RjseX^1$x$# zARrP6*DTHe!VM(>s4V74sLnM<1V=C;6}ju!z}*`GcAHu{;|rujLY9hHD*T4oX?bIO z{@ji7m!0ipTix$PI&Pq)Ll%}TM+Qa#_HU8zj$)8KrTI|8r>CDo(R~PQAwDMP`AGy}!uUi*uNJ*Mg z9~XFvEP76ytJ)^-eGorO^SZ(#U4CsLtN(UpyH`z|kw*d0z6fwemMO$$IlaiHU8b09 zDrQtjrX2=!#5ywxbpU{H&2JM0CJHm!c{JLMcQDY`z~LO}~O`F+cQKeyA9e4CpEY4Eo4oXfxV+Swp(YHV10- zG_EQzg-TsZLE=O61Eu}PK-Ukp+FQPIDbYWRiMRhG?BYanMrls9F`G()|Kz%nZ2PJy ztPE@80qW&xCqjxu*w0SdDR!li#7)#3-!u-h$bIK{v~$1K6BS|b5{cja1}zTRa?<@F zZ>JeiPJE)(;ZPNzCjg$P?HUQe0VM#^FFM2*Peh2CR zbo-OMh#e9RG#m=_AP~@l6iLp_LALt& zXY`IBI{9;lj|rnD`_2aD-O8_K5>x!*Yn$@`SBaPmE22i8&P5<&9sOOC)1 z)^=xU*zPX4@kA646JhVQsZZr(K7Kp}FcQRxl%l9K4dJYxF)0K(BpkT@8u^m2oKIDp(mz)UXmO{)_7=e{Du z?i_WXmpqh;-TH_fc5=rym4wKumquYD@W2&E*r();-J+zo`^DLK!!t93EK*^ z(OLM$2tAad6PGJv^o2&iSI==Y7}%Qo18_8^0;vVt0mm0uO3y;lwEcf zYD%9G=Oz-v1L!#Wa=J1n?XRF8)BjBu40h7vvbl+UdrKAr)*TLO-}%v`g*ZKd|K+8b zde!VROHef?@W}Dw!)U&2qR@3F8;5*S1VHOFDzFg@T{d3H+3}qnaH|(E-W`P41Ul@! z6|CR?qGvmyD@f#^lTs=KhQ>a z)S2z^tI~)fiYhh={m;}pQRdn*%S291pD$2bX)NB{f~2YIbK)lg>4Ri zNGAGZ0PK|mjAM(st5huGJyR3`w%)ta2?{bRd1;MbAL(11fkVZziy(Zh>H%R~AJgmH z!-R>_jsev3&2^UE^9hAB2h#X=PBM4($uduu!pVr(D5ojErrL-R*p7Ck4|wc}U?+`&jlnnKVp4D)*SK22L3o5#Y?bPUaaH4-3cFPo#-=z)0E*<$DD!2u9&s4}6BHew@*p?HZlw-F^26?L^dHM?|4@|)P* zk*65AwBc$W0xjHU{MJw+W6RRv7g@U-TZVhoZf%>3Oc&cp9$2#oeZ7$x1=1+b)3`95 z)13Y9T}DwX5Ib&Ry!!~T?Y1Uu2y=J;b&kbdzpp6-niC*;=K?3O63}ykz|d&?EB6Y* z@edUkg$x-&oI{_#YvC&Mm>rIGivPt$ep*$(f8Y&4p(Y%bI$~&m60z6wi%{2mvorr% z#8kY?`QiEHQKwRU>&xB5#DjG52=I}<;&|Wn>H8fHJzB=wek*kG7k>%GjruSlzpy%z zJV$`6@0{_S0fwd5Us2uf^NiZ0+XyQ)o9Yah88B#f)kTQm6;SZRqqQWy;Vr`TplunC z;IQvzhA~J6IfBujukfLylnge;9ynnfaJs*1;oc5FOTiUo*n>dE3vD06`u>{5bnNi) z9FU3+KPZZdVOO6;dQ>#Qapwm4yhx5O1V!w-JZtsJNIY3^GM0KokYDc+48+CRV)s`c zt@DL1n}NT&`d8VDF07-Oi9@T&(on}UctoNK_-L}b$;gYU`464;palKVgf<=8KU>&+ zxaUloUf+$R3Sg(&2`24GFh@;IfliO2S8h3Ud);+qtve_cm1l=^s-e&B-zUoCGtzu> zdae?bqlL70IdNV3{vDo&gxh!hRibMNcd(aqCSQ0p>a-DnX%9M9Ky8Nb=#`fzr(xzk zXJYM!BJKTJ(m(i%gl@@3j55mosPN@BmJB!ymt&pFBn=@yod{hxyE3oyfxZ;?7tmuu zq_tA+DKk057?gYu6%a^a^kh@|bJrE9NT7tXbI=+sME4iNyhGcK0P=Jc>VUCf{Vf>P zwz$4rrvpxyKlH2v3h3RzUv6UR8$M)jM}(hy(~==&?~#>Vd{i3-Iv3qJ=`2qbJ#`*xH}zOMC^HjKV~7U~nko-lU=oY%m1OCDZ;i_NzVR$7TM?b)i|pq51$#_PJt$ zi%oyV*{IYW&tU$py%{$RPkoM`OWPtQPNk7M-JS-zEYDgPm0Pq3Jjkb9E5};UuKeTfnT2yl0RQz1s0Sp~N0T~0NszE1 z)VtrEL8bVY>D8o%z;5Xf;VlsrDB zTF#O2S25=YR34ms-_Ozpg&i-#UQ!yNX z9N+hcfaF<{;fxu8eG3hud%n&F!ec#Q)6Z>Aa{}zV=@r{+2)VnwnB;8@w;G9}&Gfhw zvTq`BPwt7RTR-smdlt z@HsxAb=Fy!UQkKff=!};Z`B?_l;rMJvk!+F3H;lrY%2(sJ#CXxB+$q5?gmUA*C3(? zJ2U(RA6)UeMeM;XF>0v-Ekg><$x5M^M7SYYYWt;VgTy~~C+_)fJeIvLlBx_> zwupy2^+)A+=S7C==l$5iwNZB)0g|oa>j6IXNMR4qtD81bt2#<#Nx`*f0dz2sd zdxk0ZKh7&^BDoF;cq?iGd$N3v!%x1bPszq|;gmhLCOKLXP@yl(fT39ipeg$tT3>t7 z_o|kIFm@6IA+5;5NmS(GEy}j@a)kHhb~&T{U$3D0z@Gu2F!)4j+0VcF30tMRjUeH* z5jXwP#wqLF=ltmGng-iFQkNuJdhZr0c|H9#1D!ni_58_ttYc|guU#VXY(H6N^{`T< z58cEXR5!pOArL3g#+l2V_=M6`c|Fwo9@8PJ8MAHqRTm-PTfzqsyMh!q`@QP*e3ivVLNq?OTalR0zrATpHo>AH#j5Ldg@WhB5 z%zR;%?>O8skb-DqH#m))w^WU&Kh1H-$}X*k!xjeFcCC9p1pEYH)~q#yrQVqMjo^syu1lUr)zomi1UoRRPT3O{Bz_Sx2?lt@>I z%ewtT`uL$LLo$t9T<4r+8UzNKN;s8P`R(I4@02`X2~L}tWG12{KBlN?0(& z?R;)()fZBKeZi0N)VhKhKc%B3Jq?w`?v>4-G=6`oozfHutn<4YiL!o-tHd(*&12?2 zMm>JAT#>z0sFH*Wbap%ObYlnc`G>~rh&eF{PR0cZ#D_d%HAKn*!lZmC)2${@bHvW3 zgz7{Ti=?DWiSta=_n`sHdq0Z%UGw`_qUJo59);io5-(8kWzgGB=q5xa`%}&yrLXyw$YkC)lldU)x=&)(r`EiL*h79#agUg7q9( zK>+|4ufPswJHQovfw3vtge)x2N&e;MwwUE<;2IJ*>MFPuf;RhH3tG#=rWEy@_f>DK z^3;^hqCa~&%filZY=#FFIvb4`w3Vfl&`pWT-uJ3p(UG*q%{p-gAeTb>&Dq=2IUX-K z{VrwQ|BQ6vjKwI;SC!@9zYZHWB{-SheUG|RICFydyB=r-gb85UUx6_D(VS&`4CLw? z|3K?nd|o_eB!^CW39NBLUmGC&B+>Xm5i|L;Jm`mx?= zPEW)TC~xU+-^6m}AO2{viM9(qlu4kyhnLiO09W~&3e0mLX?L2L zghR3kFrnFPL#f9gf>@q7B>>%B^T#WT5fMfRM2k)#Z87$CHm(1y%YWDbFfSv*r*pW? z!Ktcp%V(X6J#)l;AZlcack-VY;J8^9-OjfXahsP9(9Mr~5PoLcq~=$zWzDJ0+lr>c z@W$?JpZaCFJz?j4%jbot8uwe-^y|O{_m1=X&Ytt!5?;x*h)oi{Y>UA21d+{4M)52r*&p1(6@QvjWs>@Y#CB@{S;Jt!sFyJiS9?s- zCo0em&8>4u-hSxcYSUz}b8~zlKbAI~h`Y=v+O;Te#P`k!zcTNI*^f^DN2nhrZ$s7O zfefO)-9aDcgjl0|B#cnG5JW|cAy8s`qn1lLzhTeHFX)8K33LZ&j&xrLP%DK8s2IAj z-QL_T4@vw5$7+I~@Zx>+1>dDHoVNW(LJ7^6)~DwY*#qS0-FsSyzjqS{LATj_BA58+uDyW3$y$ty`XKh&^H$Oi6lIo@io7+Q-QoVY`2f zGQD0rE|C?0w{Pm80s_m)6w(lSj|ptzWysR+)0A?!h|vW1KUZH7w02~b49)Q`G`o|M z>3Fa<82KuMVBbh6|GBM!Zam^Sd4dr*<===kNi?;q|qL^#h`tgJ3;7X}GD`x_r5PUb3$xFGOh z-1j#!fLgiz#LG{!0%v1)tY-5#NVHN@a3kutTlyq>_}BiU?F%aZnUv!DjWufc*+?(R z?!S37YY)P}@k>NgQ{H)|R72geB2~6_#!*tPp`I!SWw9Sj;OP00GgRsvQY zY@0*>l>Erc=zYEOB+rS)#6)Z#(Ce*}0iDH27`J1+E?exioRlFjyK7Yzb1cK;qpkVE|puAqvHFRxOQ1ATc$GY<^$}Y&~~Ou$h4^<-Eip zm$xXqm>`_{T6v`SwxExFV-LTIdV!_qyy*)~G?Ma&wCztT#Chn^wFXa$-4)-<^V$X5 zG3nUaMLqxA%oeFy&L_xRnkZ-0P6kZeX)mSAu>qGYto@H0JZqMLLvz7hFn<)z%$1QY zTMS#bOaF^+0!+r&pF<6Q29gu|6MbAo!gic6R!~6Pi4#oNzL46+Ya(%Mo;vAtn8KO9 zH^8$(R<*<&z`)OMQFc_;X6FHBrSRAsaC{IP-*Hq8w^HRVbNW6-e+Z$M|B3VWDko5h z+MrJNFl>;V*%5p$vNT2{sQ!VIPE$e0ZABFa^+32RruU8G+Yyy(b80a zPAaq|0n@<2S&X>A7>^D)B08|XGuF9=qF-g1G6_WsgMP_34Q))m=zDSEAL-$hpqe5^ zpkv8K*em5|StA#Ej|#*isth@@6uZmu458Km2^O99BRBB4A>q@2c5!3D6k$-m(-X>4 zMMxCx2a$UZHXtfQJzC_?UF?|$PRR6A~_sqy=7!D1HK#w!! zDs|dliC&)W>*f7xEr%UNDi$700zk=wYo-1jH5B^11kRKYIRtpVsamzfr28$%*tFFP z7~_a*74+dDE!bI%BM-aaRe1sDOnFxrA!MTtgg~FpOBu(0X(sZc7KJ$wVuAe%MjoF< zc4b^RcbY6>F2?r9upYg6evNR?p}&wsP=O&NaHy~OX2-CNqMEx)Z}{l6tSFNBr*yFd zlN1YZTTBK>V^=-*F=F0L35>>mjRiSY#n6@jA*Qj-=$lQ?3_h*E?giefTZTy<1A| zDNk3uOX@9+QDTyFSkeYWk^Qy^x(L4tm4yiWFz z7UheqxlBmjZVZREHmL+Sv4w}nRsJ=^Vlp+fabT{h(ikHw5N#%J8))On1A78JaPP*8a5ssH%* zjmle{%oo$o4+m{-_ZO^=7qvUT;rRkXIw3}&7>llx9Itbgf-7@(;x582&D~>l{Uu^H z`%^Lv&@c8Vg!q=1zJ@Q)=c+5ljP25|KEom@Qi>2}m!YGLmo5ZG*S~zia0G;&JSW*_ zT$y+hq&8MgDLo~k zp3LN_H}@QneLh7VybSTaT^+J?Oh4rJdizCgm_c$$c-i4_h@kV5MO}EroSyZT!`mig zpcH&t3ukgPXGS-03R9) z#>GMRMp1`iKR8(?(F!|;iL%I!cFD1+W3p%nzL#dhIs>2=u=wurPT_vxL%^@whEi_@ z{El9M(>!WpR6w;aFz)$p8&au=J4LTRxEUE@!v)1KTldR0y9%^?wKk^w=eoR0riX@- zPjb~kK2JB7bk;aW%l!M&OFe>3T6fJ6KZ<;!^F50&(FYeK%z%1D* z^3;x3f>sao4bI|4hr%z!E-*GnKF&)_@x=fi6Llga*NgbCuKd+OGn?UDbI87i@jX23 zGAN<9_I;gN0d~gqq?SZL3`$vhm<&(@zHOS@5$sjP_ zHsl-hRTzwYIeKcLlca>Wdy}a6My&i;M6X|V*#Yc9m`d2~x=@+(+r~;^#f{}-Ni=Tc z7gD5UR)$z$G(E;tb2_ER*4b0)J&$(%7rNl5wMaH}v&S`QfVfjG z))1kS4z)Vmx4pFk^)}Sm3sgDuQsfnS^XUCB$>OuZxgiJA1&vS--?CL? zV~SldH=7#S(+2z324=aoay8RZBk|J`RBZyad(3jDv4jX5J7r7rB}Ksk!{qb2Al?9e zn)lrs+0i@dpPXxFH`MyK453GS_{m*j&ziiTvGBOUnPFL`jhLXUf9Yt-b`1;%{bW31d?Y}f1F-@B8c!>rOI9x zv*R>+AX?!Gcnq4U2bpJ;J-~)hgQ=&DHwtl_)NcpytMlc{@1PxMZ`iJTShtLZa&Us( z*UN%SPdCp>Z9h$8fF>p^=kwFj>=6gor!?&Y#76GszF+NrqgitQwlJOjW1-|s80+;8zA z`HDFXf<=K=mm@M^egJ8&r zt`Ef*3-A^@!1S3D1Be5t_`5Ni#`9$yI8PV`chu*BErb!dq0dca*37Mp#Ft_Rye6A- zRyu;se4v6}y1)Ht;VXyp`f;v)&1r}f$(}iQoDqxsxQ_#+Dt{a;>?NCD`m)EQMEdvFs6o)A&G;CZj~>qh+s#)@ z+4QI>=|2+W`6D2-t}w5L4L|f2lFrfbozFjESe~|3qz-gmzEnA=zVIQa=z%Wzg<&); z|HctK(SKC0K0W-5!#mKS4EwfJHN(z|niMlfu9G@Q4*vZ<4;2@e5;6Go?YBN>Qw;LB>gYK+R! zX*IzhG*u@;m9itfOAZ29lf`314;cFxy$CP}{OVp%>GHbygb7be?dV4QYYeM}s1XmO zTteSUPIDehj+7_W+8U3l{CjU`);-BHP=g~~-mKveo`0Z<((}*l4=?+Z&-bQ(%-M5w zw7_?!fLIAX_d3t;q&hUOezNSB$HKvvH+_#aEt71%E#rfu)Tla}h>DUhVlfls%q#J< zoq#F-9hm{^6B)Fo;g6cnk_y8ye*+*FQPqS7!cqKxj<{D}z&aumVLITAFo@igs($bI zCXTxC9Wihw(n|>&+ogmY#X$OE5%sncbf!lejvx^O3_^Bh(KO744s^UMl3;e5||q|DaMTft5*k8-p_tN^*_R-3=X!wNGi4@{J+>XD<5efjq&Mk{%JP++0vf<+;tj^h%ph8G&QWx!+ji_h z_b91>$YA#QL)=GUUV$(<&%Fo@w~43h0X5-&s*`vXq{^2gxsoJECHG)9=-AF$!vdyb#6~|UI(Xrk(cZ*q`qZ-XU)n!K(LrWPjjS#g z_WLWvqNKrMlsvMe@MU>{(XEvl5EE5Vrc(0xiL4&C%$H_Q3tr`<*^hFz_%StZH+Svb z7iHl4Sbb-WW1iQ0H0MZSPx{C=(XD4;xS4o0ed> z+;2N9x1G+#Iu1<^BJBzkqf^`=>dFG?=EC>4Y!vco$qbrp zy+?)H~WJUDai2|ID|2x(sC#JK(B`kfI~0MeUQ|Ddv0!SDZN?+nYf zp%SP-5qLCC7#+_2JJ8V9Vw6(EkW&5~z-&M1p%zs98zBc%GVQ6{R`5=&6Lk9_F=F$! zVJjXEU+#2dp?fSxrX%Z5hiYQvD)n!Hj#dyR33YviCz-5Xr$`->(mAj%ks!{=!T>3u2`Lgb#8WOLOJ_OlN|Jd_@-6JGz~9ZAtscLygpm zuWD1}P+u&-7aya+kdu~%-7^!No8Q=Pvd=aN!}E_Qe&D{CJnK~s;UgWwoDi2~ug!J- zRbIB-J#3&ntXB1`3^1lA&!;sduynS3+bL?GH%H>{|61>pQSHPUs$~3{TXT-qd~6+$ zvepwBEAF2KMsY?USY$ppnT`WRG^wV7$S-k6=JvYNz7BH4k7t_>2O_U=lBIch(HABr z2@`rB$@rqcG+(a<8~;=w!zQ$CA*L#G+ui@g50}C8>kD^JYKGJOF@GJa3-W1)2*O&w z&Aw?rS};da;amD+`SbSW~HFzKYn%^ zJD2oPlV%?JQdaicHD^1flDS_W@}DpQr2=LoE;C+iMnp>(dxBAisHv#r|C%AX8D}S@ zRKg&A!kP&rY~)#AckdQ}w~jClijzXx=|ty!mA7}?^4J{Ro$OF7O3>eH8EXD1THL0g;$I@E>qj0{ekj7DSm#a{0c5H6J2 zPKF)KLq9A7@$&A;;yuDvn?s;nO8sfFie-_tznb26UUcuPa_NDLcRC|O$OI$#8o*N40$5$_6xg$vl68=m?|8Ny1xcEm>T5Yf?_S(LqSKt^X~tFq4j3 zj6F!t$m9gBef5pxZ0qEv>yNC}hQj18$+nX_=sN3rR=9BHOz_EL9YCe7J2_##0~;GM z_ct+F9|wK^I!H^aXCKaWhp9i?ns{J6gb18jN233C>Qf~Z78o1LZApFn?@`FW7q}rf zJGR*oO`(OIutfj^ti$L>Q6o)s!9y73;%xoca|A7U7qq!>Byp_-M{wsQF_VMO1{D5u z;nf;u_Um=hC3PP33lRyl?E^nWvL_R7bzV29c5bpe8(AWH&env-?(ToncxpR{PlfZ`jkq zjwJD%IF21{5AVqrx{16BJ|>(-)O!Jwrxtgf#`Wi@vB-dE_p26d%wNZCB}Lz2pPWo8 z>6AQ7>hkOsgVU8CDIsW*?c(qoUy2tDAN;j*IKc2!tPVE0lQsf8Dck5D@pU|Om=CIx z6y`#RS%}yFjv*RMKY~grFs$4^#xFmtc<-qDYW7Eqpi|Q4gJK_n5bB*9V8cKNGkwJv4o2FFBeUQ*2>`{) z4>5Ic*o4?2ifmnI2HqMZi1cY`bZVF4(K)=5`ZWn**Q4Llxhfa$3=XF$Ix0V|B!rf( z?s9Ggt5{kzcEwEFbsrmB?h8+o4K8UnOR%GHGt$OiNPNnFR)(ZGk z3_c=Te=!P?FM+%Yg*Rw>Xk#Z&Ls7dJ&M7!#Y;!;dWcQ%6>7if~F>uAisj#1;Xc~{A zuWl@|tuao*h#4mBt3sxD?x;aMz6Vp~4g1t?^ZVZ{8+857&PTv2$98U(P|hkY-4v4@ zIIkkv(~cfVs&ovuFsNRk#(r8Uh%BV{|zU@feogpLfKs z9MI2vft%yrcgq%NAC!2fW{(@r{xBKc4-3L06ueO{4QhvEJmi$Fn$L!w(+X!%@Anyv zsrssn=^h@|t5az{>FhI-($GpUl;^}Az4N7eC>x8pQz8dVwxPA@pW5|b`g&+}iV?}B zjn7dxZBXUq^8HIQ@>YxLKbQK$g>$YAI1!>HMB;> zNtqD?I;>?3k0JmyTnT=GS86~x5it7dPG^Fc>=OVDT zT&<>u^Hj_*x22>L&%k}H=W_a^AQ)Nz_=$QC>A|Y*k^BXlZpR+Jn|zA?mBU(RIR%uh$mW|OwAAa8CvaH0sT1jBR?$8dkqUpN+NUjqEM$w7y_}%UTr&ekJF-q2Kp%O0t7xk zHOS61#mNSR_1;cl8uvhDyJUSyLFchc+Q7TR!F zyOx!Et35$!@7pY3`;tM5060-lxO!hvdfsM%X%7h?)jq5v*!F3___A#6gDi9!qE(Vv zitDWl(MA*42&9pmulNYLnc>6!*@3ceX4(rLh&*h?g< z!`$9alyM8|L=Wi8dQA^6L&IYb1*6!SZzvPt?2IPr5}hLJg*sxUcB<67F@>E>Y91G+ zf2KH#6^v-1&2dlq?9h1@$Ivk>{cHPjUGlM-(}Mj7M*+v0dMtY?i2EXyKeVIrMv-K^ zdcTv!Gj~DKBc2EjHF)!g<0=iP!@MRYOfV0+*tVqE5Pz++Gf|)?^@Wo30>`&5$v;NA;AP4{ z%CClYnyP*yRC46S=09w%I$MrXa#@$c1XrvT^c&H1VV9H-(`Pzk2}ohz3F2nmHslb3 zT_(3iXGGTQfOwlfZQBcagm8$P&06@7K3+VL6;4Z_jrp0^F?PRtyPdu@^ojKJFpUV| zF@?jCo99Pzt%XRvw0JC8izpncq96YGFWY5rgHR(yq_E`=-Ep8|+(?5**}+y&3=91~ z{XNZFcIvWC<}ki#?wdM$EgN1#&Pg)<3vR?$R7U<8{IpEL#q@_MaMD5ENCm*CShW4=1evy_ z5yC^ty<^SVB)%0M1{>@WmsiO8LKS>;lXxs)%%B-fKZd`N%qBR$2#``G+BK!sBe_nb zfk39B(T#~+97kEpj{jpQ9BlEU%lN1AiqscpZhRbwFp}~6gs^IV+F5xmi?umn9Tlkb zVm;T;oK#9a{&rm=0tlD<_`D8f%y8rdhZ2G%eEsr(0Mq{K9JR}8T zNnSq1IZ?;6^K5*t&OAWPz0Wz2_AqLYvVqQ`$DXmkI0xkY@khxyX$4UL|0%#9kAAy0 zB7s?atmaJbEIpdO35w?Et^>k$)O_ z)PHS1cj|cibN$+|w8E=3fzGP324H$COcj=ouG(KJ`(DI@!`T2EsQ>*2(otZ4i#BzO z6}ChG5mhCJifQve{)17h9``h{K>bOv=BFrv>|}V{gCj&x=5tCHn|r&s;g)N1u4R_j z#ywSpQXnG$HP#6Tqn01-yYsJ*RT`KRL21R%&e$_$*;sv*y=16GEpSMWzgm$E(Ks<; z%Q`H=-iQV-;a9u%o41U{Jnoqkk~+3D_c8J=ZAtgukBQwA9p?v2_gAB3-pIUbikaT6Bt?)DlZAEc)AeW0d zQI_q55ukQ`FOEYJKOhz2_ZIt_s2}5Ge9E)})xhSnBI%DO`wuFGgiG*YD`VH}31ZIS z2ef>jT)J@iqngowEAX1BgTzj zn4B!CkIHweD3>lJ`{Fn2Bn77}d_Mv^!`xa8f6gu0LbyG1>!ckRcjneDc!&G%`tYwG uuE2*Y@V~wS^9NqQJYsJB-#)Sf7Q&s#Y~iB$-(mQb2->}Gm*~sGKm7;%XQJZ( literal 0 HcmV?d00001 diff --git a/examples/src/ray_traced_triangle/shader.wgsl b/examples/src/ray_traced_triangle/shader.wgsl new file mode 100644 index 0000000000..54b1eb5420 --- /dev/null +++ b/examples/src/ray_traced_triangle/shader.wgsl @@ -0,0 +1,39 @@ +// duplicate of hal's ray-traced triangle shader + +struct Uniforms { + view_inv: mat4x4, + proj_inv: mat4x4, +}; +@group(0) @binding(0) +var uniforms: Uniforms; + +@group(0) @binding(1) +var output: texture_storage_2d; + +@group(0) @binding(2) +var acc_struct: acceleration_structure; + +@compute @workgroup_size(8, 8) +fn main(@builtin(global_invocation_id) global_id: vec3) { + let target_size = textureDimensions(output); + + let pixel_center = vec2(global_id.xy) + vec2(0.5); + let in_uv = pixel_center / vec2(target_size.xy); + let d = in_uv * 2.0 - 1.0; + + let origin = (uniforms.view_inv * vec4(0.0, 0.0, 0.0, 1.0)).xyz; + let temp = uniforms.proj_inv * vec4(d.x, d.y, 1.0, 1.0); + let direction = (uniforms.view_inv * vec4(normalize(temp.xyz), 0.0)).xyz; + + var rq: ray_query; + rayQueryInitialize(&rq, acc_struct, RayDesc(0u, 0xFFu, 0.1, 200.0, origin, direction)); + rayQueryProceed(&rq); + + var color = vec4(0.0, 0.0, 0.0, 1.0); + let intersection = rayQueryGetCommittedIntersection(&rq); + if intersection.kind != RAY_QUERY_INTERSECTION_NONE { + color = vec4(intersection.barycentrics, 1.0 - intersection.barycentrics.x - intersection.barycentrics.y, 1.0); + } + + textureStore(output, global_id.xy, color); +} \ No newline at end of file diff --git a/player/src/lib.rs b/player/src/lib.rs index 3b0b4149ab..af82168ae4 100644 --- a/player/src/lib.rs +++ b/player/src/lib.rs @@ -119,6 +119,94 @@ impl GlobalPlay for wgc::global::Global { ) .unwrap(); } + trace::Command::BuildAccelerationStructuresUnsafeTlas { blas, tlas } => { + let blas_iter = blas.iter().map(|x| { + let geometries = match &x.geometries { + wgc::ray_tracing::TraceBlasGeometries::TriangleGeometries( + triangle_geometries, + ) => { + let iter = triangle_geometries.iter().map(|tg| { + wgc::ray_tracing::BlasTriangleGeometry { + size: &tg.size, + vertex_buffer: tg.vertex_buffer, + index_buffer: tg.index_buffer, + transform_buffer: tg.transform_buffer, + first_vertex: tg.first_vertex, + vertex_stride: tg.vertex_stride, + index_buffer_offset: tg.index_buffer_offset, + transform_buffer_offset: tg.transform_buffer_offset, + } + }); + wgc::ray_tracing::BlasGeometries::TriangleGeometries(Box::new(iter)) + } + }; + wgc::ray_tracing::BlasBuildEntry { + blas_id: x.blas_id, + geometries, + } + }); + + if !tlas.is_empty() { + log::error!("a trace of command_encoder_build_acceleration_structures_unsafe_tlas containing a tlas build is not replayable! skipping tlas build"); + } + + self.command_encoder_build_acceleration_structures_unsafe_tlas( + encoder, + blas_iter, + std::iter::empty(), + ) + .unwrap(); + } + trace::Command::BuildAccelerationStructures { blas, tlas } => { + let blas_iter = blas.iter().map(|x| { + let geometries = match &x.geometries { + wgc::ray_tracing::TraceBlasGeometries::TriangleGeometries( + triangle_geometries, + ) => { + let iter = triangle_geometries.iter().map(|tg| { + wgc::ray_tracing::BlasTriangleGeometry { + size: &tg.size, + vertex_buffer: tg.vertex_buffer, + index_buffer: tg.index_buffer, + transform_buffer: tg.transform_buffer, + first_vertex: tg.first_vertex, + vertex_stride: tg.vertex_stride, + index_buffer_offset: tg.index_buffer_offset, + transform_buffer_offset: tg.transform_buffer_offset, + } + }); + wgc::ray_tracing::BlasGeometries::TriangleGeometries(Box::new(iter)) + } + }; + wgc::ray_tracing::BlasBuildEntry { + blas_id: x.blas_id, + geometries, + } + }); + + let tlas_iter = tlas.iter().map(|x| { + let instances = x.instances.iter().map(|instance| { + instance + .as_ref() + .map(|instance| wgc::ray_tracing::TlasInstance { + blas_id: instance.blas_id, + transform: &instance.transform, + custom_index: instance.custom_index, + mask: instance.mask, + }) + }); + wgc::ray_tracing::TlasPackage { + tlas_id: x.tlas_id, + instances: Box::new(instances), + lowest_unmodified: x.lowest_unmodified, + } + }); + + self.command_encoder_build_acceleration_structures( + encoder, blas_iter, tlas_iter, + ) + .unwrap(); + } } } let (cmd_buf, error) = @@ -360,6 +448,24 @@ impl GlobalPlay for wgc::global::Global { let cmdbuf = self.encode_commands(encoder, commands); self.queue_submit(queue, &[cmdbuf]).unwrap(); } + Action::CreateBlas { id, desc, sizes } => { + self.device_create_blas(device, &desc, sizes, Some(id)); + } + Action::FreeBlas(id) => { + self.blas_destroy(id).unwrap(); + } + Action::DestroyBlas(id) => { + self.blas_drop(id); + } + Action::CreateTlas { id, desc } => { + self.device_create_tlas(device, &desc, Some(id)); + } + Action::FreeTlas(id) => { + self.tlas_destroy(id).unwrap(); + } + Action::DestroyTlas(id) => { + self.tlas_drop(id); + } } } } diff --git a/tests/Cargo.toml b/tests/Cargo.toml index 63776a174f..a9663a3f73 100644 --- a/tests/Cargo.toml +++ b/tests/Cargo.toml @@ -40,6 +40,7 @@ strum = { workspace = true, features = ["derive"] } wgpu-macros.workspace = true wgpu = { workspace = true, features = ["wgsl"] } wgt = { workspace = true, features = ["serde"] } +glam.workspace = true [target.'cfg(not(target_arch = "wasm32"))'.dependencies] env_logger.workspace = true diff --git a/tests/tests/buffer_usages.rs b/tests/tests/buffer_usages.rs index e0cadeed8a..00d63adae8 100644 --- a/tests/tests/buffer_usages.rs +++ b/tests/tests/buffer_usages.rs @@ -21,7 +21,8 @@ const NEEDS_MAPPABLE_PRIMARY_BUFFERS: &[Bu; 7] = &[ Bu::MAP_WRITE.union(Bu::MAP_READ), Bu::MAP_READ.union(Bu::COPY_DST.union(Bu::STORAGE)), Bu::MAP_WRITE.union(Bu::COPY_SRC.union(Bu::STORAGE)), - Bu::all(), + // these two require acceleration_structures feature + Bu::all().intersection(Bu::BLAS_INPUT.union(Bu::TLAS_INPUT).complement()), ]; const INVALID_BITS: Bu = Bu::from_bits_retain(0b1111111111111); const ALWAYS_FAIL: &[Bu; 2] = &[Bu::empty(), INVALID_BITS]; diff --git a/tests/tests/ray_tracing/as_build.rs b/tests/tests/ray_tracing/as_build.rs new file mode 100644 index 0000000000..5a030a5d5a --- /dev/null +++ b/tests/tests/ray_tracing/as_build.rs @@ -0,0 +1,285 @@ +use std::mem; + +use wgpu::{ + util::{BufferInitDescriptor, DeviceExt}, + *, +}; +use wgpu_test::{fail, gpu_test, GpuTestConfiguration, TestParameters, TestingContext}; + +struct AsBuildContext { + vertices: Buffer, + blas_size: BlasTriangleGeometrySizeDescriptor, + blas: Blas, + // Putting this last, forces the BLAS to die before the TLAS. + tlas_package: TlasPackage, +} + +impl AsBuildContext { + fn new(ctx: &TestingContext) -> Self { + let vertices = ctx.device.create_buffer_init(&BufferInitDescriptor { + label: None, + contents: &[0; mem::size_of::<[[f32; 3]; 3]>()], + usage: BufferUsages::BLAS_INPUT, + }); + + let blas_size = BlasTriangleGeometrySizeDescriptor { + vertex_format: VertexFormat::Float32x3, + vertex_count: 3, + index_format: None, + index_count: None, + flags: AccelerationStructureGeometryFlags::empty(), + }; + + let blas = ctx.device.create_blas( + &CreateBlasDescriptor { + label: Some("BLAS"), + flags: AccelerationStructureFlags::PREFER_FAST_TRACE, + update_mode: AccelerationStructureUpdateMode::Build, + }, + BlasGeometrySizeDescriptors::Triangles { + descriptors: vec![blas_size.clone()], + }, + ); + + let tlas = ctx.device.create_tlas(&CreateTlasDescriptor { + label: Some("TLAS"), + max_instances: 1, + flags: AccelerationStructureFlags::PREFER_FAST_TRACE, + update_mode: AccelerationStructureUpdateMode::Build, + }); + + let mut tlas_package = TlasPackage::new(tlas); + tlas_package[0] = Some(TlasInstance::new( + &blas, + [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0], + 0, + 0xFF, + )); + + Self { + vertices, + blas_size, + blas, + tlas_package, + } + } + + fn blas_build_entry(&self) -> BlasBuildEntry { + BlasBuildEntry { + blas: &self.blas, + geometry: BlasGeometries::TriangleGeometries(vec![BlasTriangleGeometry { + size: &self.blas_size, + vertex_buffer: &self.vertices, + first_vertex: 0, + vertex_stride: mem::size_of::<[f32; 3]>() as BufferAddress, + index_buffer: None, + index_buffer_offset: None, + transform_buffer: None, + transform_buffer_offset: None, + }]), + } + } +} + +#[gpu_test] +static UNBUILT_BLAS: GpuTestConfiguration = GpuTestConfiguration::new() + .parameters( + TestParameters::default() + .test_features_limits() + .features(wgpu::Features::EXPERIMENTAL_RAY_TRACING_ACCELERATION_STRUCTURE), + ) + .run_sync(unbuilt_blas); + +fn unbuilt_blas(ctx: TestingContext) { + let as_ctx = AsBuildContext::new(&ctx); + + // Build the TLAS package with an unbuilt BLAS. + let mut encoder = ctx + .device + .create_command_encoder(&CommandEncoderDescriptor::default()); + + encoder.build_acceleration_structures([], [&as_ctx.tlas_package]); + + fail( + &ctx.device, + || { + ctx.queue.submit([encoder.finish()]); + }, + None, + ); +} + +#[gpu_test] +static OUT_OF_ORDER_AS_BUILD: GpuTestConfiguration = GpuTestConfiguration::new() + .parameters( + TestParameters::default() + .test_features_limits() + .features(wgpu::Features::EXPERIMENTAL_RAY_TRACING_ACCELERATION_STRUCTURE), + ) + .run_sync(out_of_order_as_build); + +fn out_of_order_as_build(ctx: TestingContext) { + let as_ctx = AsBuildContext::new(&ctx); + + // + // Encode the TLAS build before the BLAS build, but submit them in the right order. + // + + let mut encoder_tlas = ctx + .device + .create_command_encoder(&CommandEncoderDescriptor { + label: Some("TLAS 1"), + }); + + encoder_tlas.build_acceleration_structures([], [&as_ctx.tlas_package]); + + let mut encoder_blas = ctx + .device + .create_command_encoder(&CommandEncoderDescriptor { + label: Some("BLAS 1"), + }); + + encoder_blas.build_acceleration_structures([&as_ctx.blas_build_entry()], []); + + ctx.queue + .submit([encoder_blas.finish(), encoder_tlas.finish()]); + + drop(as_ctx); + + // + // Create a clean `AsBuildContext` + // + + let as_ctx = AsBuildContext::new(&ctx); + + // + // Encode the BLAS build before the TLAS build, but submit them in the wrong order. + // + + let mut encoder_blas = ctx + .device + .create_command_encoder(&CommandEncoderDescriptor { + label: Some("BLAS 2"), + }); + + encoder_blas.build_acceleration_structures([&as_ctx.blas_build_entry()], []); + + let mut encoder_tlas = ctx + .device + .create_command_encoder(&CommandEncoderDescriptor { + label: Some("TLAS 2"), + }); + + encoder_tlas.build_acceleration_structures([], [&as_ctx.tlas_package]); + + fail( + &ctx.device, + || { + ctx.queue + .submit([encoder_tlas.finish(), encoder_blas.finish()]); + }, + None, + ); +} + +#[gpu_test] +static OUT_OF_ORDER_AS_BUILD_USE: GpuTestConfiguration = GpuTestConfiguration::new() + .parameters(TestParameters::default().test_features_limits().features( + wgpu::Features::EXPERIMENTAL_RAY_TRACING_ACCELERATION_STRUCTURE + | wgpu::Features::EXPERIMENTAL_RAY_QUERY, + )) + .run_sync(out_of_order_as_build_use); + +fn out_of_order_as_build_use(ctx: TestingContext) { + // + // Create a clean `AsBuildContext` + // + + let as_ctx = AsBuildContext::new(&ctx); + + // + // Build in the right order, then rebuild the BLAS so the TLAS is invalid, then use the TLAS. + // + + let mut encoder_blas = ctx + .device + .create_command_encoder(&CommandEncoderDescriptor { + label: Some("BLAS 1"), + }); + + encoder_blas.build_acceleration_structures([&as_ctx.blas_build_entry()], []); + + let mut encoder_tlas = ctx + .device + .create_command_encoder(&CommandEncoderDescriptor { + label: Some("TLAS 1"), + }); + + encoder_tlas.build_acceleration_structures([], [&as_ctx.tlas_package]); + + let mut encoder_blas2 = ctx + .device + .create_command_encoder(&CommandEncoderDescriptor { + label: Some("BLAS 2"), + }); + + encoder_blas2.build_acceleration_structures([&as_ctx.blas_build_entry()], []); + + ctx.queue.submit([ + encoder_blas.finish(), + encoder_tlas.finish(), + encoder_blas2.finish(), + ]); + + // + // Create shader to use tlas with + // + + let shader = ctx + .device + .create_shader_module(include_wgsl!("shader.wgsl")); + let compute_pipeline = ctx + .device + .create_compute_pipeline(&ComputePipelineDescriptor { + label: None, + layout: None, + module: &shader, + entry_point: Some("comp_main"), + compilation_options: Default::default(), + cache: None, + }); + + let bind_group = ctx.device.create_bind_group(&BindGroupDescriptor { + label: None, + layout: &compute_pipeline.get_bind_group_layout(0), + entries: &[BindGroupEntry { + binding: 0, + resource: BindingResource::AccelerationStructure(as_ctx.tlas_package.tlas()), + }], + }); + + // + // Use TLAS + // + + let mut encoder_compute = ctx + .device + .create_command_encoder(&CommandEncoderDescriptor::default()); + { + let mut pass = encoder_compute.begin_compute_pass(&ComputePassDescriptor { + label: None, + timestamp_writes: None, + }); + pass.set_pipeline(&compute_pipeline); + pass.set_bind_group(0, Some(&bind_group), &[]); + pass.dispatch_workgroups(1, 1, 1) + } + + fail( + &ctx.device, + || { + ctx.queue.submit(Some(encoder_compute.finish())); + }, + None, + ); +} diff --git a/tests/tests/ray_tracing/as_create.rs b/tests/tests/ray_tracing/as_create.rs new file mode 100644 index 0000000000..617852333b --- /dev/null +++ b/tests/tests/ray_tracing/as_create.rs @@ -0,0 +1,117 @@ +use wgpu::{ + AccelerationStructureFlags, AccelerationStructureGeometryFlags, + AccelerationStructureUpdateMode, BlasGeometrySizeDescriptors, + BlasTriangleGeometrySizeDescriptor, CreateBlasDescriptor, +}; +use wgpu_macros::gpu_test; +use wgpu_test::{fail, GpuTestConfiguration, TestParameters, TestingContext}; +use wgt::{IndexFormat, VertexFormat}; + +#[gpu_test] +static BLAS_INVALID_VERTEX_FORMAT: GpuTestConfiguration = GpuTestConfiguration::new() + .parameters( + TestParameters::default() + .test_features_limits() + .features(wgpu::Features::EXPERIMENTAL_RAY_TRACING_ACCELERATION_STRUCTURE), + ) + .run_sync(invalid_vertex_format_blas_create); + +fn invalid_vertex_format_blas_create(ctx: TestingContext) { + // + // Create a BLAS with a format that is not allowed + // + + let blas_size = BlasTriangleGeometrySizeDescriptor { + vertex_format: VertexFormat::Float32x4, + vertex_count: 3, + index_format: None, + index_count: None, + flags: AccelerationStructureGeometryFlags::empty(), + }; + + fail( + &ctx.device, + || { + let _ = ctx.device.create_blas( + &CreateBlasDescriptor { + label: Some("BLAS"), + flags: AccelerationStructureFlags::PREFER_FAST_TRACE, + update_mode: AccelerationStructureUpdateMode::Build, + }, + BlasGeometrySizeDescriptors::Triangles { + descriptors: vec![blas_size.clone()], + }, + ); + }, + None, + ); +} + +#[gpu_test] +static BLAS_MISMATCHED_INDEX: GpuTestConfiguration = GpuTestConfiguration::new() + .parameters( + TestParameters::default() + .test_features_limits() + .features(wgpu::Features::EXPERIMENTAL_RAY_TRACING_ACCELERATION_STRUCTURE), + ) + .run_sync(mismatched_index_blas_create); + +fn mismatched_index_blas_create(ctx: TestingContext) { + // + // Create a BLAS with just an index format + // + + let blas_size = BlasTriangleGeometrySizeDescriptor { + vertex_format: VertexFormat::Float32x3, + vertex_count: 3, + index_format: Some(IndexFormat::Uint32), + index_count: None, + flags: AccelerationStructureGeometryFlags::empty(), + }; + + fail( + &ctx.device, + || { + let _ = ctx.device.create_blas( + &CreateBlasDescriptor { + label: Some("BLAS1"), + flags: AccelerationStructureFlags::PREFER_FAST_TRACE, + update_mode: AccelerationStructureUpdateMode::Build, + }, + BlasGeometrySizeDescriptors::Triangles { + descriptors: vec![blas_size.clone()], + }, + ); + }, + None, + ); + + // + // Create a BLAS with just an index count + // + + let blas_size = BlasTriangleGeometrySizeDescriptor { + vertex_format: VertexFormat::Float32x3, + vertex_count: 3, + index_format: None, + index_count: Some(3), + flags: AccelerationStructureGeometryFlags::empty(), + }; + + fail( + &ctx.device, + || { + let _ = ctx.device.create_blas( + &CreateBlasDescriptor { + label: Some("BLAS2"), + flags: AccelerationStructureFlags::PREFER_FAST_TRACE, + update_mode: AccelerationStructureUpdateMode::Build, + }, + BlasGeometrySizeDescriptors::Triangles { + descriptors: vec![blas_size.clone()], + }, + ); + }, + None, + ); +} diff --git a/tests/tests/ray_tracing/as_use_after_free.rs b/tests/tests/ray_tracing/as_use_after_free.rs new file mode 100644 index 0000000000..c0df9d385e --- /dev/null +++ b/tests/tests/ray_tracing/as_use_after_free.rs @@ -0,0 +1,152 @@ +use std::{iter, mem}; +use wgpu::{ + include_wgsl, + util::{BufferInitDescriptor, DeviceExt}, + AccelerationStructureFlags, AccelerationStructureGeometryFlags, + AccelerationStructureUpdateMode, BindGroupDescriptor, BindGroupEntry, BindingResource, + BlasBuildEntry, BlasGeometries, BlasGeometrySizeDescriptors, BlasTriangleGeometry, + BlasTriangleGeometrySizeDescriptor, BufferAddress, BufferUsages, CommandEncoderDescriptor, + ComputePassDescriptor, ComputePipelineDescriptor, CreateBlasDescriptor, CreateTlasDescriptor, + Maintain, TlasInstance, TlasPackage, VertexFormat, +}; +use wgpu_macros::gpu_test; +use wgpu_test::{GpuTestConfiguration, TestParameters, TestingContext}; + +fn required_features() -> wgpu::Features { + wgpu::Features::EXPERIMENTAL_RAY_QUERY + | wgpu::Features::EXPERIMENTAL_RAY_TRACING_ACCELERATION_STRUCTURE +} + +/// This test creates a blas, puts a reference to it in a tlas instance inside a tlas package, +/// drops the blas, and ensures it gets kept alive by the tlas instance. Then it uses the built +/// package in a bindgroup, drops it, and checks that it is kept alive by the bindgroup by +/// executing a shader using that bindgroup. +fn acceleration_structure_use_after_free(ctx: TestingContext) { + // Dummy vertex buffer. + let vertices = ctx.device.create_buffer_init(&BufferInitDescriptor { + label: None, + contents: &[0; mem::size_of::<[[f32; 3]; 3]>()], + usage: BufferUsages::BLAS_INPUT, + }); + + // Create a BLAS with a single triangle. + let blas_size = BlasTriangleGeometrySizeDescriptor { + vertex_format: VertexFormat::Float32x3, + vertex_count: 3, + index_format: None, + index_count: None, + flags: AccelerationStructureGeometryFlags::empty(), + }; + + let blas = ctx.device.create_blas( + &CreateBlasDescriptor { + label: Some("blas use after free"), + flags: AccelerationStructureFlags::PREFER_FAST_TRACE, + update_mode: AccelerationStructureUpdateMode::Build, + }, + BlasGeometrySizeDescriptors::Triangles { + descriptors: vec![blas_size.clone()], + }, + ); + // Create the TLAS + let tlas = ctx.device.create_tlas(&CreateTlasDescriptor { + label: Some("tlas use after free"), + max_instances: 1, + flags: AccelerationStructureFlags::PREFER_FAST_TRACE, + update_mode: AccelerationStructureUpdateMode::Build, + }); + + // Put an unbuilt BLAS in the tlas package. + let mut tlas_package = TlasPackage::new(tlas); + tlas_package[0] = Some(TlasInstance::new( + &blas, + [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0], + 0, + 0xFF, + )); + + // Actually build the BLAS. + let mut encoder = ctx + .device + .create_command_encoder(&CommandEncoderDescriptor::default()); + encoder.build_acceleration_structures( + iter::once(&BlasBuildEntry { + blas: &blas, + geometry: BlasGeometries::TriangleGeometries(vec![BlasTriangleGeometry { + size: &blas_size, + vertex_buffer: &vertices, + first_vertex: 0, + vertex_stride: mem::size_of::<[f32; 3]>() as BufferAddress, + index_buffer: None, + index_buffer_offset: None, + transform_buffer: None, + transform_buffer_offset: None, + }]), + }), + iter::empty(), + ); + ctx.queue.submit(Some(encoder.finish())); + + // Drop the blas and ensure that if it was going to die, it is dead. + drop(blas); + ctx.device.poll(Maintain::Wait); + + // build the tlas package to ensure the blas is dropped + let mut encoder = ctx + .device + .create_command_encoder(&CommandEncoderDescriptor::default()); + encoder.build_acceleration_structures(iter::empty(), iter::once(&tlas_package)); + ctx.queue.submit(Some(encoder.finish())); + + // Create a compute shader that uses an AS. + let shader = ctx + .device + .create_shader_module(include_wgsl!("shader.wgsl")); + let compute_pipeline = ctx + .device + .create_compute_pipeline(&ComputePipelineDescriptor { + label: None, + layout: None, + module: &shader, + entry_point: Some("comp_main"), + compilation_options: Default::default(), + cache: None, + }); + + let bind_group = ctx.device.create_bind_group(&BindGroupDescriptor { + label: None, + layout: &compute_pipeline.get_bind_group_layout(0), + entries: &[BindGroupEntry { + binding: 0, + resource: BindingResource::AccelerationStructure(tlas_package.tlas()), + }], + }); + + // Drop the TLAS package and ensure that if it was going to die, it is dead. + drop(tlas_package); + ctx.device.poll(Maintain::Wait); + + // Run the pass with the bind group that references the TLAS package. + let mut encoder = ctx + .device + .create_command_encoder(&CommandEncoderDescriptor::default()); + { + let mut pass = encoder.begin_compute_pass(&ComputePassDescriptor { + label: None, + timestamp_writes: None, + }); + pass.set_pipeline(&compute_pipeline); + pass.set_bind_group(0, Some(&bind_group), &[]); + pass.dispatch_workgroups(1, 1, 1) + } + ctx.queue.submit(Some(encoder.finish())); +} + +#[gpu_test] +static ACCELERATION_STRUCTURE_USE_AFTER_FREE: GpuTestConfiguration = GpuTestConfiguration::new() + .parameters( + TestParameters::default() + .test_features_limits() + .features(required_features()), + ) + .run_sync(acceleration_structure_use_after_free); diff --git a/tests/tests/ray_tracing/mod.rs b/tests/tests/ray_tracing/mod.rs new file mode 100644 index 0000000000..e204392d2e --- /dev/null +++ b/tests/tests/ray_tracing/mod.rs @@ -0,0 +1,4 @@ +mod as_build; +mod as_create; +mod as_use_after_free; +mod scene; diff --git a/tests/tests/ray_tracing/scene/mesh_gen.rs b/tests/tests/ray_tracing/scene/mesh_gen.rs new file mode 100644 index 0000000000..52012bb928 --- /dev/null +++ b/tests/tests/ray_tracing/scene/mesh_gen.rs @@ -0,0 +1,83 @@ +use bytemuck::{Pod, Zeroable}; +use glam::Affine3A; + +#[repr(C)] +#[derive(Clone, Copy, Pod, Zeroable)] +pub struct Vertex { + _pos: [f32; 4], + _tex_coord: [f32; 2], +} + +fn vertex(pos: [i8; 3], tc: [i8; 2]) -> Vertex { + Vertex { + _pos: [pos[0] as f32, pos[1] as f32, pos[2] as f32, 1.0], + _tex_coord: [tc[0] as f32, tc[1] as f32], + } +} + +pub fn create_vertices() -> (Vec, Vec) { + let vertex_data = [ + // top (0, 0, 1) + vertex([-1, -1, 1], [0, 0]), + vertex([1, -1, 1], [1, 0]), + vertex([1, 1, 1], [1, 1]), + vertex([-1, 1, 1], [0, 1]), + // bottom (0, 0, -1) + vertex([-1, 1, -1], [1, 0]), + vertex([1, 1, -1], [0, 0]), + vertex([1, -1, -1], [0, 1]), + vertex([-1, -1, -1], [1, 1]), + // right (1, 0, 0) + vertex([1, -1, -1], [0, 0]), + vertex([1, 1, -1], [1, 0]), + vertex([1, 1, 1], [1, 1]), + vertex([1, -1, 1], [0, 1]), + // left (-1, 0, 0) + vertex([-1, -1, 1], [1, 0]), + vertex([-1, 1, 1], [0, 0]), + vertex([-1, 1, -1], [0, 1]), + vertex([-1, -1, -1], [1, 1]), + // front (0, 1, 0) + vertex([1, 1, -1], [1, 0]), + vertex([-1, 1, -1], [0, 0]), + vertex([-1, 1, 1], [0, 1]), + vertex([1, 1, 1], [1, 1]), + // back (0, -1, 0) + vertex([1, -1, 1], [0, 0]), + vertex([-1, -1, 1], [1, 0]), + vertex([-1, -1, -1], [1, 1]), + vertex([1, -1, -1], [0, 1]), + ]; + + let index_data: &[u16] = &[ + 0, 1, 2, 2, 3, 0, // top + 4, 5, 6, 6, 7, 4, // bottom + 8, 9, 10, 10, 11, 8, // right + 12, 13, 14, 14, 15, 12, // left + 16, 17, 18, 18, 19, 16, // front + 20, 21, 22, 22, 23, 20, // back + ]; + + (vertex_data.to_vec(), index_data.to_vec()) +} + +pub fn affine_to_rows(mat: &Affine3A) -> [f32; 12] { + let row_0 = mat.matrix3.row(0); + let row_1 = mat.matrix3.row(1); + let row_2 = mat.matrix3.row(2); + let translation = mat.translation; + [ + row_0.x, + row_0.y, + row_0.z, + translation.x, + row_1.x, + row_1.y, + row_1.z, + translation.y, + row_2.x, + row_2.y, + row_2.z, + translation.z, + ] +} diff --git a/tests/tests/ray_tracing/scene/mod.rs b/tests/tests/ray_tracing/scene/mod.rs new file mode 100644 index 0000000000..20cc321d44 --- /dev/null +++ b/tests/tests/ray_tracing/scene/mod.rs @@ -0,0 +1,121 @@ +use std::{iter, mem}; + +use wgpu_test::{gpu_test, GpuTestConfiguration, TestParameters, TestingContext}; + +use wgpu::util::DeviceExt; + +use glam::{Affine3A, Quat, Vec3}; + +mod mesh_gen; + +fn acceleration_structure_build(ctx: &TestingContext, use_index_buffer: bool) { + let max_instances = 1000; + let device = &ctx.device; + + let (vertex_data, index_data) = mesh_gen::create_vertices(); + + let vertex_buf = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { + label: Some("Vertex Buffer"), + contents: bytemuck::cast_slice(&vertex_data), + usage: wgpu::BufferUsages::VERTEX | wgpu::BufferUsages::BLAS_INPUT, + }); + + let index_buffer = device.create_buffer_init(&wgpu::util::BufferInitDescriptor { + label: Some("Index Buffer"), + contents: bytemuck::cast_slice(&index_data), + usage: wgpu::BufferUsages::INDEX | wgpu::BufferUsages::BLAS_INPUT, + }); + + let index_format = wgpu::IndexFormat::Uint16; + let index_count = index_data.len() as u32; + + let blas_geo_size_desc = wgpu::BlasTriangleGeometrySizeDescriptor { + vertex_format: wgpu::VertexFormat::Float32x3, + vertex_count: vertex_data.len() as u32, + index_format: use_index_buffer.then_some(index_format), + index_count: use_index_buffer.then_some(index_count), + flags: wgpu::AccelerationStructureGeometryFlags::OPAQUE, + }; + + let blas = device.create_blas( + &wgpu::CreateBlasDescriptor { + label: None, + flags: wgpu::AccelerationStructureFlags::PREFER_FAST_TRACE, + update_mode: wgpu::AccelerationStructureUpdateMode::Build, + }, + wgpu::BlasGeometrySizeDescriptors::Triangles { + descriptors: vec![blas_geo_size_desc.clone()], + }, + ); + + let tlas = device.create_tlas(&wgpu::CreateTlasDescriptor { + label: None, + flags: wgpu::AccelerationStructureFlags::PREFER_FAST_TRACE, + update_mode: wgpu::AccelerationStructureUpdateMode::Build, + max_instances, + }); + + let mut tlas_package = wgpu::TlasPackage::new(tlas); + + for j in 0..max_instances { + tlas_package[j as usize] = Some(wgpu::TlasInstance::new( + &blas, + mesh_gen::affine_to_rows(&Affine3A::from_rotation_translation( + Quat::from_rotation_y(45.9_f32.to_radians()), + Vec3 { + x: j as f32, + y: 0.0, + z: 0.0, + }, + )), + 0, + 0xff, + )); + } + + let mut encoder = + device.create_command_encoder(&wgpu::CommandEncoderDescriptor { label: None }); + + encoder.build_acceleration_structures( + iter::once(&wgpu::BlasBuildEntry { + blas: &blas, + geometry: wgpu::BlasGeometries::TriangleGeometries(vec![wgpu::BlasTriangleGeometry { + size: &blas_geo_size_desc, + vertex_buffer: &vertex_buf, + first_vertex: 0, + vertex_stride: mem::size_of::() as u64, + index_buffer: use_index_buffer.then_some(&index_buffer), + index_buffer_offset: use_index_buffer.then_some(0), + transform_buffer: None, + transform_buffer_offset: None, + }]), + }), + iter::once(&tlas_package), + ); + + ctx.queue.submit(Some(encoder.finish())); + + ctx.device.poll(wgpu::Maintain::Wait); +} + +#[gpu_test] +static ACCELERATION_STRUCTURE_BUILD_NO_INDEX: GpuTestConfiguration = GpuTestConfiguration::new() + .parameters( + TestParameters::default() + .test_features_limits() + .features(wgpu::Features::EXPERIMENTAL_RAY_TRACING_ACCELERATION_STRUCTURE), + ) + .run_sync(|ctx| { + acceleration_structure_build(&ctx, false); + }); + +#[gpu_test] +static ACCELERATION_STRUCTURE_BUILD_WITH_INDEX: GpuTestConfiguration = GpuTestConfiguration::new() + .parameters( + TestParameters::default() + .test_features_limits() + .features(wgpu::Features::EXPERIMENTAL_RAY_TRACING_ACCELERATION_STRUCTURE), + ) + .run_sync(|ctx| { + acceleration_structure_build(&ctx, true); + }); diff --git a/tests/tests/ray_tracing/shader.wgsl b/tests/tests/ray_tracing/shader.wgsl new file mode 100644 index 0000000000..370d69e1c3 --- /dev/null +++ b/tests/tests/ray_tracing/shader.wgsl @@ -0,0 +1,11 @@ +@group(0) @binding(0) +var acc_struct: acceleration_structure; + +@workgroup_size(1) +@compute +fn comp_main() { + var rq: ray_query; + rayQueryInitialize(&rq, acc_struct, RayDesc(0u, 0xFFu, 0.001, 100000.0, vec3f(0.0, 0.0, 0.0), vec3f(0.0, 0.0, 1.0))); + rayQueryProceed(&rq); + let intersection = rayQueryGetCommittedIntersection(&rq); +} \ No newline at end of file diff --git a/tests/tests/root.rs b/tests/tests/root.rs index 5b70d2053f..dac56a9db0 100644 --- a/tests/tests/root.rs +++ b/tests/tests/root.rs @@ -37,6 +37,7 @@ mod poll; mod push_constants; mod query_set; mod queue_transfer; +mod ray_tracing; mod render_pass_ownership; mod resource_descriptor_accessor; mod resource_error; diff --git a/wgpu-core/src/binding_model.rs b/wgpu-core/src/binding_model.rs index 55a3e145f1..8906b58755 100644 --- a/wgpu-core/src/binding_model.rs +++ b/wgpu-core/src/binding_model.rs @@ -2,7 +2,7 @@ use crate::{ device::{ bgl, Device, DeviceError, MissingDownlevelFlags, MissingFeatures, SHADER_STAGE_COUNT, }, - id::{BindGroupLayoutId, BufferId, SamplerId, TextureViewId}, + id::{BindGroupLayoutId, BufferId, SamplerId, TextureViewId, TlasId}, init_tracker::{BufferInitTrackerAction, TextureInitTrackerAction}, pipeline::{ComputePipeline, RenderPipeline}, resource::{ @@ -29,6 +29,7 @@ use std::{ sync::{Arc, OnceLock, Weak}, }; +use crate::resource::Tlas; use thiserror::Error; #[derive(Clone, Debug, Error)] @@ -302,6 +303,7 @@ pub(crate) struct BindingTypeMaxCountValidator { storage_buffers: PerStageBindingTypeCounter, storage_textures: PerStageBindingTypeCounter, uniform_buffers: PerStageBindingTypeCounter, + acceleration_structures: PerStageBindingTypeCounter, } impl BindingTypeMaxCountValidator { @@ -337,7 +339,9 @@ impl BindingTypeMaxCountValidator { wgt::BindingType::StorageTexture { .. } => { self.storage_textures.add(binding.visibility, count); } - wgt::BindingType::AccelerationStructure => todo!(), + wgt::BindingType::AccelerationStructure => { + self.acceleration_structures.add(binding.visibility, count); + } } } @@ -781,6 +785,7 @@ pub enum BindingResource<'a> { SamplerArray(Cow<'a, [SamplerId]>), TextureView(TextureViewId), TextureViewArray(Cow<'a, [TextureViewId]>), + AccelerationStructure(TlasId), } // Note: Duplicated in `wgpu-rs` as `BindingResource` @@ -793,6 +798,7 @@ pub enum ResolvedBindingResource<'a> { SamplerArray(Cow<'a, [Arc]>), TextureView(Arc), TextureViewArray(Cow<'a, [Arc]>), + AccelerationStructure(Arc), } #[derive(Clone, Debug, Error)] diff --git a/wgpu-core/src/command/compute.rs b/wgpu-core/src/command/compute.rs index 93654c9235..28e76c1115 100644 --- a/wgpu-core/src/command/compute.rs +++ b/wgpu-core/src/command/compute.rs @@ -28,11 +28,11 @@ use crate::{ use thiserror::Error; use wgt::{BufferAddress, DynamicOffset}; +use super::{bind::BinderError, memory_init::CommandBufferTextureMemoryActions}; +use crate::ray_tracing::TlasAction; use std::sync::Arc; use std::{fmt, mem::size_of, str}; -use super::{bind::BinderError, memory_init::CommandBufferTextureMemoryActions}; - pub struct ComputePass { /// All pass data & records is stored here. /// @@ -210,6 +210,7 @@ struct State<'scope, 'snatch_guard, 'cmd_buf, 'raw_encoder> { tracker: &'cmd_buf mut Tracker, buffer_memory_init_actions: &'cmd_buf mut Vec, texture_memory_actions: &'cmd_buf mut CommandBufferTextureMemoryActions, + tlas_actions: &'cmd_buf mut Vec, temp_offsets: Vec, dynamic_offset_count: usize, @@ -450,6 +451,7 @@ impl Global { tracker: &mut cmd_buf_data.trackers, buffer_memory_init_actions: &mut cmd_buf_data.buffer_memory_init_actions, texture_memory_actions: &mut cmd_buf_data.texture_memory_actions, + tlas_actions: &mut cmd_buf_data.tlas_actions, temp_offsets: Vec::new(), dynamic_offset_count: 0, @@ -695,6 +697,17 @@ fn set_bind_group( .extend(state.texture_memory_actions.register_init_action(action)); } + let used_resource = bind_group + .used + .acceleration_structures + .into_iter() + .map(|tlas| TlasAction { + tlas: tlas.clone(), + kind: crate::ray_tracing::TlasActionKind::Use, + }); + + state.tlas_actions.extend(used_resource); + let pipeline_layout = state.binder.pipeline_layout.clone(); let entries = state .binder diff --git a/wgpu-core/src/command/mod.rs b/wgpu-core/src/command/mod.rs index 540ff9d2e5..33025579aa 100644 --- a/wgpu-core/src/command/mod.rs +++ b/wgpu-core/src/command/mod.rs @@ -7,6 +7,7 @@ mod compute_command; mod draw; mod memory_init; mod query; +mod ray_tracing; mod render; mod render_command; mod timestamp_writes; @@ -31,6 +32,7 @@ use crate::lock::{rank, Mutex}; use crate::snatch::SnatchGuard; use crate::init_tracker::BufferInitTrackerAction; +use crate::ray_tracing::{BlasAction, TlasAction}; use crate::resource::{InvalidResourceError, Labeled}; use crate::track::{DeviceTracker, Tracker, UsageScope}; use crate::LabelHelpers; @@ -242,6 +244,8 @@ impl CommandEncoder { } } +/// Look at the documentation for [`CommandBufferMutable`] for an explanation of +/// the fields in this struct. This is the "built" counterpart to that type. pub(crate) struct BakedCommands { pub(crate) encoder: Box, pub(crate) list: Vec>, @@ -274,6 +278,10 @@ pub struct CommandBufferMutable { texture_memory_actions: CommandBufferTextureMemoryActions, pub(crate) pending_query_resets: QueryResetMap, + + blas_actions: Vec, + tlas_actions: Vec, + #[cfg(feature = "trace")] pub(crate) commands: Option>, } @@ -456,6 +464,8 @@ impl CommandBuffer { buffer_memory_init_actions: Default::default(), texture_memory_actions: Default::default(), pending_query_resets: QueryResetMap::new(), + blas_actions: Default::default(), + tlas_actions: Default::default(), #[cfg(feature = "trace")] commands: if device.trace.lock().is_some() { Some(Vec::new()) diff --git a/wgpu-core/src/command/ray_tracing.rs b/wgpu-core/src/command/ray_tracing.rs new file mode 100644 index 0000000000..ac3bbb67b4 --- /dev/null +++ b/wgpu-core/src/command/ray_tracing.rs @@ -0,0 +1,1285 @@ +use crate::{ + device::queue::TempResource, + global::Global, + hub::Hub, + id::CommandEncoderId, + init_tracker::MemoryInitKind, + ray_tracing::{ + tlas_instance_into_bytes, BlasAction, BlasBuildEntry, BlasGeometries, BlasTriangleGeometry, + BuildAccelerationStructureError, TlasAction, TlasBuildEntry, TlasInstance, TlasPackage, + TraceBlasBuildEntry, TraceBlasGeometries, TraceBlasTriangleGeometry, TraceTlasInstance, + TraceTlasPackage, ValidateBlasActionsError, ValidateTlasActionsError, + }, + resource::{AccelerationStructure, Blas, Buffer, Labeled, StagingBuffer, Tlas, Trackable}, + scratch::ScratchBuffer, + snatch::SnatchGuard, + track::PendingTransition, + FastHashSet, +}; + +use wgt::{math::align_to, BufferUsages, Features}; + +use super::CommandBufferMutable; +use crate::device::queue::PendingWrites; +use hal::BufferUses; +use std::mem::ManuallyDrop; +use std::ops::DerefMut; +use std::{ + cmp::max, + num::NonZeroU64, + ops::{Deref, Range}, + sync::{atomic::Ordering, Arc}, +}; + +struct TriangleBufferStore<'a> { + vertex_buffer: Arc, + vertex_transition: Option>, + index_buffer_transition: Option<(Arc, Option>)>, + transform_buffer_transition: Option<(Arc, Option>)>, + geometry: BlasTriangleGeometry<'a>, + ending_blas: Option>, +} + +struct BlasStore<'a> { + blas: Arc, + entries: hal::AccelerationStructureEntries<'a, dyn hal::DynBuffer>, + scratch_buffer_offset: u64, +} + +struct UnsafeTlasStore<'a> { + tlas: Arc, + entries: hal::AccelerationStructureEntries<'a, dyn hal::DynBuffer>, + scratch_buffer_offset: u64, +} + +struct TlasStore<'a> { + internal: UnsafeTlasStore<'a>, + range: Range, +} + +struct TlasBufferStore { + buffer: Arc, + transition: Option>, + entry: TlasBuildEntry, +} + +// TODO: Get this from the device (e.g. VkPhysicalDeviceAccelerationStructurePropertiesKHR.minAccelerationStructureScratchOffsetAlignment) this is currently the largest possible some devices have 0, 64, 128 (lower limits) so this could create excess allocation (Note: dx12 has 256). +const SCRATCH_BUFFER_ALIGNMENT: u32 = 256; + +impl Global { + // Currently this function is very similar to its safe counterpart, however certain parts of it are very different, + // making for the two to be implemented differently, the main difference is this function has separate buffers for each + // of the TLAS instances while the other has one large buffer + // TODO: reconsider this function's usefulness once blas and tlas `as_hal` are added and some time has passed. + pub fn command_encoder_build_acceleration_structures_unsafe_tlas<'a>( + &self, + command_encoder_id: CommandEncoderId, + blas_iter: impl Iterator>, + tlas_iter: impl Iterator, + ) -> Result<(), BuildAccelerationStructureError> { + profiling::scope!("CommandEncoder::build_acceleration_structures_unsafe_tlas"); + + let hub = &self.hub; + + let cmd_buf = hub + .command_buffers + .get(command_encoder_id.into_command_buffer_id()); + + let device = &cmd_buf.device; + + if !device + .features + .contains(Features::EXPERIMENTAL_RAY_TRACING_ACCELERATION_STRUCTURE) + { + return Err(BuildAccelerationStructureError::MissingFeature); + } + + let build_command_index = NonZeroU64::new( + device + .last_acceleration_structure_build_command_index + .fetch_add(1, Ordering::Relaxed), + ) + .unwrap(); + + #[cfg(feature = "trace")] + let trace_blas: Vec = blas_iter + .map(|blas_entry| { + let geometries = match blas_entry.geometries { + BlasGeometries::TriangleGeometries(triangle_geometries) => { + TraceBlasGeometries::TriangleGeometries( + triangle_geometries + .map(|tg| TraceBlasTriangleGeometry { + size: tg.size.clone(), + vertex_buffer: tg.vertex_buffer, + index_buffer: tg.index_buffer, + transform_buffer: tg.transform_buffer, + first_vertex: tg.first_vertex, + vertex_stride: tg.vertex_stride, + index_buffer_offset: tg.index_buffer_offset, + transform_buffer_offset: tg.transform_buffer_offset, + }) + .collect(), + ) + } + }; + TraceBlasBuildEntry { + blas_id: blas_entry.blas_id, + geometries, + } + }) + .collect(); + + #[cfg(feature = "trace")] + let trace_tlas: Vec = tlas_iter.collect(); + #[cfg(feature = "trace")] + if let Some(ref mut list) = cmd_buf.data.lock().as_mut().unwrap().commands { + list.push( + crate::device::trace::Command::BuildAccelerationStructuresUnsafeTlas { + blas: trace_blas.clone(), + tlas: trace_tlas.clone(), + }, + ); + if !trace_tlas.is_empty() { + log::warn!("a trace of command_encoder_build_acceleration_structures_unsafe_tlas containing a tlas build is not replayable!"); + } + } + + #[cfg(feature = "trace")] + let blas_iter = trace_blas.iter().map(|blas_entry| { + let geometries = match &blas_entry.geometries { + TraceBlasGeometries::TriangleGeometries(triangle_geometries) => { + let iter = triangle_geometries.iter().map(|tg| BlasTriangleGeometry { + size: &tg.size, + vertex_buffer: tg.vertex_buffer, + index_buffer: tg.index_buffer, + transform_buffer: tg.transform_buffer, + first_vertex: tg.first_vertex, + vertex_stride: tg.vertex_stride, + index_buffer_offset: tg.index_buffer_offset, + transform_buffer_offset: tg.transform_buffer_offset, + }); + BlasGeometries::TriangleGeometries(Box::new(iter)) + } + }; + BlasBuildEntry { + blas_id: blas_entry.blas_id, + geometries, + } + }); + + #[cfg(feature = "trace")] + let tlas_iter = trace_tlas.iter(); + + let mut input_barriers = Vec::>::new(); + let mut buf_storage = Vec::new(); + + let mut scratch_buffer_blas_size = 0; + let mut blas_storage = Vec::new(); + let mut cmd_buf_data = cmd_buf.data.lock(); + let cmd_buf_data = cmd_buf_data.as_mut().unwrap(); + + iter_blas( + blas_iter, + cmd_buf_data, + build_command_index, + &mut buf_storage, + hub, + device.pending_writes.lock().deref_mut(), + )?; + + let snatch_guard = device.snatchable_lock.read(); + iter_buffers( + &mut buf_storage, + &snatch_guard, + &mut input_barriers, + cmd_buf_data, + &mut scratch_buffer_blas_size, + &mut blas_storage, + hub, + )?; + + let mut scratch_buffer_tlas_size = 0; + let mut tlas_storage = Vec::::new(); + let mut tlas_buf_storage = Vec::new(); + + for entry in tlas_iter { + let instance_buffer = match hub.buffers.get(entry.instance_buffer_id).get() { + Ok(buffer) => buffer, + Err(_) => { + return Err(BuildAccelerationStructureError::InvalidBufferId); + } + }; + let data = cmd_buf_data.trackers.buffers.set_single( + &instance_buffer, + BufferUses::BOTTOM_LEVEL_ACCELERATION_STRUCTURE_INPUT, + ); + tlas_buf_storage.push(TlasBufferStore { + buffer: instance_buffer.clone(), + transition: data, + entry: entry.clone(), + }); + } + + for tlas_buf in &mut tlas_buf_storage { + let entry = &tlas_buf.entry; + let instance_buffer = { + let (instance_buffer, instance_pending) = + (&mut tlas_buf.buffer, &mut tlas_buf.transition); + let instance_raw = instance_buffer.raw.get(&snatch_guard).ok_or( + BuildAccelerationStructureError::InvalidBuffer(instance_buffer.error_ident()), + )?; + if !instance_buffer.usage.contains(BufferUsages::TLAS_INPUT) { + return Err(BuildAccelerationStructureError::MissingTlasInputUsageFlag( + instance_buffer.error_ident(), + )); + } + if let Some(barrier) = instance_pending + .take() + .map(|pending| pending.into_hal(instance_buffer, &snatch_guard)) + { + input_barriers.push(barrier); + } + instance_raw + }; + + let tlas = hub + .tlas_s + .get(entry.tlas_id) + .get() + .map_err(|_| BuildAccelerationStructureError::InvalidTlasId)?; + cmd_buf_data.trackers.tlas_s.set_single(tlas.clone()); + device.pending_writes.lock().insert_tlas(&tlas); + + cmd_buf_data.tlas_actions.push(TlasAction { + tlas: tlas.clone(), + kind: crate::ray_tracing::TlasActionKind::Build { + build_index: build_command_index, + dependencies: Vec::new(), + }, + }); + + let scratch_buffer_offset = scratch_buffer_tlas_size; + scratch_buffer_tlas_size += align_to( + tlas.size_info.build_scratch_size as u32, + SCRATCH_BUFFER_ALIGNMENT, + ) as u64; + + tlas_storage.push(UnsafeTlasStore { + tlas, + entries: hal::AccelerationStructureEntries::Instances( + hal::AccelerationStructureInstances { + buffer: Some(instance_buffer.as_ref()), + offset: 0, + count: entry.instance_count, + }, + ), + scratch_buffer_offset, + }); + } + + let scratch_size = + match wgt::BufferSize::new(max(scratch_buffer_blas_size, scratch_buffer_tlas_size)) { + None => return Ok(()), + Some(size) => size, + }; + + let scratch_buffer = + ScratchBuffer::new(device, scratch_size).map_err(crate::device::DeviceError::from)?; + + let scratch_buffer_barrier = hal::BufferBarrier:: { + buffer: scratch_buffer.raw(), + usage: BufferUses::ACCELERATION_STRUCTURE_SCRATCH + ..BufferUses::ACCELERATION_STRUCTURE_SCRATCH, + }; + + let mut tlas_descriptors = Vec::new(); + + for UnsafeTlasStore { + tlas, + entries, + scratch_buffer_offset, + } in &tlas_storage + { + if tlas.update_mode == wgt::AccelerationStructureUpdateMode::PreferUpdate { + log::info!("only rebuild implemented") + } + tlas_descriptors.push(hal::BuildAccelerationStructureDescriptor { + entries, + mode: hal::AccelerationStructureBuildMode::Build, + flags: tlas.flags, + source_acceleration_structure: None, + destination_acceleration_structure: tlas.raw(&snatch_guard).ok_or( + BuildAccelerationStructureError::InvalidTlas(tlas.error_ident()), + )?, + scratch_buffer: scratch_buffer.raw(), + scratch_buffer_offset: *scratch_buffer_offset, + }) + } + + let blas_present = !blas_storage.is_empty(); + let tlas_present = !tlas_storage.is_empty(); + + let cmd_buf_raw = cmd_buf_data.encoder.open(device)?; + + let mut descriptors = Vec::new(); + + for storage in &blas_storage { + descriptors.push(map_blas(storage, scratch_buffer.raw(), &snatch_guard)?); + } + + build_blas( + cmd_buf_raw, + blas_present, + tlas_present, + input_barriers, + &descriptors, + scratch_buffer_barrier, + ); + + if tlas_present { + unsafe { + cmd_buf_raw.build_acceleration_structures(&tlas_descriptors); + + cmd_buf_raw.place_acceleration_structure_barrier( + hal::AccelerationStructureBarrier { + usage: hal::AccelerationStructureUses::BUILD_OUTPUT + ..hal::AccelerationStructureUses::SHADER_INPUT, + }, + ); + } + } + + device + .pending_writes + .lock() + .consume_temp(TempResource::ScratchBuffer(scratch_buffer)); + + Ok(()) + } + + pub fn command_encoder_build_acceleration_structures<'a>( + &self, + command_encoder_id: CommandEncoderId, + blas_iter: impl Iterator>, + tlas_iter: impl Iterator>, + ) -> Result<(), BuildAccelerationStructureError> { + profiling::scope!("CommandEncoder::build_acceleration_structures"); + + let hub = &self.hub; + + let cmd_buf = hub + .command_buffers + .get(command_encoder_id.into_command_buffer_id()); + + let device = &cmd_buf.device; + + if !device + .features + .contains(Features::EXPERIMENTAL_RAY_TRACING_ACCELERATION_STRUCTURE) + { + return Err(BuildAccelerationStructureError::MissingFeature); + } + + let build_command_index = NonZeroU64::new( + device + .last_acceleration_structure_build_command_index + .fetch_add(1, Ordering::Relaxed), + ) + .unwrap(); + + let trace_blas: Vec = blas_iter + .map(|blas_entry| { + let geometries = match blas_entry.geometries { + BlasGeometries::TriangleGeometries(triangle_geometries) => { + TraceBlasGeometries::TriangleGeometries( + triangle_geometries + .map(|tg| TraceBlasTriangleGeometry { + size: tg.size.clone(), + vertex_buffer: tg.vertex_buffer, + index_buffer: tg.index_buffer, + transform_buffer: tg.transform_buffer, + first_vertex: tg.first_vertex, + vertex_stride: tg.vertex_stride, + index_buffer_offset: tg.index_buffer_offset, + transform_buffer_offset: tg.transform_buffer_offset, + }) + .collect(), + ) + } + }; + TraceBlasBuildEntry { + blas_id: blas_entry.blas_id, + geometries, + } + }) + .collect(); + + let trace_tlas: Vec = tlas_iter + .map(|package: TlasPackage| { + let instances = package + .instances + .map(|instance| { + instance.map(|instance| TraceTlasInstance { + blas_id: instance.blas_id, + transform: *instance.transform, + custom_index: instance.custom_index, + mask: instance.mask, + }) + }) + .collect(); + TraceTlasPackage { + tlas_id: package.tlas_id, + instances, + lowest_unmodified: package.lowest_unmodified, + } + }) + .collect(); + + #[cfg(feature = "trace")] + if let Some(ref mut list) = cmd_buf.data.lock().as_mut().unwrap().commands { + list.push(crate::device::trace::Command::BuildAccelerationStructures { + blas: trace_blas.clone(), + tlas: trace_tlas.clone(), + }); + } + + let blas_iter = trace_blas.iter().map(|blas_entry| { + let geometries = match &blas_entry.geometries { + TraceBlasGeometries::TriangleGeometries(triangle_geometries) => { + let iter = triangle_geometries.iter().map(|tg| BlasTriangleGeometry { + size: &tg.size, + vertex_buffer: tg.vertex_buffer, + index_buffer: tg.index_buffer, + transform_buffer: tg.transform_buffer, + first_vertex: tg.first_vertex, + vertex_stride: tg.vertex_stride, + index_buffer_offset: tg.index_buffer_offset, + transform_buffer_offset: tg.transform_buffer_offset, + }); + BlasGeometries::TriangleGeometries(Box::new(iter)) + } + }; + BlasBuildEntry { + blas_id: blas_entry.blas_id, + geometries, + } + }); + + let tlas_iter = trace_tlas.iter().map(|tlas_package| { + let instances = tlas_package.instances.iter().map(|instance| { + instance.as_ref().map(|instance| TlasInstance { + blas_id: instance.blas_id, + transform: &instance.transform, + custom_index: instance.custom_index, + mask: instance.mask, + }) + }); + TlasPackage { + tlas_id: tlas_package.tlas_id, + instances: Box::new(instances), + lowest_unmodified: tlas_package.lowest_unmodified, + } + }); + + let mut input_barriers = Vec::>::new(); + let mut buf_storage = Vec::new(); + + let mut scratch_buffer_blas_size = 0; + let mut blas_storage = Vec::new(); + let mut cmd_buf_data = cmd_buf.data.lock(); + let cmd_buf_data = cmd_buf_data.as_mut().unwrap(); + + iter_blas( + blas_iter, + cmd_buf_data, + build_command_index, + &mut buf_storage, + hub, + device.pending_writes.lock().deref_mut(), + )?; + + let snatch_guard = device.snatchable_lock.read(); + iter_buffers( + &mut buf_storage, + &snatch_guard, + &mut input_barriers, + cmd_buf_data, + &mut scratch_buffer_blas_size, + &mut blas_storage, + hub, + )?; + let mut tlas_lock_store = Vec::<(Option, Arc)>::new(); + + for package in tlas_iter { + let tlas = hub + .tlas_s + .get(package.tlas_id) + .get() + .map_err(|_| BuildAccelerationStructureError::InvalidTlasId)?; + device.pending_writes.lock().insert_tlas(&tlas); + cmd_buf_data.trackers.tlas_s.set_single(tlas.clone()); + + tlas_lock_store.push((Some(package), tlas.clone())) + } + + let mut scratch_buffer_tlas_size = 0; + let mut tlas_storage = Vec::::new(); + let mut instance_buffer_staging_source = Vec::::new(); + + for (package, tlas) in &mut tlas_lock_store { + let package = package.take().unwrap(); + + let scratch_buffer_offset = scratch_buffer_tlas_size; + scratch_buffer_tlas_size += align_to( + tlas.size_info.build_scratch_size as u32, + SCRATCH_BUFFER_ALIGNMENT, + ) as u64; + + let first_byte_index = instance_buffer_staging_source.len(); + + let mut dependencies = Vec::new(); + + let mut instance_count = 0; + for instance in package.instances.flatten() { + if instance.custom_index >= (1u32 << 24u32) { + return Err(BuildAccelerationStructureError::TlasInvalidCustomIndex( + tlas.error_ident(), + )); + } + let blas = hub + .blas_s + .get(instance.blas_id) + .get() + .map_err(|_| BuildAccelerationStructureError::InvalidBlasIdForInstance)? + .clone(); + + cmd_buf_data.trackers.blas_s.set_single(blas.clone()); + + instance_buffer_staging_source.extend(tlas_instance_into_bytes( + &instance, + blas.handle, + device.backend(), + )); + + instance_count += 1; + + dependencies.push(blas.clone()); + + cmd_buf_data.blas_actions.push(BlasAction { + blas: blas.clone(), + kind: crate::ray_tracing::BlasActionKind::Use, + }); + } + + cmd_buf_data.tlas_actions.push(TlasAction { + tlas: tlas.clone(), + kind: crate::ray_tracing::TlasActionKind::Build { + build_index: build_command_index, + dependencies, + }, + }); + + if instance_count > tlas.max_instance_count { + return Err(BuildAccelerationStructureError::TlasInstanceCountExceeded( + tlas.error_ident(), + instance_count, + tlas.max_instance_count, + )); + } + + tlas_storage.push(TlasStore { + internal: UnsafeTlasStore { + tlas: tlas.clone(), + entries: hal::AccelerationStructureEntries::Instances( + hal::AccelerationStructureInstances { + buffer: Some(tlas.instance_buffer.as_ref()), + offset: 0, + count: instance_count, + }, + ), + scratch_buffer_offset, + }, + range: first_byte_index..instance_buffer_staging_source.len(), + }); + } + + let scratch_size = + match wgt::BufferSize::new(max(scratch_buffer_blas_size, scratch_buffer_tlas_size)) { + // if the size is zero there is nothing to build + None => return Ok(()), + Some(size) => size, + }; + + let scratch_buffer = + ScratchBuffer::new(device, scratch_size).map_err(crate::device::DeviceError::from)?; + + let scratch_buffer_barrier = hal::BufferBarrier:: { + buffer: scratch_buffer.raw(), + usage: BufferUses::ACCELERATION_STRUCTURE_SCRATCH + ..BufferUses::ACCELERATION_STRUCTURE_SCRATCH, + }; + + let mut tlas_descriptors = Vec::with_capacity(tlas_storage.len()); + + for &TlasStore { + internal: + UnsafeTlasStore { + ref tlas, + ref entries, + ref scratch_buffer_offset, + }, + .. + } in &tlas_storage + { + if tlas.update_mode == wgt::AccelerationStructureUpdateMode::PreferUpdate { + log::info!("only rebuild implemented") + } + tlas_descriptors.push(hal::BuildAccelerationStructureDescriptor { + entries, + mode: hal::AccelerationStructureBuildMode::Build, + flags: tlas.flags, + source_acceleration_structure: None, + destination_acceleration_structure: tlas + .raw + .get(&snatch_guard) + .ok_or(BuildAccelerationStructureError::InvalidTlas( + tlas.error_ident(), + ))? + .as_ref(), + scratch_buffer: scratch_buffer.raw(), + scratch_buffer_offset: *scratch_buffer_offset, + }) + } + + let blas_present = !blas_storage.is_empty(); + let tlas_present = !tlas_storage.is_empty(); + + let cmd_buf_raw = cmd_buf_data.encoder.open(device)?; + + let mut descriptors = Vec::new(); + + for storage in &blas_storage { + descriptors.push(map_blas(storage, scratch_buffer.raw(), &snatch_guard)?); + } + + build_blas( + cmd_buf_raw, + blas_present, + tlas_present, + input_barriers, + &descriptors, + scratch_buffer_barrier, + ); + + if tlas_present { + let staging_buffer = if !instance_buffer_staging_source.is_empty() { + let mut staging_buffer = StagingBuffer::new( + device, + wgt::BufferSize::new(instance_buffer_staging_source.len() as u64).unwrap(), + ) + .map_err(crate::device::DeviceError::from)?; + staging_buffer.write(&instance_buffer_staging_source); + let flushed = staging_buffer.flush(); + Some(flushed) + } else { + None + }; + + unsafe { + if let Some(ref staging_buffer) = staging_buffer { + cmd_buf_raw.transition_buffers(&[hal::BufferBarrier:: { + buffer: staging_buffer.raw(), + usage: hal::BufferUses::MAP_WRITE..hal::BufferUses::COPY_SRC, + }]); + } + } + + let mut instance_buffer_barriers = Vec::new(); + for &TlasStore { + internal: UnsafeTlasStore { ref tlas, .. }, + ref range, + } in &tlas_storage + { + let size = match wgt::BufferSize::new((range.end - range.start) as u64) { + None => continue, + Some(size) => size, + }; + instance_buffer_barriers.push(hal::BufferBarrier:: { + buffer: tlas.instance_buffer.as_ref(), + usage: BufferUses::COPY_DST..BufferUses::TOP_LEVEL_ACCELERATION_STRUCTURE_INPUT, + }); + unsafe { + cmd_buf_raw.transition_buffers(&[hal::BufferBarrier:: { + buffer: tlas.instance_buffer.as_ref(), + usage: hal::BufferUses::MAP_READ..hal::BufferUses::COPY_DST, + }]); + let temp = hal::BufferCopy { + src_offset: range.start as u64, + dst_offset: 0, + size, + }; + cmd_buf_raw.copy_buffer_to_buffer( + // the range whose size we just checked end is at (at that point in time) instance_buffer_staging_source.len() + // and since instance_buffer_staging_source doesn't shrink we can un wrap this without a panic + staging_buffer.as_ref().unwrap().raw(), + tlas.instance_buffer.as_ref(), + &[temp], + ); + } + } + + unsafe { + cmd_buf_raw.transition_buffers(&instance_buffer_barriers); + + cmd_buf_raw.build_acceleration_structures(&tlas_descriptors); + + cmd_buf_raw.place_acceleration_structure_barrier( + hal::AccelerationStructureBarrier { + usage: hal::AccelerationStructureUses::BUILD_OUTPUT + ..hal::AccelerationStructureUses::SHADER_INPUT, + }, + ); + } + + if let Some(staging_buffer) = staging_buffer { + device + .pending_writes + .lock() + .consume_temp(TempResource::StagingBuffer(staging_buffer)); + } + } + + device + .pending_writes + .lock() + .consume_temp(TempResource::ScratchBuffer(scratch_buffer)); + + Ok(()) + } +} + +impl CommandBufferMutable { + // makes sure a blas is build before it is used + pub(crate) fn validate_blas_actions(&self) -> Result<(), ValidateBlasActionsError> { + profiling::scope!("CommandEncoder::[submission]::validate_blas_actions"); + let mut built = FastHashSet::default(); + for action in &self.blas_actions { + match &action.kind { + crate::ray_tracing::BlasActionKind::Build(id) => { + built.insert(action.blas.tracker_index()); + *action.blas.built_index.write() = Some(*id); + } + crate::ray_tracing::BlasActionKind::Use => { + if !built.contains(&action.blas.tracker_index()) + && (*action.blas.built_index.read()).is_none() + { + return Err(ValidateBlasActionsError::UsedUnbuilt( + action.blas.error_ident(), + )); + } + } + } + } + Ok(()) + } + + // makes sure a tlas is built before it is used + pub(crate) fn validate_tlas_actions( + &self, + snatch_guard: &SnatchGuard, + ) -> Result<(), ValidateTlasActionsError> { + profiling::scope!("CommandEncoder::[submission]::validate_tlas_actions"); + for action in &self.tlas_actions { + match &action.kind { + crate::ray_tracing::TlasActionKind::Build { + build_index, + dependencies, + } => { + *action.tlas.built_index.write() = Some(*build_index); + *action.tlas.dependencies.write() = dependencies.clone(); + } + crate::ray_tracing::TlasActionKind::Use => { + let tlas_build_index = action.tlas.built_index.read(); + let dependencies = action.tlas.dependencies.read(); + + if (*tlas_build_index).is_none() { + return Err(ValidateTlasActionsError::UsedUnbuilt( + action.tlas.error_ident(), + )); + } + for blas in dependencies.deref() { + let blas_build_index = *blas.built_index.read(); + if blas_build_index.is_none() { + return Err(ValidateTlasActionsError::UsedUnbuiltBlas( + action.tlas.error_ident(), + blas.error_ident(), + )); + } + if blas_build_index.unwrap() > tlas_build_index.unwrap() { + return Err(ValidateTlasActionsError::BlasNewerThenTlas( + blas.error_ident(), + action.tlas.error_ident(), + )); + } + if blas.raw.get(snatch_guard).is_none() { + return Err(ValidateTlasActionsError::InvalidBlas(blas.error_ident())); + } + } + } + } + } + Ok(()) + } +} + +///iterates over the blas iterator, and it's geometry, pushing the buffers into a storage vector (and also some validation). +fn iter_blas<'a>( + blas_iter: impl Iterator>, + cmd_buf_data: &mut CommandBufferMutable, + build_command_index: NonZeroU64, + buf_storage: &mut Vec>, + hub: &Hub, + pending_writes: &mut ManuallyDrop, +) -> Result<(), BuildAccelerationStructureError> { + let mut temp_buffer = Vec::new(); + for entry in blas_iter { + let blas = hub + .blas_s + .get(entry.blas_id) + .get() + .map_err(|_| BuildAccelerationStructureError::InvalidBlasId)?; + cmd_buf_data.trackers.blas_s.set_single(blas.clone()); + pending_writes.insert_blas(&blas); + + cmd_buf_data.blas_actions.push(BlasAction { + blas: blas.clone(), + kind: crate::ray_tracing::BlasActionKind::Build(build_command_index), + }); + + match entry.geometries { + BlasGeometries::TriangleGeometries(triangle_geometries) => { + for (i, mesh) in triangle_geometries.enumerate() { + let size_desc = match &blas.sizes { + wgt::BlasGeometrySizeDescriptors::Triangles { descriptors } => descriptors, + }; + if i >= size_desc.len() { + return Err(BuildAccelerationStructureError::IncompatibleBlasBuildSizes( + blas.error_ident(), + )); + } + let size_desc = &size_desc[i]; + + if size_desc.flags != mesh.size.flags { + return Err(BuildAccelerationStructureError::IncompatibleBlasFlags( + blas.error_ident(), + size_desc.flags, + mesh.size.flags, + )); + } + + if size_desc.vertex_count < mesh.size.vertex_count { + return Err( + BuildAccelerationStructureError::IncompatibleBlasVertexCount( + blas.error_ident(), + size_desc.vertex_count, + mesh.size.vertex_count, + ), + ); + } + + if size_desc.vertex_format != mesh.size.vertex_format { + return Err(BuildAccelerationStructureError::DifferentBlasVertexFormats( + blas.error_ident(), + size_desc.vertex_format, + mesh.size.vertex_format, + )); + } + + match (size_desc.index_count, mesh.size.index_count) { + (Some(_), None) | (None, Some(_)) => { + return Err( + BuildAccelerationStructureError::BlasIndexCountProvidedMismatch( + blas.error_ident(), + ), + ) + } + (Some(create), Some(build)) if create < build => { + return Err( + BuildAccelerationStructureError::IncompatibleBlasIndexCount( + blas.error_ident(), + create, + build, + ), + ) + } + _ => {} + } + + if size_desc.index_format != mesh.size.index_format { + return Err(BuildAccelerationStructureError::DifferentBlasIndexFormats( + blas.error_ident(), + size_desc.index_format, + mesh.size.index_format, + )); + } + + if size_desc.index_count.is_some() && mesh.index_buffer.is_none() { + return Err(BuildAccelerationStructureError::MissingIndexBuffer( + blas.error_ident(), + )); + } + let vertex_buffer = match hub.buffers.get(mesh.vertex_buffer).get() { + Ok(buffer) => buffer, + Err(_) => return Err(BuildAccelerationStructureError::InvalidBufferId), + }; + let vertex_pending = cmd_buf_data.trackers.buffers.set_single( + &vertex_buffer, + BufferUses::BOTTOM_LEVEL_ACCELERATION_STRUCTURE_INPUT, + ); + let index_data = if let Some(index_id) = mesh.index_buffer { + let index_buffer = match hub.buffers.get(index_id).get() { + Ok(buffer) => buffer, + Err(_) => return Err(BuildAccelerationStructureError::InvalidBufferId), + }; + if mesh.index_buffer_offset.is_none() + || mesh.size.index_count.is_none() + || mesh.size.index_count.is_none() + { + return Err(BuildAccelerationStructureError::MissingAssociatedData( + index_buffer.error_ident(), + )); + } + let data = cmd_buf_data.trackers.buffers.set_single( + &index_buffer, + hal::BufferUses::BOTTOM_LEVEL_ACCELERATION_STRUCTURE_INPUT, + ); + Some((index_buffer.clone(), data)) + } else { + None + }; + let transform_data = if let Some(transform_id) = mesh.transform_buffer { + let transform_buffer = match hub.buffers.get(transform_id).get() { + Ok(buffer) => buffer, + Err(_) => return Err(BuildAccelerationStructureError::InvalidBufferId), + }; + if mesh.transform_buffer_offset.is_none() { + return Err(BuildAccelerationStructureError::MissingAssociatedData( + transform_buffer.error_ident(), + )); + } + let data = cmd_buf_data.trackers.buffers.set_single( + &transform_buffer, + BufferUses::BOTTOM_LEVEL_ACCELERATION_STRUCTURE_INPUT, + ); + Some((transform_buffer, data)) + } else { + None + }; + temp_buffer.push(TriangleBufferStore { + vertex_buffer: vertex_buffer.clone(), + vertex_transition: vertex_pending, + index_buffer_transition: index_data, + transform_buffer_transition: transform_data, + geometry: mesh, + ending_blas: None, + }); + } + + if let Some(last) = temp_buffer.last_mut() { + last.ending_blas = Some(blas.clone()); + buf_storage.append(&mut temp_buffer); + } + } + } + } + Ok(()) +} + +/// Iterates over the buffers generated in [iter_blas], convert the barriers into hal barriers, and the triangles into [hal::AccelerationStructureEntries] (and also some validation). +fn iter_buffers<'a, 'b>( + buf_storage: &'a mut Vec>, + snatch_guard: &'a SnatchGuard, + input_barriers: &mut Vec>, + cmd_buf_data: &mut CommandBufferMutable, + scratch_buffer_blas_size: &mut u64, + blas_storage: &mut Vec>, + hub: &Hub, +) -> Result<(), BuildAccelerationStructureError> { + let mut triangle_entries = + Vec::>::new(); + for buf in buf_storage { + let mesh = &buf.geometry; + let vertex_buffer = { + let vertex_buffer = buf.vertex_buffer.as_ref(); + let vertex_raw = vertex_buffer.raw.get(snatch_guard).ok_or( + BuildAccelerationStructureError::InvalidBuffer(vertex_buffer.error_ident()), + )?; + if !vertex_buffer.usage.contains(BufferUsages::BLAS_INPUT) { + return Err(BuildAccelerationStructureError::MissingBlasInputUsageFlag( + vertex_buffer.error_ident(), + )); + } + if let Some(barrier) = buf + .vertex_transition + .take() + .map(|pending| pending.into_hal(vertex_buffer, snatch_guard)) + { + input_barriers.push(barrier); + } + if vertex_buffer.size + < (mesh.size.vertex_count + mesh.first_vertex) as u64 * mesh.vertex_stride + { + return Err(BuildAccelerationStructureError::InsufficientBufferSize( + vertex_buffer.error_ident(), + vertex_buffer.size, + (mesh.size.vertex_count + mesh.first_vertex) as u64 * mesh.vertex_stride, + )); + } + let vertex_buffer_offset = mesh.first_vertex as u64 * mesh.vertex_stride; + cmd_buf_data.buffer_memory_init_actions.extend( + vertex_buffer.initialization_status.read().create_action( + &hub.buffers + .get(mesh.vertex_buffer) + .get() + .map_err(|_| BuildAccelerationStructureError::InvalidBufferId)?, + vertex_buffer_offset + ..(vertex_buffer_offset + + mesh.size.vertex_count as u64 * mesh.vertex_stride), + MemoryInitKind::NeedsInitializedMemory, + ), + ); + vertex_raw + }; + let index_buffer = if let Some((ref mut index_buffer, ref mut index_pending)) = + buf.index_buffer_transition + { + let index_raw = index_buffer.raw.get(snatch_guard).ok_or( + BuildAccelerationStructureError::InvalidBuffer(index_buffer.error_ident()), + )?; + if !index_buffer.usage.contains(BufferUsages::BLAS_INPUT) { + return Err(BuildAccelerationStructureError::MissingBlasInputUsageFlag( + index_buffer.error_ident(), + )); + } + if let Some(barrier) = index_pending + .take() + .map(|pending| pending.into_hal(index_buffer, snatch_guard)) + { + input_barriers.push(barrier); + } + let index_stride = match mesh.size.index_format.unwrap() { + wgt::IndexFormat::Uint16 => 2, + wgt::IndexFormat::Uint32 => 4, + }; + if mesh.index_buffer_offset.unwrap() % index_stride != 0 { + return Err(BuildAccelerationStructureError::UnalignedIndexBufferOffset( + index_buffer.error_ident(), + )); + } + let index_buffer_size = mesh.size.index_count.unwrap() as u64 * index_stride; + + if mesh.size.index_count.unwrap() % 3 != 0 { + return Err(BuildAccelerationStructureError::InvalidIndexCount( + index_buffer.error_ident(), + mesh.size.index_count.unwrap(), + )); + } + if index_buffer.size + < mesh.size.index_count.unwrap() as u64 * index_stride + + mesh.index_buffer_offset.unwrap() + { + return Err(BuildAccelerationStructureError::InsufficientBufferSize( + index_buffer.error_ident(), + index_buffer.size, + mesh.size.index_count.unwrap() as u64 * index_stride + + mesh.index_buffer_offset.unwrap(), + )); + } + + cmd_buf_data.buffer_memory_init_actions.extend( + index_buffer.initialization_status.read().create_action( + index_buffer, + mesh.index_buffer_offset.unwrap() + ..(mesh.index_buffer_offset.unwrap() + index_buffer_size), + MemoryInitKind::NeedsInitializedMemory, + ), + ); + Some(index_raw) + } else { + None + }; + let transform_buffer = if let Some((ref mut transform_buffer, ref mut transform_pending)) = + buf.transform_buffer_transition + { + if mesh.transform_buffer_offset.is_none() { + return Err(BuildAccelerationStructureError::MissingAssociatedData( + transform_buffer.error_ident(), + )); + } + let transform_raw = transform_buffer.raw.get(snatch_guard).ok_or( + BuildAccelerationStructureError::InvalidBuffer(transform_buffer.error_ident()), + )?; + if !transform_buffer.usage.contains(BufferUsages::BLAS_INPUT) { + return Err(BuildAccelerationStructureError::MissingBlasInputUsageFlag( + transform_buffer.error_ident(), + )); + } + if let Some(barrier) = transform_pending + .take() + .map(|pending| pending.into_hal(transform_buffer, snatch_guard)) + { + input_barriers.push(barrier); + } + if mesh.transform_buffer_offset.unwrap() % wgt::TRANSFORM_BUFFER_ALIGNMENT != 0 { + return Err( + BuildAccelerationStructureError::UnalignedTransformBufferOffset( + transform_buffer.error_ident(), + ), + ); + } + if transform_buffer.size < 48 + mesh.transform_buffer_offset.unwrap() { + return Err(BuildAccelerationStructureError::InsufficientBufferSize( + transform_buffer.error_ident(), + transform_buffer.size, + 48 + mesh.transform_buffer_offset.unwrap(), + )); + } + cmd_buf_data.buffer_memory_init_actions.extend( + transform_buffer.initialization_status.read().create_action( + transform_buffer, + mesh.transform_buffer_offset.unwrap()..(mesh.index_buffer_offset.unwrap() + 48), + MemoryInitKind::NeedsInitializedMemory, + ), + ); + Some(transform_raw) + } else { + None + }; + + let triangles = hal::AccelerationStructureTriangles { + vertex_buffer: Some(vertex_buffer.as_ref()), + vertex_format: mesh.size.vertex_format, + first_vertex: mesh.first_vertex, + vertex_count: mesh.size.vertex_count, + vertex_stride: mesh.vertex_stride, + indices: index_buffer.map(|index_buffer| hal::AccelerationStructureTriangleIndices::< + dyn hal::DynBuffer, + > { + format: mesh.size.index_format.unwrap(), + buffer: Some(index_buffer.as_ref()), + offset: mesh.index_buffer_offset.unwrap() as u32, + count: mesh.size.index_count.unwrap(), + }), + transform: transform_buffer.map(|transform_buffer| { + hal::AccelerationStructureTriangleTransform { + buffer: transform_buffer.as_ref(), + offset: mesh.transform_buffer_offset.unwrap() as u32, + } + }), + flags: mesh.size.flags, + }; + triangle_entries.push(triangles); + if let Some(blas) = buf.ending_blas.take() { + let scratch_buffer_offset = *scratch_buffer_blas_size; + *scratch_buffer_blas_size += align_to( + blas.size_info.build_scratch_size as u32, + SCRATCH_BUFFER_ALIGNMENT, + ) as u64; + + blas_storage.push(BlasStore { + blas, + entries: hal::AccelerationStructureEntries::Triangles(triangle_entries), + scratch_buffer_offset, + }); + triangle_entries = Vec::new(); + } + } + Ok(()) +} + +fn map_blas<'a>( + storage: &'a BlasStore<'_>, + scratch_buffer: &'a dyn hal::DynBuffer, + snatch_guard: &'a SnatchGuard, +) -> Result< + hal::BuildAccelerationStructureDescriptor< + 'a, + dyn hal::DynBuffer, + dyn hal::DynAccelerationStructure, + >, + BuildAccelerationStructureError, +> { + let BlasStore { + blas, + entries, + scratch_buffer_offset, + } = storage; + if blas.update_mode == wgt::AccelerationStructureUpdateMode::PreferUpdate { + log::info!("only rebuild implemented") + } + Ok(hal::BuildAccelerationStructureDescriptor { + entries, + mode: hal::AccelerationStructureBuildMode::Build, + flags: blas.flags, + source_acceleration_structure: None, + destination_acceleration_structure: blas + .raw + .get(snatch_guard) + .ok_or(BuildAccelerationStructureError::InvalidBlas( + blas.error_ident(), + ))? + .as_ref(), + scratch_buffer, + scratch_buffer_offset: *scratch_buffer_offset, + }) +} + +fn build_blas<'a>( + cmd_buf_raw: &mut dyn hal::DynCommandEncoder, + blas_present: bool, + tlas_present: bool, + input_barriers: Vec>, + blas_descriptors: &[hal::BuildAccelerationStructureDescriptor< + 'a, + dyn hal::DynBuffer, + dyn hal::DynAccelerationStructure, + >], + scratch_buffer_barrier: hal::BufferBarrier, +) { + unsafe { + cmd_buf_raw.transition_buffers(&input_barriers); + } + + if blas_present { + unsafe { + cmd_buf_raw.place_acceleration_structure_barrier(hal::AccelerationStructureBarrier { + usage: hal::AccelerationStructureUses::BUILD_INPUT + ..hal::AccelerationStructureUses::BUILD_OUTPUT, + }); + + cmd_buf_raw.build_acceleration_structures(blas_descriptors); + } + } + + if blas_present && tlas_present { + unsafe { + cmd_buf_raw.transition_buffers(&[scratch_buffer_barrier]); + } + } + + let mut source_usage = hal::AccelerationStructureUses::empty(); + let mut destination_usage = hal::AccelerationStructureUses::empty(); + if blas_present { + source_usage |= hal::AccelerationStructureUses::BUILD_OUTPUT; + destination_usage |= hal::AccelerationStructureUses::BUILD_INPUT + } + if tlas_present { + source_usage |= hal::AccelerationStructureUses::SHADER_INPUT; + destination_usage |= hal::AccelerationStructureUses::BUILD_OUTPUT; + } + unsafe { + cmd_buf_raw.place_acceleration_structure_barrier(hal::AccelerationStructureBarrier { + usage: source_usage..destination_usage, + }); + } +} diff --git a/wgpu-core/src/conv.rs b/wgpu-core/src/conv.rs index d27583b02a..a9f48ff691 100644 --- a/wgpu-core/src/conv.rs +++ b/wgpu-core/src/conv.rs @@ -93,6 +93,14 @@ pub fn map_buffer_usage(usage: wgt::BufferUsages) -> hal::BufferUses { hal::BufferUses::QUERY_RESOLVE, usage.contains(wgt::BufferUsages::QUERY_RESOLVE), ); + u.set( + hal::BufferUses::BOTTOM_LEVEL_ACCELERATION_STRUCTURE_INPUT, + usage.contains(wgt::BufferUsages::BLAS_INPUT), + ); + u.set( + hal::BufferUses::TOP_LEVEL_ACCELERATION_STRUCTURE_INPUT, + usage.contains(wgt::BufferUsages::TLAS_INPUT), + ); u } diff --git a/wgpu-core/src/device/global.rs b/wgpu-core/src/device/global.rs index 72ba39dc87..b6ad2354c3 100644 --- a/wgpu-core/src/device/global.rs +++ b/wgpu-core/src/device/global.rs @@ -732,6 +732,7 @@ impl Global { buffer_storage: &Storage>, sampler_storage: &Storage>, texture_view_storage: &Storage>, + tlas_storage: &Storage>, ) -> Result, binding_model::CreateBindGroupError> { let resolve_buffer = |bb: &BufferBinding| { @@ -757,6 +758,12 @@ impl Global { .get() .map_err(binding_model::CreateBindGroupError::from) }; + let resolve_tlas = |id: &id::TlasId| { + tlas_storage + .get(*id) + .get() + .map_err(binding_model::CreateBindGroupError::from) + }; let resource = match e.resource { BindingResource::Buffer(ref buffer) => { ResolvedBindingResource::Buffer(resolve_buffer(buffer)?) @@ -788,6 +795,9 @@ impl Global { .collect::, _>>()?; ResolvedBindingResource::TextureViewArray(Cow::Owned(views)) } + BindingResource::AccelerationStructure(ref tlas) => { + ResolvedBindingResource::AccelerationStructure(resolve_tlas(tlas)?) + } }; Ok(ResolvedBindGroupEntry { binding: e.binding, @@ -799,9 +809,18 @@ impl Global { let buffer_guard = hub.buffers.read(); let texture_view_guard = hub.texture_views.read(); let sampler_guard = hub.samplers.read(); + let tlas_guard = hub.tlas_s.read(); desc.entries .iter() - .map(|e| resolve_entry(e, &buffer_guard, &sampler_guard, &texture_view_guard)) + .map(|e| { + resolve_entry( + e, + &buffer_guard, + &sampler_guard, + &texture_view_guard, + &tlas_guard, + ) + }) .collect::, _>>() }; let entries = match entries { diff --git a/wgpu-core/src/device/life.rs b/wgpu-core/src/device/life.rs index 84ff18440a..70e5337a7f 100644 --- a/wgpu-core/src/device/life.rs +++ b/wgpu-core/src/device/life.rs @@ -9,6 +9,7 @@ use crate::{ }; use smallvec::SmallVec; +use crate::resource::{Blas, Tlas}; use std::sync::Arc; use thiserror::Error; @@ -103,6 +104,44 @@ impl ActiveSubmission { false } + + pub fn contains_blas(&self, blas: &Blas) -> bool { + for encoder in &self.encoders { + // The ownership location of blas's depends on where the command encoder + // came from. If it is the staging command encoder on the queue, it is + // in the pending buffer list. If it came from a user command encoder, + // it is in the tracker. + + if encoder.trackers.blas_s.contains(blas) { + return true; + } + + if encoder.pending_blas_s.contains_key(&blas.tracker_index()) { + return true; + } + } + + false + } + + pub fn contains_tlas(&self, tlas: &Tlas) -> bool { + for encoder in &self.encoders { + // The ownership location of tlas's depends on where the command encoder + // came from. If it is the staging command encoder on the queue, it is + // in the pending buffer list. If it came from a user command encoder, + // it is in the tracker. + + if encoder.trackers.tlas_s.contains(tlas) { + return true; + } + + if encoder.pending_tlas_s.contains_key(&tlas.tracker_index()) { + return true; + } + } + + false + } } #[derive(Clone, Debug, Error)] @@ -226,6 +265,34 @@ impl LifetimeTracker { }) } + /// Returns the submission index of the most recent submission that uses the + /// given blas. + pub fn get_blas_latest_submission_index(&self, blas: &Blas) -> Option { + // We iterate in reverse order, so that we can bail out early as soon + // as we find a hit. + self.active.iter().rev().find_map(|submission| { + if submission.contains_blas(blas) { + Some(submission.index) + } else { + None + } + }) + } + + /// Returns the submission index of the most recent submission that uses the + /// given tlas. + pub fn get_tlas_latest_submission_index(&self, tlas: &Tlas) -> Option { + // We iterate in reverse order, so that we can bail out early as soon + // as we find a hit. + self.active.iter().rev().find_map(|submission| { + if submission.contains_tlas(tlas) { + Some(submission.index) + } else { + None + } + }) + } + /// Returns the submission index of the most recent submission that uses the /// given texture. pub fn get_texture_latest_submission_index( diff --git a/wgpu-core/src/device/mod.rs b/wgpu-core/src/device/mod.rs index a4c2d22277..81cb4654d2 100644 --- a/wgpu-core/src/device/mod.rs +++ b/wgpu-core/src/device/mod.rs @@ -22,6 +22,7 @@ pub(crate) mod bgl; pub mod global; mod life; pub mod queue; +pub mod ray_tracing; pub mod resource; #[cfg(any(feature = "trace", feature = "replay"))] pub mod trace; @@ -544,6 +545,10 @@ pub fn create_validator( Caps::SUBGROUP_BARRIER, features.intersects(wgt::Features::SUBGROUP_BARRIER), ); + caps.set( + Caps::RAY_QUERY, + features.intersects(wgt::Features::EXPERIMENTAL_RAY_QUERY), + ); caps.set( Caps::SUBGROUP_VERTEX_STAGE, features.contains(wgt::Features::SUBGROUP_VERTEX), diff --git a/wgpu-core/src/device/queue.rs b/wgpu-core/src/device/queue.rs index 25e8806c9c..ade609f20c 100644 --- a/wgpu-core/src/device/queue.rs +++ b/wgpu-core/src/device/queue.rs @@ -27,6 +27,8 @@ use crate::{ use smallvec::SmallVec; +use crate::resource::{Blas, DestroyedAccelerationStructure, Tlas}; +use crate::scratch::ScratchBuffer; use std::{ iter, mem::{self, ManuallyDrop}, @@ -143,8 +145,10 @@ impl SubmittedWorkDoneClosure { #[derive(Debug)] pub enum TempResource { StagingBuffer(FlushedStagingBuffer), + ScratchBuffer(ScratchBuffer), DestroyedBuffer(DestroyedBuffer), DestroyedTexture(DestroyedTexture), + DestroyedAccelerationStructure(DestroyedAccelerationStructure), } /// A series of raw [`CommandBuffer`]s that have been submitted to a @@ -161,6 +165,10 @@ pub(crate) struct EncoderInFlight { pub(crate) pending_buffers: FastHashMap>, /// These are the textures that have been tracked by `PendingWrites`. pub(crate) pending_textures: FastHashMap>, + /// These are the BLASes that have been tracked by `PendingWrites`. + pub(crate) pending_blas_s: FastHashMap>, + /// These are the TLASes that have been tracked by `PendingWrites`. + pub(crate) pending_tlas_s: FastHashMap>, } impl EncoderInFlight { @@ -177,6 +185,8 @@ impl EncoderInFlight { drop(self.trackers); drop(self.pending_buffers); drop(self.pending_textures); + drop(self.pending_blas_s); + drop(self.pending_tlas_s); } self.raw } @@ -216,6 +226,8 @@ pub(crate) struct PendingWrites { temp_resources: Vec, dst_buffers: FastHashMap>, dst_textures: FastHashMap>, + dst_blas_s: FastHashMap>, + dst_tlas_s: FastHashMap>, } impl PendingWrites { @@ -226,6 +238,8 @@ impl PendingWrites { temp_resources: Vec::new(), dst_buffers: FastHashMap::default(), dst_textures: FastHashMap::default(), + dst_blas_s: FastHashMap::default(), + dst_tlas_s: FastHashMap::default(), } } @@ -258,6 +272,22 @@ impl PendingWrites { self.dst_textures.contains_key(&texture.tracker_index()) } + pub fn insert_blas(&mut self, blas: &Arc) { + self.dst_blas_s.insert(blas.tracker_index(), blas.clone()); + } + + pub fn insert_tlas(&mut self, tlas: &Arc) { + self.dst_tlas_s.insert(tlas.tracker_index(), tlas.clone()); + } + + pub fn contains_blas(&mut self, blas: &Arc) -> bool { + self.dst_blas_s.contains_key(&blas.tracker_index()) + } + + pub fn contains_tlas(&mut self, tlas: &Arc) -> bool { + self.dst_tlas_s.contains_key(&tlas.tracker_index()) + } + pub fn consume_temp(&mut self, resource: TempResource) { self.temp_resources.push(resource); } @@ -276,6 +306,8 @@ impl PendingWrites { if self.is_recording { let pending_buffers = mem::take(&mut self.dst_buffers); let pending_textures = mem::take(&mut self.dst_textures); + let pending_blas_s = mem::take(&mut self.dst_blas_s); + let pending_tlas_s = mem::take(&mut self.dst_tlas_s); let cmd_buf = unsafe { self.command_encoder.end_encoding() } .map_err(|e| device.handle_hal_error(e))?; @@ -291,6 +323,8 @@ impl PendingWrites { trackers: Tracker::new(), pending_buffers, pending_textures, + pending_blas_s, + pending_tlas_s, }; Ok(Some(encoder)) } else { @@ -358,6 +392,10 @@ pub enum QueueSubmitError { InvalidResource(#[from] InvalidResourceError), #[error(transparent)] CommandEncoder(#[from] CommandEncoderError), + #[error(transparent)] + ValidateBlasActionsError(#[from] crate::ray_tracing::ValidateBlasActionsError), + #[error(transparent)] + ValidateTlasActionsError(#[from] crate::ray_tracing::ValidateTlasActionsError), } //TODO: move out common parts of write_xxx. @@ -1117,6 +1155,8 @@ impl Queue { trackers: baked.trackers, pending_buffers: FastHashMap::default(), pending_textures: FastHashMap::default(), + pending_blas_s: FastHashMap::default(), + pending_tlas_s: FastHashMap::default(), }); } @@ -1462,6 +1502,13 @@ fn validate_command_buffer( } } } + + if let Err(e) = cmd_buf_data.validate_blas_actions() { + return Err(e.into()); + } + if let Err(e) = cmd_buf_data.validate_tlas_actions(snatch_guard) { + return Err(e.into()); + } } Ok(()) } diff --git a/wgpu-core/src/device/ray_tracing.rs b/wgpu-core/src/device/ray_tracing.rs new file mode 100644 index 0000000000..baab420919 --- /dev/null +++ b/wgpu-core/src/device/ray_tracing.rs @@ -0,0 +1,355 @@ +use std::mem::ManuallyDrop; +use std::sync::Arc; + +#[cfg(feature = "trace")] +use crate::device::trace; +use crate::lock::{rank, Mutex}; +use crate::resource::{Fallible, TrackingData}; +use crate::snatch::Snatchable; +use crate::weak_vec::WeakVec; +use crate::{ + device::{Device, DeviceError}, + global::Global, + id::{self, BlasId, TlasId}, + lock::RwLock, + ray_tracing::{get_raw_tlas_instance_size, CreateBlasError, CreateTlasError}, + resource, LabelHelpers, +}; +use hal::AccelerationStructureTriangleIndices; +use wgt::Features; + +impl Device { + fn create_blas( + self: &Arc, + blas_desc: &resource::BlasDescriptor, + sizes: wgt::BlasGeometrySizeDescriptors, + ) -> Result, CreateBlasError> { + let size_info = match &sizes { + wgt::BlasGeometrySizeDescriptors::Triangles { descriptors } => { + let mut entries = + Vec::>::with_capacity( + descriptors.len(), + ); + for desc in descriptors { + if desc.index_count.is_some() != desc.index_format.is_some() { + return Err(CreateBlasError::MissingIndexData); + } + let indices = + desc.index_count + .map(|count| AccelerationStructureTriangleIndices::< + dyn hal::DynBuffer, + > { + format: desc.index_format.unwrap(), + buffer: None, + offset: 0, + count, + }); + if !self + .features + .allowed_vertex_formats_for_blas() + .contains(&desc.vertex_format) + { + return Err(CreateBlasError::InvalidVertexFormat( + desc.vertex_format, + self.features.allowed_vertex_formats_for_blas(), + )); + } + entries.push(hal::AccelerationStructureTriangles:: { + vertex_buffer: None, + vertex_format: desc.vertex_format, + first_vertex: 0, + vertex_count: desc.vertex_count, + vertex_stride: 0, + indices, + transform: None, + flags: desc.flags, + }); + } + unsafe { + self.raw().get_acceleration_structure_build_sizes( + &hal::GetAccelerationStructureBuildSizesDescriptor { + entries: &hal::AccelerationStructureEntries::Triangles(entries), + flags: blas_desc.flags, + }, + ) + } + } + }; + + let raw = unsafe { + self.raw() + .create_acceleration_structure(&hal::AccelerationStructureDescriptor { + label: blas_desc.label.as_deref(), + size: size_info.acceleration_structure_size, + format: hal::AccelerationStructureFormat::BottomLevel, + }) + } + .map_err(DeviceError::from_hal)?; + + let handle = unsafe { + self.raw() + .get_acceleration_structure_device_address(raw.as_ref()) + }; + + Ok(Arc::new(resource::Blas { + raw: Snatchable::new(raw), + device: self.clone(), + size_info, + sizes, + flags: blas_desc.flags, + update_mode: blas_desc.update_mode, + handle, + label: blas_desc.label.to_string(), + built_index: RwLock::new(rank::BLAS_BUILT_INDEX, None), + tracking_data: TrackingData::new(self.tracker_indices.blas_s.clone()), + })) + } + + fn create_tlas( + self: &Arc, + desc: &resource::TlasDescriptor, + ) -> Result, CreateTlasError> { + let size_info = unsafe { + self.raw().get_acceleration_structure_build_sizes( + &hal::GetAccelerationStructureBuildSizesDescriptor { + entries: &hal::AccelerationStructureEntries::Instances( + hal::AccelerationStructureInstances { + buffer: None, + offset: 0, + count: desc.max_instances, + }, + ), + flags: desc.flags, + }, + ) + }; + + let raw = unsafe { + self.raw() + .create_acceleration_structure(&hal::AccelerationStructureDescriptor { + label: desc.label.as_deref(), + size: size_info.acceleration_structure_size, + format: hal::AccelerationStructureFormat::TopLevel, + }) + } + .map_err(DeviceError::from_hal)?; + + let instance_buffer_size = + get_raw_tlas_instance_size(self.backend()) * desc.max_instances.max(1) as usize; + let instance_buffer = unsafe { + self.raw().create_buffer(&hal::BufferDescriptor { + label: Some("(wgpu-core) instances_buffer"), + size: instance_buffer_size as u64, + usage: hal::BufferUses::COPY_DST + | hal::BufferUses::TOP_LEVEL_ACCELERATION_STRUCTURE_INPUT, + memory_flags: hal::MemoryFlags::PREFER_COHERENT, + }) + } + .map_err(DeviceError::from_hal)?; + + Ok(Arc::new(resource::Tlas { + raw: Snatchable::new(raw), + device: self.clone(), + size_info, + flags: desc.flags, + update_mode: desc.update_mode, + built_index: RwLock::new(rank::TLAS_BUILT_INDEX, None), + dependencies: RwLock::new(rank::TLAS_DEPENDENCIES, Vec::new()), + instance_buffer: ManuallyDrop::new(instance_buffer), + label: desc.label.to_string(), + max_instance_count: desc.max_instances, + tracking_data: TrackingData::new(self.tracker_indices.tlas_s.clone()), + bind_groups: Mutex::new(rank::TLAS_BIND_GROUPS, WeakVec::new()), + })) + } +} + +impl Global { + pub fn device_create_blas( + &self, + device_id: id::DeviceId, + desc: &resource::BlasDescriptor, + sizes: wgt::BlasGeometrySizeDescriptors, + id_in: Option, + ) -> (BlasId, Option, Option) { + profiling::scope!("Device::create_blas"); + + let hub = &self.hub; + let fid = hub.blas_s.prepare(id_in); + + let device_guard = hub.devices.read(); + let error = 'error: { + let device = device_guard.get(device_id); + match device.check_is_valid() { + Ok(_) => {} + Err(err) => break 'error CreateBlasError::Device(err), + }; + + if !device + .features + .contains(Features::EXPERIMENTAL_RAY_TRACING_ACCELERATION_STRUCTURE) + { + break 'error CreateBlasError::MissingFeature; + } + + #[cfg(feature = "trace")] + if let Some(trace) = device.trace.lock().as_mut() { + trace.add(trace::Action::CreateBlas { + id: fid.id(), + desc: desc.clone(), + sizes: sizes.clone(), + }); + } + + let blas = match device.create_blas(desc, sizes) { + Ok(blas) => blas, + Err(e) => break 'error e, + }; + let handle = blas.handle; + + let id = fid.assign(Fallible::Valid(blas.clone())); + log::info!("Created blas {:?} with {:?}", id, desc); + + return (id, Some(handle), None); + }; + + let id = fid.assign(Fallible::Invalid(Arc::new(error.to_string()))); + (id, None, Some(error)) + } + + pub fn device_create_tlas( + &self, + device_id: id::DeviceId, + desc: &resource::TlasDescriptor, + id_in: Option, + ) -> (TlasId, Option) { + profiling::scope!("Device::create_tlas"); + + let hub = &self.hub; + let fid = hub.tlas_s.prepare(id_in); + + let device_guard = hub.devices.read(); + let error = 'error: { + let device = device_guard.get(device_id); + match device.check_is_valid() { + Ok(_) => {} + Err(e) => break 'error CreateTlasError::Device(e), + } + + if !device + .features + .contains(Features::EXPERIMENTAL_RAY_TRACING_ACCELERATION_STRUCTURE) + { + break 'error CreateTlasError::MissingFeature; + } + + #[cfg(feature = "trace")] + if let Some(trace) = device.trace.lock().as_mut() { + trace.add(trace::Action::CreateTlas { + id: fid.id(), + desc: desc.clone(), + }); + } + + let tlas = match device.create_tlas(desc) { + Ok(tlas) => tlas, + Err(e) => break 'error e, + }; + + let id = fid.assign(Fallible::Valid(tlas)); + log::info!("Created tlas {:?} with {:?}", id, desc); + + return (id, None); + }; + + let id = fid.assign(Fallible::Invalid(Arc::new(error.to_string()))); + (id, Some(error)) + } + + pub fn blas_destroy(&self, blas_id: BlasId) -> Result<(), resource::DestroyError> { + profiling::scope!("Blas::destroy"); + log::info!("Blas::destroy {blas_id:?}"); + + let hub = &self.hub; + + let blas = hub.blas_s.get(blas_id).get()?; + let _device = &blas.device; + + #[cfg(feature = "trace")] + if let Some(trace) = _device.trace.lock().as_mut() { + trace.add(trace::Action::FreeBlas(blas_id)); + } + + blas.destroy() + } + + pub fn blas_drop(&self, blas_id: BlasId) { + profiling::scope!("Blas::drop"); + log::debug!("blas {:?} is dropped", blas_id); + + let hub = &self.hub; + + let _blas = match hub.blas_s.remove(blas_id).get() { + Ok(blas) => blas, + Err(_) => { + return; + } + }; + + #[cfg(feature = "trace")] + { + let mut lock = _blas.device.trace.lock(); + + if let Some(t) = lock.as_mut() { + t.add(trace::Action::DestroyBlas(blas_id)); + } + } + } + + pub fn tlas_destroy(&self, tlas_id: TlasId) -> Result<(), resource::DestroyError> { + profiling::scope!("Tlas::destroy"); + + let hub = &self.hub; + + log::info!("Tlas {:?} is destroyed", tlas_id); + let tlas_guard = hub.tlas_s.write(); + let tlas = tlas_guard + .get(tlas_id) + .get() + .map_err(resource::DestroyError::InvalidResource)? + .clone(); + drop(tlas_guard); + + let _device = &mut tlas.device.clone(); + + #[cfg(feature = "trace")] + if let Some(trace) = _device.trace.lock().as_mut() { + trace.add(trace::Action::FreeTlas(tlas_id)); + } + + tlas.destroy() + } + + pub fn tlas_drop(&self, tlas_id: TlasId) { + profiling::scope!("Tlas::drop"); + log::debug!("tlas {:?} is dropped", tlas_id); + + let hub = &self.hub; + + let _tlas = match hub.tlas_s.remove(tlas_id).get() { + Ok(tlas) => tlas, + Err(_) => { + return; + } + }; + + #[cfg(feature = "trace")] + { + let mut lock = _tlas.device.trace.lock(); + + if let Some(t) = lock.as_mut() { + t.add(trace::Action::DestroyTlas(tlas_id)); + } + } + } +} diff --git a/wgpu-core/src/device/resource.rs b/wgpu-core/src/device/resource.rs index b88759cc99..afbf73bc03 100644 --- a/wgpu-core/src/device/resource.rs +++ b/wgpu-core/src/device/resource.rs @@ -41,6 +41,7 @@ use wgt::{ math::align_to, DeviceLostReason, TextureFormat, TextureSampleType, TextureViewDimension, }; +use crate::resource::{AccelerationStructure, DestroyedResourceError, Tlas}; use std::{ borrow::Cow, mem::{self, ManuallyDrop}, @@ -145,6 +146,7 @@ pub struct Device { #[cfg(feature = "trace")] pub(crate) trace: Mutex>, pub(crate) usage_scopes: UsageScopePool, + pub(crate) last_acceleration_structure_build_command_index: AtomicU64, #[cfg(feature = "indirect-validation")] pub(crate) indirect_validation: Option, @@ -334,6 +336,8 @@ impl Device { ), deferred_destroy: Mutex::new(rank::DEVICE_DEFERRED_DESTROY, Vec::new()), usage_scopes: Mutex::new(rank::DEVICE_USAGE_SCOPES, Default::default()), + // By starting at one, we can put the result in a NonZeroU64. + last_acceleration_structure_build_command_index: AtomicU64::new(1), #[cfg(feature = "indirect-validation")] indirect_validation, }) @@ -1861,7 +1865,7 @@ impl Device { }, ) } - Bt::AccelerationStructure => todo!(), + Bt::AccelerationStructure => (None, WritableStorage::No), }; // Validate the count parameter @@ -2188,6 +2192,36 @@ impl Device { }) } + fn create_tlas_binding<'a>( + self: &Arc, + used: &mut BindGroupStates, + binding: u32, + decl: &wgt::BindGroupLayoutEntry, + tlas: &'a Arc, + snatch_guard: &'a SnatchGuard<'a>, + ) -> Result<&'a dyn hal::DynAccelerationStructure, binding_model::CreateBindGroupError> { + use crate::binding_model::CreateBindGroupError as Error; + + used.acceleration_structures.insert_single(tlas.clone()); + + tlas.same_device(self)?; + + match decl.ty { + wgt::BindingType::AccelerationStructure => (), + _ => { + return Err(Error::WrongBindingType { + binding, + actual: decl.ty, + expected: "Tlas", + }); + } + } + + Ok(tlas + .raw(snatch_guard) + .ok_or(DestroyedResourceError(tlas.error_ident()))?) + } + // This function expects the provided bind group layout to be resolved // (not passing a duplicate) beforehand. pub(crate) fn create_bind_group( @@ -2227,6 +2261,7 @@ impl Device { let mut hal_buffers = Vec::new(); let mut hal_samplers = Vec::new(); let mut hal_textures = Vec::new(); + let mut hal_tlas_s = Vec::new(); let snatch_guard = self.snatchable_lock.read(); for entry in desc.entries.iter() { let binding = entry.binding; @@ -2326,6 +2361,13 @@ impl Device { (res_index, num_bindings) } + Br::AccelerationStructure(ref tlas) => { + let tlas = + self.create_tlas_binding(&mut used, binding, decl, tlas, &snatch_guard)?; + let res_index = hal_tlas_s.len(); + hal_tlas_s.push(tlas); + (res_index, 1) + } }; hal_entries.push(hal::BindGroupEntry { @@ -2350,7 +2392,7 @@ impl Device { buffers: &hal_buffers, samplers: &hal_samplers, textures: &hal_textures, - acceleration_structures: &[], + acceleration_structures: &hal_tlas_s, }; let raw = unsafe { self.raw().create_bind_group(&hal_desc) } .map_err(|e| self.handle_hal_error(e))?; diff --git a/wgpu-core/src/device/trace.rs b/wgpu-core/src/device/trace.rs index ff4eea47be..89b7b48f9d 100644 --- a/wgpu-core/src/device/trace.rs +++ b/wgpu-core/src/device/trace.rs @@ -127,6 +127,19 @@ pub enum Action<'a> { size: wgt::Extent3d, }, Submit(crate::SubmissionIndex, Vec), + CreateBlas { + id: id::BlasId, + desc: crate::resource::BlasDescriptor<'a>, + sizes: wgt::BlasGeometrySizeDescriptors, + }, + FreeBlas(id::BlasId), + DestroyBlas(id::BlasId), + CreateTlas { + id: id::TlasId, + desc: crate::resource::TlasDescriptor<'a>, + }, + FreeTlas(id::TlasId), + DestroyTlas(id::TlasId), } #[derive(Debug)] @@ -188,6 +201,14 @@ pub enum Command { timestamp_writes: Option, occlusion_query_set_id: Option, }, + BuildAccelerationStructuresUnsafeTlas { + blas: Vec, + tlas: Vec, + }, + BuildAccelerationStructures { + blas: Vec, + tlas: Vec, + }, } #[cfg(feature = "trace")] diff --git a/wgpu-core/src/hub.rs b/wgpu-core/src/hub.rs index ae6cbbb874..15d3e3c06b 100644 --- a/wgpu-core/src/hub.rs +++ b/wgpu-core/src/hub.rs @@ -107,7 +107,9 @@ use crate::{ instance::Adapter, pipeline::{ComputePipeline, PipelineCache, RenderPipeline, ShaderModule}, registry::{Registry, RegistryReport}, - resource::{Buffer, Fallible, QuerySet, Sampler, StagingBuffer, Texture, TextureView}, + resource::{ + Blas, Buffer, Fallible, QuerySet, Sampler, StagingBuffer, Texture, TextureView, Tlas, + }, }; use std::{fmt::Debug, sync::Arc}; @@ -178,6 +180,8 @@ pub struct Hub { pub(crate) textures: Registry>, pub(crate) texture_views: Registry>, pub(crate) samplers: Registry>, + pub(crate) blas_s: Registry>, + pub(crate) tlas_s: Registry>, } impl Hub { @@ -201,6 +205,8 @@ impl Hub { textures: Registry::new(), texture_views: Registry::new(), samplers: Registry::new(), + blas_s: Registry::new(), + tlas_s: Registry::new(), } } diff --git a/wgpu-core/src/id.rs b/wgpu-core/src/id.rs index 4e4897c832..fbf366982d 100644 --- a/wgpu-core/src/id.rs +++ b/wgpu-core/src/id.rs @@ -261,6 +261,9 @@ ids! { pub type RenderBundleEncoderId RenderBundleEncoder; pub type RenderBundleId RenderBundle; pub type QuerySetId QuerySet; + pub type BlasId Blas; + pub type TlasId Tlas; + pub type TlasInstanceId TlasInstance; } // The CommandBuffer type serves both as encoder and diff --git a/wgpu-core/src/lib.rs b/wgpu-core/src/lib.rs index b87b2cd638..1edb27e7ab 100644 --- a/wgpu-core/src/lib.rs +++ b/wgpu-core/src/lib.rs @@ -76,6 +76,7 @@ pub mod pipeline; mod pipeline_cache; mod pool; pub mod present; +pub mod ray_tracing; pub mod registry; pub mod resource; mod snatch; @@ -86,6 +87,7 @@ mod weak_vec; // preserve all run-time checks that `wgpu-core` does. // See , after which this can be // made private again. +mod scratch; pub mod validation; pub use hal::{api, MAX_BIND_GROUPS, MAX_COLOR_ATTACHMENTS, MAX_VERTEX_BUFFERS}; diff --git a/wgpu-core/src/lock/rank.rs b/wgpu-core/src/lock/rank.rs index abb5cb002d..842dadf26d 100644 --- a/wgpu-core/src/lock/rank.rs +++ b/wgpu-core/src/lock/rank.rs @@ -144,6 +144,10 @@ define_lock_ranks! { rank TEXTURE_BIND_GROUPS "Texture::bind_groups" followed by { } rank TEXTURE_INITIALIZATION_STATUS "Texture::initialization_status" followed by { } rank TEXTURE_VIEWS "Texture::views" followed by { } + rank BLAS_BUILT_INDEX "Blas::built_index" followed by { } + rank TLAS_BUILT_INDEX "Tlas::built_index" followed by { } + rank TLAS_DEPENDENCIES "Tlas::dependencies" followed by { } + rank TLAS_BIND_GROUPS "Tlas::bind_groups" followed by { } #[cfg(test)] rank PAWN "pawn" followed by { ROOK, BISHOP } diff --git a/wgpu-core/src/ray_tracing.rs b/wgpu-core/src/ray_tracing.rs new file mode 100644 index 0000000000..11ccb714f1 --- /dev/null +++ b/wgpu-core/src/ray_tracing.rs @@ -0,0 +1,337 @@ +// Ray tracing +// Major missing optimizations (no api surface changes needed): +// - use custom tracker to track build state +// - no forced rebuilt (build mode deduction) +// - lazy instance buffer allocation +// - maybe share scratch and instance staging buffer allocation +// - partial instance buffer uploads (api surface already designed with this in mind) +// - ([non performance] extract function in build (rust function extraction with guards is a pain)) + +use crate::{ + command::CommandEncoderError, + device::DeviceError, + id::{BlasId, BufferId, TlasId}, + resource::CreateBufferError, +}; +use std::sync::Arc; +use std::{num::NonZeroU64, slice}; + +use crate::resource::{Blas, ResourceErrorIdent, Tlas}; +use thiserror::Error; +use wgt::{AccelerationStructureGeometryFlags, BufferAddress, IndexFormat, VertexFormat}; + +#[derive(Clone, Debug, Error)] +pub enum CreateBlasError { + #[error(transparent)] + Device(#[from] DeviceError), + #[error(transparent)] + CreateBufferError(#[from] CreateBufferError), + #[error( + "Only one of 'index_count' and 'index_format' was provided (either provide both or none)" + )] + MissingIndexData, + #[error("Provided format was not within allowed formats. Provided format: {0:?}. Allowed formats: {1:?}")] + InvalidVertexFormat(VertexFormat, Vec), + #[error("Features::RAY_TRACING_ACCELERATION_STRUCTURE is not enabled")] + MissingFeature, +} + +#[derive(Clone, Debug, Error)] +pub enum CreateTlasError { + #[error(transparent)] + Device(#[from] DeviceError), + #[error(transparent)] + CreateBufferError(#[from] CreateBufferError), + #[error("Features::RAY_TRACING_ACCELERATION_STRUCTURE is not enabled")] + MissingFeature, + #[error("Unimplemented Tlas error: this error is not yet implemented")] + Unimplemented, +} + +/// Error encountered while attempting to do a copy on a command encoder. +#[derive(Clone, Debug, Error)] +pub enum BuildAccelerationStructureError { + #[error(transparent)] + Encoder(#[from] CommandEncoderError), + + #[error(transparent)] + Device(#[from] DeviceError), + + #[error("BufferId is invalid or destroyed")] + InvalidBufferId, + + #[error("Buffer {0:?} is invalid or destroyed")] + InvalidBuffer(ResourceErrorIdent), + + #[error("Buffer {0:?} is missing `BLAS_INPUT` usage flag")] + MissingBlasInputUsageFlag(ResourceErrorIdent), + + #[error( + "Buffer {0:?} size is insufficient for provided size information (size: {1}, required: {2}" + )] + InsufficientBufferSize(ResourceErrorIdent, u64, u64), + + #[error("Buffer {0:?} associated offset doesn't align with the index type")] + UnalignedIndexBufferOffset(ResourceErrorIdent), + + #[error("Buffer {0:?} associated offset is unaligned")] + UnalignedTransformBufferOffset(ResourceErrorIdent), + + #[error("Buffer {0:?} associated index count not divisible by 3 (count: {1}")] + InvalidIndexCount(ResourceErrorIdent, u32), + + #[error("Buffer {0:?} associated data contains None")] + MissingAssociatedData(ResourceErrorIdent), + + #[error( + "Blas {0:?} build sizes to may be greater than the descriptor at build time specified" + )] + IncompatibleBlasBuildSizes(ResourceErrorIdent), + + #[error("Blas {0:?} flags are different, creation flags: {1:?}, provided: {2:?}")] + IncompatibleBlasFlags( + ResourceErrorIdent, + AccelerationStructureGeometryFlags, + AccelerationStructureGeometryFlags, + ), + + #[error("Blas {0:?} build vertex count is greater than creation count (needs to be less than or equal to), creation: {1:?}, build: {2:?}")] + IncompatibleBlasVertexCount(ResourceErrorIdent, u32, u32), + + #[error("Blas {0:?} vertex formats are different, creation format: {1:?}, provided: {2:?}")] + DifferentBlasVertexFormats(ResourceErrorIdent, VertexFormat, VertexFormat), + + #[error("Blas {0:?} index count was provided at creation or building, but not the other")] + BlasIndexCountProvidedMismatch(ResourceErrorIdent), + + #[error("Blas {0:?} build index count is greater than creation count (needs to be less than or equal to), creation: {1:?}, build: {2:?}")] + IncompatibleBlasIndexCount(ResourceErrorIdent, u32, u32), + + #[error("Blas {0:?} index formats are different, creation format: {1:?}, provided: {2:?}")] + DifferentBlasIndexFormats(ResourceErrorIdent, Option, Option), + + #[error("Blas {0:?} build sizes require index buffer but none was provided")] + MissingIndexBuffer(ResourceErrorIdent), + + #[error("BlasId is invalid")] + InvalidBlasId, + + #[error("Blas {0:?} is destroyed")] + InvalidBlas(ResourceErrorIdent), + + #[error( + "Tlas {0:?} an associated instances contains an invalid custom index (more than 24bits)" + )] + TlasInvalidCustomIndex(ResourceErrorIdent), + + #[error( + "Tlas {0:?} has {1} active instances but only {2} are allowed as specified by the descriptor at creation" + )] + TlasInstanceCountExceeded(ResourceErrorIdent, u32, u32), + + #[error("BlasId is invalid or destroyed (for instance)")] + InvalidBlasIdForInstance, + + #[error("Blas {0:?} is invalid or destroyed (for instance)")] + InvalidBlasForInstance(ResourceErrorIdent), + + #[error("TlasId is invalid or destroyed")] + InvalidTlasId, + + #[error("Tlas {0:?} is invalid or destroyed")] + InvalidTlas(ResourceErrorIdent), + + #[error("Features::RAY_TRACING_ACCELERATION_STRUCTURE is not enabled")] + MissingFeature, + + #[error("Buffer {0:?} is missing `TLAS_INPUT` usage flag")] + MissingTlasInputUsageFlag(ResourceErrorIdent), +} + +#[derive(Clone, Debug, Error)] +pub enum ValidateBlasActionsError { + #[error("BlasId is invalid or destroyed")] + InvalidBlas, + + #[error("Blas {0:?} is used before it is built")] + UsedUnbuilt(ResourceErrorIdent), +} + +#[derive(Clone, Debug, Error)] +pub enum ValidateTlasActionsError { + #[error("Tlas {0:?} is invalid or destroyed")] + InvalidTlas(ResourceErrorIdent), + + #[error("Tlas {0:?} is used before it is built")] + UsedUnbuilt(ResourceErrorIdent), + + #[error("Blas {0:?} is used before it is built (in Tlas {1:?})")] + UsedUnbuiltBlas(ResourceErrorIdent, ResourceErrorIdent), + + #[error("BlasId is destroyed (in Tlas {0:?})")] + InvalidBlas(ResourceErrorIdent), + + #[error("Blas {0:?} is newer than the containing Tlas {1:?}")] + BlasNewerThenTlas(ResourceErrorIdent, ResourceErrorIdent), +} + +#[derive(Debug)] +pub struct BlasTriangleGeometry<'a> { + pub size: &'a wgt::BlasTriangleGeometrySizeDescriptor, + pub vertex_buffer: BufferId, + pub index_buffer: Option, + pub transform_buffer: Option, + pub first_vertex: u32, + pub vertex_stride: BufferAddress, + pub index_buffer_offset: Option, + pub transform_buffer_offset: Option, +} + +pub enum BlasGeometries<'a> { + TriangleGeometries(Box> + 'a>), +} + +pub struct BlasBuildEntry<'a> { + pub blas_id: BlasId, + pub geometries: BlasGeometries<'a>, +} + +#[derive(Debug, Clone)] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] +pub struct TlasBuildEntry { + pub tlas_id: TlasId, + pub instance_buffer_id: BufferId, + pub instance_count: u32, +} + +#[derive(Debug)] +pub struct TlasInstance<'a> { + pub blas_id: BlasId, + pub transform: &'a [f32; 12], + pub custom_index: u32, + pub mask: u8, +} + +pub struct TlasPackage<'a> { + pub tlas_id: TlasId, + pub instances: Box>> + 'a>, + pub lowest_unmodified: u32, +} + +#[derive(Debug, Copy, Clone)] +pub(crate) enum BlasActionKind { + Build(NonZeroU64), + Use, +} + +#[derive(Debug, Clone)] +pub(crate) enum TlasActionKind { + Build { + build_index: NonZeroU64, + dependencies: Vec>, + }, + Use, +} + +#[derive(Debug, Clone)] +pub(crate) struct BlasAction { + pub blas: Arc, + pub kind: BlasActionKind, +} + +#[derive(Debug, Clone)] +pub(crate) struct TlasAction { + pub tlas: Arc, + pub kind: TlasActionKind, +} + +#[derive(Debug, Clone)] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] +pub struct TraceBlasTriangleGeometry { + pub size: wgt::BlasTriangleGeometrySizeDescriptor, + pub vertex_buffer: BufferId, + pub index_buffer: Option, + pub transform_buffer: Option, + pub first_vertex: u32, + pub vertex_stride: BufferAddress, + pub index_buffer_offset: Option, + pub transform_buffer_offset: Option, +} + +#[derive(Debug, Clone)] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] +pub enum TraceBlasGeometries { + TriangleGeometries(Vec), +} + +#[derive(Debug, Clone)] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] +pub struct TraceBlasBuildEntry { + pub blas_id: BlasId, + pub geometries: TraceBlasGeometries, +} + +#[derive(Debug, Clone)] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] +pub struct TraceTlasInstance { + pub blas_id: BlasId, + pub transform: [f32; 12], + pub custom_index: u32, + pub mask: u8, +} + +#[derive(Debug, Clone)] +#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))] +pub struct TraceTlasPackage { + pub tlas_id: TlasId, + pub instances: Vec>, + pub lowest_unmodified: u32, +} + +pub(crate) fn get_raw_tlas_instance_size(backend: wgt::Backend) -> usize { + // TODO: this should be provided by the backend + match backend { + wgt::Backend::Empty => 0, + wgt::Backend::Vulkan => 64, + _ => unimplemented!(), + } +} + +#[derive(Clone)] +#[repr(C)] +struct RawTlasInstance { + transform: [f32; 12], + custom_index_and_mask: u32, + shader_binding_table_record_offset_and_flags: u32, + acceleration_structure_reference: u64, +} + +pub(crate) fn tlas_instance_into_bytes( + instance: &TlasInstance, + blas_address: u64, + backend: wgt::Backend, +) -> Vec { + // TODO: get the device to do this + match backend { + wgt::Backend::Empty => vec![], + wgt::Backend::Vulkan => { + const MAX_U24: u32 = (1u32 << 24u32) - 1u32; + let temp = RawTlasInstance { + transform: *instance.transform, + custom_index_and_mask: (instance.custom_index & MAX_U24) + | (u32::from(instance.mask) << 24), + shader_binding_table_record_offset_and_flags: 0, + acceleration_structure_reference: blas_address, + }; + let temp: *const _ = &temp; + unsafe { + slice::from_raw_parts::( + temp.cast::(), + std::mem::size_of::(), + ) + .to_vec() + } + } + _ => unimplemented!(), + } +} diff --git a/wgpu-core/src/resource.rs b/wgpu-core/src/resource.rs index 157b83641a..8ea9dd07ed 100644 --- a/wgpu-core/src/resource.rs +++ b/wgpu-core/src/resource.rs @@ -21,6 +21,7 @@ use crate::{ use smallvec::SmallVec; use thiserror::Error; +use std::num::NonZeroU64; use std::{ borrow::{Borrow, Cow}, fmt::Debug, @@ -1894,3 +1895,201 @@ pub enum DestroyError { #[error(transparent)] InvalidResource(#[from] InvalidResourceError), } + +pub type BlasDescriptor<'a> = wgt::CreateBlasDescriptor>; +pub type TlasDescriptor<'a> = wgt::CreateTlasDescriptor>; + +pub(crate) trait AccelerationStructure: Trackable { + fn raw<'a>(&'a self, guard: &'a SnatchGuard) -> Option<&'a dyn hal::DynAccelerationStructure>; +} + +#[derive(Debug)] +pub struct Blas { + pub(crate) raw: Snatchable>, + pub(crate) device: Arc, + pub(crate) size_info: hal::AccelerationStructureBuildSizes, + pub(crate) sizes: wgt::BlasGeometrySizeDescriptors, + pub(crate) flags: wgt::AccelerationStructureFlags, + pub(crate) update_mode: wgt::AccelerationStructureUpdateMode, + pub(crate) built_index: RwLock>, + pub(crate) handle: u64, + /// The `label` from the descriptor used to create the resource. + pub(crate) label: String, + pub(crate) tracking_data: TrackingData, +} + +impl Drop for Blas { + fn drop(&mut self) { + resource_log!("Destroy raw {}", self.error_ident()); + // SAFETY: We are in the Drop impl, and we don't use self.raw anymore after this point. + if let Some(raw) = self.raw.take() { + unsafe { + self.device.raw().destroy_acceleration_structure(raw); + } + } + } +} + +impl AccelerationStructure for Blas { + fn raw<'a>(&'a self, guard: &'a SnatchGuard) -> Option<&'a dyn hal::DynAccelerationStructure> { + Some(self.raw.get(guard)?.as_ref()) + } +} + +impl Blas { + pub(crate) fn destroy(self: &Arc) -> Result<(), DestroyError> { + let device = &self.device; + + let temp = { + let mut snatch_guard = device.snatchable_lock.write(); + + let raw = match self.raw.snatch(&mut snatch_guard) { + Some(raw) => raw, + None => { + return Err(DestroyError::AlreadyDestroyed); + } + }; + + drop(snatch_guard); + + queue::TempResource::DestroyedAccelerationStructure(DestroyedAccelerationStructure { + raw: ManuallyDrop::new(raw), + device: Arc::clone(&self.device), + label: self.label().to_owned(), + bind_groups: WeakVec::new(), + }) + }; + + let mut pending_writes = device.pending_writes.lock(); + if pending_writes.contains_blas(self) { + pending_writes.consume_temp(temp); + } else { + let mut life_lock = device.lock_life(); + let last_submit_index = life_lock.get_blas_latest_submission_index(self); + if let Some(last_submit_index) = last_submit_index { + life_lock.schedule_resource_destruction(temp, last_submit_index); + } + } + + Ok(()) + } +} + +crate::impl_resource_type!(Blas); +crate::impl_labeled!(Blas); +crate::impl_parent_device!(Blas); +crate::impl_storage_item!(Blas); +crate::impl_trackable!(Blas); + +#[derive(Debug)] +pub struct Tlas { + pub(crate) raw: Snatchable>, + pub(crate) device: Arc, + pub(crate) size_info: hal::AccelerationStructureBuildSizes, + pub(crate) max_instance_count: u32, + pub(crate) flags: wgt::AccelerationStructureFlags, + pub(crate) update_mode: wgt::AccelerationStructureUpdateMode, + pub(crate) built_index: RwLock>, + pub(crate) dependencies: RwLock>>, + pub(crate) instance_buffer: ManuallyDrop>, + /// The `label` from the descriptor used to create the resource. + pub(crate) label: String, + pub(crate) tracking_data: TrackingData, + pub(crate) bind_groups: Mutex>, +} + +impl Drop for Tlas { + fn drop(&mut self) { + unsafe { + resource_log!("Destroy raw {}", self.error_ident()); + if let Some(structure) = self.raw.take() { + self.device.raw().destroy_acceleration_structure(structure); + } + let buffer = ManuallyDrop::take(&mut self.instance_buffer); + self.device.raw().destroy_buffer(buffer); + } + } +} + +impl AccelerationStructure for Tlas { + fn raw<'a>(&'a self, guard: &'a SnatchGuard) -> Option<&dyn hal::DynAccelerationStructure> { + Some(self.raw.get(guard)?.as_ref()) + } +} + +crate::impl_resource_type!(Tlas); +crate::impl_labeled!(Tlas); +crate::impl_parent_device!(Tlas); +crate::impl_storage_item!(Tlas); +crate::impl_trackable!(Tlas); + +impl Tlas { + pub(crate) fn destroy(self: &Arc) -> Result<(), DestroyError> { + let device = &self.device; + + let temp = { + let mut snatch_guard = device.snatchable_lock.write(); + + let raw = match self.raw.snatch(&mut snatch_guard) { + Some(raw) => raw, + None => { + return Err(DestroyError::AlreadyDestroyed); + } + }; + + drop(snatch_guard); + + queue::TempResource::DestroyedAccelerationStructure(DestroyedAccelerationStructure { + raw: ManuallyDrop::new(raw), + device: Arc::clone(&self.device), + label: self.label().to_owned(), + bind_groups: mem::take(&mut self.bind_groups.lock()), + }) + }; + + let mut pending_writes = device.pending_writes.lock(); + if pending_writes.contains_tlas(self) { + pending_writes.consume_temp(temp); + } else { + let mut life_lock = device.lock_life(); + let last_submit_index = life_lock.get_tlas_latest_submission_index(self); + if let Some(last_submit_index) = last_submit_index { + life_lock.schedule_resource_destruction(temp, last_submit_index); + } + } + + Ok(()) + } +} + +#[derive(Debug)] +pub struct DestroyedAccelerationStructure { + raw: ManuallyDrop>, + device: Arc, + label: String, + // only filled if the acceleration structure is a TLAS + bind_groups: WeakVec, +} + +impl DestroyedAccelerationStructure { + pub fn label(&self) -> &dyn Debug { + &self.label + } +} + +impl Drop for DestroyedAccelerationStructure { + fn drop(&mut self) { + let mut deferred = self.device.deferred_destroy.lock(); + deferred.push(DeferredDestroy::BindGroups(mem::take( + &mut self.bind_groups, + ))); + drop(deferred); + + resource_log!("Destroy raw Buffer (destroyed) {:?}", self.label()); + // SAFETY: We are in the Drop impl and we don't use self.raw anymore after this point. + let raw = unsafe { ManuallyDrop::take(&mut self.raw) }; + unsafe { + hal::DynDevice::destroy_acceleration_structure(self.device.raw(), raw); + } + } +} diff --git a/wgpu-core/src/scratch.rs b/wgpu-core/src/scratch.rs new file mode 100644 index 0000000000..f5930a5e01 --- /dev/null +++ b/wgpu-core/src/scratch.rs @@ -0,0 +1,43 @@ +use crate::device::{Device, DeviceError}; +use crate::resource_log; +use hal::BufferUses; +use std::mem::ManuallyDrop; +use std::sync::Arc; + +#[derive(Debug)] +pub struct ScratchBuffer { + raw: ManuallyDrop>, + device: Arc, +} + +impl ScratchBuffer { + pub(crate) fn new(device: &Arc, size: wgt::BufferSize) -> Result { + let raw = unsafe { + device + .raw() + .create_buffer(&hal::BufferDescriptor { + label: Some("(wgpu) scratch buffer"), + size: size.get(), + usage: BufferUses::ACCELERATION_STRUCTURE_SCRATCH, + memory_flags: hal::MemoryFlags::empty(), + }) + .map_err(crate::device::DeviceError::from_hal)? + }; + Ok(Self { + raw: ManuallyDrop::new(raw), + device: device.clone(), + }) + } + pub(crate) fn raw(&self) -> &dyn hal::DynBuffer { + self.raw.as_ref() + } +} + +impl Drop for ScratchBuffer { + fn drop(&mut self) { + resource_log!("Destroy raw ScratchBuffer"); + // SAFETY: We are in the Drop impl and we don't use self.raw anymore after this point. + let raw = unsafe { ManuallyDrop::take(&mut self.raw) }; + unsafe { self.device.raw().destroy_buffer(raw) }; + } +} diff --git a/wgpu-core/src/track/mod.rs b/wgpu-core/src/track/mod.rs index 1c2718981b..9a66b5f903 100644 --- a/wgpu-core/src/track/mod.rs +++ b/wgpu-core/src/track/mod.rs @@ -98,6 +98,7 @@ Device <- CommandBuffer = insert(device.start, device.end, buffer.start, buffer. mod buffer; mod metadata; mod range; +mod ray_tracing; mod stateless; mod texture; @@ -112,6 +113,7 @@ use crate::{ use std::{fmt, ops, sync::Arc}; use thiserror::Error; +use crate::track::ray_tracing::AccelerationStructureTracker; pub(crate) use buffer::{ BufferBindGroupState, BufferTracker, BufferUsageScope, DeviceBufferTracker, }; @@ -224,6 +226,8 @@ pub(crate) struct TrackerIndexAllocators { pub render_pipelines: Arc, pub bundles: Arc, pub query_sets: Arc, + pub blas_s: Arc, + pub tlas_s: Arc, } impl TrackerIndexAllocators { @@ -238,6 +242,8 @@ impl TrackerIndexAllocators { render_pipelines: Arc::new(SharedTrackerIndexAllocator::new()), bundles: Arc::new(SharedTrackerIndexAllocator::new()), query_sets: Arc::new(SharedTrackerIndexAllocator::new()), + blas_s: Arc::new(SharedTrackerIndexAllocator::new()), + tlas_s: Arc::new(SharedTrackerIndexAllocator::new()), } } } @@ -420,6 +426,7 @@ pub(crate) struct BindGroupStates { pub buffers: BufferBindGroupState, pub views: TextureViewBindGroupState, pub samplers: StatelessTracker, + pub acceleration_structures: StatelessTracker, } impl BindGroupStates { @@ -428,6 +435,7 @@ impl BindGroupStates { buffers: BufferBindGroupState::new(), views: TextureViewBindGroupState::new(), samplers: StatelessTracker::new(), + acceleration_structures: StatelessTracker::new(), } } @@ -440,7 +448,7 @@ impl BindGroupStates { // Views are stateless, however, `TextureViewBindGroupState` // is special as it will be merged with other texture trackers. self.views.optimize(); - // Samplers are stateless and don't need to be optimized + // Samplers and Tlas's are stateless and don't need to be optimized // since the tracker is never merged with any other tracker. } } @@ -594,6 +602,8 @@ impl DeviceTracker { pub(crate) struct Tracker { pub buffers: BufferTracker, pub textures: TextureTracker, + pub blas_s: AccelerationStructureTracker, + pub tlas_s: AccelerationStructureTracker, pub views: StatelessTracker, pub bind_groups: StatelessTracker, pub compute_pipelines: StatelessTracker, @@ -607,6 +617,8 @@ impl Tracker { Self { buffers: BufferTracker::new(), textures: TextureTracker::new(), + blas_s: AccelerationStructureTracker::new(), + tlas_s: AccelerationStructureTracker::new(), views: StatelessTracker::new(), bind_groups: StatelessTracker::new(), compute_pipelines: StatelessTracker::new(), diff --git a/wgpu-core/src/track/ray_tracing.rs b/wgpu-core/src/track/ray_tracing.rs new file mode 100644 index 0000000000..c344526dfb --- /dev/null +++ b/wgpu-core/src/track/ray_tracing.rs @@ -0,0 +1,81 @@ +use crate::resource::AccelerationStructure; +use crate::track::metadata::ResourceMetadata; +use crate::track::ResourceUses; +use hal::AccelerationStructureUses; +use std::sync::Arc; +use wgt::strict_assert; + +pub(crate) struct AccelerationStructureTracker { + start: Vec, + end: Vec, + + metadata: ResourceMetadata>, +} + +impl AccelerationStructureTracker { + pub fn new() -> Self { + Self { + start: Vec::new(), + end: Vec::new(), + + metadata: ResourceMetadata::new(), + } + } + + fn tracker_assert_in_bounds(&self, index: usize) { + strict_assert!(index < self.start.len()); + strict_assert!(index < self.end.len()); + self.metadata.tracker_assert_in_bounds(index); + } + + /// Sets the size of all the vectors inside the tracker. + /// + /// Must be called with the highest possible Buffer ID before + /// all unsafe functions are called. + pub fn set_size(&mut self, size: usize) { + self.start.resize(size, AccelerationStructureUses::empty()); + self.end.resize(size, AccelerationStructureUses::empty()); + + self.metadata.set_size(size); + } + + /// Extend the vectors to let the given index be valid. + fn allow_index(&mut self, index: usize) { + if index >= self.start.len() { + self.set_size(index + 1); + } + } + + /// Returns true if the given buffer is tracked. + pub fn contains(&self, acceleration_structure: &T) -> bool { + self.metadata + .contains(acceleration_structure.tracker_index().as_usize()) + } + + /// Inserts a single resource into the resource tracker. + pub fn set_single(&mut self, resource: Arc) { + let index: usize = resource.tracker_index().as_usize(); + + self.allow_index(index); + + self.tracker_assert_in_bounds(index); + } +} + +impl ResourceUses for AccelerationStructureUses { + const EXCLUSIVE: Self = Self::empty(); + + type Selector = (); + + fn bits(self) -> u16 { + Self::bits(&self) as u16 + } + + fn all_ordered(self) -> bool { + true + } + + fn any_exclusive(self) -> bool { + self.intersects(Self::EXCLUSIVE) + } +} diff --git a/wgpu-core/src/track/stateless.rs b/wgpu-core/src/track/stateless.rs index d1c2c87dd5..975a850f36 100644 --- a/wgpu-core/src/track/stateless.rs +++ b/wgpu-core/src/track/stateless.rs @@ -1,3 +1,4 @@ +use std::slice::Iter; use std::sync::Arc; /// A tracker that holds strong references to resources. @@ -24,3 +25,12 @@ impl StatelessTracker { unsafe { self.resources.last().unwrap_unchecked() } } } + +impl<'a, T> IntoIterator for &'a StatelessTracker { + type Item = &'a Arc; + type IntoIter = Iter<'a, Arc>; + + fn into_iter(self) -> Self::IntoIter { + self.resources.as_slice().iter() + } +} diff --git a/wgpu-core/src/validation.rs b/wgpu-core/src/validation.rs index c1cbdaf183..13cf443d48 100644 --- a/wgpu-core/src/validation.rs +++ b/wgpu-core/src/validation.rs @@ -17,6 +17,7 @@ enum ResourceType { Sampler { comparison: bool, }, + AccelerationStructure, } #[derive(Debug)] @@ -490,6 +491,7 @@ impl Resource { }); } } + ResourceType::AccelerationStructure => (), }; Ok(()) @@ -567,6 +569,7 @@ impl Resource { }, } } + ResourceType::AccelerationStructure => BindingType::AccelerationStructure, }) } } @@ -861,6 +864,7 @@ impl Interface { class, }, naga::TypeInner::Sampler { comparison } => ResourceType::Sampler { comparison }, + naga::TypeInner::AccelerationStructure => ResourceType::AccelerationStructure, ref other => ResourceType::Buffer { size: wgt::BufferSize::new(other.size(module.to_ctx()) as u64).unwrap(), }, diff --git a/wgpu-hal/src/vulkan/adapter.rs b/wgpu-hal/src/vulkan/adapter.rs index 6d15492f4c..30ae7f155d 100644 --- a/wgpu-hal/src/vulkan/adapter.rs +++ b/wgpu-hal/src/vulkan/adapter.rs @@ -77,17 +77,17 @@ pub struct PhysicalDeviceFeatures { /// Features provided by `VK_KHR_buffer_device_address`, promoted to Vulkan 1.2. /// /// We only use this feature for - /// [`Features::RAY_TRACING_ACCELERATION_STRUCTURE`], which requires + /// [`Features::EXPERIMENTAL_RAY_TRACING_ACCELERATION_STRUCTURE`], which requires /// `VK_KHR_acceleration_structure`, which depends on /// `VK_KHR_buffer_device_address`, so [`Instance::expose_adapter`] only /// bothers to check if `VK_KHR_acceleration_structure` is available, /// leaving this `None`. /// /// However, we do populate this when creating a device if - /// [`Features::RAY_TRACING_ACCELERATION_STRUCTURE`] is requested. + /// [`Features::EXPERIMENTAL_RAY_TRACING_ACCELERATION_STRUCTURE`] is requested. /// /// [`Instance::expose_adapter`]: super::Instance::expose_adapter - /// [`Features::RAY_TRACING_ACCELERATION_STRUCTURE`]: wgt::Features::RAY_TRACING_ACCELERATION_STRUCTURE + /// [`Features::EXPERIMENTAL_RAY_TRACING_ACCELERATION_STRUCTURE`]: wgt::Features::EXPERIMENTAL_RAY_TRACING_ACCELERATION_STRUCTURE buffer_device_address: Option>, /// Features provided by `VK_KHR_ray_query`, @@ -722,13 +722,16 @@ impl PhysicalDeviceFeatures { features.set(F::DEPTH32FLOAT_STENCIL8, texture_d32_s8); features.set( - F::RAY_TRACING_ACCELERATION_STRUCTURE, + F::EXPERIMENTAL_RAY_TRACING_ACCELERATION_STRUCTURE, caps.supports_extension(khr::deferred_host_operations::NAME) && caps.supports_extension(khr::acceleration_structure::NAME) && caps.supports_extension(khr::buffer_device_address::NAME), ); - features.set(F::RAY_QUERY, caps.supports_extension(khr::ray_query::NAME)); + features.set( + F::EXPERIMENTAL_RAY_QUERY, + caps.supports_extension(khr::ray_query::NAME), + ); let rg11b10ufloat_renderable = supports_format( instance, @@ -983,14 +986,16 @@ impl PhysicalDeviceProperties { } // Require `VK_KHR_deferred_host_operations`, `VK_KHR_acceleration_structure` and `VK_KHR_buffer_device_address` if the feature `RAY_TRACING` was requested - if requested_features.contains(wgt::Features::RAY_TRACING_ACCELERATION_STRUCTURE) { + if requested_features + .contains(wgt::Features::EXPERIMENTAL_RAY_TRACING_ACCELERATION_STRUCTURE) + { extensions.push(khr::deferred_host_operations::NAME); extensions.push(khr::acceleration_structure::NAME); extensions.push(khr::buffer_device_address::NAME); } // Require `VK_KHR_ray_query` if the associated feature was requested - if requested_features.contains(wgt::Features::RAY_QUERY) { + if requested_features.contains(wgt::Features::EXPERIMENTAL_RAY_QUERY) { extensions.push(khr::ray_query::NAME); } @@ -1779,7 +1784,7 @@ impl super::Adapter { capabilities.push(spv::Capability::StorageImageWriteWithoutFormat); } - if features.contains(wgt::Features::RAY_QUERY) { + if features.contains(wgt::Features::EXPERIMENTAL_RAY_QUERY) { capabilities.push(spv::Capability::RayQueryKHR); } @@ -1810,6 +1815,9 @@ impl super::Adapter { // But this requires cloning the `spv::Options` struct, which has heap allocations. true, // could check `super::Workarounds::SEPARATE_ENTRY_POINTS` ); + if features.contains(wgt::Features::EXPERIMENTAL_RAY_QUERY) { + capabilities.push(spv::Capability::RayQueryKHR); + } spv::Options { lang_version: if features .intersects(wgt::Features::SUBGROUP | wgt::Features::SUBGROUP_VERTEX) diff --git a/wgpu-hal/src/vulkan/command.rs b/wgpu-hal/src/vulkan/command.rs index 6b02e35f4e..eb80697336 100644 --- a/wgpu-hal/src/vulkan/command.rs +++ b/wgpu-hal/src/vulkan/command.rs @@ -647,10 +647,14 @@ impl crate::CommandEncoder for super::CommandEncoder { &mut self, barrier: crate::AccelerationStructureBarrier, ) { - let (src_stage, src_access) = - conv::map_acceleration_structure_usage_to_barrier(barrier.usage.start); - let (dst_stage, dst_access) = - conv::map_acceleration_structure_usage_to_barrier(barrier.usage.end); + let (src_stage, src_access) = conv::map_acceleration_structure_usage_to_barrier( + barrier.usage.start, + self.device.features, + ); + let (dst_stage, dst_access) = conv::map_acceleration_structure_usage_to_barrier( + barrier.usage.end, + self.device.features, + ); unsafe { self.device.raw.cmd_pipeline_barrier( diff --git a/wgpu-hal/src/vulkan/conv.rs b/wgpu-hal/src/vulkan/conv.rs index b829307068..75b807a29c 100644 --- a/wgpu-hal/src/vulkan/conv.rs +++ b/wgpu-hal/src/vulkan/conv.rs @@ -943,6 +943,7 @@ pub fn map_acceleration_structure_geometry_flags( pub fn map_acceleration_structure_usage_to_barrier( usage: crate::AccelerationStructureUses, + features: wgt::Features, ) -> (vk::PipelineStageFlags, vk::AccessFlags) { let mut stages = vk::PipelineStageFlags::empty(); let mut access = vk::AccessFlags::empty(); @@ -955,7 +956,9 @@ pub fn map_acceleration_structure_usage_to_barrier( stages |= vk::PipelineStageFlags::ACCELERATION_STRUCTURE_BUILD_KHR; access |= vk::AccessFlags::ACCELERATION_STRUCTURE_WRITE_KHR; } - if usage.contains(crate::AccelerationStructureUses::SHADER_INPUT) { + if usage.contains(crate::AccelerationStructureUses::SHADER_INPUT) + && features.contains(wgt::Features::EXPERIMENTAL_RAY_QUERY) + { stages |= vk::PipelineStageFlags::VERTEX_SHADER | vk::PipelineStageFlags::FRAGMENT_SHADER | vk::PipelineStageFlags::COMPUTE_SHADER; diff --git a/wgpu-hal/src/vulkan/device.rs b/wgpu-hal/src/vulkan/device.rs index a56b42ae8a..39afe88ef6 100644 --- a/wgpu-hal/src/vulkan/device.rs +++ b/wgpu-hal/src/vulkan/device.rs @@ -1075,14 +1075,7 @@ impl crate::Device for super::Device { desc.memory_flags.contains(crate::MemoryFlags::TRANSIENT), ); - let alignment_mask = if desc.usage.intersects( - crate::BufferUses::TOP_LEVEL_ACCELERATION_STRUCTURE_INPUT - | crate::BufferUses::BOTTOM_LEVEL_ACCELERATION_STRUCTURE_INPUT, - ) { - 16 - } else { - req.alignment - } - 1; + let alignment_mask = req.alignment - 1; let block = unsafe { self.mem_allocator.lock().alloc( diff --git a/wgpu-types/src/lib.rs b/wgpu-types/src/lib.rs index 89abd63b51..92ff6da74e 100644 --- a/wgpu-types/src/lib.rs +++ b/wgpu-types/src/lib.rs @@ -828,23 +828,32 @@ bitflags::bitflags! { /// /// This is a native only feature. const TEXTURE_FORMAT_NV12 = 1 << 47; - /// Allows for the creation of ray-tracing acceleration structures. + /// ***THIS IS EXPERIMENTAL:*** Features enabled by this may have + /// major bugs in them and are expected to be subject to breaking changes, suggestions + /// for the API exposed by this should be posted on [the ray-tracing issue](https://github.com/gfx-rs/wgpu/issues/1040) + /// + /// Allows for the creation of ray-tracing acceleration structures. Currently, + /// ray-tracing acceleration structures are only useful when used with [Features::EXPERIMENTAL_RAY_QUERY] /// /// Supported platforms: /// - Vulkan /// /// This is a native-only feature. - const RAY_TRACING_ACCELERATION_STRUCTURE = 1 << 48; + const EXPERIMENTAL_RAY_TRACING_ACCELERATION_STRUCTURE = 1 << 48; // Shader: + /// ***THIS IS EXPERIMENTAL:*** Features enabled by this may have + /// major bugs in it and are expected to be subject to breaking changes, suggestions + /// for the API exposed by this should be posted on [the ray-tracing issue](https://github.com/gfx-rs/wgpu/issues/1040) + /// /// Allows for the creation of ray-tracing queries within shaders. /// /// Supported platforms: /// - Vulkan /// /// This is a native-only feature. - const RAY_QUERY = 1 << 49; + const EXPERIMENTAL_RAY_QUERY = 1 << 49; /// Enables 64-bit floating point types in SPIR-V shaders. /// /// Note: even when supported by GPU hardware, 64-bit floating point operations are @@ -986,6 +995,16 @@ impl Features { pub const fn all_native_mask() -> Self { Self::from_bits_truncate(!Self::all_webgpu_mask().bits()) } + + /// Vertex formats allowed for creating and building BLASes + #[must_use] + pub fn allowed_vertex_formats_for_blas(&self) -> Vec { + let mut formats = Vec::new(); + if self.contains(Self::EXPERIMENTAL_RAY_TRACING_ACCELERATION_STRUCTURE) { + formats.push(VertexFormat::Float32x3); + } + formats + } } bitflags::bitflags! { @@ -5296,6 +5315,10 @@ bitflags::bitflags! { const INDIRECT = 1 << 8; /// Allow a buffer to be the destination buffer for a [`CommandEncoder::resolve_query_set`] operation. const QUERY_RESOLVE = 1 << 9; + /// Allows a buffer to be used as input for a bottom level acceleration structure build + const BLAS_INPUT = 1 << 10; + /// Allows a buffer to be used as input for a top level acceleration structure build + const TLAS_INPUT = 1 << 11; } } @@ -7423,19 +7446,119 @@ impl Default for InstanceDescriptor { } } +#[derive(Clone, Debug, PartialEq, Eq)] +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] +/// Descriptor for all size defining attributes of a single triangle geometry inside a bottom level acceleration structure. +pub struct BlasTriangleGeometrySizeDescriptor { + /// Format of a vertex position, must be [VertexFormat::Float32x3] + /// with just [Features::EXPERIMENTAL_RAY_TRACING_ACCELERATION_STRUCTURE] + /// but later features may add more formats. + pub vertex_format: VertexFormat, + /// Number of vertices. + pub vertex_count: u32, + /// Format of an index. Only needed if an index buffer is used. + /// If `index_format` is provided `index_count` is required. + pub index_format: Option, + /// Number of indices. Only needed if an index buffer is used. + /// If `index_count` is provided `index_format` is required. + pub index_count: Option, + /// Flags for the geometry. + pub flags: AccelerationStructureGeometryFlags, +} + +#[derive(Clone, Debug)] +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] +/// Descriptor for all size defining attributes of all geometries inside a bottom level acceleration structure. +pub enum BlasGeometrySizeDescriptors { + /// Triangle geometry version. + Triangles { + /// Descriptor for each triangle geometry. + descriptors: Vec, + }, +} + +#[repr(u8)] +#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)] +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] +/// Update mode for acceleration structure builds. +pub enum AccelerationStructureUpdateMode { + /// Always perform a full build. + Build, + /// If possible, perform an incremental update. + /// + /// Not advised for major topology changes. + /// (Useful for e.g. skinning) + PreferUpdate, +} + +#[repr(C)] +#[derive(Clone, Debug, PartialEq, Eq, Hash)] +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] +/// Descriptor for creating a bottom level acceleration structure. +pub struct CreateBlasDescriptor { + /// Label for the bottom level acceleration structure. + pub label: L, + /// Flags for the bottom level acceleration structure. + pub flags: AccelerationStructureFlags, + /// Update mode for the bottom level acceleration structure. + pub update_mode: AccelerationStructureUpdateMode, +} + +impl CreateBlasDescriptor { + /// Takes a closure and maps the label of the blas descriptor into another. + pub fn map_label(&self, fun: impl FnOnce(&L) -> K) -> CreateBlasDescriptor { + CreateBlasDescriptor { + label: fun(&self.label), + flags: self.flags, + update_mode: self.update_mode, + } + } +} + +#[repr(C)] +#[derive(Clone, Debug, PartialEq, Eq, Hash)] +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] +/// Descriptor for creating a top level acceleration structure. +pub struct CreateTlasDescriptor { + /// Label for the top level acceleration structure. + pub label: L, + /// Number of instances that can be stored in the acceleration structure. + pub max_instances: u32, + /// Flags for the bottom level acceleration structure. + pub flags: AccelerationStructureFlags, + /// Update mode for the bottom level acceleration structure. + pub update_mode: AccelerationStructureUpdateMode, +} + +impl CreateTlasDescriptor { + /// Takes a closure and maps the label of the blas descriptor into another. + pub fn map_label(&self, fun: impl FnOnce(&L) -> K) -> CreateTlasDescriptor { + CreateTlasDescriptor { + label: fun(&self.label), + flags: self.flags, + update_mode: self.update_mode, + max_instances: self.max_instances, + } + } +} + bitflags::bitflags!( /// Flags for acceleration structures #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)] pub struct AccelerationStructureFlags: u8 { - /// Allow for incremental updates (no change in size) + /// Allow for incremental updates (no change in size), currently this is unimplemented + /// and will build as normal (this is fine, update vs build should be unnoticeable) const ALLOW_UPDATE = 1 << 0; - /// Allow the acceleration structure to be compacted in a copy operation + /// Allow the acceleration structure to be compacted in a copy operation, the function + /// to compact is not currently implemented. const ALLOW_COMPACTION = 1 << 1; - /// Optimize for fast ray tracing performance + /// Optimize for fast ray tracing performance, recommended if the geometry is unlikely + /// to change (e.g. in a game: non-interactive scene geometry) const PREFER_FAST_TRACE = 1 << 2; - /// Optimize for fast build time + /// Optimize for fast build time, recommended if geometry is likely to change frequently + /// (e.g. in a game: player model). const PREFER_FAST_BUILD = 1 << 3; - /// Optimize for low memory footprint (scratch and output) + /// Optimize for low memory footprint (both while building and in the output BLAS). const LOW_MEMORY = 1 << 4; } ); @@ -7445,14 +7568,27 @@ bitflags::bitflags!( /// Flags for acceleration structure geometries #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)] pub struct AccelerationStructureGeometryFlags: u8 { - /// Is OPAQUE + /// Is OPAQUE (is there no alpha test) recommended as currently in naga there is no + /// candidate intersections yet so currently BLASes without this flag will not have hits. + /// Not enabling this makes the BLAS unable to be interacted with in WGSL. const OPAQUE = 1 << 0; - /// NO_DUPLICATE_ANY_HIT_INVOCATION + /// NO_DUPLICATE_ANY_HIT_INVOCATION, not useful unless using hal with wgpu, ray-tracing + /// pipelines are not supported in wgpu so any-hit shaders do not exist. For when any-hit + /// shaders are implemented (or experienced users who combine this with an underlying library: + /// for any primitive (triangle or AABB) multiple any-hit shaders sometimes may be invoked + /// (especially in AABBs like a sphere), if this flag in present only one hit on a primitive may + /// invoke an any-hit shader. const NO_DUPLICATE_ANY_HIT_INVOCATION = 1 << 1; } ); impl_bitflags!(AccelerationStructureGeometryFlags); +/// Alignment requirement for transform buffers used in acceleration structure builds +pub const TRANSFORM_BUFFER_ALIGNMENT: BufferAddress = 16; + +/// Alignment requirement for instance buffers used in acceleration structure builds (`build_acceleration_structures_unsafe_tlas`) +pub const INSTANCE_BUFFER_ALIGNMENT: BufferAddress = 16; + pub use send_sync::*; #[doc(hidden)] diff --git a/wgpu/src/api/bind_group.rs b/wgpu/src/api/bind_group.rs index 42a774b295..fac59338ff 100644 --- a/wgpu/src/api/bind_group.rs +++ b/wgpu/src/api/bind_group.rs @@ -70,6 +70,18 @@ pub enum BindingResource<'a> { /// Corresponds to [`wgt::BindingType::Texture`] and [`wgt::BindingType::StorageTexture`] with /// [`BindGroupLayoutEntry::count`] set to Some. TextureViewArray(&'a [&'a TextureView]), + /// Binding is backed by a top level acceleration structure + /// + /// Corresponds to [`wgt::BindingType::AccelerationStructure`] with [`BindGroupLayoutEntry::count`] set to None. + /// + /// # Validation + /// When using (e.g. with `set_bind_group`) a bind group that has been created with one or more of this binding + /// resource certain checks take place. + /// - TLAS must have been built, if not a validation error is generated + /// - All BLASes that were built into the TLAS must be built before the TLAS, if this was not satisfied and TLAS was + /// built using `build_acceleration_structures` a validation error is generated otherwise this is a part of the + /// safety section of `build_acceleration_structures_unsafe_tlas` and so undefined behavior occurs. + AccelerationStructure(&'a Tlas), } #[cfg(send_sync)] static_assertions::assert_impl_all!(BindingResource<'_>: Send, Sync); diff --git a/wgpu/src/api/blas.rs b/wgpu/src/api/blas.rs new file mode 100644 index 0000000000..329f11849a --- /dev/null +++ b/wgpu/src/api/blas.rs @@ -0,0 +1,232 @@ +use crate::context::{Context, DynContext}; +use crate::{Buffer, Data, Label, C}; +use std::sync::Arc; +use std::thread; +use wgt::WasmNotSendSync; + +/// Descriptor for the size defining attributes of a triangle geometry, for a bottom level acceleration structure. +pub type BlasTriangleGeometrySizeDescriptor = wgt::BlasTriangleGeometrySizeDescriptor; +static_assertions::assert_impl_all!(BlasTriangleGeometrySizeDescriptor: Send, Sync); + +/// Descriptor for the size defining attributes, for a bottom level acceleration structure. +pub type BlasGeometrySizeDescriptors = wgt::BlasGeometrySizeDescriptors; +static_assertions::assert_impl_all!(BlasGeometrySizeDescriptors: Send, Sync); + +/// Flags for an acceleration structure. +pub type AccelerationStructureFlags = wgt::AccelerationStructureFlags; +static_assertions::assert_impl_all!(AccelerationStructureFlags: Send, Sync); + +/// Flags for a geometry inside a bottom level acceleration structure. +pub type AccelerationStructureGeometryFlags = wgt::AccelerationStructureGeometryFlags; +static_assertions::assert_impl_all!(AccelerationStructureGeometryFlags: Send, Sync); + +/// Update mode for acceleration structure builds. +pub type AccelerationStructureUpdateMode = wgt::AccelerationStructureUpdateMode; +static_assertions::assert_impl_all!(AccelerationStructureUpdateMode: Send, Sync); + +/// Descriptor to create bottom level acceleration structures. +pub type CreateBlasDescriptor<'a> = wgt::CreateBlasDescriptor>; +static_assertions::assert_impl_all!(CreateBlasDescriptor<'_>: Send, Sync); + +/// Safe instance for a [Tlas]. +/// +/// A TlasInstance may be made invalid, if a TlasInstance is invalid, any attempt to build a [TlasPackage] containing an +/// invalid TlasInstance will generate a validation error +/// +/// Each one contains: +/// - A reference to a BLAS, this ***must*** be interacted with using [TlasInstance::new] or [TlasInstance::set_blas], a +/// TlasInstance that references a BLAS keeps that BLAS from being dropped, but if the BLAS is explicitly destroyed (e.g. +/// using [Blas::destroy]) the TlasInstance becomes invalid +/// - A user accessible transformation matrix +/// - A user accessible mask +/// - A user accessible custom index +/// +/// [Tlas]: crate::Tlas +/// [TlasPackage]: crate::TlasPackage +#[derive(Debug, Clone)] +pub struct TlasInstance { + pub(crate) blas: Arc, + /// Affine transform matrix 3x4 (rows x columns, row major order). + pub transform: [f32; 12], + /// Custom index for the instance used inside the shader. + /// + /// This must only use the lower 24 bits, if any bits are outside that range (byte 4 does not equal 0) the TlasInstance becomes + /// invalid and generates a validation error when built + pub custom_index: u32, + /// Mask for the instance used inside the shader to filter instances. + /// Reports hit only if `(shader_cull_mask & tlas_instance.mask) != 0u`. + pub mask: u8, +} + +impl TlasInstance { + /// Construct TlasInstance. + /// - blas: Reference to the bottom level acceleration structure + /// - transform: Transform buffer offset in bytes (optional, required if transform buffer is present) + /// - custom_index: Custom index for the instance used inside the shader (max 24 bits) + /// - mask: Mask for the instance used inside the shader to filter instances + /// + /// Note: while one of these contains a reference to a BLAS that BLAS will not be dropped, + /// but it can still be destroyed. Destroying a BLAS that is referenced by one or more + /// TlasInstance(s) will immediately make them invalid. If one or more of those invalid + /// TlasInstances is inside a TlasPackage that is attempted to be built, the build will + /// generate a validation error. + pub fn new(blas: &Blas, transform: [f32; 12], custom_index: u32, mask: u8) -> Self { + Self { + blas: blas.shared.clone(), + transform, + custom_index, + mask, + } + } + + /// Set the bottom level acceleration structure. + /// + /// See the note on [TlasInstance] about the + /// guarantees of keeping a BLAS alive. + pub fn set_blas(&mut self, blas: &Blas) { + self.blas = blas.shared.clone(); + } +} + +pub(crate) struct DynContextTlasInstance<'a> { + pub(crate) blas: &'a Data, + pub(crate) transform: &'a [f32; 12], + pub(crate) custom_index: u32, + pub(crate) mask: u8, +} + +/// Context version of [TlasInstance]. +#[allow(dead_code)] +pub struct ContextTlasInstance<'a, T: Context> { + pub(crate) blas_data: &'a T::BlasData, + pub(crate) transform: &'a [f32; 12], + pub(crate) custom_index: u32, + pub(crate) mask: u8, +} + +#[derive(Debug)] +/// Definition for a triangle geometry for a Bottom Level Acceleration Structure (BLAS). +/// +/// The size must match the rest of the structures fields, otherwise the build will fail. +/// (e.g. if index count is present in the size, the index buffer must be present as well.) +pub struct BlasTriangleGeometry<'a> { + /// Sub descriptor for the size defining attributes of a triangle geometry. + pub size: &'a BlasTriangleGeometrySizeDescriptor, + /// Vertex buffer. + pub vertex_buffer: &'a Buffer, + /// Offset into the vertex buffer as a factor of the vertex stride. + pub first_vertex: u32, + /// Vertex stride. + pub vertex_stride: wgt::BufferAddress, + /// Index buffer (optional). + pub index_buffer: Option<&'a Buffer>, + /// Index buffer offset in bytes (optional, required if index buffer is present). + pub index_buffer_offset: Option, + /// Transform buffer containing 3x4 (rows x columns, row major) affine transform matrices `[f32; 12]` (optional). + pub transform_buffer: Option<&'a Buffer>, + /// Transform buffer offset in bytes (optional, required if transform buffer is present). + pub transform_buffer_offset: Option, +} +static_assertions::assert_impl_all!(BlasTriangleGeometry<'_>: WasmNotSendSync); + +/// Contains the sets of geometry that go into a [Blas]. +pub enum BlasGeometries<'a> { + /// Triangle geometry variant. + TriangleGeometries(Vec>), +} +static_assertions::assert_impl_all!(BlasGeometries<'_>: WasmNotSendSync); + +/// Builds the given sets of geometry into the given [Blas]. +pub struct BlasBuildEntry<'a> { + /// Reference to the acceleration structure. + pub blas: &'a Blas, + /// Geometries. + pub geometry: BlasGeometries<'a>, +} +static_assertions::assert_impl_all!(BlasBuildEntry<'_>: WasmNotSendSync); + +#[derive(Debug)] +pub(crate) struct BlasShared { + pub(crate) context: Arc, + pub(crate) data: Box, +} +static_assertions::assert_impl_all!(BlasShared: WasmNotSendSync); + +#[derive(Debug)] +/// Bottom Level Acceleration Structure (BLAS). +/// +/// A BLAS is a device-specific raytracing acceleration structure that contains geometry data. +/// +/// These BLASes are combined with transform in a [TlasInstance] to create a [Tlas]. +/// +/// [Tlas]: crate::Tlas +pub struct Blas { + pub(crate) handle: Option, + pub(crate) shared: Arc, +} +static_assertions::assert_impl_all!(Blas: WasmNotSendSync); + +impl Blas { + /// Raw handle to the acceleration structure, used inside raw instance buffers. + pub fn handle(&self) -> Option { + self.handle + } + /// Destroy the associated native resources as soon as possible. + pub fn destroy(&self) { + DynContext::blas_destroy(&*self.shared.context, self.shared.data.as_ref()); + } +} + +impl Drop for BlasShared { + fn drop(&mut self) { + if !thread::panicking() { + self.context.blas_drop(self.data.as_ref()); + } + } +} + +pub(crate) struct DynContextBlasTriangleGeometry<'a> { + pub(crate) size: &'a BlasTriangleGeometrySizeDescriptor, + pub(crate) vertex_buffer: &'a Data, + pub(crate) index_buffer: Option<&'a Data>, + pub(crate) transform_buffer: Option<&'a Data>, + pub(crate) first_vertex: u32, + pub(crate) vertex_stride: wgt::BufferAddress, + pub(crate) index_buffer_offset: Option, + pub(crate) transform_buffer_offset: Option, +} + +pub(crate) enum DynContextBlasGeometries<'a> { + TriangleGeometries(Box> + 'a>), +} + +pub(crate) struct DynContextBlasBuildEntry<'a> { + pub(crate) blas_data: &'a Data, + pub(crate) geometries: DynContextBlasGeometries<'a>, +} + +/// Context version of [BlasTriangleGeometry]. +#[allow(dead_code)] +pub struct ContextBlasTriangleGeometry<'a, T: Context> { + pub(crate) size: &'a BlasTriangleGeometrySizeDescriptor, + pub(crate) vertex_buffer: &'a T::BufferData, + pub(crate) index_buffer: Option<&'a T::BufferData>, + pub(crate) transform_buffer: Option<&'a T::BufferData>, + pub(crate) first_vertex: u32, + pub(crate) vertex_stride: wgt::BufferAddress, + pub(crate) index_buffer_offset: Option, + pub(crate) transform_buffer_offset: Option, +} + +/// Context version of [BlasGeometries]. +pub enum ContextBlasGeometries<'a, T: Context> { + /// Triangle geometries. + TriangleGeometries(Box> + 'a>), +} + +/// Context version see [BlasBuildEntry]. +#[allow(dead_code)] +pub struct ContextBlasBuildEntry<'a, T: Context> { + pub(crate) blas_data: &'a T::BlasData, + pub(crate) geometries: ContextBlasGeometries<'a, T>, +} diff --git a/wgpu/src/api/command_encoder.rs b/wgpu/src/api/command_encoder.rs index a45564b45d..f7f453aec2 100644 --- a/wgpu/src/api/command_encoder.rs +++ b/wgpu/src/api/command_encoder.rs @@ -55,7 +55,15 @@ pub type ImageCopyTexture<'a> = ImageCopyTextureBase<&'a Texture>; #[cfg(send_sync)] static_assertions::assert_impl_all!(ImageCopyTexture<'_>: Send, Sync); +use crate::api::blas::{ + BlasBuildEntry, BlasGeometries, BlasTriangleGeometry, DynContextBlasBuildEntry, + DynContextBlasGeometries, DynContextBlasTriangleGeometry, DynContextTlasInstance, TlasInstance, +}; +use crate::api::tlas::{ + DynContextTlasBuildEntry, DynContextTlasPackage, TlasBuildEntry, TlasPackage, +}; pub use wgt::ImageCopyTextureTagged as ImageCopyTextureTaggedBase; + /// View of a texture which can be used to copy to a texture, including /// color space and alpha premultiplication information. /// @@ -340,3 +348,164 @@ impl CommandEncoder { ) } } + +/// [`Features::EXPERIMENTAL_RAY_TRACING_ACCELERATION_STRUCTURE`] must be enabled on the device in order to call these functions. +impl CommandEncoder { + /// Build bottom and top level acceleration structures. + /// + /// Builds the BLASes then the TLASes, but does ***not*** build the BLASes into the TLASes, + /// that must be done by setting a TLAS instance in the TLAS package to one that contains the BLAS (and with an appropriate transform) + /// + /// # Validation + /// + /// - blas: Iterator of bottom level acceleration structure entries to build. + /// For each entry, the provided size descriptor must be strictly smaller or equal to the descriptor given at BLAS creation, this means: + /// - Less or equal number of geometries + /// - Same kind of geometry (with index buffer or without) (same vertex/index format) + /// - Same flags + /// - Less or equal number of vertices + /// - Less or equal number of indices (if applicable) + /// - tlas: iterator of top level acceleration structure packages to build + /// For each entry: + /// - Each BLAS in each TLAS instance must have been being built in the current call or in a previous call to `build_acceleration_structures` or `build_acceleration_structures_unsafe_tlas` + /// - The number of TLAS instances must be less than or equal to the max number of tlas instances when creating (if creating a package with `TlasPackage::new()` this is already satisfied) + /// + /// If the device the command encoder is created from does not have [Features::EXPERIMENTAL_RAY_TRACING_ACCELERATION_STRUCTURE] enabled then a validation error is generated + /// + /// A bottom level acceleration structure may be build and used as a reference in a top level acceleration structure in the same invocation of this function. + /// + /// # Bind group usage + /// + /// When a top level acceleration structure is used in a bind group, some validation takes place: + /// - The top level acceleration structure is valid and has been built. + /// - All the bottom level acceleration structures referenced by the top level acceleration structure are valid and have been built prior, + /// or at same time as the containing top level acceleration structure. + /// + /// [Features::EXPERIMENTAL_RAY_TRACING_ACCELERATION_STRUCTURE]: wgt::Features::EXPERIMENTAL_RAY_TRACING_ACCELERATION_STRUCTURE + pub fn build_acceleration_structures<'a>( + &mut self, + blas: impl IntoIterator>, + tlas: impl IntoIterator, + ) { + let mut blas = blas.into_iter().map(|e: &BlasBuildEntry<'_>| { + let geometries = match &e.geometry { + BlasGeometries::TriangleGeometries(triangle_geometries) => { + let iter = triangle_geometries + .iter() + .map( + |tg: &BlasTriangleGeometry<'_>| DynContextBlasTriangleGeometry { + size: tg.size, + vertex_buffer: tg.vertex_buffer.data.as_ref(), + + index_buffer: tg + .index_buffer + .map(|index_buffer| index_buffer.data.as_ref()), + + transform_buffer: tg + .transform_buffer + .map(|transform_buffer| transform_buffer.data.as_ref()), + + first_vertex: tg.first_vertex, + vertex_stride: tg.vertex_stride, + index_buffer_offset: tg.index_buffer_offset, + transform_buffer_offset: tg.transform_buffer_offset, + }, + ); + DynContextBlasGeometries::TriangleGeometries(Box::new(iter)) + } + }; + DynContextBlasBuildEntry { + blas_data: e.blas.shared.data.as_ref(), + geometries, + } + }); + + let mut tlas = tlas.into_iter().map(|e: &TlasPackage| { + let instances = e.instances.iter().map(|instance: &Option| { + instance.as_ref().map(|instance| DynContextTlasInstance { + blas: instance.blas.data.as_ref(), + transform: &instance.transform, + custom_index: instance.custom_index, + mask: instance.mask, + }) + }); + DynContextTlasPackage { + tlas_data: e.tlas.data.as_ref(), + instances: Box::new(instances), + lowest_unmodified: e.lowest_unmodified, + } + }); + + DynContext::command_encoder_build_acceleration_structures( + &*self.context, + self.data.as_ref(), + &mut blas, + &mut tlas, + ); + } + + /// Build bottom and top level acceleration structures. + /// See [`CommandEncoder::build_acceleration_structures`] for the safe version and more details. All validation in [`CommandEncoder::build_acceleration_structures`] except that + /// listed under tlas applies here as well. + /// + /// # Safety + /// + /// - The contents of the raw instance buffer must be valid for the underling api. + /// - All bottom level acceleration structures, referenced in the raw instance buffer must be valid and built, + /// when the corresponding top level acceleration structure is built. (builds may happen in the same invocation of this function). + /// - At the time when the top level acceleration structure is used in a bind group, all associated bottom level acceleration structures must be valid, + /// and built (no later than the time when the top level acceleration structure was built). + pub unsafe fn build_acceleration_structures_unsafe_tlas<'a>( + &mut self, + blas: impl IntoIterator>, + tlas: impl IntoIterator>, + ) { + let mut blas = blas.into_iter().map(|e: &BlasBuildEntry<'_>| { + let geometries = match &e.geometry { + BlasGeometries::TriangleGeometries(triangle_geometries) => { + let iter = triangle_geometries + .iter() + .map( + |tg: &BlasTriangleGeometry<'_>| DynContextBlasTriangleGeometry { + size: tg.size, + vertex_buffer: tg.vertex_buffer.data.as_ref(), + + index_buffer: tg + .index_buffer + .map(|index_buffer| index_buffer.data.as_ref()), + + transform_buffer: tg + .transform_buffer + .map(|transform_buffer| transform_buffer.data.as_ref()), + + first_vertex: tg.first_vertex, + vertex_stride: tg.vertex_stride, + index_buffer_offset: tg.index_buffer_offset, + transform_buffer_offset: tg.transform_buffer_offset, + }, + ); + DynContextBlasGeometries::TriangleGeometries(Box::new(iter)) + } + }; + DynContextBlasBuildEntry { + blas_data: e.blas.shared.data.as_ref(), + geometries, + } + }); + + let mut tlas = tlas + .into_iter() + .map(|e: &TlasBuildEntry<'_>| DynContextTlasBuildEntry { + tlas_data: e.tlas.data.as_ref(), + instance_buffer_data: e.instance_buffer.data.as_ref(), + instance_count: e.instance_count, + }); + + DynContext::command_encoder_build_acceleration_structures_unsafe_tlas( + &*self.context, + self.data.as_ref(), + &mut blas, + &mut tlas, + ); + } +} diff --git a/wgpu/src/api/device.rs b/wgpu/src/api/device.rs index 5da9f6c80a..2fa040ec10 100644 --- a/wgpu/src/api/device.rs +++ b/wgpu/src/api/device.rs @@ -2,6 +2,8 @@ use std::{error, fmt, future::Future, sync::Arc, thread}; use parking_lot::Mutex; +use crate::api::blas::{Blas, BlasGeometrySizeDescriptors, BlasShared, CreateBlasDescriptor}; +use crate::api::tlas::{CreateTlasDescriptor, Tlas}; use crate::context::DynContext; use crate::*; @@ -514,6 +516,64 @@ impl Device { } } +/// [`Features::EXPERIMENTAL_RAY_TRACING_ACCELERATION_STRUCTURE`] must be enabled on the device in order to call these functions. +impl Device { + /// Create a bottom level acceleration structure, used inside a top level acceleration structure for ray tracing. + /// - `desc`: The descriptor of the acceleration structure. + /// - `sizes`: Size descriptor limiting what can be built into the acceleration structure. + /// + /// # Validation + /// If any of the following is not satisfied a validation error is generated + /// + /// The device ***must*** have [Features::EXPERIMENTAL_RAY_TRACING_ACCELERATION_STRUCTURE] enabled. + /// if `sizes` is [BlasGeometrySizeDescriptors::Triangles] then the following must be satisfied + /// - For every geometry descriptor (for the purposes this is called `geo_desc`) of `sizes.descriptors` the following must be satisfied: + /// - `geo_desc.vertex_format` must be within allowed formats (allowed formats for a given feature set + /// may be queried with [Features::allowed_vertex_formats_for_blas]). + /// - Both or neither of `geo_desc.index_format` and `geo_desc.index_count` must be provided. + /// + /// [Features::EXPERIMENTAL_RAY_TRACING_ACCELERATION_STRUCTURE]: wgt::Features::EXPERIMENTAL_RAY_TRACING_ACCELERATION_STRUCTURE + /// [Features::allowed_vertex_formats_for_blas]: wgt::Features::allowed_vertex_formats_for_blas + #[must_use] + pub fn create_blas( + &self, + desc: &CreateBlasDescriptor<'_>, + sizes: BlasGeometrySizeDescriptors, + ) -> Blas { + let (handle, data) = + DynContext::device_create_blas(&*self.context, self.data.as_ref(), desc, sizes); + + Blas { + #[allow(clippy::arc_with_non_send_sync)] + shared: Arc::new(BlasShared { + context: Arc::clone(&self.context), + data, + }), + handle, + } + } + + /// Create a top level acceleration structure, used for ray tracing. + /// - `desc`: The descriptor of the acceleration structure. + /// + /// # Validation + /// If any of the following is not satisfied a validation error is generated + /// + /// The device ***must*** have [Features::EXPERIMENTAL_RAY_TRACING_ACCELERATION_STRUCTURE] enabled. + /// + /// [Features::EXPERIMENTAL_RAY_TRACING_ACCELERATION_STRUCTURE]: wgt::Features::EXPERIMENTAL_RAY_TRACING_ACCELERATION_STRUCTURE + #[must_use] + pub fn create_tlas(&self, desc: &CreateTlasDescriptor<'_>) -> Tlas { + let data = DynContext::device_create_tlas(&*self.context, self.data.as_ref(), desc); + + Tlas { + context: Arc::clone(&self.context), + data, + max_instances: desc.max_instances, + } + } +} + impl Drop for Device { fn drop(&mut self) { if !thread::panicking() { diff --git a/wgpu/src/api/mod.rs b/wgpu/src/api/mod.rs index 52b9ec1602..b94235393d 100644 --- a/wgpu/src/api/mod.rs +++ b/wgpu/src/api/mod.rs @@ -28,6 +28,7 @@ mod buffer; mod command_buffer; mod command_encoder; // Not a root type, but common descriptor types for pipelines. +mod blas; mod common_pipeline; mod compute_pass; mod compute_pipeline; @@ -47,10 +48,12 @@ mod surface; mod surface_texture; mod texture; mod texture_view; +mod tlas; pub use adapter::*; pub use bind_group::*; pub use bind_group_layout::*; +pub use blas::*; pub use buffer::*; pub use command_buffer::*; pub use command_encoder::*; @@ -73,6 +76,7 @@ pub use surface::*; pub use surface_texture::*; pub use texture::*; pub use texture_view::*; +pub use tlas::*; /// Object debugging label. pub type Label<'a> = Option<&'a str>; diff --git a/wgpu/src/api/tlas.rs b/wgpu/src/api/tlas.rs new file mode 100644 index 0000000000..d387e508a0 --- /dev/null +++ b/wgpu/src/api/tlas.rs @@ -0,0 +1,198 @@ +use crate::api::blas::{ContextTlasInstance, DynContextTlasInstance, TlasInstance}; +use crate::context::{Context, DynContext}; +use crate::{BindingResource, Buffer, Data, Label, C}; +use std::ops::{Index, IndexMut, Range}; +use std::sync::Arc; +use std::thread; +use wgt::WasmNotSendSync; + +/// Descriptor to create top level acceleration structures. +pub type CreateTlasDescriptor<'a> = wgt::CreateTlasDescriptor>; +static_assertions::assert_impl_all!(CreateTlasDescriptor<'_>: Send, Sync); + +#[derive(Debug)] +/// Top Level Acceleration Structure (TLAS). +/// +/// A TLAS contains a series of [TLAS instances], which are a reference to +/// a BLAS and a transformation matrix placing the geometry in the world. +/// +/// A TLAS contains TLAS instances in a device readable form, you cant interact +/// directly with these, instead you have to build the TLAS with [TLAS instances]. +/// +/// [TLAS instances]: TlasInstance +pub struct Tlas { + pub(crate) context: Arc, + pub(crate) data: Box, + pub(crate) max_instances: u32, +} +static_assertions::assert_impl_all!(Tlas: WasmNotSendSync); + +impl Tlas { + /// Destroy the associated native resources as soon as possible. + pub fn destroy(&self) { + DynContext::tlas_destroy(&*self.context, self.data.as_ref()); + } +} + +impl Drop for Tlas { + fn drop(&mut self) { + if !thread::panicking() { + self.context.tlas_drop(self.data.as_ref()); + } + } +} + +/// Entry for a top level acceleration structure build. +/// Used with raw instance buffers for an unvalidated builds. +/// See [TlasPackage] for the safe version. +pub struct TlasBuildEntry<'a> { + /// Reference to the acceleration structure. + pub tlas: &'a Tlas, + /// Reference to the raw instance buffer, each instance is similar to [TlasInstance] but contains a handle to the BLAS. + pub instance_buffer: &'a Buffer, + /// Number of instances in the instance buffer. + pub instance_count: u32, +} +static_assertions::assert_impl_all!(TlasBuildEntry<'_>: WasmNotSendSync); + +/// The safe version of TlasEntry, containing TlasInstances instead of a raw buffer. +pub struct TlasPackage { + pub(crate) tlas: Tlas, + pub(crate) instances: Vec>, + pub(crate) lowest_unmodified: u32, +} +static_assertions::assert_impl_all!(TlasPackage: WasmNotSendSync); + +impl TlasPackage { + /// Construct [TlasPackage] consuming the [Tlas] (prevents modification of the [Tlas] without using this package). + pub fn new(tlas: Tlas) -> Self { + let max_instances = tlas.max_instances; + Self::new_with_instances(tlas, vec![None; max_instances as usize]) + } + + /// Construct [TlasPackage] consuming the [Tlas] (prevents modification of the Tlas without using this package). + /// This constructor moves the instances into the package (the number of instances needs to fit into tlas, + /// otherwise when building a validation error will be raised). + pub fn new_with_instances(tlas: Tlas, instances: Vec>) -> Self { + Self { + tlas, + lowest_unmodified: instances.len() as u32, + instances, + } + } + + /// Get a reference to all instances. + pub fn get(&self) -> &[Option] { + &self.instances + } + + /// Get a mutable slice to a range of instances. + /// Returns None if the range is out of bounds. + /// All elements from the lowest accessed index up are marked as modified. + // this recommendation is not useful yet, but is likely to be when ability to update arrives or possible optimisations for building get implemented. + /// For best performance it is recommended to prefer access to low elements and modify higher elements as little as possible. + /// This can be done by ordering instances from the most to the least used. It is recommended + /// to use [Self::index_mut] unless the option if out of bounds is required + pub fn get_mut_slice(&mut self, range: Range) -> Option<&mut [Option]> { + if range.end > self.instances.len() { + return None; + } + if range.end as u32 > self.lowest_unmodified { + self.lowest_unmodified = range.end as u32; + } + Some(&mut self.instances[range]) + } + + /// Get a single mutable reference to an instance. + /// Returns None if the range is out of bounds. + /// All elements from the lowest accessed index up are marked as modified. + // this recommendation is not useful yet, but is likely to be when ability to update arrives or possible optimisations for building get implemented. + /// For best performance it is recommended to prefer access to low elements and modify higher elements as little as possible. + /// This can be done by ordering instances from the most to the least used. It is recommended + /// to use [Self::index_mut] unless the option if out of bounds is required + pub fn get_mut_single(&mut self, index: usize) -> Option<&mut Option> { + if index >= self.instances.len() { + return None; + } + if index as u32 + 1 > self.lowest_unmodified { + self.lowest_unmodified = index as u32 + 1; + } + Some(&mut self.instances[index]) + } + + /// Get the binding resource for the underling acceleration structure, to be used when creating a [BindGroup] + /// + /// [BindGroup]: super::BindGroup + pub fn as_binding(&self) -> BindingResource<'_> { + BindingResource::AccelerationStructure(&self.tlas) + } + + /// Get a reference to the underling [Tlas]. + pub fn tlas(&self) -> &Tlas { + &self.tlas + } +} + +impl Index for TlasPackage { + type Output = Option; + + fn index(&self, index: usize) -> &Self::Output { + self.instances.index(index) + } +} + +impl Index> for TlasPackage { + type Output = [Option]; + + fn index(&self, index: Range) -> &Self::Output { + self.instances.index(index) + } +} + +impl IndexMut for TlasPackage { + fn index_mut(&mut self, index: usize) -> &mut Self::Output { + let idx = self.instances.index_mut(index); + if index as u32 + 1 > self.lowest_unmodified { + self.lowest_unmodified = index as u32 + 1; + } + idx + } +} + +impl IndexMut> for TlasPackage { + fn index_mut(&mut self, index: Range) -> &mut Self::Output { + let idx = self.instances.index_mut(index.clone()); + if index.end > self.lowest_unmodified as usize { + self.lowest_unmodified = index.end as u32; + } + idx + } +} + +pub(crate) struct DynContextTlasBuildEntry<'a> { + pub(crate) tlas_data: &'a Data, + pub(crate) instance_buffer_data: &'a Data, + pub(crate) instance_count: u32, +} + +pub(crate) struct DynContextTlasPackage<'a> { + pub(crate) tlas_data: &'a Data, + pub(crate) instances: Box>> + 'a>, + pub(crate) lowest_unmodified: u32, +} + +/// Context version see [TlasBuildEntry]. +#[allow(dead_code)] +pub struct ContextTlasBuildEntry<'a, T: Context> { + pub(crate) tlas_data: &'a T::TlasData, + pub(crate) instance_buffer_data: &'a T::BufferData, + pub(crate) instance_count: u32, +} + +/// Context version see [TlasPackage]. +#[allow(dead_code)] +pub struct ContextTlasPackage<'a, T: Context> { + pub(crate) tlas_data: &'a T::TlasData, + pub(crate) instances: Box>> + 'a>, + pub(crate) lowest_unmodified: u32, +} diff --git a/wgpu/src/backend/webgpu.rs b/wgpu/src/backend/webgpu.rs index e0cf006e6e..963d7836f6 100644 --- a/wgpu/src/backend/webgpu.rs +++ b/wgpu/src/backend/webgpu.rs @@ -1137,6 +1137,8 @@ impl crate::context::Context for ContextWebGpu { type RenderBundleEncoderData = Sendable; type RenderBundleData = Sendable; type SurfaceData = Sendable<(Canvas, webgpu_sys::GpuCanvasContext)>; + type BlasData = (); + type TlasData = (); type SurfaceOutputDetail = SurfaceOutputDetail; type SubmissionIndexData = (); @@ -1758,6 +1760,9 @@ impl crate::context::Context for ContextWebGpu { crate::BindingResource::TextureViewArray(..) => { panic!("Web backend does not support BINDING_INDEXING extension") } + crate::BindingResource::AccelerationStructure(_) => { + unimplemented!("Raytracing not implemented for web") + } }; webgpu_sys::GpuBindGroupEntry::new(binding.binding, &mapped_resource) @@ -3384,6 +3389,57 @@ impl crate::context::Context for ContextWebGpu { fn render_pass_end(&self, pass_data: &mut Self::RenderPassData) { pass_data.0.end(); } + + fn device_create_blas( + &self, + _device_data: &Self::DeviceData, + _desc: &crate::CreateBlasDescriptor<'_>, + _sizes: wgt::BlasGeometrySizeDescriptors, + ) -> (Option, Self::BlasData) { + unimplemented!("Raytracing not implemented for web"); + } + + fn device_create_tlas( + &self, + _device_data: &Self::DeviceData, + _desc: &crate::CreateTlasDescriptor<'_>, + ) -> Self::TlasData { + unimplemented!("Raytracing not implemented for web"); + } + + fn command_encoder_build_acceleration_structures_unsafe_tlas<'a>( + &'a self, + _encoder_data: &Self::CommandEncoderData, + _blas: impl Iterator>, + _tlas: impl Iterator>, + ) { + unimplemented!("Raytracing not implemented for web"); + } + + fn command_encoder_build_acceleration_structures<'a>( + &'a self, + _encoder_data: &Self::CommandEncoderData, + _blas: impl Iterator>, + _tlas: impl Iterator>, + ) { + unimplemented!("Raytracing not implemented for web"); + } + + fn blas_destroy(&self, _blas_data: &Self::BlasData) { + unimplemented!("Raytracing not implemented for web"); + } + + fn blas_drop(&self, _blas_data: &Self::BlasData) { + unimplemented!("Raytracing not implemented for web"); + } + + fn tlas_destroy(&self, _tlas_data: &Self::TlasData) { + unimplemented!("Raytracing not implemented for web"); + } + + fn tlas_drop(&self, _tlas_data: &Self::TlasData) { + unimplemented!("Raytracing not implemented for web"); + } } pub(crate) type SurfaceOutputDetail = (); diff --git a/wgpu/src/backend/wgpu_core.rs b/wgpu/src/backend/wgpu_core.rs index 712e01cc44..befec4bd78 100644 --- a/wgpu/src/backend/wgpu_core.rs +++ b/wgpu/src/backend/wgpu_core.rs @@ -504,6 +504,18 @@ pub struct CommandEncoder { open: bool, } +#[derive(Debug)] +pub struct Blas { + id: wgc::id::BlasId, + // error_sink: ErrorSink, +} + +#[derive(Debug)] +pub struct Tlas { + id: wgc::id::TlasId, + // error_sink: ErrorSink, +} + impl crate::Context for ContextWgpuCore { type AdapterData = wgc::id::AdapterId; type DeviceData = Device; @@ -532,6 +544,8 @@ impl crate::Context for ContextWgpuCore { type SubmissionIndexData = wgc::SubmissionIndex; type RequestAdapterFuture = Ready>; + type BlasData = Blas; + type TlasData = Tlas; #[allow(clippy::type_complexity)] type RequestDeviceFuture = @@ -983,6 +997,11 @@ impl crate::Context for ContextWgpuCore { &remaining_arrayed_texture_views[array.len()..]; bm::BindingResource::TextureViewArray(Borrowed(slice)) } + BindingResource::AccelerationStructure(acceleration_structure) => { + bm::BindingResource::AccelerationStructure( + downcast_tlas(acceleration_structure).id, + ) + } }, }) .collect::>(); @@ -2984,6 +3003,194 @@ impl crate::Context for ContextWgpuCore { ); } } + + fn device_create_blas( + &self, + device_data: &Self::DeviceData, + desc: &crate::CreateBlasDescriptor<'_>, + sizes: wgt::BlasGeometrySizeDescriptors, + ) -> (Option, Self::BlasData) { + let global = &self.0; + let (id, handle, error) = global.device_create_blas( + device_data.id, + &desc.map_label(|l| l.map(Borrowed)), + sizes, + None, + ); + if let Some(cause) = error { + self.handle_error( + &device_data.error_sink, + cause, + desc.label, + "Device::create_blas", + ); + } + ( + handle, + Blas { + id, + // error_sink: Arc::clone(&device_data.error_sink), + }, + ) + } + + fn device_create_tlas( + &self, + device_data: &Self::DeviceData, + desc: &crate::CreateTlasDescriptor<'_>, + ) -> Self::TlasData { + let global = &self.0; + let (id, error) = + global.device_create_tlas(device_data.id, &desc.map_label(|l| l.map(Borrowed)), None); + if let Some(cause) = error { + self.handle_error( + &device_data.error_sink, + cause, + desc.label, + "Device::create_blas", + ); + } + Tlas { + id, + // error_sink: Arc::clone(&device_data.error_sink), + } + } + + fn command_encoder_build_acceleration_structures_unsafe_tlas<'a>( + &'a self, + encoder_data: &Self::CommandEncoderData, + blas: impl Iterator>, + tlas: impl Iterator>, + ) { + let global = &self.0; + + let blas = blas.map(|e: crate::ContextBlasBuildEntry<'_, Self>| { + let geometries = match e.geometries { + crate::ContextBlasGeometries::TriangleGeometries(triangle_geometries) => { + let iter = triangle_geometries.into_iter().map(|tg| { + wgc::ray_tracing::BlasTriangleGeometry { + vertex_buffer: tg.vertex_buffer.id, + index_buffer: tg.index_buffer.map(|buf| buf.id), + transform_buffer: tg.transform_buffer.map(|buf| buf.id), + size: tg.size, + transform_buffer_offset: tg.transform_buffer_offset, + first_vertex: tg.first_vertex, + vertex_stride: tg.vertex_stride, + index_buffer_offset: tg.index_buffer_offset, + } + }); + wgc::ray_tracing::BlasGeometries::TriangleGeometries(Box::new(iter)) + } + }; + wgc::ray_tracing::BlasBuildEntry { + blas_id: e.blas_data.id, + geometries, + } + }); + + let tlas = tlas + .into_iter() + .map(|e: crate::ContextTlasBuildEntry<'a, ContextWgpuCore>| { + wgc::ray_tracing::TlasBuildEntry { + tlas_id: e.tlas_data.id, + instance_buffer_id: e.instance_buffer_data.id, + instance_count: e.instance_count, + } + }); + + if let Err(cause) = global.command_encoder_build_acceleration_structures_unsafe_tlas( + encoder_data.id, + blas, + tlas, + ) { + self.handle_error_nolabel( + &encoder_data.error_sink, + cause, + "CommandEncoder::build_acceleration_structures_unsafe_tlas", + ); + } + } + + fn command_encoder_build_acceleration_structures<'a>( + &'a self, + encoder_data: &Self::CommandEncoderData, + blas: impl Iterator>, + tlas: impl Iterator>, + ) { + let global = &self.0; + + let blas = blas.map(|e: crate::ContextBlasBuildEntry<'_, Self>| { + let geometries = match e.geometries { + crate::ContextBlasGeometries::TriangleGeometries(triangle_geometries) => { + let iter = triangle_geometries.into_iter().map(|tg| { + wgc::ray_tracing::BlasTriangleGeometry { + vertex_buffer: tg.vertex_buffer.id, + index_buffer: tg.index_buffer.map(|buf| buf.id), + transform_buffer: tg.transform_buffer.map(|buf| buf.id), + size: tg.size, + transform_buffer_offset: tg.transform_buffer_offset, + first_vertex: tg.first_vertex, + vertex_stride: tg.vertex_stride, + index_buffer_offset: tg.index_buffer_offset, + } + }); + wgc::ray_tracing::BlasGeometries::TriangleGeometries(Box::new(iter)) + } + }; + wgc::ray_tracing::BlasBuildEntry { + blas_id: e.blas_data.id, + geometries, + } + }); + + let tlas = tlas.into_iter().map(|e| { + let instances = + e.instances + .map(|instance: Option>| { + instance.map(|instance| wgc::ray_tracing::TlasInstance { + blas_id: instance.blas_data.id, + transform: instance.transform, + custom_index: instance.custom_index, + mask: instance.mask, + }) + }); + wgc::ray_tracing::TlasPackage { + tlas_id: e.tlas_data.id, + instances: Box::new(instances), + lowest_unmodified: e.lowest_unmodified, + } + }); + + if let Err(cause) = + global.command_encoder_build_acceleration_structures(encoder_data.id, blas, tlas) + { + self.handle_error_nolabel( + &encoder_data.error_sink, + cause, + "CommandEncoder::build_acceleration_structures_unsafe_tlas", + ); + } + } + + fn blas_destroy(&self, blas_data: &Self::BlasData) { + let global = &self.0; + let _ = global.blas_destroy(blas_data.id); + } + + fn blas_drop(&self, blas_data: &Self::BlasData) { + let global = &self.0; + global.blas_drop(blas_data.id) + } + + fn tlas_destroy(&self, tlas_data: &Self::TlasData) { + let global = &self.0; + let _ = global.tlas_destroy(tlas_data.id); + } + + fn tlas_drop(&self, tlas_data: &Self::TlasData) { + let global = &self.0; + global.tlas_drop(tlas_data.id) + } } #[derive(Debug)] @@ -3145,6 +3352,9 @@ fn downcast_texture_view( ) -> &::TextureViewData { downcast_ref(texture_view.data.as_ref()) } +fn downcast_tlas(tlas: &crate::Tlas) -> &::TlasData { + downcast_ref(tlas.data.as_ref()) +} fn downcast_sampler(sampler: &crate::Sampler) -> &::SamplerData { downcast_ref(sampler.data.as_ref()) } diff --git a/wgpu/src/context.rs b/wgpu/src/context.rs index a27459ab45..e9e23a55f3 100644 --- a/wgpu/src/context.rs +++ b/wgpu/src/context.rs @@ -49,6 +49,9 @@ pub trait Context: Debug + WasmNotSendSync + Sized { type RenderBundleData: ContextData; type SurfaceData: ContextData; + type BlasData: ContextData; + type TlasData: ContextData; + type SurfaceOutputDetail: WasmNotSendSync + 'static; type SubmissionIndexData: ContextData + Copy; @@ -695,6 +698,34 @@ pub trait Context: Debug + WasmNotSendSync + Sized { render_bundles: &mut dyn Iterator, ); fn render_pass_end(&self, pass_data: &mut Self::RenderPassData); + + fn device_create_blas( + &self, + device_data: &Self::DeviceData, + desc: &crate::CreateBlasDescriptor<'_>, + sizes: wgt::BlasGeometrySizeDescriptors, + ) -> (Option, Self::BlasData); + fn device_create_tlas( + &self, + device_data: &Self::DeviceData, + desc: &crate::CreateTlasDescriptor<'_>, + ) -> Self::TlasData; + fn command_encoder_build_acceleration_structures_unsafe_tlas<'a>( + &'a self, + encoder_data: &Self::CommandEncoderData, + blas: impl Iterator>, + tlas: impl Iterator>, + ); + fn command_encoder_build_acceleration_structures<'a>( + &'a self, + encoder_data: &Self::CommandEncoderData, + blas: impl Iterator>, + tlas: impl Iterator>, + ); + fn blas_destroy(&self, blas_data: &Self::BlasData); + fn blas_drop(&self, blas_data: &Self::BlasData); + fn tlas_destroy(&self, tlas_data: &Self::TlasData); + fn tlas_drop(&self, tlas_data: &Self::TlasData); } pub(crate) fn downcast_ref(data: &crate::Data) -> &T { @@ -1341,6 +1372,33 @@ pub(crate) trait DynContext: Debug + WasmNotSendSync { pass_data: &mut crate::Data, render_bundles: &mut dyn Iterator, ); + fn device_create_blas( + &self, + device_data: &crate::Data, + desc: &crate::CreateBlasDescriptor<'_>, + sizes: wgt::BlasGeometrySizeDescriptors, + ) -> (Option, Box); + fn device_create_tlas( + &self, + device_data: &crate::Data, + desc: &crate::CreateTlasDescriptor<'_>, + ) -> Box; + fn command_encoder_build_acceleration_structures_unsafe_tlas( + &self, + encoder_data: &crate::Data, + blas: &mut dyn Iterator>, + tlas: &mut dyn Iterator>, + ); + fn command_encoder_build_acceleration_structures( + &self, + encoder_data: &crate::Data, + blas: &mut dyn Iterator>, + tlas: &mut dyn Iterator>, + ); + fn blas_destroy(&self, blas_data: &crate::Data); + fn blas_drop(&self, blas_data: &crate::Data); + fn tlas_destroy(&self, tlas_data: &crate::Data); + fn tlas_drop(&self, tlas_data: &crate::Data); fn render_pass_end(&self, pass_data: &mut crate::Data); } @@ -2681,6 +2739,152 @@ where let pass_data = downcast_mut(pass_data); Context::render_pass_end(self, pass_data) } + + fn device_create_blas( + &self, + device_data: &crate::Data, + desc: &crate::CreateBlasDescriptor<'_>, + sizes: wgt::BlasGeometrySizeDescriptors, + ) -> (Option, Box) { + let device_data = downcast_ref(device_data); + let (handle, data) = Context::device_create_blas(self, device_data, desc, sizes); + (handle, Box::new(data) as _) + } + + fn device_create_tlas( + &self, + device_data: &crate::Data, + desc: &crate::CreateTlasDescriptor<'_>, + ) -> Box { + let device_data = downcast_ref(device_data); + let data = Context::device_create_tlas(self, device_data, desc); + Box::new(data) as _ + } + + fn command_encoder_build_acceleration_structures_unsafe_tlas( + &self, + encoder_data: &crate::Data, + blas: &mut dyn Iterator>, + tlas: &mut dyn Iterator>, + ) { + let encoder_data = downcast_ref(encoder_data); + + let blas = blas.into_iter().map(|e| { + let geometries = match e.geometries { + crate::DynContextBlasGeometries::TriangleGeometries(triangle_geometries) => { + let iter = triangle_geometries.into_iter().map(|tg| { + crate::ContextBlasTriangleGeometry { + vertex_buffer: downcast_ref(tg.vertex_buffer), + index_buffer: tg.index_buffer.map(downcast_ref), + transform_buffer: tg.transform_buffer.map(downcast_ref), + size: tg.size, + transform_buffer_offset: tg.transform_buffer_offset, + first_vertex: tg.first_vertex, + vertex_stride: tg.vertex_stride, + index_buffer_offset: tg.index_buffer_offset, + } + }); + crate::ContextBlasGeometries::TriangleGeometries(Box::new(iter)) + } + }; + crate::ContextBlasBuildEntry { + blas_data: downcast_ref(e.blas_data), + // blas_data: downcast_ref(e.blas_data), + geometries, + } + }); + + let tlas = tlas + .into_iter() + .map( + |e: crate::DynContextTlasBuildEntry<'_>| crate::ContextTlasBuildEntry { + tlas_data: downcast_ref(e.tlas_data), + instance_buffer_data: downcast_ref(e.instance_buffer_data), + instance_count: e.instance_count, + }, + ); + + Context::command_encoder_build_acceleration_structures_unsafe_tlas( + self, + encoder_data, + blas, + tlas, + ) + } + + fn command_encoder_build_acceleration_structures( + &self, + encoder_data: &crate::Data, + blas: &mut dyn Iterator>, + tlas: &mut dyn Iterator>, + ) { + let encoder_data = downcast_ref(encoder_data); + + let blas = blas.into_iter().map(|e| { + let geometries = match e.geometries { + crate::DynContextBlasGeometries::TriangleGeometries(triangle_geometries) => { + let iter = triangle_geometries.into_iter().map(|tg| { + crate::ContextBlasTriangleGeometry { + vertex_buffer: downcast_ref(tg.vertex_buffer), + index_buffer: tg.index_buffer.map(downcast_ref), + transform_buffer: tg.transform_buffer.map(downcast_ref), + size: tg.size, + transform_buffer_offset: tg.transform_buffer_offset, + first_vertex: tg.first_vertex, + vertex_stride: tg.vertex_stride, + index_buffer_offset: tg.index_buffer_offset, + } + }); + crate::ContextBlasGeometries::TriangleGeometries(Box::new(iter)) + } + }; + crate::ContextBlasBuildEntry { + blas_data: downcast_ref(e.blas_data), + // blas_data: downcast_ref(e.blas_data), + geometries, + } + }); + + let tlas = tlas.into_iter().map(|e: crate::DynContextTlasPackage<'_>| { + let instances = + e.instances + .map(|instance: Option>| { + instance.map(|instance| crate::ContextTlasInstance { + blas_data: downcast_ref(instance.blas), + transform: instance.transform, + custom_index: instance.custom_index, + mask: instance.mask, + }) + }); + crate::ContextTlasPackage { + tlas_data: downcast_ref(e.tlas_data), + instances: Box::new(instances), + lowest_unmodified: e.lowest_unmodified, + } + }); + + Context::command_encoder_build_acceleration_structures(self, encoder_data, blas, tlas) + } + + fn blas_destroy(&self, blas_data: &crate::Data) { + let blas_data = downcast_ref(blas_data); + Context::blas_destroy(self, blas_data) + } + + fn blas_drop(&self, blas_data: &crate::Data) { + let blas_data = downcast_ref(blas_data); + Context::blas_drop(self, blas_data) + } + + fn tlas_destroy(&self, tlas_data: &crate::Data) { + let tlas_data = downcast_ref(tlas_data); + Context::tlas_destroy(self, tlas_data) + } + + fn tlas_drop(&self, tlas_data: &crate::Data) { + let tlas_data = downcast_ref(tlas_data); + Context::tlas_drop(self, tlas_data) + } } pub trait QueueWriteBuffer: WasmNotSendSync + Debug {