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, 图形渲染, 帧率控制, 开发工具, 开发指南, 开发框架, 性能同步, 技术文档, 数据分析, 框架设计, 模块化, 游戏优化, 游戏开发, 游戏开发教程, 游戏开发社区, 游戏开发资源, 游戏引擎, 游戏引擎扩展, 游戏引擎集成, 虚拟现实, 跨平台开发