MGFX

MGFX 是面向 Garry's Mod immediate UI effects 的 Lux 渲染 package。它通过独立的 lux-mgfx package set 分发,并在独立文档站中维护完整说明:

当前页面只是 Lux 主站里的入口。API 细节、Shader 说明、性能模型和 Lux 版架构说明都 以独立 MGFX 文档为准。

按项目安装:

luxc install @lux/mgfx --from github:TimeWatcher/lux-mgfx

给 Plain GLua 使用

MGFX 不要求现有项目已经使用 Lux 源码。对于已有 VGUI panel、gamemode UI 或渐进迁移, 可以直接使用带生成 loader 的分发版本,然后在普通 GLua 里调用安装后的 MGFX.* facade:

function PANEL:Paint(w, h)
  MGFX.StartPanel(self, w, h)
  MGFX.RoundedBoxEx(0, 0, w, h, {
    radius = 10,
    fill = MGFX.LinearGradient(
      0,
      0,
      1,
      1,
      Color(30, 130, 255, 230),
      Color(255, 210, 110, 230)
    ),
  })
  MGFX.EndPanel()
end

这个分发版本仍然来自 Lux MGFX package。区别只是 loader 已经生成好,会初始化客户端 运行时,并为非 Lux 调用方安装全局 MGFX

在 Lux 中使用

安装可选 MGFX facade
import * as mgfx from "@lux/mgfx"
import * as console from "@lux/mgfx/console"

client fn installMgfx() {
  local api = mgfx.installGlobal("MGFX")
  console.install(api)
}

新的 Lux 代码应优先使用明确的模块导入,例如 mgfx.paintmgfx.stylemgfx.framemgfx.widgetsMGFX.* 全局 facade 主要用于需要面向 GLua 的代码、 旧 panel、console demo 或渐进迁移。

Lux 负责什么

@lux/mgfx 是 client-only package。项目导入它后,luxc gmod build 会编译实际依赖 到的 module part、保持导出为客户端运行域、生成 Lua,并生成 GMod loader。Lux 项目 安装后会从 lux.lock 读取对应 package root;它不随 luxc 捆绑。Lux 项目不应该再 复制旧 MGFX Lua autorun loader。

MGFX 也是 Lux package 设计的实际例子:一个 package 拆成 framepaintstyletextwidgetsmaterialsshaderpack 等子模块;module part 共享内部作用域, 对外只暴露明确的 public API。

授权

MGFX 使用单独的非商业授权。非商业使用允许;商业使用需要获得版权持有者的单独书面 授权。当前授权文件和部署说明以独立 MGFX 文档仓库为准。