VTG-as-Compute三阶段管线深度解析:iOS 上实现几何着色器的完整方案
VTG-as-Compute三阶段管线深度解析iOS 上实现几何着色器的完整方案【免费下载链接】MadeiraRun x86-64 Windows PC games on jailed iOS via FEX-Emu Wine DXMT项目地址: https://gitcode.com/GitHub_Trending/mad/MadeiraMadeira是一个让 x86-64 Windows PC 游戏在越狱 iOS 设备上运行的开源项目核心技术栈为 FEX-Emu Wine DXMT。由于 Apple Metal 没有几何着色器Geometry Shader阶段Windows 游戏里大量使用 GS 的画面粒子、植被、水面等在移动端无法直接运行。本文以本项目为例讲解如何用VTG-as-Compute 三阶段管线在 Metal 的 Mesh Shader 上模拟完整的几何着色器流程。上图项目横幅来自 docs/assets/banner.png展示 Madeira 的整体架构基调Windows 系统层Wine x86 转译层FEX 图形转译层DXMT。一、为什么需要 VTG-as-ComputeD3D12 的管线是 VS → GS → PS其中 GS 的核心输入VTGVertex-To-Geometry顶点到几何着色器是 D3D 规范中的虚拟数据结构它不是真实显存而是 GPU 硬件隐式传递的顶点数据GS 可以emit任意数量的新图元输出量在编译期未知。而 Metal 的网格阶段是Vertex / Mesh / Tile三类函数没有 GS 语义。DXMT本项目的 DXIL→Metal 转译器的解法是把 GS 管线降级为两条 Mesh Shader 组成的伪三阶段管线用显式缓冲把 VTG 物化出来。相关能力开关与转换接口在 metal_irconverter.h 中定义Enable geometry and tessellation emulation一节的 API。二、三阶段管线是怎么跑的整个方案可概括为三步全部由 madeira_d3d12.c 驱动① Object 阶段顶点着色器 → object mesh 函数VS 被转译成 mesh 的object函数。每个线程组处理obj_vertex_stride个顶点按顶点大小 × 数量 ≤ 16 KB 载荷自动折算把 VS 输出 图元索引写入共享的 payload 缓冲——这份缓冲就是物化出来的 VTG。② Mesh 阶段几何着色器 → mesh mesh 函数GS 被转译成mesh函数每个线程组最多处理max_input_prims个输入图元从 payload 读 VTG执行原 GS 逻辑把emit出来的顶点写回几何输出缓冲。③ 正式 DrawPS 消费最终顶点主渲染管线照常绘制顶点取第②步的输出像素阶段走普通 PS。对上层应用而言一次DrawInstanced调用被透明地展开成上述三步游戏代码零改动。关键参数由mad_gs_draw()一次性算出grid尺寸、object/mesh 线程组大小、strip 拓扑的重叠顶点数逻辑移植自转译器运行时的IRRuntimeCalculateDrawInfoForGSEmulation等接口源码注释与结构体定义见 madeira_d3d12.c 的struct mad_gs_drawinfo。三、实现中的三个关键设计VTG 物化为共享缓冲绑定槽 4/5 分别放DrawParams与DrawInfo索引格式、拓扑、每线程组图元数等两个阶段共享替代 D3D 隐式 VTG。Strip 拓扑的重叠补偿线带/三角带相邻图元共享顶点obj_vertex_stride会额外加入 overlap线带 1、三角带 2避免跨图元顶点丢失见mad_gs_overlap()。载荷预算驱动的线程组切分以16384 - 32字节为顶点载荷上限向下对齐到图元顶点数再与1024 × maxPrims取小保证每个 object 线程组不爆栈。四、失败时的优雅降级方案并非万无一失工程上做了多级兜底场景行为只有 DXIL 的 GS走完整 object/mesh 三阶段管线推荐路径DXBC 旧字节码 GS尝试转换失败则丢弃 GS 阶段退化为普通 VS→PS 管线无法构建的 GS 管线返回占位 PSO其 draw 被跳过并打日志间接绘制Indirect Draw暂不支持跳过并提示这保证了最坏情况画面降级而不是游戏崩溃。构建与降级的完整判定在mad_pipeline_build的 geometry 分支madeira_d3d12.c。五、相关源码与文档导航管线核心madeira-d3d12/src/pe/madeira_d3d12.cGS draw 计算、管线构建、占位降级DXIL 缓存与转译桥madeira_dxil_cache.h、madeira_ir_unix.mm转译器运行时契约tessellation / geometry 反射结构metal_irconverter_runtime.h可运行的验证着色器立方体、贴图、顶点拉取等回归测试madeira-d3d12/shaders/项目架构文档docs/ 下的 MADEIRA_DOCK.md、BUILDING.md总结VTG-as-Compute 三阶段管线的精髓在于用两次 mesh dispatch 把 D3D 的隐式 VTG 变成显式缓冲再用 Metal mesh shader 的可变图元输出能力复刻 GS 的 emit 语义。这套方案让 iOS 上的 Windows 游戏第一次真正跑起几何着色器也为 MoltenVK、DXMT 一类Windows API → Metal转译器提供了可复用的 GS 模拟范式。【免费下载链接】MadeiraRun x86-64 Windows PC games on jailed iOS via FEX-Emu Wine DXMT项目地址: https://gitcode.com/GitHub_Trending/mad/Madeira创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

AGC深度拆解:从调度指令到逆变器执行的全链路技术解析

AGC深度拆解:从调度指令到逆变器执行的全链路技术解析

AGC不是"调功"那么简单。它是一场毫秒级的算力博弈,决定你的场站是赚钱还是赔钱。 LinkQi 领祺 新能源技术深度系列 AGC深度拆解:从调度指令到逆变器执行的全链路技术解析 AGC(Automatic Generation Control,自动发电…

2026/10/4 2:30:04 阅读更多 →
linux-command 速查手册:xlsatoms 命令详解——列出 X 服务器内部所有原子成分

linux-command 速查手册:xlsatoms 命令详解——列出 X 服务器内部所有原子成分

文档教程 【免费下载链接】linux-command Linux命令大全搜索工具,内容包含Linux命令手册、详解、学习、搜集。https://git.io/linux 项目地址: https://gitcode.com/GitHub_Trending/linux/linux-command 点击查看 免费下载 xlsatoms 是 X Window Syste…

2026/10/4 2:30:04 阅读更多 →
在线学习系统毕设实战:JavaWeb从源码到数据库脚本的完整落地路径

在线学习系统毕设实战:JavaWeb从源码到数据库脚本的完整落地路径

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 2:30:04 阅读更多 →

最新新闻

芬兰语毕业论文卡壳时,这些 AI 搭子怎么分工?从童话语料到 AIGC 自检 ✨

芬兰语毕业论文卡壳时,这些 AI 搭子怎么分工?从童话语料到 AIGC 自检 ✨

先把场景说具体:你是芬兰语专业学生,正在写本科毕业论文,题目暂定为——芬兰语儿童故事中的“小称/亲昵表达”研究,语料可选姆明相关芬兰语译本、芬兰语绘本或短篇童话。你需要从芬兰语原文中摘出带 -nen、-ke、-kainen 等特征的词…

2026/10/4 4:03:04 阅读更多 →
文献综述别再硬堆文献了:旅游管理毕业论文的工具组合清单 [特殊字符]

文献综述别再硬堆文献了:旅游管理毕业论文的工具组合清单 [特殊字符]

先说一个旅游管理同学特别熟悉的场景: 你要写毕业论文,题目大概是 《非遗街区游客文化认同、地方依恋与重游意愿的关系研究》。这门专业本来就“跨界”:一会儿要看旅游体验、服务质量、游客满意度,一会儿又要碰消费者行为、文化传…

2026/10/4 4:03:04 阅读更多 →
Django+大模型美食推荐系统毕设实战:从架构到落地

Django+大模型美食推荐系统毕设实战:从架构到落地

每年毕设季节我都会看到一大批"美食推荐系统"的题目,说实话,大部分都做成了换皮的商品管理系统:用户管理、菜谱增删改查、简单的评分推荐,答辩的时候放两张截图就算完事。但如果你在这个题目里加一个"大模型"…

2026/10/4 4:03:04 阅读更多 →
别再只搜“AI一键生成排名”了:体育运营论文,真正好用的是这套组合拳 [特殊字符]

别再只搜“AI一键生成排名”了:体育运营论文,真正好用的是这套组合拳 [特殊字符]

如果你读的是体育运营与管理,大概率会遇到这样一个毕业任务:以一场本地马拉松、篮球赛事、校园联赛或体育培训机构为案例,分析赛事运营现状,结合问卷、访谈或公开数据,找出问题,并提出可落地的运营优化策略…

2026/10/4 4:03:04 阅读更多 →
1901-2024年省市县三级逐年平均气温数据使用指南(Shp/Excel)

1901-2024年省市县三级逐年平均气温数据使用指南(Shp/Excel)

做气候数据分析的人应该都有这种体会:想研究某个区域一百多年的温度变化,找数据常常是最耗时的一步。站点观测数据零零散散,要自己整理成逐年的区域均值得花不少功夫;栅格气温数据虽然精细,但动辄几十GB,还…

2026/10/4 4:03:04 阅读更多 →
ABB机器人RAPID数据类型实战指南:bool/num/string/dnum选型与避坑

ABB机器人RAPID数据类型实战指南:bool/num/string/dnum选型与避坑

1. ABB机器人数据类型:不是语法课,是现场调试的“通用语言”刚接手ABB机器人项目时,我被现场工程师一句话问懵了:“你连num和dnum都分不清,怎么调轨迹?”——那会儿我还在用PLC的思维看机器人变量&#xff…

2026/10/4 4:02:03 阅读更多 →

日新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 10:36:31 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/3 9:42:35 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/3 9:42:36 阅读更多 →