Pixijs
RSamaium/CanvasEngine
Use this skill first for ANY PixiJS v8 task; it routes to the right specialized skill for the job.
ALWAYS use when porting an existing D3D11 engine or renderer to AGFX — translating ID3D11Device/DeviceContext/InputLayout/state-object code to agfxDevice/agfxCommandBuffer/agfxRenderPipeline calls…
$ npx skills add AmelieHeinrich/agfx --skill agfx-porting-from-d3d11 -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install AmelieHeinrich/agfx agfx-porting-from-d3d11 --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/AmelieHeinrich/agfx.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/agfx-porting-from-d3d11 .claude/skills/agfx-porting-from-d3d11 && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "agfx-porting-from-d3d11" agent skill from https://github.com/AmelieHeinrich/agfx/tree/main/.claude/skills/agfx-porting-from-d3d11 into .claude/skills/agfx-porting-from-d3d11/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "agfx-porting-from-d3d11", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/AmelieHeinrich/agfx/tree/main/.claude/skills/agfx-porting-from-d3d11Type this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add AmelieHeinrich/agfx --skill agfx-porting-from-d3d11 -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install AmelieHeinrich/agfx agfx-porting-from-d3d11 --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/AmelieHeinrich/agfx.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/agfx-porting-from-d3d11 .agents/skills/agfx-porting-from-d3d11 && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "agfx-porting-from-d3d11" agent skill from https://github.com/AmelieHeinrich/agfx/tree/main/.claude/skills/agfx-porting-from-d3d11 into .agents/skills/agfx-porting-from-d3d11/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "agfx-porting-from-d3d11", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add AmelieHeinrich/agfx --skill agfx-porting-from-d3d11 -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install AmelieHeinrich/agfx agfx-porting-from-d3d11 --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/AmelieHeinrich/agfx.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/agfx-porting-from-d3d11 .cursor/skills/agfx-porting-from-d3d11 && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "agfx-porting-from-d3d11" agent skill from https://github.com/AmelieHeinrich/agfx/tree/main/.claude/skills/agfx-porting-from-d3d11 into .cursor/skills/agfx-porting-from-d3d11/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "agfx-porting-from-d3d11", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/AmelieHeinrich/agfx.git --path .claude/skills/agfx-porting-from-d3d11--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add AmelieHeinrich/agfx --skill agfx-porting-from-d3d11 -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install AmelieHeinrich/agfx agfx-porting-from-d3d11 --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/AmelieHeinrich/agfx.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/agfx-porting-from-d3d11 .gemini/skills/agfx-porting-from-d3d11 && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "agfx-porting-from-d3d11" agent skill from https://github.com/AmelieHeinrich/agfx/tree/main/.claude/skills/agfx-porting-from-d3d11 into .gemini/skills/agfx-porting-from-d3d11/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "agfx-porting-from-d3d11", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install AmelieHeinrich/agfx agfx-porting-from-d3d11Installs for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add AmelieHeinrich/agfx --skill agfx-porting-from-d3d11 -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/AmelieHeinrich/agfx.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/agfx-porting-from-d3d11 .github/skills/agfx-porting-from-d3d11 && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "agfx-porting-from-d3d11" agent skill from https://github.com/AmelieHeinrich/agfx/tree/main/.claude/skills/agfx-porting-from-d3d11 into .github/skills/agfx-porting-from-d3d11/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "agfx-porting-from-d3d11", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add AmelieHeinrich/agfx --skill agfx-porting-from-d3d11 -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install AmelieHeinrich/agfx agfx-porting-from-d3d11 --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/AmelieHeinrich/agfx.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/agfx-porting-from-d3d11 .opencode/skills/agfx-porting-from-d3d11 && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "agfx-porting-from-d3d11" agent skill from https://github.com/AmelieHeinrich/agfx/tree/main/.claude/skills/agfx-porting-from-d3d11 into .opencode/skills/agfx-porting-from-d3d11/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "agfx-porting-from-d3d11", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
agfx-porting-from-d3d11ALWAYS use when porting an existing D3D11 engine or renderer to AGFX — translating ID3D11Device/DeviceContext/InputLayout/state-object code to agfxDevice/agfxCommandBuffer/agfxRenderPipeline calls…
Agfx Porting From D3d11 is an agent skill from AmelieHeinrich/agfx. ALWAYS use when porting an existing D3D11 engine or renderer to AGFX — translating ID3D11Device/DeviceContext/InputLayout/state-object code to agfxDevice/agfxCommandBuffer/agfxRenderPipeline calls, converting HLSL from D3D11's register(t/b/u/s) immediate-context binding model to AGFX bindless, or mapping D3D11 concepts (immediate/deferred context, input layouts, state objects, swap chain) onto their AGFX equivalents. Trigger on ID3D11, D3D11, HRESULT device/context calls…
Its SKILL.md is about 3.6k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Game Development, covering Shaders and Translation. The licence is MIT.
7 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit d8ad38b. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are cpp).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Agfx Porting From D3d11 loads about 3.6k tokens when it runs. Until then it costs about 253 tokens; SKILL.md has 1,463 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from AmelieHeinrich/agfx at commit d8ad38b, republished under its MIT licence (© AmelieHeinrich). 1,463 words, ~3,560 tokens.
.claude/skills/agfx-porting-from-d3d11/SKILL.md (or your agent's skills folder).D3D11 is an immediate-mode, implicit-synchronization API: one ID3D11DeviceContext records and submits state changes call-by-call, resource lifetime and GPU/CPU hazard tracking are handled by the driver, and shader resource binding happens through slot-based VSSetShaderResources/PSSetConstantBuffers/PSSetSamplers calls tied to register(tN)/register(bN)/register(sN) in HLSL. AGFX is the opposite in every one of these respects: commands are recorded into explicit agfxCommandBuffers and submitted explicitly, resource-state transitions and GPU/CPU sync are the caller's job (barriers, fences), and shader resource access is fully bindless through ResourceHandle — there is no slot to bind to.
This is a bigger conceptual gap than porting from D3D12 or Vulkan (both of which already use explicit command buffers/lists and know about resource states), so treat this as "rebuild the frame around AGFX's model," not "translate call-by-call." If the codebase's calling style already looks like D3D11 (single global immediate context, no manual barriers) and the goal is to preserve that programming model, consider porting to agfx::ez (using-agfx-ez) instead of raw AGFX — it's an immediate-mode C++ wrapper deliberately designed to feel like D3D11's context, and removes most of the work described below.
Owns:
agfx::ez instead of raw AGFX for this kind of portDoesn't own:
agfx-* subsystem skills, or using-agfx-ez if porting to the ez layeragfx-porting-from-d3d12, since a D3D11 codebase won't have these to begin withagfx/agfx.h is the entire public API surface — read it top to bottom once before starting. agfx/agfx_ez.hpp is the immediate-mode convenience layer (using-agfx-ez) — read it if recommending/using the ez path. agfx_ez_demo/agfx_ez_demo_main.cpp is a complete small program against the ez layer, structurally closer to a typical D3D11 app than agfx_demo/. agfx_demo/ (particularly deferred_renderer.cpp) is the raw-AGFX reference for larger/more structured engines.
| D3D11 | AGFX | Notes |
|---|---|---|
ID3D11Device | agfxDevice* | agfxDeviceCreate |
ID3D11DeviceContext (immediate) | agfxCommandBuffer* (+ agfxCommandQueue*) | D3D11's single implicit context becomes an explicitly recorded-and-submitted command buffer; there is no implicit "current context" |
ID3D11DeviceContext (deferred) + FinishCommandList/ExecuteCommandList | multiple agfxCommandBuffers submitted via agfxCommandQueueSubmit | AGFX command buffers are always "deferred" in D3D11 terms — recorded, then explicitly submitted; there's no separate deferred-context concept |
Swap chain (IDXGISwapChain, CreateDeviceAndSwapChain) | agfxSwapChain* | agfxSwapChainCreate/AcquireNextTexture/Present/Resize — see agfx-presentation-and-swapchain |
ID3D11Texture2D + CreateShaderResourceView/CreateRenderTargetView/CreateUnorderedAccessView/CreateDepthStencilView | agfxTexture* + agfxTextureView*/agfxRenderTarget* | one texture object; separate typed views (SRV/UAV analog is agfxTextureView, RTV/DSV analog is agfxRenderTarget) created explicitly, not implicitly bound |
ID3D11Buffer (vertex/index/constant, D3D11_BIND_* flags) | agfxBuffer* | agfxBufferUsage bitflags replace D3D11_BIND_VERTEX_BUFFER/INDEX_BUFFER/CONSTANT_BUFFER/SHADER_RESOURCE/UNORDERED_ACCESS; agfxBufferMemoryType replaces D3D11_USAGE_DYNAMIC/DEFAULT/STAGING |
Map/Unmap (D3D11_MAP_WRITE_DISCARD) | agfxBufferMap/agfxBufferUnmap | only valid on AGFX_BUFFER_MEMORY_TYPE_CPU_TO_GPU/GPU_TO_CPU buffers, same "map, write, unmap, submit" shape as D3D11 dynamic buffers |
ID3D11InputLayout + IASetInputLayout/IASetVertexBuffers | deleted — vertex pulling | there is no input layout or vertex-buffer binding in AGFX; vertex shaders take SV_VertexID and manually load from an AGFXStructuredBuffer — see agfx-writing-bindless-shaders |
VSSetShaderResources/PSSetShaderResources/CSSetShaderResources, *SetConstantBuffers, *SetSamplers | deleted — bindless | no slot-based binding of any kind; every resource is accessed via ResourceHandle passed through push constants — see agfx-writing-bindless-shaders |
register(t0)/register(b0)/register(s0) in HLSL, tied to slot-binding calls | AGFX's bindless header + ResourceHandle | shader HLSL needs rewriting, not just host code — see agfx-writing-bindless-shaders |
ID3D11VertexShader/PixelShader/ComputeShader + CreateVertexShader etc. (from precompiled .cso/ID3DBlob) | agfxShaderModule* | AGFX compiles HLSL itself via agfxCompileShader (DXC → DXIL on Windows, Metal IR on macOS, SPIR-V on Linux); if the D3D11 engine compiles offline, switch to AGFX's runtime/build-time compiler pipeline — see agfx-writing-bindless-shaders |
ID3D11BlendState/CreateBlendState | fields on agfxRenderPipelineCreateInfo (blendEnable[], srcColorBlendFactor[], etc.) | baked into the pipeline object at creation, not a separately bound state object |
ID3D11RasterizerState/CreateRasterizerState | fields on agfxRenderPipelineCreateInfo (fillMode, cullMode, frontFace) | same — baked into the pipeline, no separate bind call |
ID3D11DepthStencilState/CreateDepthStencilState | fields on agfxRenderPipelineCreateInfo (depthTestEnable, depthWriteEnable, depthCompareOp) | same; AGFX has no separate stencil support to map — drop stencil-only logic or flag it as unsupported |
ID3D11SamplerState/CreateSamplerState | agfxSampler* | agfxSamplerCreate; obtained as a bindless handle like any other resource, not bound to a slot |
OMSetRenderTargets | agfxRenderTarget + agfxRenderPassBegin | D3D11's implicit "currently bound RTVs" becomes an explicit render pass with attachments and load/store ops — see agfx-render-targets-and-passes |
ClearRenderTargetView/ClearDepthStencilView | agfxLoadOp = AGFX_LOAD_OPERATION_CLEAR on the render pass attachment | clears are declared as part of starting the pass, not a separate call |
Draw/DrawIndexed/DrawInstanced | agfxRenderPassDraw/agfxRenderPassDrawIndexed | 1:1 in spirit; called on the render pass object, not the context |
Dispatch | agfxComputePassDispatch | recorded within an agfxComputePass, not directly on the context |
| No explicit resource-state concept (driver-managed hazard tracking) | agfxResourceState + agfxCommandBufferTextureBarrier (textures) / agfxCommandBufferMemoryBarrier (buffers) | this is the single biggest new burden a D3D11 port takes on: every render target write → shader read transition, every UAV write → next-read ordering, must now be barriered by hand — see agfx-synchronization |
| No explicit CPU/GPU sync (driver-managed) | agfxFence + frame-in-flight command buffer rotation | D3D11 never required manual fencing; AGFX does — see agfx-synchronization |
agfx::ez. If the D3D11 code is architecturally simple (single render loop, no deferred contexts, resources created ad hoc rather than pooled/tracked), porting to agfx::ez (using-agfx-ez) preserves the D3D11-like "immediate calls, no manual barrier bookkeeping for the common case" feel and is significantly less work. Reserve raw AGFX for engines that need explicit control the ez layer doesn't expose (custom barrier scheduling, more than one command buffer per frame, non-2D texture types).agfxDeviceCreate/agfxCommandQueueCreate/agfxSwapChainCreate (or agfx::ez::Context if using ez) and get a cleared back buffer presenting — validates build/link before any rendering logic moves over.agfx::ez::Context does this internally). D3D11 had no fence concept to port; this is new code, not translated code. See agfx-synchronization.ID3D11Buffer/ID3D11Texture2D creation to agfxBufferCreate/agfxTextureCreate (or agfx::ez::Context::CreateVertexBuffer/CreateTexture2D etc.). Drop Map/Unmap-per-frame dynamic-buffer patterns in favor of AGFX's ring-buffered constants if using ez, or a hand-rolled equivalent if using raw AGFX.OMSetRenderTargets + draw sequence to an agfxRenderPassBegin/draw/End (agfx-render-targets-and-passes), including the barriers D3D11 never required (agfx-synchronization, or agfx::ez::Context::TransitionTexture/SetRenderTargets, which tracks this automatically for ez-created resources).register(tN/bN/sN) slot declarations, replace with AGFX_PUSH_CONSTANTS + ResourceHandle fields and AGFXTexture2D/AGFXStructuredBuffer/AGFXSampler::Create(handle) calls, replace input-layout vertex fetch with vertex pulling from SV_VertexID (agfx-writing-bindless-shaders). A shader rewritten without its host-side push-constant struct updated in the same pass won't compile — do these together.agfx-presentation-and-swapchain). AGFX also offers mesh shaders, inline ray tracing, and multi-draw indirect, none of which D3D11 has — see "Advanced features" below if the port is also a modernization.All three are supported as of AGFX v1.2.0 (ray tracing landed in v1.1.0, multi-draw indirect in v1.2.0). Each is capability-gated — query once and keep the fallback path alive, since none are universal (in practice: Apple M3+, NVIDIA RTX 20+, AMD RX 6000+, or Intel Arc):
agfxDeviceInfo info = {};
agfxDeviceGetInfo(device, &info);
// info.supportsRayTracing / info.supportsMeshShaders / info.supportsMultiDrawIndirect| D3D11 | AGFX | Notes |
|---|---|---|
DrawInstancedIndirect / DrawIndexedInstancedIndirect | agfxIndirectBundle + PrepareIndirectBundle/ExecuteIndirectBundle | D3D11's is a single indirect draw from a fixed buffer; AGFX's is multi-draw with a GPU-written count, so this is an upgrade, not a 1:1 port — a D3D11 engine looping single indirect draws should collapse that loop into one bundle |
| (no D3D11 equivalent) | mesh shaders (agfxRenderPassDrawMesh) | new capability; nothing to translate |
| (no D3D11 equivalent) | inline ray tracing (RayQuery) | new capability; D3D11 has no DXR |
The one structural mismatch to flag early: AGFX supports inline ray tracing only — RayQuery/TraceRayInline from a compute shader. There is no ray-generation/any-hit/closest-hit pipeline, no hit groups, and no shader binding table. A source engine built around a ray-tracing pipeline needs those passes restructured into compute dispatches that trace inline and shade at the hit point themselves; that is a redesign, not a translation, and is worth surfacing to the user before starting.
Delegate the actual work: agfx-raytracing (acceleration structures, inline tracing), agfx-mdi (indirect bundles, GPU culling), agfx-writing-bindless-shaders (main_ms/main_as entry points, reflected group sizes) with agfx-render-targets-and-passes for agfxRenderPassDrawMesh.
agfx-synchronization) — missing one doesn't fail to compile, it produces silently wrong or flickering output.Map-every-frame dynamic buffer patterns 1:1. It still works (agfxBufferMap on a CPU_TO_GPU buffer), but without frame-in-flight fencing around it, per-frame constant writes race the GPU reading the previous frame's data — either drive it through agfx::ez's ring buffer or replicate that pattern by hand in raw AGFX.PSSetShaderResources etc.) as dead code instead of deleting them along with the input layout and state objects — there's nothing on the AGFX side to bind to; delete outright rather than translate.© AmelieHeinrich, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .claude/skills/agfx-porting-from-d3d11 of AmelieHeinrich/agfx.
Open the folder on GitHubat commit d8ad38b
Agfx Porting From D3d11 next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Agfx Porting From D3d11 this skillAmelieHeinrich/agfx | 146 | — | ~3.6k | Automated safety check: Pass | MIT | |
| PixijsRSamaium/CanvasEngine | 401 | 2 repos | ~1.6k | Automated safety check: Pass | MIT | |
| New ExperimentTresjs/tres | 3.8k | — | ~782 | Automated safety check: Pass | MIT | |
| Anatomywheresryan22/anatomy | 500 | — | ~7.7k | Automated safety check: Pass | MIT | |
| Assets Shader List AllIvanMurzak/Unity-MCP | 4.4k | — | ~435 | Automated safety check: Pass | Apache-2.0 | |
| Handle Sdr Tonemap Lutclshortfuse/renodx | 4.5k | — | ~7.3k | Automated safety check: Pass | MIT |
RSamaium/CanvasEngine
Use this skill first for ANY PixiJS v8 task; it routes to the right specialized skill for the job.
Tresjs/tres
Create a new experiment in TresJS Lab with all necessary files
wheresryan22/anatomy
Build crafted, highly detailed, interactive isometric SVG figures that explain a technical idea as a real physical object (a test rig, a dial gauge, a cabinet of drawers, a plotter, a lock), with…
IvanMurzak/Unity-MCP
List all shaders available in the project assets and packages, sorted by name.
clshortfuse/renodx
RenoDX HLSL/Slang shader workflow for proven shader-side SDR tonemap, hard clip, LUT, color grade, and HDR bridge changes.
flopperam/unreal-engine-mcp
Walks an Unreal Engine MCP agent through building materials, Niagara particle systems, Chaos destruction, and curve assets with inspect-then-edit steps.
AmelieHeinrich/agfx
ALWAYS use when porting an existing D3D12 engine or renderer to AGFX — translating ID3D12Device/CommandList/PipelineState/RootSignature/DescriptorHeap code to…
AmelieHeinrich/agfx
ALWAYS use when porting an existing OpenGL (or OpenGL ES) engine or renderer to AGFX — translating glGenTextures/glBindTexture/glBufferData/glUseProgram/FBO code to…
AmelieHeinrich/agfx
ALWAYS use when porting an existing Vulkan engine or renderer to AGFX — translating VkDevice/VkCommandBuffer/VkPipeline/VkDescriptorSet/VkRenderPass code to…
AmelieHeinrich/agfx
ALWAYS use when creating, resizing, or presenting through an agfxSwapChain in AGFX — window/layer handle setup, HDR toggling, vsync, resize handling, or back buffer acquire/present.
AmelieHeinrich/agfx
ALWAYS use when creating agfxRenderTarget or agfxRenderPass objects in AGFX, or wiring up color/depth attachments, load/store ops, viewport/scissor, or draw calls within a render pass.
AmelieHeinrich/agfx
ALWAYS use when working with AGFX fences, frames-in-flight pacing, queue signal/wait, resource-state barriers, or the barrier "agglomerate" flag.
Categories
ALWAYS use when porting an existing D3D11 engine or renderer to AGFX — translating ID3D11Device/DeviceContext/InputLayout/state-object code to agfxDevice/agfxCommandBuffer/agfxRenderPipeline calls…. Agfx Porting From D3d11 is an agent skill from AmelieHeinrich/agfx. ALWAYS use when porting an existing D3D11 engine or renderer to AGFX — translating ID3D11Device/DeviceContext/InputLayout/state-object code to agfxDevice/agfxCommandBuffer/agfxRenderPipeline calls, converting HLSL from D3D11's register(t/b/u/s) immediate-context binding model to AGFX bindless, or mapping D3D11 concepts (immediate/deferred context, input layouts, state objects, swap chain) onto their AGFX equivalents.
Agfx Porting From D3d11 fits situations like: porting an existing D3D11 engine; converting HLSL from D3D11s register(t/b/u/s) immediate-context binding model to AGFX bindless; mapping D3D11 concepts (immediate/deferred context; swap chain) onto their AGFX equivalents.
Run `npx skills add AmelieHeinrich/agfx --skill agfx-porting-from-d3d11 -a claude-code`. Or copy the skill folder (.claude/skills/agfx-porting-from-d3d11 in AmelieHeinrich/agfx) into .claude/skills/agfx-porting-from-d3d11 in your project. Claude Code loads it when a task matches its description.
Run `npx skills add AmelieHeinrich/agfx --skill agfx-porting-from-d3d11 -a codex`. Or copy the skill folder (.claude/skills/agfx-porting-from-d3d11 in AmelieHeinrich/agfx) into .agents/skills/agfx-porting-from-d3d11 in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add AmelieHeinrich/agfx --skill agfx-porting-from-d3d11 -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/agfx-porting-from-d3d11, .gemini/skills/agfx-porting-from-d3d11, .github/skills/agfx-porting-from-d3d11 and .opencode/skills/agfx-porting-from-d3d11 in your project.
SKILL.md names no scripts, command-line tools or credentials: Agfx Porting From D3d11 is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Agfx Porting From D3d11 is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.6k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Agfx Porting From D3d11: Pixijs (RSamaium/CanvasEngine, 401 stars), New Experiment (Tresjs/tres, 3.8k stars), Anatomy (wheresryan22/anatomy, 500 stars) and Assets Shader List All (IvanMurzak/Unity-MCP, 4.4k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
AmelieHeinrich (a GitHub user) maintains it in AmelieHeinrich/agfx, which has 146 GitHub stars. The repository holds 8 skills in this directory. The repository was last updated on September 27, 2026.
Source: AmelieHeinrich/agfx on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.