然后从零开始手敲次世代游戏引擎(35),先导入合并从零开始手敲次世代游戏引擎(PNG特别版)中编写的PNG文件解析器,然后手动编辑aili。?材质添加 eye.png 纹理。执行程序,可以看到已经有了。(不过我们可以发现,眼睛其实只是浮在脸前的一侧……这是造型锅,别怪我……)
此外,仔细观察会发现右侧的侧毛没有正确着色。这是因为右边的头发是通过镜像左边的头发得到的。虽然它在 Blender 中看起来不错,但这种镜像可能会导致两个问题:
导出的三角形顶点的旋转方向由逆时针变为顺时针幻影游戏引擎,导致被GPU裁剪(Culling);导出的模型变换矩阵如下:(以X轴镜像为例)
可以看出,其中包含了对 X 坐标求反的计算。而我们的 shder 对法线有这样的计算:
modelMatrix就是上面的矩阵。这导致法线向量也被镜像,即反转。所以我们看到的是上面屏幕录像中的一片漆黑。
我们可以通过修改OGEX导出脚本来解决这个问题,或者我们以后为我们的游戏引擎编写编辑器后在编辑器中修复它。因此,我们暂时不在这里进行进一步的讨论。
好了,到这里我们就暂时停止图形渲染基础管线的建设。当然,图形渲染是个很深的坑3D场景,我们还有很多很多的东西没有实现,比如随机列表:
点光源以外的光源类型多光源阴影生成除漫反射贴图以外的纹理,如法线贴图、置换贴图等VS、PS以外的着色器,如Geometry Shader、Compute Shader等。加工
在场景组织和管理方面,我们也有很多可以进一步改进的地方,比如:
场景对象的层次结构、分组和在组级别定义的坐标变换 场景的异步加载
还有很多。但在继续深入介绍这些东西之前,作为一个游戏引擎运行时,我决定先做几个其他重要模块的基础搭建,比如输入模块、驱动模块、策略模块、调试辅助模块等等。
接下来说说项目的进展。感谢CircleCI,在之前免费的Linux环境的基础上,我免费提供了一个基于macOS的持续集成环境。现在每个推送到 github 的提交都会自动为 Linux 和 macOS 编译并确认测试用例的执行,如下所示:
实现起来也很简单,修改我们的circleCI脚本如下:
真的很方便,欢迎大家在自己的项目中试用。再次感谢 CircleCI 对开源项目的大力支持!
(最近生病了?文章更新慢,请多多包涵)
终于幻影游戏引擎UI界面,对了,第一届中国大学生AR/VR大赛昨天落下帷幕。虽然比赛的组织本身很仓促,但是同学们的作品真的很棒。期待加入游戏开发大家庭。