提交约定
在每个提交主题前添加一个或多个类别标签。标签的排列顺序应从宽泛到具体。向后移植和插件添加必须链接到原始提交或仓库。
跟踪上游引擎的分支会积累来自多个来源的大量变更历史记录。能够扫描这些历史记录,区分优化、渲染功能和向后移植,是未来合并易于管理的关键。
前缀
在提交主题的开头使用以下前缀之一。
| 前缀 | 用途 |
|---|---|
[Rendering] |
渲染器相关工作 — 标签树中最常用的标签 |
[Rendering Feature] |
新增或变更的渲染功能 |
[RT] |
光线追踪 |
[Forward] |
前向渲染器路径 |
[Optimization] |
性能优化,不改变引擎行为 |
[Backport] |
从后续引擎版本中移植的更改 |
[Animation] |
动画系统 |
[GameplayFramework] |
相机、角色移动、AI 以及其他游戏框架组件 |
[Memory] |
UObject 内存子系统 |
[DOP] |
面向数据的工作,包括 ECS |
[PhysX] |
物理引擎 |
[Plugin] |
添加、更新或移除插件 |
[Lib] |
第三方库更新 |
[Toolchain] |
编译器、SDK 和构建环境 |
[Defaults] |
对已发布引擎的更改默认设置 |
[Debloat] |
移除或限制默认配置中的某些功能或配置成本 |
[Mobile] |
移动端专属功能 |
[VR] |
VR 专属功能 |
[AMD] |
AMD 专属功能 |
[NVIDIA] |
NVIDIA 专属功能 |
[Fix] |
错误修复 |
堆叠前缀
大多数重要的变更都会带有多个标签。请按照从宽泛到具体的顺序排列这些标签,并将向后移植标记放在最后,以便变更的来源显示在末尾:
[Rendering][RT][Optimization][Adapted Backport 5.3] Exclude raygen shaders from RTPSOs
unless the corresponding feature is enabled
[Rendering][Forward][Backport 5.6] Fix incorrect alpha from MSAA resolve with explicit fmask
[Rendering][Shading Models] Remove unnecessary branch for the Toon shading model
使用 Adapted Backport 而不是 Backport 表示上游更改未能正确应用,而是针对 Vite 代码库进行了重写。这一点很重要,因为之后有人需要判断上游对原始提交的修复是否也适用于此处。
当更改确实只涉及一项内容时,使用单标签提交是可以接受的:
[Toolchain] Compiling on VS 18.8.2 (_MSC_VER 1950) and Windows SDK 10.0.26100
[Plugin] PhysX Blast + engine-side changes for proper support
[Gating] RT translucency guard
[Fix] Guard RTXDI CVar behind ShouldRenderRayTracingSampledLighting
如果一项更改涉及完全不相关的领域,请将其拆分,而不是将表格中的所有标签都堆到一个提交中。
归属信息
警告: 在进行向后移植或添加插件时,请在提交正文中包含指向原始提交或仓库的正确链接。
这并非出于礼貌,而是一项实际要求。如果没有链接,任何人都无法确定集成的是哪个版本,上游是否已修复其中的错误,或者许可证是否允许重新分发。
[Plugin] Add Kawaii Physics 1.18.0, backported from UE5
Source: https://github.com/pafuhana1213/KawaiiPhysics
Upstream tag: v1.18.0
Changes: UE5 API calls replaced with 4.27 equivalents in
KawaiiPhysicsEditMode.cpp and AnimNode_KawaiiPhysics.cpp
对于单个上游提交的反向移植,请链接提交本身,而不仅仅是代码仓库。请参阅反向移植部分。
提交正文
主题行说明更改的内容。正文应说明更改的原因以及审阅者需要了解的信息:
- 更改解决的问题
- 任何声称是优化的更改,都应说明其影响程度
- 任何添加的控制台变量或编译时开关及其默认值
- 任何故意未完成的操作
影响程度至关重要。以[Optimization]为前缀且没有具体数值的提交仅是一种断言,而非结果。请参阅性能分析部分,了解如何生成可信的更改前后对比。
分支
| 规则 | |
|---|---|
| 未完成的工作应放在单独的分支上 | 不要将未完成的工作推送到共享分支 |
| 记录剩余工作 | 在分支或提交正文中添加简短注释 |
| 删除临时分支 | 一旦合并或放弃 |
| 告知其他 fork 用户 | 以免浪费并行工作 |
控制台变量和开关
新的控制台变量遵循引擎现有的命名规则。Vite 特有的变量以子系统名称为前缀,后跟 Vite:
| 示例 | 子系统 |
|---|---|
r.Vite.SMAA.Mode |
渲染器 |
r.Vite.SSAO |
渲染器 |
p.VitePhysXFixedTimestep.Enabled |
物理引擎 |
编译时开关使用 VITE_ 前缀,并且必须在 Engine\Source\Runtime\Core\Public\Misc\CoreDefines.h 中定义默认值:
#ifndef VITE_MY_FEATURE
#define VITE_MY_FEATURE 0
#endif
在同一变更中,请将任何新的开关记录在编译时开关部分。未记录的开关可能会被调试控制台变量的用户发现,而该变量实际上没有任何作用——这正是 VITE_RT_PSO_DEBLOAT 之前导致的故障模式。