Skip to content

Commit 53c4c45

Browse files
authored
Use embedded glslang for runtime glsl-to-spirv and add Android example (#740)
Use embedded glslang for runtime glsl-to-spirv and add Android example
1 parent f81ecdd commit 53c4c45

File tree

4 files changed

+46
-7
lines changed

4 files changed

+46
-7
lines changed

Cargo.toml

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,22 @@ default = [
2929
"mp3",
3030
"x11",
3131
]
32+
33+
supported_android_features = [
34+
# cpal is not supported yet
35+
# "bevy_audio",
36+
"bevy_dynamic_plugin",
37+
"bevy_gilrs",
38+
"bevy_gltf",
39+
"bevy_wgpu",
40+
"bevy_winit",
41+
"render",
42+
"png",
43+
"hdr",
44+
# "mp3",
45+
"x11",
46+
]
47+
3248
profiler = ["bevy_ecs/profiler", "bevy_diagnostic/profiler"]
3349
wgpu_trace = ["bevy_wgpu/trace"]
3450

@@ -90,6 +106,11 @@ log = "0.4"
90106
ron = "0.6"
91107
anyhow = "1.0"
92108

109+
# bevy (Android)
110+
[target.'cfg(target_os = "android")'.dependencies]
111+
ndk-glue = { version = "0.2", features = ["logger"] }
112+
android_logger = "0.9"
113+
93114
[target.'cfg(target_arch = "wasm32")'.dev-dependencies]
94115
console_error_panic_hook = "0.1.6"
95116
console_log = { version = "0.2", features = ["color"] }
@@ -314,3 +335,16 @@ name = "assets_wasm"
314335
path = "examples/wasm/assets_wasm.rs"
315336
required-features = ["bevy_winit"]
316337

338+
[[example]]
339+
name = "bevy_android"
340+
path = "examples/android/bevy_android.rs"
341+
crate-type = ["cdylib"]
342+
343+
[package.metadata.android]
344+
build_targets = [ "aarch64-linux-android", "armv7-linux-androideabi" ]
345+
target_sdk_version = 28
346+
min_sdk_version = 28
347+
348+
[[package.metadata.android.feature]]
349+
name = "android.hardware.vulkan.level"
350+
version = "1"

crates/bevy_render/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ parking_lot = "0.11.0"
4848
spirv-reflect = "0.2.3"
4949

5050
[target.'cfg(all(not(target_os = "ios"), not(target_arch = "wasm32")))'.dependencies]
51-
bevy-glsl-to-spirv = "0.1.7"
51+
bevy-glsl-to-spirv = "0.2.0"
5252

5353
[target.'cfg(target_os = "ios")'.dependencies]
5454
shaderc = "0.6.3"

crates/bevy_render/src/shader/shader.rs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,7 @@ fn glsl_to_spirv(
2828
stage: ShaderStage,
2929
shader_defs: Option<&[String]>,
3030
) -> Vec<u32> {
31-
use std::io::Read;
32-
33-
let mut output = bevy_glsl_to_spirv::compile(glsl_source, stage.into(), shader_defs).unwrap();
34-
let mut spv_bytes = Vec::new();
35-
output.read_to_end(&mut spv_bytes).unwrap();
36-
bytes_to_words(&spv_bytes)
31+
bevy_glsl_to_spirv::compile(glsl_source, stage.into(), shader_defs).unwrap()
3732
}
3833

3934
#[cfg(target_os = "ios")]

examples/android/bevy_android.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
// Edit to run any single file example from Bevy.
2+
include!("../3d/3d_scene.rs");
3+
4+
#[cfg_attr(
5+
target_os = "android",
6+
ndk_glue::main(logger(level = "trace", tag = "bevy_android"), backtrace = "full")
7+
)]
8+
pub fn android_main() {
9+
main();
10+
}

0 commit comments

Comments
 (0)