B博客

Deki 0.30.3:3D、光照和 Miyoo Mini

在开发板和桌面上运行的 3D,2D 与 3D 共用的光源和 GPU 阴影,HLSL 着色器,以及一台新掌机:Miyoo Mini。

发布于
作者
Jai
阅读
约 3 分钟
编辑器播放视图中的 Sponza:一条被照亮的石砌回廊,挂着红、绿、蓝三色帷幔。

3D

新的 deki-3d 包在与 2D 相同的帧中、以同一排序顺序绘制网格,所以 UI 可以像放在其他画面上一样放在 3D 场景之上。

  • 在开发板上它是软件光栅化器。它按图块绘制,所以深度缓冲区只需一个图块:32 像素时为 2 KB,而不是整个 320x240 所需的 150 KB。
    • T-Deck 上 2,000 个三角形的带纹理回廊:每秒 20 帧。
    • 82,000 个三角形的 Sponza 在 T-Deck 上以每秒 1.3 帧运行。
    • 在 Miyoo Mini 上,6,000 个三角形的场景保持 60 帧。
  • 在桌面上它用 OpenGL 绘制,带阴影和着色器。
  • 模型来自 .obj 文件,大小不限。每个平台的构建保留一定比例的三角形(细节),纹理遵循图像针对该平台的设置。模型放不进开发板内存时,开发板构建会停止。
  • 相机在投影为透视时绘制网格。

deki-3d 是实验性的:其属性和文件格式仍可能改变。

光照

一个 Light 组件同时照亮网格和 2D 世界:环境光、方向光、点光源或聚光灯,带颜色和强度。

  • 开发板上的 2D 由 CPU 计算光照,所以 T-Deck 也能有光斑和夜景。把光环数设为 2 到 8,就是带抖动的清晰光环,像素画的风格。
  • 桌面上的 2D 由 GPU 逐像素计算光照。
  • 相机的“照亮至排序顺序” 让 UI 不受光照影响。
  • GPU 阴影:每帧最多两个方向光或聚光灯投射阴影。没有 OpenGL 的开发板会绘制光照但没有阴影,其构建会说明是哪些光源。
  • 没有 Light 的游戏不会在光照上占用内存。

着色器与 GPU

  • HLSL 着色器。 网格上的 .shader 决定它的颜色(Shade()),也可以像草或水那样移动顶点(Displace())。屏幕效果在整个帧上运行着色器。
  • 桌面上 2D 也走 GPU: 精灵、文本和形状直接画进帧。
  • 按平台的纹理滤波: 每张图像可选点、双线性或三线性。没有 GPU 的开发板按点采样绘制,检查器会说明。

Miyoo Mini

新的 deki-miyoo-boards 包可为 Miyoo Mini 构建游戏并安装到 SD 卡上,原厂固件和 Onion 都可以。

在装有 Onion OS 的 Miyoo Mini 上运行 3D
  • 320x240 的 ARGB8888,放大 2 倍显示到面板上。
  • 6,000 个三角形的 3D 场景每秒 60 帧,13,000 个三角形的场景稳定在 30 帧。
  • 按 MENU 退出游戏。

已在 Onion 上测试。原厂固件尚未测试,声音、电池和亮度不在这个版本中。

其他新功能

  • 重命名项目:在 Project Settings > Project > Name 中修改。
  • 构建错误会说明哪里失败: 是包、项目代码还是引擎。
  • 桌面目标改名为 Desktop。 它为 Windows、Linux 或 macOS 构建游戏的 PC 版。
  • Tactility:声音,以及通过 USB 或 Wi-Fi 安装。 实验性:能构建,但尚未在设备上看到它运行。
  • 作为程序运行的游戏从引擎自己的 main() 启动,桌面和 Miyoo Mini 都一样,退出时会释放全部内存。

更新

打开用 0.22 制作的项目时,会先询问是否升级。升级会把项目自身文件中的 desktop-os 改名为 hosted,SIMULATOR 改名为 DEKI_HOSTED。场景和资源不会被改动,每处更改都能在版本控制中看到。选择取消则项目保持原样。

项目的包照常工作。要更新它们,请使用包管理器,或 DekiEditor --packages-update all <project>。

给包作者:用 0.22 构建的包会重新构建(反射 ABI 23)。

更新日志 ·下载编辑器

Sponza:Frank Meinl(Crytek),基于 Marko Dabrovic 的原作,来自 Morgan McGuire 的 Computer Graphics Archive(CC BY 3.0)。

← 全部文章