forked from glumpy/glumpy
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsnippet-usage.py
executable file
·89 lines (72 loc) · 2.36 KB
/
snippet-usage.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# -----------------------------------------------------------------------------
# Copyright (c) 2009-2016 Nicolas P. Rougier. All rights reserved.
# Distributed under the (new) BSD License.
# -----------------------------------------------------------------------------
from glumpy import gloo
transform_1 = gloo.Snippet("""
uniform float scale;
float forward(float x) { return scale*x; }
float inverse(float x) { return scale*x; }
""")
transform_2 = gloo.Snippet("""
uniform float scale;
float forward(float x) { return scale*x; }
float inverse(float x) { return scale*x; }
""")
transform_3 = gloo.Snippet("""
vec2 compose(float x, float y) { return vec2(x,y); }
vec2 compose(vec2 xy) { return xy; }
""")
code= """
uniform float scale;
void main(void)
{
// ---
float scale_t1 = <transform_1.scale>;
float scale_t2 = <transform_6.scale>;
// ---
// Argument must be given through snippet
<transform_1>;
// Argument cannot be given through snippet
<transform_2>(B);
// Argument can be overriden throught snippet
<transform_3(C)>;
// ---
// Default function (first defined) is used
<transform_4>;
// Forward function is used
<transform_5.forward>;
// Inverse function is used
<transform_6.inverse>;
// ---
// Compose snippet with specific field affectation
<transform_7>;
// Compose snippet with generic field affectation
// Note yet done
<transform_8(H)>;
<transform_8.x.scale>;
<transform_8.y.scale>;
} """
program = gloo.Program(code,"void main(){}")
program["transform_1"] = transform_1("A")
program["transform_2"] = "forward"
program["transform_3"] = transform_1()
program["transform_4"] = transform_1("D")
program["transform_5"] = transform_1(transform_2("E"))
program["transform_6"] = transform_2("F", scale="aliased_scale")
program["transform_7"] = transform_3(transform_1("G.x"), transform_2("G.y"))
program["transform_8"] = transform_3(transform_1('.x', name='x'),
transform_2('.y', name='y'))
print(program.vertex.code)
# Make sure that if snippet code has been already included in another program
# it is nonetheless included in the new program
code= """
void main(void)
{
// Argument must be given through snippet
<transform>;
}
"""
program = gloo.Program(code, "void main(){}")
program["transform"] = transform_1("A")
#print program.vertex.code