Skip to content

绘制记录、图案、变换与能力

Color/gradient paint record、程序化 pattern、2.5D transform helper 和 capability query。

适用边界

  • Linear、Radial、Elliptical Radial、Conic、Ring/Sector radial、Shape/Ring/Arc/Sector angular 都支持 stop 表,并统一走 LUT。
  • 所有渐变都支持可选 curve,默认 linear;曲线在原有 shader 内映射 t,不增加 pass,也不复制 LUT。
  • Pattern 应作为 paint slot 交给 shader 数学化处理,不要在调用层展开成大量线段。
  • 2.5D 视觉倾斜使用 style.transformPushTransformPointerTilt,不新增 ProjectedXXX 图元族。

本页 API

先选哪种 paint

视觉需求推荐记录典型用途
纯色Color(...)MGFX.Solid(color)大多数 fill 直接传 Color 就够了。
左到右、上到下、斜向渐变LinearGradient / LinearGradientStops按钮、血条、列表选中态。
正圆中心光、暗角、局部高光RadialGradient卡片暗角、圆形 spotlight、hover 光。
扁宽或纵长的定向光场EllipticalRadialGradient顶部发散高光、宽 HUD 光晕、椭圆暗角。
完整圆盘角向色相ConicGradient色相盘、全圆仪表背景。
圆环/扇区从内到外变色RingRadialGradient / SectorRadialGradientRing、Arc、Sector 的厚度方向渐变。
圆环/扇区沿角度变色ShapeAngularGradient / RingAngularGradient / ArcAngularGradient / SectorAngularGradient冷却环、仪表弧、轮盘 wedge。
斜线、扫描线StripePatternHUD 装饰、分段条纹。
程序化噪声/烟雾SmokePattern能量面板、稀有物品背景。
细微磨损、颗粒、边缘破损、划痕WornPattern武器/背包/商店 UI、金属或旧纸材质表面。

坐标是图元本地归一化空间,不是屏幕像素:LinearGradient(0, 0, 1, 0, ...) 表示从图元左到右;RadialGradient(0.5, 0.5, 0.85, ...) 表示以图元中心为圆心;EllipticalRadialGradient(0.5, 0, 0.7, 1.2, ...) 表示从顶部中心发散,横向半径为图元宽度的 70%,纵向半径为图元高度的 120%。

Stops 实用写法

lua
local coldToHot = {
    {0.00, Color(80, 170, 255)},
    {0.45, Color(90, 220, 180)},
    {0.78, Color(255, 210, 110)},
    {1.00, Color(255, 96, 78)},
}

local fill = MGFX.LinearGradient(0, 0, 1, 0, coldToHot)
lux
import * as mgfx from "@lux/mgfx"

local coldToHot = {
  {0.00, Color(80, 170, 255)},
  {0.45, Color(90, 220, 180)},
  {0.78, Color(255, 210, 110)},
  {1.00, Color(255, 96, 78)},
}

local fill = mgfx.api.linearGradient(0, 0, 1, 0, coldToHot)

stop 支持三种常用写法,可以混用:

lua
local stops = {
    Color(80, 170, 255),                         -- 只写 Color 时按索引自动分布
    {0.35, Color(90, 220, 180)},                 -- compact {pos, color}
    {pos = 0.70, color = Color(255, 210, 110)},  -- named form
    {offset = 1, color = Color(255, 96, 78)},    -- pos / t / offset 都可用
}

透明衰减必须显式写 alpha:

lua
local vignette = MGFX.RadialGradient(0.5, 0.5, 0.9, {
    {0.00, Color(0, 0, 0, 0)},
    {0.72, Color(0, 0, 0, 0)},
    {1.00, Color(0, 0, 0, 110)},
})

缺省 alpha 是 255。只写 Color(0, 0, 0) 会得到不透明黑色,不会得到透明 stop。

渐变曲线

所有渐变构造器都可以在最后传入 curve。固定预设包括:linearsmoothstepsmootherstepease-inease-outease-in-outexponentialgaussianinverse-square

curve 只由 Lua 映射为数字 ID。shader 在采样现有 stops LUT 之前执行 t = curve(t),因此不会增加 draw pass;LUT 缓存仍只由 stops 决定。预设没有 strength 参数,需要更精细的美术控制时继续使用 stops。

所有预设共享同一份 16-bit RGBA stops LUT。现有渐变 pixel shader 还会加入稳定的屏幕空间 IGN dithering,打散最终 8-bit framebuffer 的量化误差;两项改动都不增加 draw pass。

exponential 使用归一化的固定 k = 2.6,适合用两个 stop 表达真实光源衰减:

lua
local light = MGFX.EllipticalRadialGradient(0.5, 0.04, 0.55, 1.2, {
    {0, Color(80, 220, 120, 73)},
    {1, Color(80, 220, 120, 0)},
}, nil, "exponential")

常用 paint 配方

按钮面板渐变

lua
MGFX.RoundedBoxEx(x, y, w, h, {
    radius = 8,
    fill = MGFX.LinearGradient(0, 0, 0, 1,
        Color(36, 46, 58, 235),
        Color(18, 24, 32, 235)
    ),
})

轮盘扇区角向渐变

lua
MGFX.SectorEx(cx, cy, innerR, outerR, startDeg, endDeg, {
    fill = MGFX.SectorAngularGradient({
        {0, Color(36, 44, 54, 210)},
        {1, Color(80, 170, 255, 170)},
    }, startDeg),
})

SectorAngularGradientt 覆盖当前 sector 的角度范围,适合 wedge 内沿角度变化。不要用全局 ConicGradient 去模拟局部扇区色带。

圆环厚度方向高光

lua
MGFX.RingEx(cx, cy, 36, 10, {
    fill = MGFX.RingRadialGradient({
        {0, Color(255, 255, 255, 70)},
        {0.45, Color(80, 170, 255, 220)},
        {1, Color(20, 70, 120, 220)},
    }),
})

RingRadialGradientt = 0 在 inner edge,t = 1 在 outer edge。

条纹、烟雾和磨损图案

lua
MGFX.RoundedBoxEx(x, y, w, h, {
    radius = 10,
    fill = Color(20, 26, 34, 230),
    pattern = MGFX.StripePattern({
        color = Color(255, 255, 255, 18),
        spacing = 10,
        width = 2,
        angle = 135,
    }),
})

MGFX.ChamferBoxEx(x, y, w, h, {
    cuts = 10,
    fill = Color(18, 24, 30, 230),
    pattern = MGFX.SmokePattern({
        color = Color(80, 170, 255, 24),
        scale = 120,
        density = 0.45,
        softness = 0.32,
        seed = "loadout-card",
    }),
})

StripePattern.spacing = 8..16width = 1..3 常用。SmokePattern.scale = 90..180density = 0.35..0.6softness = 0.2..0.45 比较稳。磨损材质使用 WornPattern,完整参数和示例见本页的 WornPattern

参数速查

字段推荐范围说明
gradient 坐标0..1 最常用可以超出 0..1 做偏移光,但默认先按图元局部空间理解。
stop pos/t/offset0..1缺失的 0/1 端点会用首尾颜色补齐。
stop 数量2..6 常用过多 stop 会更难维护;需要复杂色带再增加。
ConicGradient.rotation度数用于整体角度偏移;局部 ring/sector 优先用 *AngularGradient
StripePattern.spacing8..16越小越密;HUD 小控件不要低于 6。
StripePattern.width1..3通常低于 spacing 的三分之一。
SmokePattern.scale90..180越小纹理越细碎。
SmokePattern.density0.35..0.6越大越明显。
SmokePattern.softness0.2..0.45越大边缘越散。
WornPattern.grain0.35..0.90细表面粗糙和对比破坏。
WornPattern.scratches0.12..0.55稀疏短划痕;过高会变成随机线条。
WornPattern.edge0.25..0.85破碎边缘磨损强度。

函数参考

Solid

lua
MGFX.Solid(color)

创建纯色绘制记录。

参数

参数说明
colorGMod Color 表。

用法说明

  • 多数 API 也直接接受 Color;当你想显式使用 paint record 时 Solid 很有用。
  • 内部会把同一颜色存为两个渐变端点。

返回值

kind = solid 的绘制表。

示例

lua
local fill = MGFX.Solid(Color(28, 34, 46, 230))
MGFX.RoundedBoxEx(x, y, w, h, {radius = 8, fill = fill})

LinearGradient

lua
MGFX.LinearGradient(x1, y1, x2, y2, colorA, colorB, curve)

创建两段或多段线性渐变记录。

参数

参数说明
x1, y1, x2, y2图元内部归一化渐变轴。
colorA, colorB端点颜色,或把 stops 表作为第五个参数传入。

用法说明

  • 坐标相对于图元归一化,不是全局屏幕像素。
  • 在这里传 stops 表等价于 LinearGradientStops。

返回值

线性渐变绘制记录。

stop 表写法

字段 / 可接受值默认值作用
Color-only stop
Color(r, g, b, a)。
auto distributed位置按数组索引自动分布。
{pos, color}
数组 stop,[1] 是位置,[2] 是 Color。
required color紧凑 stop 写法。
{pos/t/offset, color}
命名 stop 表。
required color显式指定 0 到 1 的 stop 位置。
endpoints
缺失的 0 或 1 端点会自动插入。
first/last color渐变始终覆盖整个图元范围。

stop 渲染支持

字段 / 可接受值默认值作用
LinearGradient / LinearGradientStops
通过渐变 LUT 支持完整 stops。
supported线性轴仍然定义 t;对角和轴向填充使用同一 stop 表。
RadialGradient / ConicGradient
通过渐变 LUT 支持完整 stops。
supported径向/锥形 shader 先计算 t,再采样缓存的 256-sample LUT。
RingRadialGradient / SectorRadialGradient
在圆环局部径向空间支持完整 stops。
supportedt 从 innerRadius 映射到 outerRadius 后再采样 LUT。
*AngularGradient
在形状局部周向空间支持完整 stops。
supported包括 ShapeAngularGradient、RingAngularGradient、ArcAngularGradient 和 SectorAngularGradient。
Fallback paths
shader 提供完整 stop 路径。
may degrade如果 shader 不可用,复杂 stops 可能退化到更简单的 surface 绘制。

示例

lua
local fill = MGFX.LinearGradient(0, 0, 1, 0, Color(80, 170, 255), Color(90, 220, 180))

LinearGradientStops

lua
MGFX.LinearGradientStops(x1, y1, x2, y2, stops, curve)

创建多段线性渐变记录。

参数

参数说明
stops{pos, color} 或 {pos = n, color = Color(...)} 记录数组。

用法说明

  • stops 会排序,并在需要时扩展到 0 和 1 端点。
  • 用于条、线、多边形、面板和文本 face 的线性色带。

返回值

线性渐变绘制记录。

stop 表写法

字段 / 可接受值默认值作用
Color-only stop
Color(r, g, b, a)。
auto distributed位置按数组索引自动分布。
{pos, color}
数组 stop,[1] 是位置,[2] 是 Color。
required color紧凑 stop 写法。
{pos/t/offset, color}
命名 stop 表。
required color显式指定 0 到 1 的 stop 位置。
endpoints
缺失的 0 或 1 端点会自动插入。
first/last color渐变始终覆盖整个图元范围。

stop 渲染支持

字段 / 可接受值默认值作用
LinearGradient / LinearGradientStops
通过渐变 LUT 支持完整 stops。
supported线性轴仍然定义 t;对角和轴向填充使用同一 stop 表。
RadialGradient / ConicGradient
通过渐变 LUT 支持完整 stops。
supported径向/锥形 shader 先计算 t,再采样缓存的 256-sample LUT。
RingRadialGradient / SectorRadialGradient
在圆环局部径向空间支持完整 stops。
supportedt 从 innerRadius 映射到 outerRadius 后再采样 LUT。
*AngularGradient
在形状局部周向空间支持完整 stops。
supported包括 ShapeAngularGradient、RingAngularGradient、ArcAngularGradient 和 SectorAngularGradient。
Fallback paths
shader 提供完整 stop 路径。
may degrade如果 shader 不可用,复杂 stops 可能退化到更简单的 surface 绘制。

示例

lua
local fill = MGFX.LinearGradientStops(0, 0, 1, 0, {
    {0.00, Color(80, 170, 255)},
    {0.55, Color(90, 220, 180)},
    {1.00, Color(255, 210, 110)},
})

RadialGradient

lua
MGFX.RadialGradient(cx, cy, radius, colorA, colorB, curve) / MGFX.RadialGradient(cx, cy, radius, stops, curve)

创建径向渐变绘制记录。

参数

参数说明
cx, cy归一化渐变中心。
radius归一化径向尺寸。
colorA, colorB中心和外侧颜色,或把 stops 表作为第四个参数传入。

用法说明

  • 最适合支持径向绘制的形状路径。
  • shader 路径会通过缓存的 256-sample LUT 采样全部 stops。

返回值

径向渐变绘制记录。

stop 表写法

字段 / 可接受值默认值作用
Color-only stop
Color(r, g, b, a)。
auto distributed位置按数组索引自动分布。
{pos, color}
数组 stop,[1] 是位置,[2] 是 Color。
required color紧凑 stop 写法。
{pos/t/offset, color}
命名 stop 表。
required color显式指定 0 到 1 的 stop 位置。
endpoints
缺失的 0 或 1 端点会自动插入。
first/last color渐变始终覆盖整个图元范围。

stop 渲染支持

字段 / 可接受值默认值作用
LinearGradient / LinearGradientStops
通过渐变 LUT 支持完整 stops。
supported线性轴仍然定义 t;对角和轴向填充使用同一 stop 表。
RadialGradient / ConicGradient
通过渐变 LUT 支持完整 stops。
supported径向/锥形 shader 先计算 t,再采样缓存的 256-sample LUT。
RingRadialGradient / SectorRadialGradient
在圆环局部径向空间支持完整 stops。
supportedt 从 innerRadius 映射到 outerRadius 后再采样 LUT。
*AngularGradient
在形状局部周向空间支持完整 stops。
supported包括 ShapeAngularGradient、RingAngularGradient、ArcAngularGradient 和 SectorAngularGradient。
Fallback paths
shader 提供完整 stop 路径。
may degrade如果 shader 不可用,复杂 stops 可能退化到更简单的 surface 绘制。

示例

lua
local fill = MGFX.RadialGradient(0.5, 0.35, 0.8, Color(90, 220, 180, 220), Color(20, 24, 32, 200))

EllipticalRadialGradient

lua
MGFX.EllipticalRadialGradient(cx, cy, radiusX, radiusY, colorA, colorB, curve)
MGFX.EllipticalRadialGradient(cx, cy, radiusX, radiusY, stops, curve)

创建具有独立横纵半径的椭圆径向渐变。radiusX 相对于图元宽度,radiusY 相对于图元高度;cx/cy 可以位于 0..1 外,因此可把中心放到顶部之外形成向下扩散的光场。

它与 RadialGradient 复用同一个 radial shader、渐变 LUT、material 和 draw pass,不会额外增加一次绘制。区别只在距离场计算:旧 API 保持像素空间正圆,新 API 使用椭圆轴半径。

lua
local topGlow = MGFX.EllipticalRadialGradient(0.5, -0.15, 0.72, 1.35, {
    {0.00, Color(132, 255, 148, 224)},
    {1.00, Color(18, 48, 30, 0)},
}, nil, "exponential")

RingRadialGradient

lua
MGFX.RingRadialGradient(colorA, colorB) / MGFX.RingRadialGradient(stops)

创建从内边到外边的圆环局部径向渐变。

参数

参数说明
colorA, colorB内边和外边颜色,或传入 stops 表。

用法说明

  • 只有圆环/圆弧/扇区 shader 路径会解释这个局部径向空间。
  • t 按 (r - innerRadius) / (outerRadius - innerRadius) 映射。

返回值

带圆环局部径向空间标记的 radial 绘制记录。

stop 表写法

字段 / 可接受值默认值作用
Color-only stop
Color(r, g, b, a)。
auto distributed位置按数组索引自动分布。
{pos, color}
数组 stop,[1] 是位置,[2] 是 Color。
required color紧凑 stop 写法。
{pos/t/offset, color}
命名 stop 表。
required color显式指定 0 到 1 的 stop 位置。
endpoints
缺失的 0 或 1 端点会自动插入。
first/last color渐变始终覆盖整个图元范围。

stop 渲染支持

字段 / 可接受值默认值作用
LinearGradient / LinearGradientStops
通过渐变 LUT 支持完整 stops。
supported线性轴仍然定义 t;对角和轴向填充使用同一 stop 表。
RadialGradient / ConicGradient
通过渐变 LUT 支持完整 stops。
supported径向/锥形 shader 先计算 t,再采样缓存的 256-sample LUT。
RingRadialGradient / SectorRadialGradient
在圆环局部径向空间支持完整 stops。
supportedt 从 innerRadius 映射到 outerRadius 后再采样 LUT。
*AngularGradient
在形状局部周向空间支持完整 stops。
supported包括 ShapeAngularGradient、RingAngularGradient、ArcAngularGradient 和 SectorAngularGradient。
Fallback paths
shader 提供完整 stop 路径。
may degrade如果 shader 不可用,复杂 stops 可能退化到更简单的 surface 绘制。

示例

lua
local fill = MGFX.RingRadialGradient(Color(20, 24, 30, 180), Color(120, 130, 150, 145))

SectorRadialGradient

lua
MGFX.SectorRadialGradient(colorA, colorB) / MGFX.SectorRadialGradient(stops)

创建从内边到外边的扇区局部径向渐变。

参数

参数说明
colorA, colorB内边和外边颜色,或传入 stops 表。

用法说明

  • 用于 SectorEx,让轮盘扇区沿带宽变亮或变暗。
  • 这不同于扇区外接矩形中的普通 RadialGradient。

返回值

带圆环局部径向空间标记的 radial 绘制记录。

stop 表写法

字段 / 可接受值默认值作用
Color-only stop
Color(r, g, b, a)。
auto distributed位置按数组索引自动分布。
{pos, color}
数组 stop,[1] 是位置,[2] 是 Color。
required color紧凑 stop 写法。
{pos/t/offset, color}
命名 stop 表。
required color显式指定 0 到 1 的 stop 位置。
endpoints
缺失的 0 或 1 端点会自动插入。
first/last color渐变始终覆盖整个图元范围。

stop 渲染支持

字段 / 可接受值默认值作用
LinearGradient / LinearGradientStops
通过渐变 LUT 支持完整 stops。
supported线性轴仍然定义 t;对角和轴向填充使用同一 stop 表。
RadialGradient / ConicGradient
通过渐变 LUT 支持完整 stops。
supported径向/锥形 shader 先计算 t,再采样缓存的 256-sample LUT。
RingRadialGradient / SectorRadialGradient
在圆环局部径向空间支持完整 stops。
supportedt 从 innerRadius 映射到 outerRadius 后再采样 LUT。
*AngularGradient
在形状局部周向空间支持完整 stops。
supported包括 ShapeAngularGradient、RingAngularGradient、ArcAngularGradient 和 SectorAngularGradient。
Fallback paths
shader 提供完整 stop 路径。
may degrade如果 shader 不可用,复杂 stops 可能退化到更简单的 surface 绘制。

示例

lua
local fill = MGFX.SectorRadialGradient(Color(20, 24, 30, 180), Color(120, 130, 150, 145))

ConicGradient

lua
MGFX.ConicGradient(cx, cy, rotationDeg, colorA, colorB) / MGFX.ConicGradient(cx, cy, rotationDeg, stops)

使用公开角度制 rotation 创建锥形渐变记录。

参数

参数说明
cx, cy归一化锥形中心。
rotationDeg旋转角度,单位度。
colorA, colorB端点颜色,或把 stops 表作为第四个参数传入。

用法说明

  • 适合圆环和圆形仪表。
  • shader 路径会通过缓存的 256-sample LUT 采样全部 stops。

返回值

锥形渐变绘制记录。

stop 表写法

字段 / 可接受值默认值作用
Color-only stop
Color(r, g, b, a)。
auto distributed位置按数组索引自动分布。
{pos, color}
数组 stop,[1] 是位置,[2] 是 Color。
required color紧凑 stop 写法。
{pos/t/offset, color}
命名 stop 表。
required color显式指定 0 到 1 的 stop 位置。
endpoints
缺失的 0 或 1 端点会自动插入。
first/last color渐变始终覆盖整个图元范围。

stop 渲染支持

字段 / 可接受值默认值作用
LinearGradient / LinearGradientStops
通过渐变 LUT 支持完整 stops。
supported线性轴仍然定义 t;对角和轴向填充使用同一 stop 表。
RadialGradient / ConicGradient
通过渐变 LUT 支持完整 stops。
supported径向/锥形 shader 先计算 t,再采样缓存的 256-sample LUT。
RingRadialGradient / SectorRadialGradient
在圆环局部径向空间支持完整 stops。
supportedt 从 innerRadius 映射到 outerRadius 后再采样 LUT。
*AngularGradient
在形状局部周向空间支持完整 stops。
supported包括 ShapeAngularGradient、RingAngularGradient、ArcAngularGradient 和 SectorAngularGradient。
Fallback paths
shader 提供完整 stop 路径。
may degrade如果 shader 不可用,复杂 stops 可能退化到更简单的 surface 绘制。

示例

lua
local fill = MGFX.ConicGradient(0.5, 0.5, -90, Color(80, 170, 255), Color(255, 210, 110))

ShapeAngularGradient

lua
MGFX.ShapeAngularGradient(colorA, colorB, rotationDeg) / MGFX.ShapeAngularGradient(stops, rotationDeg)

创建覆盖当前圆环/圆弧/扇区角度范围的局部周向渐变。

参数

参数说明
colorA, colorB起始边和结束边颜色,或传入 stops 表。
rotationDeg可选偏移,会加到局部 0..1 范围内。

用法说明

  • 它把 t 映射到 startDeg 到 endDeg,而不是完整 360 度圆。
  • shader 圆环路径会通过缓存的 256-sample LUT 采样全部 stops。

返回值

带形状局部周向空间标记的 conic 绘制记录。

stop 表写法

字段 / 可接受值默认值作用
Color-only stop
Color(r, g, b, a)。
auto distributed位置按数组索引自动分布。
{pos, color}
数组 stop,[1] 是位置,[2] 是 Color。
required color紧凑 stop 写法。
{pos/t/offset, color}
命名 stop 表。
required color显式指定 0 到 1 的 stop 位置。
endpoints
缺失的 0 或 1 端点会自动插入。
first/last color渐变始终覆盖整个图元范围。

stop 渲染支持

字段 / 可接受值默认值作用
LinearGradient / LinearGradientStops
通过渐变 LUT 支持完整 stops。
supported线性轴仍然定义 t;对角和轴向填充使用同一 stop 表。
RadialGradient / ConicGradient
通过渐变 LUT 支持完整 stops。
supported径向/锥形 shader 先计算 t,再采样缓存的 256-sample LUT。
RingRadialGradient / SectorRadialGradient
在圆环局部径向空间支持完整 stops。
supportedt 从 innerRadius 映射到 outerRadius 后再采样 LUT。
*AngularGradient
在形状局部周向空间支持完整 stops。
supported包括 ShapeAngularGradient、RingAngularGradient、ArcAngularGradient 和 SectorAngularGradient。
Fallback paths
shader 提供完整 stop 路径。
may degrade如果 shader 不可用,复杂 stops 可能退化到更简单的 surface 绘制。

示例

lua
local fill = MGFX.ShapeAngularGradient(Color(80, 170, 255), Color(255, 210, 110))

RingAngularGradient

lua
MGFX.RingAngularGradient(colorA, colorB, rotationDeg) / MGFX.RingAngularGradient(stops, rotationDeg)

圆环局部周向绘制别名。

参数

参数说明
colorA, colorB周向端点颜色,或传入 stops 表。

用法说明

  • 对完整 360 度圆环,它按该圆环范围归一化。

返回值

带形状局部周向空间标记的 conic 绘制记录。

stop 表写法

字段 / 可接受值默认值作用
Color-only stop
Color(r, g, b, a)。
auto distributed位置按数组索引自动分布。
{pos, color}
数组 stop,[1] 是位置,[2] 是 Color。
required color紧凑 stop 写法。
{pos/t/offset, color}
命名 stop 表。
required color显式指定 0 到 1 的 stop 位置。
endpoints
缺失的 0 或 1 端点会自动插入。
first/last color渐变始终覆盖整个图元范围。

stop 渲染支持

字段 / 可接受值默认值作用
LinearGradient / LinearGradientStops
通过渐变 LUT 支持完整 stops。
supported线性轴仍然定义 t;对角和轴向填充使用同一 stop 表。
RadialGradient / ConicGradient
通过渐变 LUT 支持完整 stops。
supported径向/锥形 shader 先计算 t,再采样缓存的 256-sample LUT。
RingRadialGradient / SectorRadialGradient
在圆环局部径向空间支持完整 stops。
supportedt 从 innerRadius 映射到 outerRadius 后再采样 LUT。
*AngularGradient
在形状局部周向空间支持完整 stops。
supported包括 ShapeAngularGradient、RingAngularGradient、ArcAngularGradient 和 SectorAngularGradient。
Fallback paths
shader 提供完整 stop 路径。
may degrade如果 shader 不可用,复杂 stops 可能退化到更简单的 surface 绘制。

示例

lua
local fill = MGFX.RingAngularGradient(Color(80, 170, 255), Color(255, 210, 110))

ArcAngularGradient

lua
MGFX.ArcAngularGradient(colorA, colorB, rotationDeg) / MGFX.ArcAngularGradient(stops, rotationDeg)

创建从 startDeg 到 endDeg 的圆弧局部周向渐变。

参数

参数说明
colorA, colorB起止颜色,或传入 stops 表。

用法说明

  • 用于仪表圆弧需要沿自身扫掠范围渐变时。

返回值

带形状局部周向空间标记的 conic 绘制记录。

stop 表写法

字段 / 可接受值默认值作用
Color-only stop
Color(r, g, b, a)。
auto distributed位置按数组索引自动分布。
{pos, color}
数组 stop,[1] 是位置,[2] 是 Color。
required color紧凑 stop 写法。
{pos/t/offset, color}
命名 stop 表。
required color显式指定 0 到 1 的 stop 位置。
endpoints
缺失的 0 或 1 端点会自动插入。
first/last color渐变始终覆盖整个图元范围。

stop 渲染支持

字段 / 可接受值默认值作用
LinearGradient / LinearGradientStops
通过渐变 LUT 支持完整 stops。
supported线性轴仍然定义 t;对角和轴向填充使用同一 stop 表。
RadialGradient / ConicGradient
通过渐变 LUT 支持完整 stops。
supported径向/锥形 shader 先计算 t,再采样缓存的 256-sample LUT。
RingRadialGradient / SectorRadialGradient
在圆环局部径向空间支持完整 stops。
supportedt 从 innerRadius 映射到 outerRadius 后再采样 LUT。
*AngularGradient
在形状局部周向空间支持完整 stops。
supported包括 ShapeAngularGradient、RingAngularGradient、ArcAngularGradient 和 SectorAngularGradient。
Fallback paths
shader 提供完整 stop 路径。
may degrade如果 shader 不可用,复杂 stops 可能退化到更简单的 surface 绘制。

示例

lua
local fill = MGFX.ArcAngularGradient(Color(80, 170, 255), Color(255, 210, 110))

SectorAngularGradient

lua
MGFX.SectorAngularGradient(colorA, colorB, rotationDeg) / MGFX.SectorAngularGradient(stops, rotationDeg)

创建从 startDeg 到 endDeg 的扇区局部周向渐变。

参数

参数说明
colorA, colorB起止颜色,或传入 stops 表。

用法说明

  • 用于轮盘选中态和径向菜单高亮。
  • 它有意区别于 ConicGradient。

返回值

带形状局部周向空间标记的 conic 绘制记录。

stop 表写法

字段 / 可接受值默认值作用
Color-only stop
Color(r, g, b, a)。
auto distributed位置按数组索引自动分布。
{pos, color}
数组 stop,[1] 是位置,[2] 是 Color。
required color紧凑 stop 写法。
{pos/t/offset, color}
命名 stop 表。
required color显式指定 0 到 1 的 stop 位置。
endpoints
缺失的 0 或 1 端点会自动插入。
first/last color渐变始终覆盖整个图元范围。

stop 渲染支持

字段 / 可接受值默认值作用
LinearGradient / LinearGradientStops
通过渐变 LUT 支持完整 stops。
supported线性轴仍然定义 t;对角和轴向填充使用同一 stop 表。
RadialGradient / ConicGradient
通过渐变 LUT 支持完整 stops。
supported径向/锥形 shader 先计算 t,再采样缓存的 256-sample LUT。
RingRadialGradient / SectorRadialGradient
在圆环局部径向空间支持完整 stops。
supportedt 从 innerRadius 映射到 outerRadius 后再采样 LUT。
*AngularGradient
在形状局部周向空间支持完整 stops。
supported包括 ShapeAngularGradient、RingAngularGradient、ArcAngularGradient 和 SectorAngularGradient。
Fallback paths
shader 提供完整 stop 路径。
may degrade如果 shader 不可用,复杂 stops 可能退化到更简单的 surface 绘制。

示例

lua
local fill = MGFX.SectorAngularGradient(Color(80, 170, 255), Color(255, 210, 110))

StripePattern

lua
MGFX.StripePattern(spec)

创建程序化条纹图案记录。

参数

参数说明
spec.color / tint条纹颜色。
spec.spacing条纹间距。
spec.width条纹宽度。
spec.angle条纹角度,单位度。
spec.offset采样偏移。

用法说明

  • 也接受 positional 参数:color、spacing、width、angle、offset。
  • 根据 API 放到 style.pattern、fillPattern 或 trackPattern 中。

返回值

kind = "stripe" 的图案表。

spec 字段

字段 / 可接受值默认值作用
color / tint
Color。
Color(255,255,255,24)条纹颜色。
spacing
数字。
12条纹中心间距。
width
数字。
2条纹宽度。
angle
角度,单位度。
135条纹方向。
offset
数字。
0采样偏移;调用方可自行做动画。
positional form
MGFX.StripePattern(color, spacing, width, angle, offset)。
same defaults等同传入 spec 表。

示例

lua
local stripes = MGFX.StripePattern({
    color = Color(255, 255, 255, 34),
    spacing = 10,
    width = 1.5,
    angle = 135,
})

SmokePattern

lua
MGFX.SmokePattern(spec)

创建程序化烟雾/噪声图案记录。

参数

参数说明
spec.color / tint图案颜色。
spec.scale噪声尺度。
spec.density烟雾密度。
spec.softness边缘柔和度。
spec.angle / offset / speed方向与时间偏移控制。
spec.warp / seed噪声变化控制。

用法说明

  • UI 纹理请使用低 alpha,不要做成不透明雾。
  • seed 可以是数字或字符串;字符串会哈希为稳定值。

返回值

kind = "smoke" 的图案表。

spec 字段

字段 / 可接受值默认值作用
color / tint
Color。
Color(255,255,255,24)烟雾叠加颜色。
scale
数字。
140噪声尺度;数值越大云团越宽。
density
0..1 数字。
0.48可见噪声密度。
softness
大于 0 的数字。
0.3烟雾单元边缘柔和度。
angle / offset / speed
角度与数字偏移。
135 / 0 / 0方向和动画采样控制。
warp
数字。
0.85噪声扭曲强度。
seed
数字或字符串。
0稳定变化种子;字符串会用 CRC 哈希。

示例

lua
local smoke = MGFX.SmokePattern({
    color = Color(255, 255, 255, 22),
    scale = 140,
    density = 0.48,
    softness = 0.3,
    seed = "panel-a",
})

WornPattern

lua
MGFX.WornPattern(spec)

创建程序化磨损材质图案记录。它会在 shader 内生成轻微变暗/降对比、细表面粗糙、方向性细划痕、稀疏软磨痕和破碎边缘磨损,不使用 RT 或 data texture。

参数

参数说明
spec.color / tint主磨损叠加颜色,通常使用低 alpha 深色或浅色。
spec.edgeColor / highlight边缘磨损高光色。
spec.fractal稀疏软磨痕强度。
spec.grain细表面粗糙强度。
spec.scratches / scratch方向性细划痕强度。
spec.edge / edgeWear破碎边缘磨损强度。
spec.scale软磨痕采样尺度,单位近似像素。
spec.grainScale细表面粗糙密度。
spec.scratchScale / scratchWidth划痕间距和宽度。
spec.edgeWidth边缘磨损带宽度,单位近似像素。
spec.angle划痕方向,单位度。
spec.softness / warpsoftness 为兼容保留字段;warp 是轻微形变强度。
spec.offset / speed / seed采样偏移、动画速度和稳定随机种子。

用法说明

  • 放到 style.patternfillPatterntrackPattern
  • 这是独立 pattern pass,不会走 $c0..$c3SetFloat 参数上传。
  • UI 推荐低强度;如果 grain 和 scratches 都很高,会从“材质感”变成噪声。
  • WornPattern 不是烟雾、噪声或脏污贴图;边缘磨损应该是破碎窄带,不应该形成连续脏边框。

返回值

kind = "worn" 的图案表。

spec 字段

字段 / 可接受值默认值推荐范围与作用
color / tint
Color。
Color(0,0,0,44)主磨损层;alpha 常用 24..70。深色会降低明度和对比,浅色可用于暗色金属。
edgeColor / highlight
Color。
Color(218,208,184,78)破碎边缘高光;alpha 常用 40..120,颜色应贴近材质,不建议纯白。
fractal
0..1。
0.44推荐 0.20..0.70;稀疏软磨痕,不要调成烟雾斑块。
grain
0..1。
0.64推荐 0.35..0.90;细表面粗糙和对比破坏,是“不要太光滑”的主要控制。
scratches / scratch
0..1。
0.30推荐 0.12..0.55;稀疏短划痕,过高会变成随机手画线。
edge / edgeWear
0..1。
0.54推荐 0.25..0.85;破碎边缘磨损。
scale
数字。
32推荐 24..48;软磨痕尺度,越低越忙,越高越干净。
grainScale
数字。
5.6推荐 3.5..7;越大粗糙细节越密。
scratchScale
数字。
26推荐 18..36;划痕间距。
scratchWidth
数字。
0.045推荐 0.03..0.07;划痕宽度。
edgeWidth
数字。
7推荐 4..9;边缘磨损带宽度。
angle
角度。
-14划痕方向。
softness
数字。
0.10兼容保留字段;当前 worn 模型不依赖它作为主要控制。
warp
数字。
0.035推荐 0..0.08;轻微扭曲纹理场。
offset / speed
数字。
0 / 0采样偏移和动画速度。
seed
数字或字符串。
0稳定变化种子;字符串会用 CRC 哈希。

示例

lua
local worn = MGFX.WornPattern({
    color = Color(0, 0, 0, 44),
    edgeColor = Color(218, 208, 184, 78),
    fractal = 0.44,
    grain = 0.64,
    scratches = 0.30,
    edge = 0.54,
    scale = 32,
    grainScale = 5.6,
    scratchScale = 26,
    scratchWidth = 0.045,
    edgeWidth = 7,
    angle = -14,
    warp = 0.035,
    seed = "shop-card",
})

Transform

lua
MGFX.Transform(spec)

复制一个类似 CSS 的绘制变换记录,用作 style.transform。

参数

参数说明
spec包含 origin、rotate、rotateX/Y、perspective、scale、translate、skew 和 steps 字段的变换表。

用法说明

  • 这个 helper 主要用于可读性和可复用变换记录。
  • 角度单位是度;transform 只影响视觉,不改变布局/输入。

返回值

复制后的 transform 表。

transform 字段

字段 / 可接受值默认值作用
origin / transformOrigin
"50% 50%"、"left top"、{x, y} 或数字。
"50% 50%"用于缩放、旋转、透视和指针倾斜的锚点。
rotate / rotateZ
角度,单位度。
0围绕 origin 的 2D 旋转。
rotateX / rotateY
角度,单位度。
02.5D 倾斜。透视/投影路径会被细分,让现有 shader 保持有效 UV。
perspective
数字。
0 / 900 for PointerTilt透视距离。数值越大投影越平。
scale / scaleX / scaleY
数字或 {x, y}。
1围绕 origin 的视觉缩放。
translate / x/y/z
{x, y, z} 或独立字段。
0视觉位移;z 只影响透视。
skew / skewX / skewY
角度,单位度。
0旋转前的 2D 斜切。
steps / subdivisions
0..24 的整数。
auto投影和透视变换的细分数。

支持目标与边界

字段 / 可接受值默认值作用
Shape Ex calls
RoundedBoxEx、ChamferBoxEx、PolyEx、LineEx、CircleEx、CapsuleEx。
supported调用内部的所有绘制/特效层共享同一个 transform。
Image Ex calls
ImageEx 和 IconEx。
supportedshader 图像、遮罩、backdrop、发光、背景和描边路径共享 transform。
Widget Ex calls
ProgressBarEx、SegmentBarEx、RingEx、ArcEx、SectorEx。
supported复合回退层会继承同一个 pushed transform。
Text
TextEx 和 TextBoxEx。
not promised文本使用独立的延迟 glyph/atlas 合成器。
Layout/input
帧坐标和命中测试。
unchangedtransform 只影响视觉。TransformPoint/UntransformPoint 只用于显式视觉辅助。

示例

lua
local lift = MGFX.Transform({origin = "50% 50%", perspective = 900, rotateX = -3, scale = 1.01})

PointerTilt

lua
MGFX.PointerTilt(x, y, spec)

创建一个由指针位置驱动的 2.5D 倾斜变换。

参数

参数说明
x, y当前帧本地像素中的指针位置。
spec.maxRotateX / maxRotateY最大倾斜角,单位度。
spec.strength0..1 动画强度。
spec.perspective透视距离;默认 900。

用法说明

  • 用于卡片、轮盘或 HUD 面板的 hover 倾斜,不需要在调用处写向量数学。
  • 该变换会在 push 或 style.transform 消费时根据目标边界解析。

返回值

标记为 pointerTilt 的 transform 表。

transform 字段

字段 / 可接受值默认值作用
origin / transformOrigin
"50% 50%"、"left top"、{x, y} 或数字。
"50% 50%"用于缩放、旋转、透视和指针倾斜的锚点。
rotate / rotateZ
角度,单位度。
0围绕 origin 的 2D 旋转。
rotateX / rotateY
角度,单位度。
02.5D 倾斜。透视/投影路径会被细分,让现有 shader 保持有效 UV。
perspective
数字。
0 / 900 for PointerTilt透视距离。数值越大投影越平。
scale / scaleX / scaleY
数字或 {x, y}。
1围绕 origin 的视觉缩放。
translate / x/y/z
{x, y, z} 或独立字段。
0视觉位移;z 只影响透视。
skew / skewX / skewY
角度,单位度。
0旋转前的 2D 斜切。
steps / subdivisions
0..24 的整数。
auto投影和透视变换的细分数。

支持目标与边界

字段 / 可接受值默认值作用
Shape Ex calls
RoundedBoxEx、ChamferBoxEx、PolyEx、LineEx、CircleEx、CapsuleEx。
supported调用内部的所有绘制/特效层共享同一个 transform。
Image Ex calls
ImageEx 和 IconEx。
supportedshader 图像、遮罩、backdrop、发光、背景和描边路径共享 transform。
Widget Ex calls
ProgressBarEx、SegmentBarEx、RingEx、ArcEx、SectorEx。
supported复合回退层会继承同一个 pushed transform。
Text
TextEx 和 TextBoxEx。
not promised文本使用独立的延迟 glyph/atlas 合成器。
Layout/input
帧坐标和命中测试。
unchangedtransform 只影响视觉。TransformPoint/UntransformPoint 只用于显式视觉辅助。

示例

lua
local tilt = MGFX.PointerTilt(mx, my, {origin = "50% 50%", perspective = 900, maxRotateX = 4, maxRotateY = 6, strength = hover})

ProjectedQuad

lua
MGFX.ProjectedQuad({tl, tr, br, bl, steps})

创建专家用投影四边形变换,而不是新增 ProjectedXXX 图元 API。

参数

参数说明
tl, tr, br, bl目标四角点,格式为 {x, y} 或 {number, number}。
steps用于更平滑类透视扭曲的细分数。

用法说明

  • 四角点使用当前帧本地像素。
  • 现有 shader 仍然接收原始图元边界生成的 UV。

返回值

标记为 projectedQuad 的 transform 表。

transform 字段

字段 / 可接受值默认值作用
origin / transformOrigin
"50% 50%"、"left top"、{x, y} 或数字。
"50% 50%"用于缩放、旋转、透视和指针倾斜的锚点。
rotate / rotateZ
角度,单位度。
0围绕 origin 的 2D 旋转。
rotateX / rotateY
角度,单位度。
02.5D 倾斜。透视/投影路径会被细分,让现有 shader 保持有效 UV。
perspective
数字。
0 / 900 for PointerTilt透视距离。数值越大投影越平。
scale / scaleX / scaleY
数字或 {x, y}。
1围绕 origin 的视觉缩放。
translate / x/y/z
{x, y, z} 或独立字段。
0视觉位移;z 只影响透视。
skew / skewX / skewY
角度,单位度。
0旋转前的 2D 斜切。
steps / subdivisions
0..24 的整数。
auto投影和透视变换的细分数。

支持目标与边界

字段 / 可接受值默认值作用
Shape Ex calls
RoundedBoxEx、ChamferBoxEx、PolyEx、LineEx、CircleEx、CapsuleEx。
supported调用内部的所有绘制/特效层共享同一个 transform。
Image Ex calls
ImageEx 和 IconEx。
supportedshader 图像、遮罩、backdrop、发光、背景和描边路径共享 transform。
Widget Ex calls
ProgressBarEx、SegmentBarEx、RingEx、ArcEx、SectorEx。
supported复合回退层会继承同一个 pushed transform。
Text
TextEx 和 TextBoxEx。
not promised文本使用独立的延迟 glyph/atlas 合成器。
Layout/input
帧坐标和命中测试。
unchangedtransform 只影响视觉。TransformPoint/UntransformPoint 只用于显式视觉辅助。

示例

lua
local q = MGFX.ProjectedQuad({
    tl = {x = x + 8, y = y},
    tr = {x = x + w - 3, y = y + 5},
    br = {x = x + w, y = y + h},
    bl = {x = x, y = y + h - 7},
    steps = 12,
})

PushTransform

lua
MGFX.PushTransform(transform, x, y, w, h)

为多次即时 MGFX 绘制压入一个绘制阶段变换。

参数

参数说明
transformTransform、PointerTilt 或 ProjectedQuad 记录。
x, y, w, h用于解析 origin 和 pointer tilt 的边界。

用法说明

  • 每次成功 PushTransform 都要在同一绘制 pass 中配对 PopTransform。
  • 嵌套 transform 会从内到外进行视觉组合。

返回值

成功压入时返回 true,否则返回 false。

transform 字段

字段 / 可接受值默认值作用
origin / transformOrigin
"50% 50%"、"left top"、{x, y} 或数字。
"50% 50%"用于缩放、旋转、透视和指针倾斜的锚点。
rotate / rotateZ
角度,单位度。
0围绕 origin 的 2D 旋转。
rotateX / rotateY
角度,单位度。
02.5D 倾斜。透视/投影路径会被细分,让现有 shader 保持有效 UV。
perspective
数字。
0 / 900 for PointerTilt透视距离。数值越大投影越平。
scale / scaleX / scaleY
数字或 {x, y}。
1围绕 origin 的视觉缩放。
translate / x/y/z
{x, y, z} 或独立字段。
0视觉位移;z 只影响透视。
skew / skewX / skewY
角度,单位度。
0旋转前的 2D 斜切。
steps / subdivisions
0..24 的整数。
auto投影和透视变换的细分数。

支持目标与边界

字段 / 可接受值默认值作用
Shape Ex calls
RoundedBoxEx、ChamferBoxEx、PolyEx、LineEx、CircleEx、CapsuleEx。
supported调用内部的所有绘制/特效层共享同一个 transform。
Image Ex calls
ImageEx 和 IconEx。
supportedshader 图像、遮罩、backdrop、发光、背景和描边路径共享 transform。
Widget Ex calls
ProgressBarEx、SegmentBarEx、RingEx、ArcEx、SectorEx。
supported复合回退层会继承同一个 pushed transform。
Text
TextEx 和 TextBoxEx。
not promised文本使用独立的延迟 glyph/atlas 合成器。
Layout/input
帧坐标和命中测试。
unchangedtransform 只影响视觉。TransformPoint/UntransformPoint 只用于显式视觉辅助。

示例

lua
if MGFX.PushTransform(tilt, x, y, w, h) then
    MGFX.RoundedBoxEx(x, y, w, h, {radius = 12, fill = fill})
    MGFX.RingEx(cx, cy, 42, 6, {fill = ringFill})
    MGFX.PopTransform()
end

PopTransform

lua
MGFX.PopTransform()

弹出当前绘制变换。

用法说明

  • 只在 PushTransform 返回 true 之后调用。
  • 它只影响之后的 MGFX 绘制调用;已经绘制的图元不会改变。

支持目标与边界

字段 / 可接受值默认值作用
Shape Ex calls
RoundedBoxEx、ChamferBoxEx、PolyEx、LineEx、CircleEx、CapsuleEx。
supported调用内部的所有绘制/特效层共享同一个 transform。
Image Ex calls
ImageEx 和 IconEx。
supportedshader 图像、遮罩、backdrop、发光、背景和描边路径共享 transform。
Widget Ex calls
ProgressBarEx、SegmentBarEx、RingEx、ArcEx、SectorEx。
supported复合回退层会继承同一个 pushed transform。
Text
TextEx 和 TextBoxEx。
not promised文本使用独立的延迟 glyph/atlas 合成器。
Layout/input
帧坐标和命中测试。
unchangedtransform 只影响视觉。TransformPoint/UntransformPoint 只用于显式视觉辅助。

示例

lua
MGFX.PopTransform()

TransformPoint

lua
MGFX.TransformPoint(px, py, transform, x, y, w, h)

把点通过一个 transform 记录做正向映射。

参数

参数说明
px, py变换前的点。
transform, x, y, w, h用于解析的 transform 和边界。

用法说明

  • 如果省略 transform,则使用当前 transform stack。
  • 用于视觉辅助和诊断,不要把它当成隐式布局系统。

返回值

映射后的 x, y。

transform 字段

字段 / 可接受值默认值作用
origin / transformOrigin
"50% 50%"、"left top"、{x, y} 或数字。
"50% 50%"用于缩放、旋转、透视和指针倾斜的锚点。
rotate / rotateZ
角度,单位度。
0围绕 origin 的 2D 旋转。
rotateX / rotateY
角度,单位度。
02.5D 倾斜。透视/投影路径会被细分,让现有 shader 保持有效 UV。
perspective
数字。
0 / 900 for PointerTilt透视距离。数值越大投影越平。
scale / scaleX / scaleY
数字或 {x, y}。
1围绕 origin 的视觉缩放。
translate / x/y/z
{x, y, z} 或独立字段。
0视觉位移;z 只影响透视。
skew / skewX / skewY
角度,单位度。
0旋转前的 2D 斜切。
steps / subdivisions
0..24 的整数。
auto投影和透视变换的细分数。

支持目标与边界

字段 / 可接受值默认值作用
Shape Ex calls
RoundedBoxEx、ChamferBoxEx、PolyEx、LineEx、CircleEx、CapsuleEx。
supported调用内部的所有绘制/特效层共享同一个 transform。
Image Ex calls
ImageEx 和 IconEx。
supportedshader 图像、遮罩、backdrop、发光、背景和描边路径共享 transform。
Widget Ex calls
ProgressBarEx、SegmentBarEx、RingEx、ArcEx、SectorEx。
supported复合回退层会继承同一个 pushed transform。
Text
TextEx 和 TextBoxEx。
not promised文本使用独立的延迟 glyph/atlas 合成器。
Layout/input
帧坐标和命中测试。
unchangedtransform 只影响视觉。TransformPoint/UntransformPoint 只用于显式视觉辅助。

示例

lua
local sx, sy = MGFX.TransformPoint(px, py, transform, x, y, w, h)

UntransformPoint

lua
MGFX.UntransformPoint(px, py, transform, x, y, w, h)

近似求解一个 transform 记录的反向映射。

参数

参数说明
px, py变换后的屏幕/本地点。
transform, x, y, w, h用于解析的 transform 和边界。

用法说明

  • 如果省略 transform,则使用当前 transform stack。
  • 它使用小型数值反解,主要用于鼠标跟随类视觉效果。
  • 命中测试仍然是调用方或 UI 层的职责。

返回值

近似的变换前 x, y。

transform 字段

字段 / 可接受值默认值作用
origin / transformOrigin
"50% 50%"、"left top"、{x, y} 或数字。
"50% 50%"用于缩放、旋转、透视和指针倾斜的锚点。
rotate / rotateZ
角度,单位度。
0围绕 origin 的 2D 旋转。
rotateX / rotateY
角度,单位度。
02.5D 倾斜。透视/投影路径会被细分,让现有 shader 保持有效 UV。
perspective
数字。
0 / 900 for PointerTilt透视距离。数值越大投影越平。
scale / scaleX / scaleY
数字或 {x, y}。
1围绕 origin 的视觉缩放。
translate / x/y/z
{x, y, z} 或独立字段。
0视觉位移;z 只影响透视。
skew / skewX / skewY
角度,单位度。
0旋转前的 2D 斜切。
steps / subdivisions
0..24 的整数。
auto投影和透视变换的细分数。

支持目标与边界

字段 / 可接受值默认值作用
Shape Ex calls
RoundedBoxEx、ChamferBoxEx、PolyEx、LineEx、CircleEx、CapsuleEx。
supported调用内部的所有绘制/特效层共享同一个 transform。
Image Ex calls
ImageEx 和 IconEx。
supportedshader 图像、遮罩、backdrop、发光、背景和描边路径共享 transform。
Widget Ex calls
ProgressBarEx、SegmentBarEx、RingEx、ArcEx、SectorEx。
supported复合回退层会继承同一个 pushed transform。
Text
TextEx 和 TextBoxEx。
not promised文本使用独立的延迟 glyph/atlas 合成器。
Layout/input
帧坐标和命中测试。
unchangedtransform 只影响视觉。TransformPoint/UntransformPoint 只用于显式视觉辅助。

示例

lua
local localMx, localMy = MGFX.UntransformPoint(mx, my, transform, x, y, w, h)

GetCapabilities

lua
MGFX.GetCapabilities(target)

返回某个 target 已实现的渲染槽位和元数据。

参数

参数说明
targetMGFX.TARGET 值,例如 MGFX.TARGET.RING。

用法说明

  • 用于 demo 或可选 UI 修饰的功能门控。
  • Capabilities 描述当前 immediate/fallback 实现槽位,不是已退役批处理控制。

返回值

该 target 的 capability 表;未知时为 nil/空。

target 对照

Target类别覆盖路径支持字段
MGFX.TARGET.ROUNDED_BOX形状roundedBoxfill、stroke、strokeWidth、shadow、outerGlow、innerGlow、backdrop、pattern、transform
MGFX.TARGET.CIRCLE形状circle与 rounded box 形状字段相同。
MGFX.TARGET.CAPSULE形状capsule与 rounded box 形状字段相同。
MGFX.TARGET.CHAMFER_BOX形状chamferBoxfill、stroke、strokeWidth、shadow、outerGlow、innerGlow、backdrop、pattern、cuts、transform
MGFX.TARGET.POLY形状convexPolyfill、stroke、strokeWidth、shadow、outerGlow、backdrop、pattern、transform
MGFX.TARGET.LINE形状linefill、color、width、radius、caps、noCaps、outerGlow、backdrop、transform
MGFX.TARGET.RING形状ringfill、color、stroke、strokeWidth、shadow、outerGlow、innerGlow、backdrop、pattern、transform
MGFX.TARGET.ARC形状arc与 ring 字段相同。
MGFX.TARGET.SECTOR形状sectorfill、color、stroke、strokeWidth、shadow、outerGlow、innerGlow、backdrop、pattern、transform
MGFX.TARGET.IMAGE内容imageMasksource、fill/background、stroke、shadow、outerGlow、backdrop、mask、radius、tint/color、alpha、fit/objectFit、position、crop、uv、transform
MGFX.TARGET.PROGRESS_BAR复合组件progresstrack、fill、stroke、radius、padding、shadow、outerGlow、innerGlow、backdrop、fillPattern、trackPattern、pattern、fx、transform
MGFX.TARGET.SEGMENT_BAR复合组件segmentBarsegments、gap、track、fill、stroke、radius、background、backgroundRadius、shadow、outerGlow、innerGlow、backdrop、fillPattern、trackPattern、pattern、transform
MGFX.TARGET.TEXT文本glyphfill/color、alignX、alignY、valign、shadow、stroke、glow、weight、italic、letterSpacing、lineHeight

示例

lua
local caps = MGFX.GetCapabilities(MGFX.TARGET.RING)
PrintTable(caps)

Supports

lua
MGFX.Supports(target, key)

检查某个 target 是否支持一个公共渲染槽位。

参数

参数说明
targetMGFX.TARGET 值。
keyCapability 键,例如 "outerGlow" 或 "pattern"。

用法说明

  • 可选示例中优先使用它,而不是硬编码假设。
  • 返回 false 表示该 target 没有实现这个文档槽位。

返回值

布尔值。

target 对照

Target类别覆盖路径支持字段
MGFX.TARGET.ROUNDED_BOX形状roundedBoxfill、stroke、strokeWidth、shadow、outerGlow、innerGlow、backdrop、pattern、transform
MGFX.TARGET.CIRCLE形状circle与 rounded box 形状字段相同。
MGFX.TARGET.CAPSULE形状capsule与 rounded box 形状字段相同。
MGFX.TARGET.CHAMFER_BOX形状chamferBoxfill、stroke、strokeWidth、shadow、outerGlow、innerGlow、backdrop、pattern、cuts、transform
MGFX.TARGET.POLY形状convexPolyfill、stroke、strokeWidth、shadow、outerGlow、backdrop、pattern、transform
MGFX.TARGET.LINE形状linefill、color、width、radius、caps、noCaps、outerGlow、backdrop、transform
MGFX.TARGET.RING形状ringfill、color、stroke、strokeWidth、shadow、outerGlow、innerGlow、backdrop、pattern、transform
MGFX.TARGET.ARC形状arc与 ring 字段相同。
MGFX.TARGET.SECTOR形状sectorfill、color、stroke、strokeWidth、shadow、outerGlow、innerGlow、backdrop、pattern、transform
MGFX.TARGET.IMAGE内容imageMasksource、fill/background、stroke、shadow、outerGlow、backdrop、mask、radius、tint/color、alpha、fit/objectFit、position、crop、uv、transform
MGFX.TARGET.PROGRESS_BAR复合组件progresstrack、fill、stroke、radius、padding、shadow、outerGlow、innerGlow、backdrop、fillPattern、trackPattern、pattern、fx、transform
MGFX.TARGET.SEGMENT_BAR复合组件segmentBarsegments、gap、track、fill、stroke、radius、background、backgroundRadius、shadow、outerGlow、innerGlow、backdrop、fillPattern、trackPattern、pattern、transform
MGFX.TARGET.TEXT文本glyphfill/color、alignX、alignY、valign、shadow、stroke、glow、weight、italic、letterSpacing、lineHeight

示例

lua
if MGFX.Supports(MGFX.TARGET.RING, "outerGlow") then
    MGFX.RingEx(cx, cy, 36, 6, {fill = Color(80, 170, 255), outerGlow = {width = 14}})
end

返回详细 API 入口