cranpose-render-wgpu 0.9.21

GPU renderer for Cranpose scenes through wgpu
Documentation
[package]
name = "cranpose-render-wgpu"
version.workspace = true
edition.workspace = true
license.workspace = true
repository.workspace = true
homepage.workspace = true
authors.workspace = true
keywords.workspace = true
categories.workspace = true
readme = "README.md"
description = "GPU renderer for Cranpose scenes through wgpu"
autotests = false

[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]

[lints]
workspace = true

[features]
default = []
# GL-class fallback backend (GLES/OpenGL) for native targets. Pulls naga's
# GLSL writer for runtime-shader portability validation. Web always compiles
# the WebGL fallback and does not need this feature.
backend-gles = ["wgpu/gles", "naga/glsl-out"]
# Embed the framework fallback font (~1.3 MiB) used when the app provides no fonts.
embedded-default-font = ["cranpose-render-common/embedded-default-font"]

[dependencies]
cranpose-render-common = { workspace = true }
cranpose-ui-graphics = { workspace = true }
cranpose-foundation = { workspace = true }
cranpose-ui = { workspace = true }
cranpose-core = { workspace = true }
bytemuck = { workspace = true }
log = "0.4"
naga = { version = "30.0.1", features = ["wgsl-in"] }
web-time = { workspace = true }
smallvec = "1.16.2"

[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
# Substrate for the stage executor: vetted scoped parallelism so the frame
# fan-outs need no repository-local unsafe (the pipeline's producer and
# present stages submit concurrently, which the old single-job pool could
# not express soundly).
rayon = "1.12"

[target.'cfg(all(target_os = "linux", not(target_arch = "wasm32")))'.dependencies]
wgpu = { workspace = true, features = [
    "std",
    "parking_lot",
    "vulkan",
    "wgsl",
] }

# Fast-core affinity for the frame-critical threads (`fast_cores`): safe
# sched_setaffinity, so the big.LITTLE placement fix needs no local unsafe.
[target.'cfg(any(target_os = "linux", target_os = "android"))'.dependencies]
rustix = { version = "1.1", features = ["thread"] }

[target.'cfg(target_os = "windows")'.dependencies]
wgpu = { workspace = true, features = [
    "std",
    "parking_lot",
    "dx12",
    "wgsl",
    "static-dxc",
] }

[target.'cfg(target_os = "macos")'.dependencies]
wgpu = { workspace = true, features = [
    "std",
    "parking_lot",
    "metal",
    "wgsl",
] }

[target.'cfg(all(not(target_arch = "wasm32"), not(target_os = "android"), not(target_os = "linux"), not(target_os = "windows"), not(target_os = "macos")))'.dependencies]
wgpu = { workspace = true, features = [
    "std",
    "parking_lot",
    "vulkan",
    "wgsl",
] }

[target.'cfg(target_os = "android")'.dependencies]
wgpu = { workspace = true, features = [
    "std",
    "parking_lot",
    "vulkan",
    "wgsl",
] }

[target.'cfg(target_arch = "wasm32")'.dependencies]
wgpu = { workspace = true, features = [
    "std",
    "webgpu",
    "webgl",
    "wgsl",
] }
# The WebGL fallback is always compiled on web, so runtime-shader GL
# portability validation needs naga's GLSL writer there unconditionally.
naga = { version = "30.0.1", features = ["wgsl-in", "glsl-out"] }

[dev-dependencies]
# Path-only dev-deps: stripped from the published manifest (publish order ignores dev edges).
cranpose-app-shell = { path = "../../cranpose-app-shell", features = ["test-support"] }
cranpose-liquid = { path = "../../cranpose-liquid" }
cranpose-macros = { path = "../../cranpose-macros" }
# Unit tests exercise the embedded fallback font and GL portability validation
# on every platform, independent of the production feature set.
cranpose-render-common = { path = "../common", features = ["embedded-default-font"] }
naga = { version = "30.0.1", features = ["wgsl-in", "glsl-out"] }
png = "0.18.1"
pollster = "0.4.0"
stats_alloc = "0.1.10"

[[test]]
name = "integration"
path = "tests/integration.rs"