Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

microscrap/vulkan-gfx — Vulkan Deferred framebuffer for ScrapyardIO

Docs Latest Version on Packagist Tests PHP Version Require ext-vulkan License: MIT

Docs: ScrapyardIO — microscrap/vulkan-gfx 0.7.x

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

  • VulkanHandledFramebuffer extends DeferredFramebuffer (not Managed / not PixelStore)
  • HeadlessVkInstance + CPU shadow canvas (no window required)
  • WindowedWindow::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

  • 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

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

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 and Fonts (if published).

Stack

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

License

MIT

About

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

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors