elliotttate/vrframework

GitHub: elliotttate/vrframework

VR游戏引擎集成指南与核心框架。

Stars: 1 | Forks: 0

# VR框架 **构建游戏引擎中VR支持指南——以及一个可复用的、与引擎无关的VR/修改核心框架。** 这个仓库包含两个相互关联的部分: 1. **[`guides/`](guides/00-README.md) — 一个17部分的文章指南** (~6,000行) 从基本原理开始,教授如何将发行游戏的单摄像头渲染器弯曲成立体VR——从外部注入DLL,钩子DirectX,欺骗引擎关于摄像机的信息,并在它们到达显示器之前窃取其帧。每个技术都基于三个生产VR修改的真实、引用代码。 2. **一个可复用的、与引擎无关的核心** (`include/`, `src/`) ——可重用的第一层框架(注入、D3D钩子、ImGui覆盖、修改系统、VR运行时、帧定时)以及一个干净的引擎** SPI** (`IEngineAdapter` / `FrameTimeline` / `StereoView`),重复的每个引擎逻辑都折叠到其中。参见[`PORTING.md`](PORTING.md)。 ## 指南系列 从**[`guides/00-README.md`](guides/00-README.md)**开始阅读路径。路线图: | # | 文档 | 它回答了什么 | |---|----------|-----------------| | [01](guides/01-the-big-picture.md) | 大图景 | “将VR化”一个封闭引擎究竟意味着什么? | | [02](guides/02-injection-and-bootstrap.md) | 注入与引导 | 我的代码是如何进入游戏的? | | [03](guides/03-hooking-and-pattern-scanning.md) | 钩子与模式扫描 | 如何拦截没有符号的函数? | | [04](guides/04-graphics-api-interception.md) | 钩子D3D11 & D3D12 | 如何拥有帧? | | [05](guides/05-the-framework-core.md) | 框架核心 | 可重用的脊柱:单例、修改、覆盖 | | [06](guides/06-vr-runtime-integration.md) | OpenVR & OpenXR | 在一个抽象层后与头戴设备通信 | | [07](guides/07-frame-timing-and-synchronization.md) | 帧定时 | 最困难的部分——反射标记与双钩同步 | | [08](guides/08-stereo-rendering-strategies.md) | 立体渲染 | 从一个单摄像头引擎中产生两个眼睛(AFR + 投影) | | [09](guides/09-camera-and-coordinate-systems.md) | 摄像机与坐标数学 | 将你的头部放入世界(基/手性) | | [10](guides/10-submission-and-the-taa-problem.md) | 提交与TAA问题 | 发送眼睛出去 + 历史涂抹修复 | | [11](guides/11-hud-ui-and-menus-in-vr.md) | HUD、UI与菜单 | 使平面UI在立体中可用 | | [12](guides/12-input-and-motion-controllers.md) | 输入与控制器 | 将VR输入连接到游戏手柄游戏 | | [13](guides/13-reading-the-engine-object-model.md) | 读取引擎 | 找到玩家/摄像机的三种方法 | | [14](guides/14-engine-tweaks-and-quirks.md) | 引擎调整与怪癖 | 禁用与VR斗争的效果 | | [15](guides/15-multi-title-architecture-and-build.md) | 多游戏标题与构建 | 一个代码库,多个游戏;构建/代理设置 | | [16](guides/16-porting-checklist-for-a-new-engine.md) | 端口检查表 | 里程碑,一个接一个 | 指南基于**~180 `file:line`引用**,这三个参考项目,并不断比较RE引擎、Creation Engine 2和Anvil如何以不同的方式解决相同的问题。 ### 三个参考项目 | 项目 | 引擎 | 游戏 | |---|---|---| | [REFramework](https://github.com/praydog/REFramework) (praydog) | RE引擎 | 生化危机、怪物猎人、DD2 | | starfield2vr (mutars) | Creation Engine 2 | 星际迷航 | | anvilengine2vr (mutars) | Ubisoft Anvil | AC Odyssey / Valhalla / Mirage | ## 可复用的核心 指南汇聚的分层架构: ``` LAYER 3 per-game DATA offsets manifest + per-title settings + reclass structs LAYER 2 per-engine ADAPTER implements spi/IEngineAdapter (frame pacing, projection, view, HUD, input) — the per-engine .cpp hooks ───────────────────────────────────────────────────────────────────────────────────── LAYER 1 UNIVERSAL CORE ← include/ + src/ in this repo Framework / g_framework lifecycle, window, input, d3d hooks, imgui overlay Mod + ModValue widgets config-backed UI; zero engine types hooks/ vr/ mods/VR D3D11/12 hooks, OpenVR/OpenXR runtime, stereo submit spi/ IEngineAdapter, FrameTimeline, StereoView, EngineCaps utility/ memory/ Config, ScopeProfiler, pattern-scan relocation helpers ``` **状态:** 合同头文件已完成且整洁;几个 `.cpp` 主体是**带有`PORT FROM:`指针的存根**,指向REFramework源代码的精确位置以提取。这是一个教学/起始框架,不是一个完成的运行时——参见[`PORTING.md`](PORTING.md)以获取文件映射和[`guides/16`](guides/16-porting-checklist-for-a-new-engine.md)以获取启动顺序。 ``` add_subdirectory(extern/vrframework) target_link_libraries(MyEngineVR PRIVATE vrframework) ``` ## 仓库布局 ``` vrframework/ ├── guides/ the 17-part written guide (start at 00-README.md) ├── include/ public headers: Framework, Mod, spi/, mods/VR, hooks/, vr/, utility/ ├── src/ implementations (real where trivial; stubs with PORT FROM: notes) ├── examples/ an example IEngineAdapter + a per-game offsets manifest ├── PORTING.md stub → REFramework source map ├── README.md you are here └── LICENSE MIT (preserves praydog's upstream copyright) ``` ## 许可证 MIT。这是praydog/REFramework(MIT,© praydog)的衍生作品;版权声明保留在[`LICENSE`](LICENSE)中。另见[`CREDITS.md`](CREDITS.md)。 ## 关于范围与伦理的说明 参考项目是单玩家视觉修改,它们注入到你拥有的本地进程——这是指南假设的上下文。在更广泛的世界中存在相同的技巧,但规则不同:尊重反作弊、EULA和在线游戏。不要在多人游戏中使用此指南。
标签:DirectX, OpenVR, OpenXR, SOC Prime, VR开发, VR游戏开发, 代码示例, 图形API, 图形渲染, 帧率控制, 开发工具, 开发指南, 开发框架, 性能同步, 技术文档, 数据分析, 框架设计, 模块化, 游戏优化, 游戏开发, 游戏开发教程, 游戏开发社区, 游戏开发资源, 游戏引擎, 游戏引擎扩展, 游戏引擎集成, 虚拟现实, 跨平台开发