mirror of
https://github.com/storytold/storyteller-bevy.git
synced 2026-10-09 00:09:55 +00:00
eb1198d440
Co-authored-by: Lee-Orr <lee-orr@users.noreply.github.com> Co-authored-by: Danny McGee <dannymcgee@gmail.com>
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.