コード例 #1
0
    gl_FragColor = vec4(v_color.rgb, 1.0);
}
"""

borders = Filter(
    1024, 1024, """
const float epsilon = 1e-3;
vec4 filter(sampler2D original, sampler2D filtered, vec2 texcoord, vec2 texsize)
{
    vec4 center = texture2D(filtered, texcoord);
    vec4 left   = texture2D(filtered, texcoord + vec2(-1.0, 0.0)/texsize);
    vec4 right  = texture2D(filtered, texcoord + vec2(+1.0, 0.0)/texsize);
    vec4 down   = texture2D(filtered, texcoord + vec2( 0.0,-1.0)/texsize);
    vec4 up     = texture2D(filtered, texcoord + vec2( 0.0,+1.0)/texsize);
    vec4 black  = vec4(0,0,0,1);
    float level = 0.5;

    if (length(center-left) > epsilon) {
        return mix(black,right, level);
    } else if (length(center-right) > epsilon) {
        return mix(black, left, level);
    } else if (length(center-down) > epsilon) {
        return mix(black, up,  level);
    } else if (length(center-up) > epsilon) {
        return mix(black, down, level);
    }
    return center;
} """)

window = app.Window(width=1024, height=1024)

コード例 #2
0
cube_fragment = """
uniform sampler2D texture;
varying vec2 v_texcoord;
void main()
{
    float r = texture2D(texture, v_texcoord).r;
    gl_FragColor = vec4(vec3(r),1.0);
}
"""

pixelate = Filter(
    512, 512, """
uniform float level;
vec4 filter(sampler2D original, sampler2D filtered, vec2 texcoord, vec2 texsize)
{
    vec2 uv = (texcoord * level);
    uv = (uv - fract(uv)) / level;
    return texture2D(filtered, uv);
} """)
pixelate["level"] = 256.0

window = app.Window(1024, 1024)


@window.event
def on_draw(dt):
    global phi, theta

    with pixelate:
        window.clear()
コード例 #3
0
         + 0.3162162162 * (texture2D( filtered, texcoord + vec2(0.0, 1.3846153846)/texsize) +
                           texture2D( filtered, texcoord - vec2(0.0, 1.3846153846)/texsize) )
         + 0.0702702703 * (texture2D( filtered, texcoord + vec2(0.0, 3.2307692308)/texsize) +
                           texture2D( filtered, texcoord - vec2(0.0, 3.2307692308)/texsize) );
}""")

HBlur = gloo.Snippet("""
vec4 filter(sampler2D original, sampler2D filtered, vec2 texcoord, vec2 texsize)
{
    return 0.2270270270 *  texture2D( filtered, texcoord)
         + 0.3162162162 * (texture2D( filtered, texcoord + vec2(1.3846153846, 0.0)/texsize) +
                           texture2D( filtered, texcoord - vec2(1.3846153846, 0.0)/texsize) )
         + 0.0702702703 * (texture2D( filtered, texcoord + vec2(3.2307692308, 0.0)/texsize) +
                           texture2D( filtered, texcoord - vec2(3.2307692308, 0.0)/texsize) );
}""")
GaussianBlur = Filter(512, 512, VBlur, HBlur)


@window.event
def on_draw(dt):
    global phi, theta

    with GaussianBlur:
        window.clear()
        gl.glEnable(gl.GL_DEPTH_TEST)
        cube.draw(gl.GL_TRIANGLES, faces)

    theta += 0.5  # degrees
    phi += 0.5  # degrees
    model = np.eye(4, dtype=np.float32)
    glm.rotate(model, theta, 0, 0, 1)
コード例 #4
0
    return texture2D(filtered, uv);
} """)
sepia = gloo.Snippet("""
vec4 filter(vec4 color)
{
    return vec4( dot(color.rgb, vec3(.393, .769, .189)),
                 dot(color.rgb, vec3(.349, .686, .168)),
                 dot(color.rgb, vec3(.272, .534, .131)),
                 color.a );
}
vec4 filter(sampler2D original, sampler2D filtered, vec2 texcoord, vec2 texsize)
{
    return filter( texture2D(filtered, texcoord) );
}
 """)
compose = Filter(512, 512, sepia(pixelate))
compose["level"] = 128.0

window = app.Window(1024, 1024)


@window.event
def on_draw(dt):
    global phi, theta

    with compose:
        window.clear()
        gl.glEnable(gl.GL_DEPTH_TEST)
        cube.draw(gl.GL_TRIANGLES, faces)
    theta += 0.5
    phi += 0.5