Bevy Atmosphere not supported on iOS devices without 32 bit surface filtering support
- Dominant language
- Rust
- Stars
- 48.2k
- Forks
- 4.8k
- Avg merge
- 3d 16h
- Merged PRs (30d)
- 171
Description
## Bevy version and features
bevy = { version = "0.19", features = ["wav", "vorbis", "webgpu", "debug"] }
If your bug is rendering-related, copy the adapter info that appears when you run Bevy.
```AdapterInfo { name: "Apple A12X GPU", vendor: 0, device: 0, device_type: IntegratedGpu, device_pci_bus_id: "", driver: "", driver_info: "", backend: Metal, subgroup_min_size: 4, subgroup_max_size: 64, transient_saves_memory: true }
```
## What you did
Ran bevy atmosphere based scene on iOS device without 32 bit surface filtering capabilities
## What went wrong
Game crashes due to GPU lacking capability to filter 32 bit surfaces, in particular when using
```
WgpuSettings {
features: WgpuFeatures::FLOAT32_FILTERABLE,
..default()
}
```
Initialization failed because the feature is explicitly not supported and the atmosphere pipeline requires a 32 bit surface
## Additional information
While lower precision does reduce the quality of the image, using gamma correction when downcasting the values to half precision and reversing it when sampling on the GPU results in a usable image with no banding and allows developers to use this on older devices that don't have the required GPU processing capabilities at a decent FPS (A12X is able to get 30 fps on average, worst case scenario being 15 FPS which seems to be when there are a lot of reflections, this is without applying metalfx rendered at full scale native resolution)
Downcast atmosphere without gamma correction
Downcast atmosphere with gamma correction
Contributor guide
Research direction
Reproduce the Bevy Atmosphere scene on an iOS device with the Apple A12X GPU and the shown WgpuSettings using FLOAT32_FILTERABLE. Then trace the atmosphere pipeline and its 32-bit surface requirement; done means initialization succeeds on devices without that filtering capability while retaining a usable image and performance.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- ios, rust
- Domain
- computer-graphics, game-dev, mobile-dev
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100