Skip to content

MGFXModern GMod FX

面向 Garry's Mod UI 的 shader-backed immediate renderer。先选择 GLua 或 Lux,再用同一套概念绘制形状、图像、数值组件、文字特效、渐变、遮罩、glow 和 backdrop。

快速开始

lua
local mgfx = include("mgfx/init.lua")

function PANEL:Paint(w, h)
    mgfx.StartPanel(self, w, h)

    mgfx.RoundedBoxEx(0, 0, w, h, {
        radius = 10,
        fill = Color(8, 14, 20, 170),
        backdrop = {blur = 8, tint = Color(0, 8, 12, 120)},
        outerGlow = {color = Color(70, 205, 255, 64), width = 12},
    })

    mgfx.ProgressBarEx(24, 84, w - 48, 10, 0.72, {
        radius = 5,
        track = Color(10, 18, 24, 190),
        fill = mgfx.LinearGradient(0, 0, 1, 0, Color(30, 130, 255), Color(255, 210, 110)),
    })

    mgfx.EndPanel()
end
lux
import * as mgfx from "@lux/mgfx"

fn PANEL:Paint(w, h) {
  local draw = mgfx.api
  draw.startPanel(self, w, h)

  draw.roundedBoxEx(0, 0, w, h, {
    radius = 10,
    fill = Color(8, 14, 20, 170),
    backdrop = {blur = 8, tint = Color(0, 8, 12, 120)},
    outerGlow = {color = Color(70, 205, 255, 64), width = 12},
  })

  draw.progressBarEx(24, 84, w - 48, 10, 0.72, {
    radius = 5,
    track = Color(10, 18, 24, 190),
    fill = draw.linearGradient(0, 0, 1, 0, Color(30, 130, 255), Color(255, 210, 110)),
  })

  draw.endPanel();
}

从这里开始

推荐阅读顺序

  1. 先选择 普通 GLuaLux
  2. 复制复杂效果前阅读 核心概念
  3. shadow、glow、backdrop 和 pattern 查 特效指南
  4. 需要准确字段时再进入 API 参考

边界

MGFX 是 renderer,不是 UI framework。它不拥有 layout、input、focus、component lifecycle、transition state 或 hit testing。调用方每帧计算视觉状态,再把明确参数传给 Plain GLua API 表或 mgfx.api.*

普通标签优先使用原生 GMod text 或 Text。只有需要渐变字面、描边、glow 或高质量 shadow 时才使用 TextEx

维护规则

  • public API 变化必须同步更新 核心概念 和对应的 API 参考页
  • 面向用户的通用示例应同时给出 GLua 与 Lux;明确只讨论某一运行时的页面除外。
  • shader 参数、gradient LUT、alpha 或 shaderpack 变化同步更新 Shader 与打包
  • 性能路径变化同步更新 性能模型
  • 不要手改 docs-site/;修改 docs/ 后重新构建。