MCPcopy Create free account
hub / github.com/vispy/vispy / test_multiprogram

Function test_multiprogram

vispy/visuals/shaders/tests/test_multiprogram.py:8–78  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

6
7
8def test_multiprogram():
9 vert = """
10 uniform float u_scale;
11
12 void main() {
13 gl_Position = $transform(vec4(0, 0, 0, 0));
14 }
15 """
16
17 frag = """
18 void main() {
19 gl_FragColor = $color;
20 $post_hook
21 }
22 """
23
24 # test adding programs
25 mp = MultiProgram(vert, frag)
26 p1 = mp.add_program()
27 p2 = mp.add_program('p2')
28 assert 'p2' in mp._programs
29
30 # test weak reference to program
31 mp.add_program('junk')
32 assert 'junk' not in mp._programs and len(mp._programs) == 2
33
34 # test setting variables on multiprogram or individual programs
35 mp['u_scale'] = 2
36 assert p1['u_scale'] == 2
37 assert p2['u_scale'] == 2
38
39 p1['u_scale'] = 3
40 assert p1['u_scale'] == 3
41 assert p2['u_scale'] == 2
42
43 # test setting template variables globally
44 mp.frag['color'] = (1, 1, 1, 1)
45 assert p1.frag['color'].value == (1, 1, 1, 1)
46 assert p2.frag['color'].value == (1, 1, 1, 1)
47
48 # test setting template variables per-program
49 func = Function("""
50 void filter() {
51 gl_FragColor.r = 0.5;
52 }
53 """)
54 p1.frag['post_hook'] = StatementList()
55 p2.frag['post_hook'] = StatementList()
56 p2.frag['post_hook'].add(func())
57
58 tr1 = STTransform()
59 tr2 = MatrixTransform()
60 p1.vert['transform'] = tr1
61 p2.vert['transform'] = tr2
62
63 assert 'st_transform_map' in p1.vert.compile()
64 assert 'affine_transform_map' in p2.vert.compile()
65 assert 'filter' not in p1.frag.compile()

Callers

nothing calls this directly

Calls 9

add_programMethod · 0.95
MultiProgramClass · 0.90
FunctionClass · 0.90
StatementListClass · 0.90
STTransformClass · 0.90
MatrixTransformClass · 0.90
funcFunction · 0.50
addMethod · 0.45
compileMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…