我试图通过结合现有的和Corona Simulator崩溃来创造新的效果。
这是我的代码
graphics.defineEffect({
language = "glsl",
category = "filter",
name = "myEffect",
graph = {
gray = { effect = "filter.grayscale", input1 = "paint1" },
--final = { effect = "filter.contrast", input1 = "gray" },
},
output = "gray"
});
local rect = display.newRect(100, 100, 100, 100);
rect:setFillColor(1, 0, 0);
rect.fill.effect = "filter.myEffect";
还有关于过滤器参数的问题。如何在此示例中指定滤镜对比度的参数?
谢谢
答案 0 :(得分:1)
这最近给我带来了麻烦。我发现它可以通过在节点表中声明效果的图形定义来解决。
我在下面提供了解决方案并更正了语法。
graphics.defineEffect({
language = "glsl",
category = "filter",
name = "myEffect",
graph = {
nodes = {
gray = { effect = "filter.grayscale", input1 = "paint1" }
--final = { effect = "filter.contrast", input1 = "gray" },
},
output = "gray"
}
})
local rect = display.newRect(100, 100, 100, 100);
rect:setFillColor(1, 0, 0);
rect.fill.effect = "filter.myEffect";
关于对比问题,请原谅我,如果我误解了,但这应该是一个可行的解决方案
graphics.defineEffect({
language = "glsl",
category = "filter",
name = "myEffect",
graph = {
nodes = {
gray = { effect = "filter.grayscale", input1 = "paint1" },
final = { effect = "filter.contrast", input1 = "gray" }
},
output = "final"
}
})
local rect = display.newRect(100, 100, 100, 100);
rect:setFillColor(1, 0, 0);
rect.fill.effect = "filter.myEffect";
rect.fill.effect.final.contrast = 2
对此的一个很好的介绍是Tutorial: Multi-Pass Shaders in Graphics 2.0 by Bryan Smith