roxlap-gpu 0.13.0

GPU compute-shader renderer for the roxlap voxel engine (WGPU + WGSL DDA marcher). Sibling to roxlap-core's CPU opticast.
Documentation
[package]
name = "roxlap-gpu"
version.workspace = true
edition.workspace = true
license.workspace = true
repository.workspace = true
authors.workspace = true
rust-version.workspace = true
description = "GPU compute-shader renderer for the roxlap voxel engine (WGPU + WGSL DDA marcher). Sibling to roxlap-core's CPU opticast."
documentation = "https://docs.rs/roxlap-gpu"
keywords = ["voxlap", "voxel", "wgpu", "compute-shader", "renderer"]
categories = ["game-development", "graphics", "rendering"]
readme.workspace = true

[dependencies]
# GPU.0 probe deps — WGPU is the cross-platform compute-shader
# backend (Vulkan/Metal/DX12 native + WebGPU in browsers); pollster
# blocks on the async device-request inside `App::resumed`; bytemuck
# casts the hand-built voxel chunk and uniforms to `&[u8]` for
# `Queue::write_buffer`.
wgpu = "29"
bytemuck = { version = "1", features = ["derive"] }
glam = { workspace = true }
# GPU.2: source of `Vxl` chunks for the CPU-side decompressor.
roxlap-formats = { path = "../roxlap-formats", version = "0.13" }
# The renderer is decoupled from any specific windowing library: it
# binds the wgpu surface to whatever `HasWindowHandle`/
# `HasDisplayHandle` provider the host passes (winit, SDL, GLFW, …).
raw-window-handle = "0.6"
# Optional `hud` feature: egui-wgpu paints an egui UI over the marcher's
# frame (LoadOp::Load on the pending surface view). egui supplies the
# tessellation + texture-delta types the host hands in.
egui-wgpu = { version = "0.34", optional = true }
egui = { version = "0.34", optional = true }

# `pollster::block_on` powers the native `new_blocking` / headless
# helpers; on wasm the host awaits the async `new_from_canvas` through
# the browser event loop instead, so pollster isn't pulled in.
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
pollster = "0.3"

# wasm/WebGPU surface entry: `new_from_canvas` takes an
# `HtmlCanvasElement` and binds the wgpu surface via
# `SurfaceTarget::Canvas`. wgpu already depends on web-sys transitively
# on wasm, so this resolves to the same version.
[target.'cfg(target_arch = "wasm32")'.dependencies]
web-sys = { version = "0.3", features = ["HtmlCanvasElement"] }

[features]
hud = ["dep:egui-wgpu", "dep:egui"]

[dev-dependencies]
# `examples/probe.rs` is a standalone winit host for the GPU.0 FPS
# baseline; the lib itself no longer depends on winit.
winit = "0.30"
# Static WGSL validation in unit tests (no GPU device needed) — same
# front-end + validator wgpu runs at pipeline creation. Pinned to the
# version wgpu 22 vendors so the dialect matches.
naga = { version = "29", features = ["wgsl-in"] }

[lints]
workspace = true