👻记给 UnrealEngine 的一次 Contribution
00 分钟
2024-8-23
2024-8-23
type
status
date
slug
summary
tags
category
icon
password
前些天翻看 UE5.4 Release Notes 的时候居然看到了 GitHub 社区感谢名单里有我的名字:
notion image
愣了一会才想起来或许是之前这条 Pull Request 被合并的原因(需要有 UnrealEngine 访问权限才能看到):
印象中是当时在工作中需要魔改引擎 Mobile Renderer 里 Stencil Bits 的配置,因为 UE 里的 Stencil Bits 本来就相当紧张,我需要想办法腾出一个空的 Bit 来存放我自己的 Stencil,后来我看见 STENCIL_MOBILE_SKY_MASK 虽然在 Shader 里定义了,但实际上没有使用。
 
翻阅代码发现 C++ 注释里有写这个 Stencil Bit 其实是用来标记 Sky Sphere Mesh 的,之后在 Mobile Fog Rendering 会跳过带这个 Stencil 标记的像素。一番检查后我确定这个 Stencil Bit 没有按照设想去生效,因为 Sky Mesh 和 Fog Rendering 的 Pipeline State 都没有设置这个 Stencil,这时候我就意识到,UE 这里有 Bug。
 
当然 UE 有 Bug 是很正常的事,通常一些比较明显的 Bug 经过一两个版本就会被修复,于是我下载了 ue5-main 分支的最新代码发现这个问题其实还是没有被修复,于是我提交了 Pull Request。
 
接着一天内 UE 那边的开发老哥就爽快地承认了确实有问题,然后过了大概两三个月,这条 Pull Request 最终被合并到了 UE5 主干,接着 UnrealBot 通知我已经合并了,感谢贡献。
 
据说 UE 内部其实使用 Perforce 进行版本管理的,GitHub 上的版本其实只是他们单独维护的而已,所以我们在 GitHub 上贡献 Pull Request 被采纳其实还是会先被他们提交到 Perforce 仓库,在下一次大版本 Release 的时候才会更新到 GitHub 代码上去,所以整个流程会相对别的开源项目慢很多,这也是情有可原的。
 
🤣 这大概就是一次完整的贡献经历了,其实这些开源项目出 Bug 真的很正常(点名 AMD,经常 Release 一些 Shit SDK),世界其实就是一个草台班子,有的时候遇到问题我们完全可以自己尝试解决,并把自己的修改贡献回去。

附录

上一篇
一文理解超分辨率
下一篇
地表最强 Contact Shadow

评论
Loading...