bevyengine / bevy

A refreshingly simple data-driven game engine built in Rust
https://bevyengine.org
Apache License 2.0
36.7k stars 3.61k forks source link

A box mesh made using shape::Box::From is missing tangent vectors, which prevents applying normal maps #3121

Open mousetail opened 3 years ago

mousetail commented 3 years ago

What problem does this solve or what need does it fill?

Normal maps are a pretty standard cheap way to make meshes look a bit better. Often when prototyping you use basic shapes, and it would be quite nice to test real materials on these shapes.

Error:

thread 'Compute Task Pool (0)' panicked at 'Attribute Vertex_Tangent is required by shader, but not supplied by mesh. Either remove the attribute from the shader or supply the attribute (Vertex_Tangent) to the mesh.', C:\Users\_\.cargo\registry\src\github.com-1ecc6299db9ec823\bevy_render-0.5.0\src\pipeline\pipeline_compiler.rs:231:17

I checked the code and the issue seems to still exist in the current version of main.

What solution would you like?

The From<Box> for Mesh function should generate tangents in addition to normals and UV coordinates.

What alternative(s) have you considered?

You could write your own box generator, and I will but I think this is a pretty basic feature.

Additional context

I could probably fix this myself and submit a MR if you think this is a worthwhile feature. No guarantees.

cart commented 3 years ago

Good call! This would be a welcome addition.

mcobzarenco commented 2 years ago

I think this should be labelled as C-Enhancement rather than C-bug as it's an addition / new thing, rather than something working incorrectly

nicopap commented 9 months ago

From #6203, it looks like this is not planned, as it incurs additional costs that users may not necessarily want to pay if they are not using some rendering features.

IMO this can't be closed. It's still a major footgun though. bevy should show a warning with generated meshes similarly to #11854. Currently it only works with glTF scenes.