类型 函数 库 graphics.* 返回值 无 修订版 版本 2024.3703 关键字 着色器、效果、图形 另请参见 自定义着色器效果 (指南) 过滤器/生成器/合成器 (指南) customFilter (示例)
此函数允许你扩展 Corona 然后定义自定义着色器效果。你的自定义效果可以定义顶点内核或片段内核(或两者)。这些内核类似于着色器,只不过它们必须定义具有特定名称且符合特定函数特征的函数。
有关如何为此内核编写着色器代码的详细说明,请参阅 自定义着色器效果 指南。
自定义效果在 iOS、Android、macOS 台式机和 Win32 台式机上受支持。
graphics.defineEffect( effect )
Table. 定义着色器效果的表 — 有关详细信息,请参阅下一部分。
effect
表可包含以下属性
String. 效果的类别。这决定了输入纹理的数量
"generator"
— 假设有 0 个输入纹理。"filter"
— 假设有 1 个输入纹理。"composite"
— 假设有 2 个输入纹理。String. 效果所属组的名称。虽然 内置 效果没有名称,但自定义效果默认情况下放在 "custom"
组中。你可以通过传入不同的组名称来覆盖此默认设置。
String. 在类别中唯一标识效果的名称。在给定的类别和组中,这不可与category
属性和 group
属性一起,确定了你分配给 Paint 对象的效果的完整名称,如下所示"<category>.<group>.<name>"
String. 片段内核的着色器代码。请参阅 自定义着色器效果 指南中的片段内核。请注意,如果设置了 vertex
属性,则不需要此代码。
字符串. 顶点核中的着色器代码。在 自定义着色器效果 指南中,请参阅顶点核。请注意,如果设置了 fragment
属性,不需要 此项。
布尔值. 如果顶点或片段核针对时间(输出会随着时间而变化),请将其设置为 true
。默认false
,这意味着内核不会在其计算中使用时间。
表. 允许为效果指定命名参数。可以最多指定四个参数,每个参数都是 标量
(浮点数)。有关详细信息,请参阅 自定义着色器效果 指南中的效果参数。请注意,可以指定 vertexData
或 uniformData
,但不能同时指定这两个参数。
表. 允许为效果指定命名参数。可以最多指定四个参数,每个参数可以是不同类型: 标量
(浮点数)、vec2
vec3
、vec4
、mat3
或 mat4
。有关详细信息,请参阅 自定义着色器效果 指南中的效果参数。请注意,可以指定 vertexData
或 uniformData
,但不能同时指定这两个参数。
-- An effect that brightens each pixel -- Usage: object.fill.effect = "filter.custom.myBrighten" local kernel = {} kernel.category = "filter" kernel.name = "myBrighten" kernel.fragment = [[ P_COLOR vec4 FragmentKernel( P_UV vec2 texCoord ) { P_COLOR float brightness = 0.5; P_COLOR vec4 texColor = texture2D( CoronaSampler0, texCoord ); // Pre-multiply the alpha to brightness brightness = brightness * texColor.a; // Add the brightness texColor.rgb += brightness; // Modulate by the display object's combined alpha/tint return CoronaColorScale( result ); } ]] graphics.defineEffect( kernel )