Kivy + glsl:具有可变时间和分辨率的多个着色器?

时间:2018-07-29 14:04:38

标签: python glsl kivy shader

假设我有2个着色器:

shader1 = '''
$HEADER$

uniform float time;
uniform vec2 resolution;

void main(void)
{
    vec2 position = (gl_FragCoord.xy / resolution.xy);

    float color = 0.0;
    color += position.y / position.x;
    if(color < abs(sin(time))) { color = 0.5 * abs(sin(time)) + 0.2; }
    vec3 output_color = vec3(color * 1.5, color, color * 2.0);

    gl_FragColor = vec4(output_color, 1.0);
}
'''


shader2 = '''
$HEADER$

uniform float time;
uniform vec2 resolution;

void main(void)
{
    vec2 position = (gl_FragCoord.xy / resolution.xy);

    float color = 0.0;
    color += position.y / position.x;
    if(color < abs(sin(time))) { color = 0.5 * abs(sin(time)) + 0.2; }
    vec3 output_color = vec3(color * 1., color*1.2, color * 1.5);

    gl_FragColor = vec4(output_color, 1.0);
}
'''

或其他使用制服分辨率和时间的人。

例如,我希望shader_1填充应用程序屏幕的左半部分,shader_2填充-右半部分。

可以这样做吗?

我试图从kivy的官方github存储库中更改示例,但没有成功。

我没有找到任何使用几个具有可变分辨率和时间的着色器的示例。

为什么? 我想使用主要在glsl着色器上编写的元素(按钮等)编写一些应用程序,因为它们给人的吸引力和灵活性给我留下了深刻的印象

0 个答案:

没有答案