axiom-graphics
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseGraphics
图形开发
You MUST use this skill for ANY GPU rendering, graphics programming, 3D content display, or display performance work.
任何涉及GPU渲染、图形编程、3D内容显示或显示性能优化的工作,都必须使用本技能。
When to Use
使用场景
Use this router when:
- Porting OpenGL/OpenGL ES code to Metal
- Porting DirectX code to Metal
- Converting GLSL/HLSL shaders to Metal Shading Language
- Setting up MTKView or CAMetalLayer
- Debugging GPU rendering issues (black screen, wrong colors, crashes)
- Evaluating translation layers (MetalANGLE, MoltenVK)
- Optimizing GPU performance or fixing thermal throttling
- App stuck at 60fps on ProMotion device
- Configuring CADisplayLink or render loops
- Variable refresh rate display issues
- Displaying 3D content in a non-game SwiftUI app
- Building AR experiences with RealityKit
- Using RealityView or Model3D in SwiftUI
- Spatial computing or visionOS 3D content
在以下场景中使用本路由:
- 将OpenGL/OpenGL ES代码移植到Metal
- 将DirectX代码移植到Metal
- 将GLSL/HLSL着色器转换为Metal Shading Language
- 设置MTKView或CAMetalLayer
- 调试GPU渲染问题(黑屏、颜色异常、崩溃)
- 评估转换层(MetalANGLE、MoltenVK)
- 优化GPU性能或解决热节流问题
- 应用在ProMotion设备上帧率卡在60fps
- 配置CADisplayLink或渲染循环
- 可变刷新率显示问题
- 在非游戏类SwiftUI应用中显示3D内容
- 使用RealityKit构建AR体验
- 在SwiftUI中使用RealityView或Model3D
- 空间计算或visionOS 3D内容
Routing Logic
路由逻辑
Metal Migration
Metal迁移
Strategy decisions → See skills/metal-migration.md
- Translation layer vs native rewrite decision
- Project assessment and migration planning
- Anti-patterns and common mistakes
- Pressure scenarios for deadline resistance
API reference & conversion → See skills/metal-migration-ref.md
- GLSL → MSL shader conversion tables
- HLSL → MSL shader conversion tables
- GL/D3D API → Metal API equivalents
- MTKView setup, render pipelines, compute shaders
- Complete WWDC code examples
Diagnostics → See skills/metal-migration-diag.md
- Black screen after porting
- Shader compilation errors
- Wrong colors or coordinate systems
- Performance regressions
- Time-cost analysis per diagnostic path
策略决策 → 参考 skills/metal-migration.md
- 转换层 vs 原生重写的决策
- 项目评估与迁移规划
- 反模式与常见错误
- deadline压力下的应对方案
API参考与转换 → 参考 skills/metal-migration-ref.md
- GLSL → MSL着色器转换对照表
- HLSL → MSL着色器转换对照表
- GL/D3D API → Metal API等效映射
- MTKView设置、渲染管线、计算着色器
- 完整WWDC代码示例
诊断排查 → 参考 skills/metal-migration-diag.md
- 移植后黑屏问题
- 着色器编译错误
- 颜色或坐标系异常
- 性能退化
- 各诊断路径的时间成本分析
Display Performance
显示性能
Frame rate & render loops → See skills/display-performance.md
- App stuck at 60fps on ProMotion (120Hz) device
- MTKView or CADisplayLink configuration
- Variable refresh rate optimization
- System caps (Low Power Mode, Limit Frame Rate, Thermal, Adaptive Power)
- Frame budget math (8.33ms for 120Hz)
- Measuring actual vs reported frame rate
帧率与渲染循环 → 参考 skills/display-performance.md
- 应用在ProMotion(120Hz)设备上帧率卡在60fps
- MTKView或CADisplayLink配置
- 可变刷新率优化
- 系统限制(低电量模式、帧率限制、热节流、自适应功耗)
- 帧预算计算(120Hz对应8.33ms)
- 实际帧率与上报帧率的测量
RealityKit (Non-Game 3D Content)
RealityKit(非游戏类3D内容)
For 3D content in non-game SwiftUI apps, AR experiences, and spatial computing, use the RealityKit skills. For game-specific RealityKit patterns, use the axiom-games router instead.
Architecture, ECS, and best practices → See skills/realitykit.md
- Entity-Component-System architecture
- SwiftUI integration: RealityView, Model3D, attachments
- AR on iOS: AnchorEntity types, SpatialTrackingSession
- Materials, physics, interaction
- Performance optimization
API reference → See skills/realitykit-ref.md
- Complete component catalog
- RealityView and Model3D API
- Material system (PBR, Unlit, Occlusion, Custom)
- RealityRenderer (Metal integration)
Troubleshooting → See skills/realitykit-diag.md
- Entity not visible, anchor not tracking
- Gesture not responding, performance issues
- Material problems, physics issues
针对非游戏类SwiftUI应用中的3D内容、AR体验及空间计算场景,使用RealityKit技能。游戏专属的RealityKit模式,请使用axiom-games路由。
架构、ECS与最佳实践 → 参考 skills/realitykit.md
- 实体-组件-系统(ECS)架构
- SwiftUI集成:RealityView、Model3D、附件
- iOS平台AR:AnchorEntity类型、SpatialTrackingSession
- 材质、物理、交互
- 性能优化
API参考 → 参考 skills/realitykit-ref.md
- 完整组件目录
- RealityView与Model3D API
- 材质系统(PBR、无光照、遮挡、自定义)
- RealityRenderer(Metal集成)
故障排查 → 参考 skills/realitykit-diag.md
- 实体不可见、锚点追踪失效
- 手势无响应、性能问题
- 材质异常、物理问题
Decision Tree
决策树
- Translation layer vs native rewrite? → metal-migration
- Porting / converting code to Metal? → metal-migration
- API reference / shader conversion tables? → metal-migration-ref
- MTKView / render pipeline setup? → metal-migration-ref
- Something broken after porting (black screen, wrong colors)? → metal-migration-diag
- Stuck at 60fps on ProMotion device? → display-performance
- CADisplayLink / variable refresh rate? → display-performance
- Frame rate not as expected? → display-performance
- Display a 3D model in SwiftUI? → axiom-realitykit
- Build an AR experience? → axiom-realitykit
- RealityView or Model3D setup? → axiom-realitykit-ref
- 3D content not visible or not tracking? → axiom-realitykit-diag
- Custom Metal rendering of RealityKit content? → axiom-realitykit-ref (RealityRenderer)
- Building a 3D game? → Use axiom-games router instead
- 使用转换层还是原生重写? → metal-migration
- 将代码移植/转换到Metal? → metal-migration
- API参考/着色器转换对照表? → metal-migration-ref
- MTKView/渲染管线设置? → metal-migration-ref
- 移植后出现异常(黑屏、颜色错误)? → metal-migration-diag
- ProMotion设备上帧率卡在60fps? → display-performance
- CADisplayLink/可变刷新率相关问题? → display-performance
- 帧率不符合预期? → display-performance
- 在SwiftUI中显示3D模型? → axiom-realitykit
- 构建AR体验? → axiom-realitykit
- RealityView或Model3D设置? → axiom-realitykit-ref
- 3D内容不可见或追踪失效? → axiom-realitykit-diag
- 自定义Metal渲染RealityKit内容? → axiom-realitykit-ref(RealityRenderer)
- 构建3D游戏? → 请使用axiom-games路由
Anti-Rationalization
常见误区纠正
| Thought | Reality |
|---|---|
| "I'll just translate the shaders line by line" | GLSL→MSL has type, coordinate, and precision differences. metal-migration-ref has conversion tables. |
| "MetalANGLE will handle everything" | Translation layers have significant limitations for production. metal-migration evaluates the trade-offs. |
| "It's just a black screen, probably a simple bug" | Black screen has 6 distinct causes. metal-migration-diag diagnoses in 5 min vs 30+ min. |
| "My app runs at 60fps, that's fine" | ProMotion devices support 120Hz. display-performance configures the correct frame rate. |
| "I'll just use SceneKit for the 3D model" | SceneKit is soft-deprecated. RealityView and Model3D are the modern path. axiom-realitykit covers SwiftUI integration. |
| "I don't need ECS for one 3D model" | Model3D shows one model with zero ECS. RealityView scales to complex scenes. axiom-realitykit shows both paths. |
| 错误想法 | 实际情况 |
|---|---|
| "我直接逐行翻译着色器就行" | GLSL→MSL存在类型、坐标系和精度差异,metal-migration-ref提供了转换对照表。 |
| "MetalANGLE能处理所有问题" | 转换层在生产环境中有明显局限性,metal-migration会评估其利弊。 |
| "只是黑屏而已,应该是小bug" | 黑屏有6种不同成因,metal-migration-diag能在5分钟内完成诊断,而非耗时30分钟以上的猜测。 |
| "我的应用跑60fps就够了" | ProMotion设备支持120Hz,display-performance可配置正确帧率。 |
| "我用SceneKit来展示3D模型就行" | SceneKit已处于软废弃状态,RealityView和Model3D是现代解决方案,axiom-realitykit涵盖SwiftUI集成内容。 |
| "单个3D模型不需要ECS" | Model3D展示单个模型无需ECS,RealityView可扩展到复杂场景,axiom-realitykit展示了两种实现路径。 |
Critical Patterns
核心模式
metal-migration:
- Translation layer (MetalANGLE) for quick demos
- Native Metal rewrite for production
- State management differences (GL stateful → Metal explicit)
- Coordinate system gotchas (Y-flip, NDC differences)
metal-migration-ref:
- Complete shader type mappings
- API equivalent tables
- MTKView vs CAMetalLayer decision
- Render pipeline setup patterns
metal-migration-diag:
- GPU Frame Capture workflow (2-5 min vs 30+ min guessing)
- Shader debugger for variable inspection
- Metal validation layer for API misuse
- Performance regression diagnosis
display-performance:
- MTKView defaults to 60fps (must set preferredFramesPerSecond = 120)
- CADisplayLink preferredFrameRateRange for explicit rate control
- System caps: Low Power Mode, Limit Frame Rate, Thermal, Adaptive Power (iOS 26)
- 8.33ms frame budget for 120Hz
- UIScreen.maximumFramesPerSecond lies; CADisplayLink tells truth
axiom-realitykit (non-game 3D):
- RealityView make/update closure pattern
- Model3D for simple model display
- AR anchoring with AnchorEntity
- Material selection (SimpleMaterial, PBR, Occlusion)
axiom-realitykit-ref (API):
- RealityRenderer for custom Metal rendering of RealityKit content
- Complete material property reference
- RealityView gesture integration
metal-migration:
- 转换层(MetalANGLE)用于快速演示
- 原生Metal重写用于生产环境
- 状态管理差异(GL有状态 → Metal显式状态)
- 坐标系陷阱(Y轴翻转、NDC差异)
metal-migration-ref:
- 完整着色器类型映射
- API等效对照表
- MTKView与CAMetalLayer的选择
- 渲染管线设置模式
metal-migration-diag:
- GPU帧捕获工作流(2-5分钟完成,而非30分钟以上的猜测)
- 着色器调试器用于变量检查
- Metal验证层用于API误用检测
- 性能退化诊断
display-performance:
- MTKView默认帧率为60fps(需设置preferredFramesPerSecond = 120)
- 使用CADisplayLink preferredFrameRateRange进行显式帧率控制
- 系统限制:低电量模式、帧率限制、热节流、自适应功耗(iOS 26)
- 120Hz对应8.33ms帧预算
- UIScreen.maximumFramesPerSecond数据不准确,CADisplayLink能提供真实帧率
axiom-realitykit(非游戏类3D):
- RealityView的make/update闭包模式
- Model3D用于简单模型展示
- 基于AnchorEntity的AR锚定
- 材质选择(SimpleMaterial、PBR、遮挡)
axiom-realitykit-ref(API):
- 使用RealityRenderer自定义Metal渲染RealityKit内容
- 完整材质属性参考
- RealityView手势集成
Example Invocations
调用示例
User: "Should I use MetalANGLE or rewrite in native Metal?"
→ See
skills/metal-migration.mdUser: "I'm porting projectM from OpenGL ES to iOS"
→ See
skills/metal-migration.mdUser: "How do I convert this GLSL shader to Metal?"
→ See
skills/metal-migration-ref.mdUser: "Setting up MTKView for the first time"
→ See
skills/metal-migration-ref.mdUser: "My ported app shows a black screen"
→ See
skills/metal-migration-diag.mdUser: "Performance is worse after porting to Metal"
→ See
skills/metal-migration-diag.mdUser: "My app is stuck at 60fps on iPhone Pro"
→ See
skills/display-performance.mdUser: "How do I configure CADisplayLink for 120Hz?"
→ See
skills/display-performance.mdUser: "ProMotion not working in my Metal app"
→ See
skills/display-performance.mdUser: "How do I show a 3D model in my SwiftUI app?"
→ See
skills/realitykit.mdUser: "I need to display a USDZ model"
→ See
skills/realitykit.mdUser: "How do I set up RealityView?"
→ See
skills/realitykit-ref.mdUser: "My 3D model isn't showing in RealityView"
→ See
skills/realitykit-diag.mdUser: "How do I use RealityRenderer with Metal?"
→ See
skills/realitykit-ref.mdUser: "I need AR in my app"
→ See
skills/realitykit.md用户:"我应该用MetalANGLE还是原生重写Metal?"
→ 参考
skills/metal-migration.md用户:"我正在将projectM从OpenGL ES移植到iOS"
→ 参考
skills/metal-migration.md用户:"如何将这个GLSL着色器转换为Metal?"
→ 参考
skills/metal-migration-ref.md用户:"首次设置MTKView"
→ 参考
skills/metal-migration-ref.md用户:"移植后的应用显示黑屏"
→ 参考
skills/metal-migration-diag.md用户:"移植到Metal后性能下降"
→ 参考
skills/metal-migration-diag.md用户:"我的应用在iPhone Pro上帧率卡在60fps"
→ 参考
skills/display-performance.md用户:"如何配置CADisplayLink以支持120Hz?"
→ 参考
skills/display-performance.md用户:"Metal应用中ProMotion无法工作"
→ 参考
skills/display-performance.md用户:"如何在SwiftUI应用中展示3D模型?"
→ 参考
skills/realitykit.md用户:"我需要展示USDZ模型"
→ 参考
skills/realitykit.md用户:"如何设置RealityView?"
→ 参考
skills/realitykit-ref.md用户:"我的3D模型在RealityView中不显示"
→ 参考
skills/realitykit-diag.md用户:"如何结合使用RealityRenderer与Metal?"
→ 参考
skills/realitykit-ref.md用户:"我的应用需要AR功能"
→ 参考
skills/realitykit.md