orklev2-renderer

Explain Orkid renderer and drawable system internals for code-level troubleshooting.

35|16|Updated Feb 10, 2013
One-click install
npx skills add https://github.com/tweakoz/orkid --skill orklev2-renderer
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: orklev2-renderer
Source: https://github.com/tweakoz/orkid/tree/main/.claude/skills/orklev2-renderer
Command: npx skills add https://github.com/tweakoz/orkid --skill orklev2-renderer

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Provides a concentrated reference to understand and answer questions about Orkid's renderer and drawable system, helping developers debug, extend, and optimize the draw pipeline without reading the entire codebase.

Core Features & Use Cases

  • Drawable hierarchy reference: Explains Drawable, DrawableData, Model/Instanced/Callback/String/Billboard drawable types and their factory patterns for implementation and debugging.
  • Draw queue & threading: Documents DrawQueue triple-buffering, acquire/release semantics for update vs render threads, and layer-based enqueueing for frame-safe submission.
  • Renderer sort & draw pipeline: Describes IRenderer enqueue APIs, radix sort ordering, RenderQueue mechanics, and limits for model and callback renderables for performance tuning.
  • Instanced rendering & SSBOs: Details instanced drawable instance data layout, SSBO upload strategy, instance allocation, and single-draw instancing for high-count rendering.
  • Animation and skinning flow: Summarizes Xgm skeletons, animation instances, pose application, bone matrix upload, and skinned draw binding.
  • Python bindings: Notes the pyext drawable and drawable data bindings and common Python usage patterns for creating and manipulating drawables from scripts.
  • Use cases: Debug frustum culling and submesh render ordering, implement custom CallbackDrawable render lambdas, optimize instancing, and port or prototype drawables in Python.

Quick Start

Explain how to inspect DrawQueue triple-buffering and where to find the enqueue and acquire/release methods in the ork.lev2 source to answer a specific rendering question.

Frequently Asked Questions about orklev2-renderer

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How does the Orkid draw queue triple-buffering work for frame-safe rendering?

Orkid draw queue triple-buffering uses acquire and release semantics to separate update and render threads across layer-based enqueueing, ensuring frame-safe submission without blocking the main rendering pipeline.

How do I implement instanced rendering with SSBOs in the Orkid renderer?

Instanced rendering in the Orkid renderer uses SSBOs to upload instance data layouts and allocate instances, enabling single-draw high-count rendering by batching instance attributes directly to the GPU.

What is the IRenderer radix sort pipeline for drawable render queues?

The IRenderer radix sort pipeline orders enqueued renderables within the RenderQueue to optimize draw call submission, managing specific limits for model and callback renderables to tune rendering performance.

How does Xgm skeleton skinning and bone matrix upload function in Orkid?

Xgm skeleton skinning applies animation instances to poses and uploads bone matrices to the GPU, binding skinned meshes to the drawable system for real-time skeletal animation rendering.

Can I create and manipulate Orkid drawables from Python scripts?

Yes, you can create and manipulate Orkid drawables from Python scripts using the pyext bindings, which expose Drawable and DrawableData factory patterns for prototyping and custom rendering logic.

What are the limitations of callback renderables in the Orkid RenderQueue?

Callback renderables in the Orkid RenderQueue are subject to specific count limits within the radix sort pipeline, requiring performance tuning when implementing custom CallbackDrawable render lambdas to avoid exceeding queue capacities.