PHPackages                             microscrap/vulkan-gfx - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. microscrap/vulkan-gfx

ActiveLibrary

microscrap/vulkan-gfx
=====================

VulkanEngine plugin for ScrapyardIO Tubes — DeferredFramebuffer, WindowHandler, Rendering Engine, and Input Handler.

0.7.0(today)00MITPHP ^8.4|^8.5|^8.6CI failing

Since Aug 9Pushed todayCompare

[ Source](https://github.com/microscrap/vulkan-gfx)[ Packagist](https://packagist.org/packages/microscrap/vulkan-gfx)[ Docs](https://scrapyard-io.projectsaturnstudios.com/ecosystem/microscrap/vulkan-gfx/0.7.x/overview)[ RSS](/packages/microscrap-vulkan-gfx/feed)WikiDiscussions 0.7.x Synced today

READMEChangelogDependencies (5)Versions (3)Used By (0)

microscrap/vulkan-gfx — Vulkan Deferred framebuffer for ScrapyardIO
===================================================================

[](#microscrapvulkan-gfx--vulkan-deferred-framebuffer-for-scrapyardio)

[![Docs](https://camo.githubusercontent.com/f6af43646187c0a22feff71385ac7408b8ba926c0ca87b21722fa0e15e6bd0a9/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f646f63732d302e372e782d3041374541343f6c6f676f3d72656164746865646f6373266c6f676f436f6c6f723d7768697465)](https://scrapyard-io.projectsaturnstudios.com/ecosystem/microscrap/vulkan-gfx/0.7.x/overview)[![Latest Version on Packagist](https://camo.githubusercontent.com/698c257bb404e3ed5ff4cd14402d8e3af0af0ad763f689961ba2f2c58928693d/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6d6963726f73637261702f76756c6b616e2d6766782e7376673f6c6162656c3d7061636b6167697374)](https://packagist.org/packages/microscrap/vulkan-gfx)[![Tests](https://github.com/microscrap/vulkan-gfx/actions/workflows/tests.yml/badge.svg)](https://github.com/microscrap/vulkan-gfx/actions/workflows/tests.yml)[![PHP Version Require](https://camo.githubusercontent.com/f8289830118cd74a2eb80439baa6fcbdeb8165ef9f2d3c17d5271473669bdca4/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7068702d253545382e34253743253545382e35253743253545382e362d3737376262343f6c6f676f3d706870266c6f676f436f6c6f723d7768697465)](https://www.php.net)[![ext-vulkan](https://camo.githubusercontent.com/84271f0acb78e02ba1fccbfbf52f1c67a6c2906a746cdc528fe91d8d475cfbc8/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6578742d2d76756c6b616e2d253545302e372e302d627269676874677265656e)](https://github.com/php-io-extensions/vulkan)[![License: MIT](https://camo.githubusercontent.com/f8df3091bbe1149f398a5369b2c39e896766f9f6efba3477c63e9b4aa940ef14/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d677265656e)](LICENSE)

**Docs:** [ScrapyardIO — microscrap/vulkan-gfx `0.7.x`](https://scrapyard-io.projectsaturnstudios.com/ecosystem/microscrap/vulkan-gfx/0.7.x/overview)

Vulkan companion for ScrapyardIO **tubes 0.7** — registers:

- Framebuffer key **`vulkan`** as a **Deferred** (`VulkanHandledFramebuffer`)
- Window key **`vulkan`** as a **`VulkanWindowHandler`** (GLFW `NO_API` + surface + swapchain)
- Human Input via **`VulkanInputHandler`** (GLFW Input after `pollEvents`; wrap with tubes `EngineInput`)
- Ships **`VulkanRenderer2D`** (full tubes `DrawingAPI` + `DrawsText`)

Highlights
----------

[](#highlights)

- `VulkanHandledFramebuffer` extends `DeferredFramebuffer` (not Managed / not `PixelStore`)
- **Headless** — `VkInstance` + CPU shadow canvas (**no window required**)
- **Windowed** — `Window::driver('vulkan')->…->open()`; `attachedTo` + `presentFrame` (clear + ≤3 rects from shadow)
- **`VulkanRenderer2D`** — full `DrawingAPI` + tubes `DrawsText` into the borrowed Vulkan framebuffer
- Factory keys via `extendDeferred` + `$windows->extend` — publish tags `tubes-framebuffers-vulkan` / `tubes-windows-vulkan`

> **Note:** ext-vulkan **0.7.0** has no offscreen image/readback APIs yet (Metal-gfx uses `MTLTexture`). Headless pixels live in a PHP shadow; windowed present uses `Vk::presentFrame` rect slots until a richer GPU store lands.

Requirements
------------

[](#requirements)

- PHP 8.4+
- **ext-vulkan** ^0.7.0
- **ext-glfw** (via `microscrap/glfw` ^0.7.0)
- `microscrap/vulkan` ^0.7.0
- `scrapyard-io/tubes` ^0.7.0 (umbrella; provides framebuffers + contracts + rendering + fonts)

Installation
------------

[](#installation)

```
php -m | grep vulkan
composer require microscrap/vulkan-gfx:^0.7.0
php workshop vendor:publish --tag=tubes-framebuffers-vulkan
php workshop vendor:publish --tag=tubes-windows-vulkan
# or: php workshop install:gfx vulkan
```

Usage
-----

[](#usage)

```
use Microscrap\GFX\Vulkan\VulkanHandledFramebuffer;
use Microscrap\GFX\Vulkan\VulkanRenderer2D;
use Microscrap\GFX\Vulkan\VulkanWindowHandler;
use ScrapyardIO\Tubes\Core\MagicAliases\Framebuffer;
use ScrapyardIO\Tubes\Core\MagicAliases\Window;
use ScrapyardIO\Tubes\HumanInput\EngineInput;

$buffer = Framebuffer::driver('vulkan')
    ->size(320, 240)
    ->format(VulkanHandledFramebuffer::rgbaSpec())
    ->create(); // DeferredFramebuffer — headless

$buffer->setPixel(10, 10, 0xFF0000FF);
$bytes = $buffer->flush(VulkanHandledFramebuffer::rgbaSpec());

$window = Window::driver('vulkan')->title('Demo')->size(800, 600)->open();
$fb = $window->framebuffer();
$gfx = (new VulkanRenderer2D)->setFramebuffer($fb);
$gfx->fill(0x141820FF)
    ->fillCircle(400, 300, 80, 0xF0A030FF)
    ->setTextColor(0xFFFFFFFF)
    ->setCursor(40, 40)
    ->print('Vulkan');

$handler = $window->handler();
$input = $handler instanceof VulkanWindowHandler
    ? new EngineInput($handler->inputHandler())
    : null;

$window->present()->pollEvents(); // also refreshes HumanInput devices
$mouse = $input?->mouse();
```

See tubes **[Rendering](https://scrapyard-io.projectsaturnstudios.com/ecosystem/scrapyard-io/tubes/0.7.x/rendering)** and **[Fonts](https://scrapyard-io.projectsaturnstudios.com/ecosystem/scrapyard-io/tubes/0.7.x/fonts)** (if published).

Stack
-----

[](#stack)

```
ext-vulkan + microscrap/vulkan (+ glfw)
  └── microscrap/vulkan-gfx   (Deferred + Window + Renderer2D)  ← this package
        └── scrapyard-io/tubes factories + DrawingAPI + DrawsText

```

License
-------

[](#license)

MIT

###  Health Score

39

—

LowBetter than 84% of packages

Maintenance100

Actively maintained with recent releases

Popularity0

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity42

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

2

Last Release

0d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/10563160?v=4)[Angel Gonzalez](/maintainers/projectsaturnstudios)[@projectsaturnstudios](https://github.com/projectsaturnstudios)

---

Top Contributors

[![projectsaturnstudios](https://avatars.githubusercontent.com/u/10563160?v=4)](https://github.com/projectsaturnstudios "projectsaturnstudios (2 commits)")

###  Code Quality

TestsPest

### Embed Badge

![Health badge](/badges/microscrap-vulkan-gfx/health.svg)

```
[![Health](https://phpackages.com/badges/microscrap-vulkan-gfx/health.svg)](https://phpackages.com/packages/microscrap-vulkan-gfx)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
