mirror of
https://github.com/storytold/storyteller-bevy.git
synced 2026-10-11 21:41:10 +00:00
155272a5ba
* Migrate `System::pipe(...)` calls to `System::map(...)` * Migrate `EventReader::iter()` and `EventReader::into_iter()` calls to `EventReader::read()` * Migrate asset handling * Generate `*.meta` files for assets * Migrate a shader import * Fix emissive materials double-applying their emissive strength * Fix non-normalized bone weights resulting in incorrect vertex positions * Set shadow filtering to `Hardware2x2` to mitigate increase in shader compilation times
Generating Skybox and Image-Based Lighting Assets
HDRI images like those available at Poly Haven or HDRI Haven must be preprocessed before they can be used for skyboxes and image-based lighting in Bevy Engine. Ultimately, three files are required:
- An
*.hdrcubemap texture for the skybox - A
*.ktx2prefiltered diffuse irradiance cubemap for IBL - A
*.ktx2prefiltered specular cubemap for IBL
The HDR cubemap texture currently must be generated using Blender. A helper asset with instructions is available here for Blender 3.6.
The prefiltered IBL cubemaps are generated with two CLI tools:
-
- Git clone with
--recursiveand build using CMake - Diffuse:
./path/to/build-output/cli \ -inputPath <input>.hdr \ -outCubeMap <output>_diffuse.ktx2 \ -distribution Lambertian \ -cubeMapResolution 32- Specular:
./path/to/build-output/cli \ -inputPath <input>.hdr \ -outCubeMap <output>_specular.ktx2 \ -distribution GGX \ -cubeMapResolution 512 - Git clone with
-
bevy_mod_environment_map_tools
- You can run this directly with
cargoon the files generated by the previous step:
cargo run --release -- \ --inputs <input>_diffuse.ktx2,<input>_specular.ktx2 \ --outputs <output>_diffuse.zstd.ktx2,<output>_specular.zstd.ktx2 - You can run this directly with
The Bevy app expects the filenames to exactly match the patterns given in the examples above:
{name}.hdr{name}_diffuse.zstd.ktx2{name}_specular.zstd.ktx2
Once the files are in place, the application's skybox module can load all of
the associated files for a skybox by passing its name to a helper function.