Metal game rendering workflow
Skill gaelic-ghost/socket/plugins/game-dev-skills/skills/metal-game-rendering-workflow
Guide native Apple game and custom-renderer work with Metal 3 and Metal 4. Use when Codex owns MTKView, CAMetalLayer, drawable presentation, render passes, command encoding, MSL shaders, pipeline states, GPU resources, Metal capability fallback, GPU capture, or renderer validation; do not use for DirectX or Vulkan porting, which belongs to the Game Porting Toolkit workflow.From its SKILL.md
npx -y skills add gaelic-ghost/socket --skill metal-game-rendering-workflowAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 6 stars6 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
3.9 KB, 721 tokens by cl100k_base, as published. Nobody here has run it
Metal Game Rendering Workflow
Scope
Own a native renderer's data flow from frame input through presentation. Keep the renderer, scene, assets, input, and host app in separate owners; do not turn a local rendering repair into a new engine abstraction.
Read renderer-architecture.md before changing command or resource lifetime. Use Xcode MCP DocumentationSearch, Dash Apple API Reference, or current SDK headers before naming version-sensitive Metal APIs.
Workflow
- Inspect the renderer boundary: view or layer, device, queues, frame scheduler, resource owner, shaders, pipeline cache, and presentation owner.
- Select the smallest API family that meets the target matrix:
- Keep established Metal 3 code on
MTLCommandQueuewhen it already meets the product need. - Adopt Metal 4 only behind an explicit OS-availability plus
device.supportsFamily(.metal4)gate; preserve a Metal 3 path for supported targets that lack it. - Do not mix Metal 3 and Metal 4 command models casually. When they coexist, state the event or shared-event synchronization boundary.
- Keep established Metal 3 code on
- Define a frame contract before adding passes: input resources, output attachments, ownership until GPU completion, load/store behavior, and ordering dependencies.
- Keep resource allocation and transient per-frame state distinct from long-lived meshes, textures, shader libraries, and pipeline caches. Label resources and encoders at creation time.
- Compile or load shaders before the first visible frame when practical. Treat runtime pipeline compilation as a measured, cached exception rather than a default; use a shipped
MTLBinaryArchivefor persistent cold-start pipeline work when the deployment path supports it. - Validate first with API and shader validation, then a representative GPU capture. Use the Metal Performance HUD or Instruments only to answer a concrete timing or memory question.
Architecture Rules
- Make the render loop own drawable acquisition and presentation; scene or simulation code supplies render data rather than presenting drawables.
- Do not retain a drawable beyond its frame or access it after presentation.
- Keep CPU-side resource preparation, GPU encoding, and completion handling as explicit directional phases.
- For an incremental Metal 4 migration, first extract shared render data and pipeline-key construction, retain the Metal 3 backend intact, then move one independent pass or backend at a time. Never mix encoding models without an explicit event and resource-lifetime boundary.
- Use capability checks, not model-name guesses, for GPU families, Metal versions, MetalFX, mesh shaders, ray tracing, sparse resources, or neural paths.
- Use Simulator for fast functional iteration only. Verify final rendering, latency, memory, and performance claims on representative hardware.
Handoffs
metalfx-game-rendering-workflowfor temporal upscaling, interpolation, or denoising.metal-asset-streaming-workflowfor residency, sparse resources, streaming, or asset budgets.metal-neural-rendering-workflowfor a learned rendering pass, tensors, or ML command encoding.game-porting-toolkit-workflowfor a Windows executable, D3D, Vulkan, DXIL, Metal Shader Converter, or an Apple GPTK port.xcode-game-profiling-workflowwhen the next unanswered question is frame pacing, CPU/GPU overlap, memory, or thermals.
Output
Return the renderer owner, chosen Metal family and fallback, frame/resource contract, changed passes or pipelines, evidence gathered, and remaining hardware validation.
What ships with it: 2 files
1.9 KB alongside SKILL.md
agents/
- openai.yaml238 B
references/
- renderer-architecture.md1.7 KB