mirror of
https://github.com/bevyengine/bevy
synced 2024-12-23 11:33:06 +00:00
bdef86ea6e
# Objective Models can be produced that do not have vertex tangents but do have normal map textures. The tangents can be generated. There is a way that the vertex tangents can be generated to be exactly invertible to avoid introducing error when recreating the normals in the fragment shader. ## Solution - After attempts to get https://github.com/gltf-rs/mikktspace to integrate simple glam changes and version bumps, and releases of that crate taking weeks / not being made (no offense intended to the authors/maintainers, bevy just has its own timelines and needs to take care of) it was decided to fork that repository. The following steps were taken: - mikktspace was forked to https://github.com/bevyengine/mikktspace in order to preserve the repository's history in case the original is ever taken down - The README in that repo was edited to add a note stating from where the repository was forked and explaining why - The repo was locked for changes as its only purpose is historical - The repo was integrated into the bevy repo using `git subtree add --prefix crates/bevy_mikktspace git@github.com:bevyengine/mikktspace.git master` - In `bevy_mikktspace`: - The travis configuration was removed - `cargo fmt` was run - The `Cargo.toml` was conformed to bevy's (just adding bevy to the keywords, changing the homepage and repository, changing the version to 0.7.0-dev - importantly the license is exactly the same) - Remove the features, remove `nalgebra` entirely, only use `glam`, suppress clippy. - This was necessary because our CI runs clippy with `--all-features` and the `nalgebra` and `glam` features are mutually exclusive, plus I don't want to modify this highly numerically-sensitive code just to appease clippy and diverge even more from upstream. - Rebase https://github.com/bevyengine/bevy/pull/1795 - @jakobhellermann said it was fine to copy and paste but it ended up being almost exactly the same with just a couple of adjustments when validating correctness so I decided to actually rebase it and then build on top of it. - Use the exact same fragment shader code to ensure correct normal mapping. - Tested with both https://github.com/KhronosGroup/glTF-Sample-Models/tree/master/2.0/NormalTangentMirrorTest which has vertex tangents and https://github.com/KhronosGroup/glTF-Sample-Models/tree/master/2.0/NormalTangentTest which requires vertex tangent generation Co-authored-by: alteous <alteous@outlook.com>
72 lines
2.5 KiB
TOML
72 lines
2.5 KiB
TOML
[package]
|
|
name = "bevy_render"
|
|
version = "0.8.0-dev"
|
|
edition = "2021"
|
|
description = "Provides rendering functionality for Bevy Engine"
|
|
homepage = "https://bevyengine.org"
|
|
repository = "https://github.com/bevyengine/bevy"
|
|
license = "MIT OR Apache-2.0"
|
|
keywords = ["bevy"]
|
|
|
|
[features]
|
|
png = ["image/png"]
|
|
hdr = ["image/hdr"]
|
|
tga = ["image/tga"]
|
|
jpeg = ["image/jpeg"]
|
|
bmp = ["image/bmp"]
|
|
dds = ["ddsfile"]
|
|
|
|
# For ktx2 supercompression
|
|
zlib = ["flate2"]
|
|
zstd = ["ruzstd"]
|
|
|
|
trace = []
|
|
tracing-tracy = []
|
|
wgpu_trace = ["wgpu/trace"]
|
|
ci_limits = []
|
|
webgl = ["wgpu/webgl"]
|
|
|
|
[dependencies]
|
|
# bevy
|
|
bevy_app = { path = "../bevy_app", version = "0.8.0-dev" }
|
|
bevy_asset = { path = "../bevy_asset", version = "0.8.0-dev" }
|
|
bevy_core = { path = "../bevy_core", version = "0.8.0-dev" }
|
|
bevy_derive = { path = "../bevy_derive", version = "0.8.0-dev" }
|
|
bevy_ecs = { path = "../bevy_ecs", version = "0.8.0-dev" }
|
|
bevy_encase_derive = { path = "../bevy_encase_derive", version = "0.8.0-dev" }
|
|
bevy_math = { path = "../bevy_math", version = "0.8.0-dev" }
|
|
bevy_mikktspace = { path = "../bevy_mikktspace", version = "0.8.0-dev" }
|
|
bevy_reflect = { path = "../bevy_reflect", version = "0.8.0-dev", features = ["bevy"] }
|
|
bevy_render_macros = { path = "macros", version = "0.8.0-dev" }
|
|
bevy_transform = { path = "../bevy_transform", version = "0.8.0-dev" }
|
|
bevy_window = { path = "../bevy_window", version = "0.8.0-dev" }
|
|
bevy_utils = { path = "../bevy_utils", version = "0.8.0-dev" }
|
|
|
|
# rendering
|
|
image = { version = "0.24", default-features = false }
|
|
|
|
# misc
|
|
wgpu = { version = "0.12.0", features = ["spirv"] }
|
|
codespan-reporting = "0.11.0"
|
|
naga = { version = "0.8.0", features = ["glsl-in", "spv-in", "spv-out", "wgsl-in", "wgsl-out"] }
|
|
serde = { version = "1", features = ["derive"] }
|
|
bitflags = "1.2.1"
|
|
smallvec = { version = "1.6", features = ["union", "const_generics"] }
|
|
once_cell = "1.4.1" # TODO: replace once_cell with std equivalent if/when this lands: https://github.com/rust-lang/rfcs/pull/2788
|
|
downcast-rs = "1.2.0"
|
|
thiserror = "1.0"
|
|
futures-lite = "1.4.0"
|
|
anyhow = "1.0"
|
|
hex = "0.4.2"
|
|
hexasphere = "7.0.0"
|
|
parking_lot = "0.11.0"
|
|
regex = "1.5"
|
|
copyless = "0.1.5"
|
|
ddsfile = { version = "0.5.0", optional = true }
|
|
ktx2 = { version = "0.3.0", optional = true }
|
|
# For ktx2 supercompression
|
|
flate2 = { version = "1.0.22", optional = true }
|
|
ruzstd = { version = "0.2.4", optional = true }
|
|
# For transcoding of UASTC/ETC1S universal formats, and for .basis file support
|
|
basis-universal = { version = "0.2.0", optional = true }
|
|
encase = { version = "0.2", features = ["glam"] }
|