# FAQ
Common questions answered.
## General
**Q: What is shdrlib?**
A: A three-tier Vulkan rendering library in Rust. Choose your abstraction level: EZ (easy), EX (explicit), or CORE (control).
**Q: Is it a game engine?**
A: No. It's a rendering library. You bring your own windowing, input, and asset management.
**Q: Which tier should I use?**
A: EZ for learning, EX for production, CORE for frameworks. See [Choosing a Tier](choosing-a-tier.md).
**Q: Can I mix tiers?**
A: Yes. Start high-level, drop down anytime for more control.
## Performance
**Q: Does EZ/EX have overhead vs CORE?**
A: No. All tiers are zero-cost abstractions that compile to identical machine code.
**Q: How does it compare to raw Vulkan?**
A: Same performance, but 4-13x less code depending on tier.
**Q: Can I use this in production?**
A: Yes. EX tier is designed for production use and is used in real applications.
## Vulkan
**Q: Do I need to know Vulkan?**
A: Not for EZ tier. EX tier helps, CORE tier requires it.
**Q: What Vulkan version?**
A: Vulkan 1.3+ with dynamic rendering.
**Q: Do I need validation layers?**
A: Enabled automatically in debug builds. Highly recommended during development.
**Q: What about render passes?**
A: We use dynamic rendering (Vulkan 1.3). No render pass objects needed.
## Shaders
**Q: What shader language?**
A: GLSL. Compiled to SPIR-V using naga (pure Rust, no external tools).
**Q: Can I use SPIR-V directly?**
A: Yes. All tiers support both GLSL and SPIR-V input.
**Q: HLSL or WGSL support?**
A: Not yet. Planned for future releases.
## Platform
**Q: What platforms?**
A: Windows, Linux, macOS (via MoltenVK). All with Vulkan 1.3+.
**Q: Mobile support?**
A: Not tested yet. Should work with Android Vulkan, but no guarantees.
**Q: Web/WASM?**
A: No. Vulkan doesn't run in browsers. Use wgpu for WebGPU instead.
## Dependencies
**Q: What dependencies?**
A: ash (Vulkan), naga (shaders), spirv-reflect (reflection), thiserror (errors). All pure Rust.
**Q: Do I need glslang or shaderc?**
A: No. We use naga for pure Rust shader compilation.
**Q: External build tools?**
A: None required.
## Safety
**Q: Is it memory safe?**
A: EZ/EX tiers: Yes, Rust ownership prevents UB. CORE tier: Manual lifetime management required.
**Q: Can I cause UB?**
A: Only in CORE tier if you violate drop order. EZ/EX tiers are safe.
**Q: Why allow UB in CORE?**
A: For thin wrappers and maximum flexibility. Use EX for safety.
## Features
**Q: Does it support ray tracing?**
A: Not yet. Planned for v0.3+.
**Q: Compute shaders?**
A: Yes, all tiers support compute.
**Q: Multi-threading?**
A: You can record commands on multiple threads. Multi-threaded command recording planned for future.
**Q: Render graphs?**
A: Not built-in. Planned for future releases. You can build your own on top of CORE/EX.
## Examples
**Q: Where are examples?**
A: `demos/` directory. Run with `cargo run --bin <name>`.
**Q: Which example should I start with?**
A: EZ tier: `ez_01_hello_triangle`. EX tier: `ex_01_triangle_100_lines`.
## Troubleshooting
**Q: Build errors?**
A: See [Troubleshooting](troubleshooting.md).
**Q: Runtime errors?**
A: Enable validation layers (auto in debug). Check stderr for Vulkan errors.
**Q: Performance issues?**
A: Profile first. Check for unnecessary syncs, large buffer copies, or shader complexity.
## Contributing
**Q: Can I contribute?**
A: Yes. See [CONTRIBUTING.md](../../CONTRIBUTING.md) for guidelines.
**Q: Where to start?**
A: Check GitHub issues labeled "good first issue" or "help wanted".
**Q: Documentation improvements?**
A: Documentation improvements are always welcome. Submit PRs with `[DOCS]` prefix.
## Roadmap
**Q: What's next?**
A: See [CHANGELOG.md](../../CHANGELOG.md) for roadmap.
**Q: When is v1.0?**
A: After extensive production testing and API stabilization. No ETA yet.
## Still Have Questions?
- Check [Troubleshooting](troubleshooting.md)
- Open a [GitHub Discussion](https://github.com/paulburnettjones-wq/shdrlib/discussions)
- File an [Issue](https://github.com/paulburnettjones-wq/shdrlib/issues)