@@ -15,23 +15,97 @@ in vec4 col;
15
15
in float len;
16
16
out vec4 c;
17
17
18
+ vec2 rotatez(vec2 v, float c, float s){
19
+ return mat2 (c, s, - s, c) * v;
20
+ }
21
+
22
+ void main(){
23
+ vec2 g = geom * vec2 (len, 1.0 );
24
+ vec3 r = vec3 (rotatez(g, dir.x, dir.y), 0.0 );
25
+ gl_Position = mvp * vec4 (r + pos, 1.0 );
26
+ c = col;
27
+ }
28
+ @end
29
+
30
+ @fs fs
31
+ precision mediump float ;
32
+
33
+ in vec4 c;
34
+ out vec4 fc;
35
+
36
+ void main(){
37
+ fc = c;
38
+ }
39
+ @end
40
+
41
+ @vs vsoff
42
+ @glsl_options fixup_clipspace
43
+
44
+ precision mediump float ;
45
+
46
+ layout (binding= 0 ) uniform Vparam {
47
+ mat4 mvp;
48
+ };
49
+ in vec2 geom;
50
+ in vec3 pos;
51
+ in vec3 dir;
52
+ in float len;
53
+ flat out uint idx;
54
+
55
+ vec2 rotatez(vec2 v, float c, float s){
56
+ return mat2 (c, s, - s, c) * v;
57
+ }
58
+
59
+ void main(){
60
+ vec2 g = geom * vec2 (len, 1.0 );
61
+ vec3 r = vec3 (rotatez(g, dir.x, dir.y), 0.0 );
62
+ gl_Position = mvp * vec4 (r + pos, 1.0 );
63
+ idx = gl_InstanceIndex + 1 ;
64
+ }
65
+ @end
66
+
67
+ @fs fsoff
68
+ precision mediump float ;
69
+
70
+ flat in uint idx;
71
+ out uint fc;
72
+
73
+ void main(){
74
+ fc = idx;
75
+ }
76
+ @end
77
+
78
+ @vs vs3d
79
+ @glsl_options fixup_clipspace
80
+
81
+ precision mediump float ;
82
+
83
+ layout (binding= 0 ) uniform Vparam {
84
+ mat4 mvp;
85
+ };
86
+ in vec3 geom;
87
+ in vec3 pos;
88
+ in vec3 dir;
89
+ in vec4 col;
90
+ in float len;
91
+ out vec4 c;
92
+
18
93
vec3 rotate(vec3 v, float c, float s){
19
- float w = 1.0 - c;
20
94
return mat3 (c, s, 0 , - s, c, 0 , 0 , 0 , 1 )
21
95
* mat3 (c, 0 , s, 0 , 1 , 0 , - s, 0 , c)
22
96
* mat3 (1 , 0 , 0 , 0 , c, s, 0 , - s, c)
23
97
* v;
24
98
}
25
99
26
100
void main(){
27
- vec3 g = vec3 ( geom * vec2 (len, 1.0 ), 0 .0 );
101
+ vec3 g = geom * vec3 (len, 1.0 , 1 .0 );
28
102
vec3 r = rotate(g, dir.x, dir.y);
29
103
gl_Position = mvp * vec4 (r + pos, 1.0 );
30
104
c = col;
31
105
}
32
106
@end
33
107
34
- @fs fs
108
+ @fs fs3d
35
109
precision mediump float ;
36
110
37
111
in vec4 c;
@@ -42,37 +116,36 @@ void main(){
42
116
}
43
117
@end
44
118
45
- @vs vsoff
119
+ @vs vsoff3d
46
120
@glsl_options fixup_clipspace
47
121
48
122
precision mediump float ;
49
123
50
124
layout (binding= 0 ) uniform Vparam {
51
125
mat4 mvp;
52
126
};
53
- in vec2 geom;
127
+ in vec3 geom;
54
128
in vec3 pos;
55
129
in vec3 dir;
56
130
in float len;
57
131
flat out uint idx;
58
132
59
133
vec3 rotate(vec3 v, float c, float s){
60
- float w = 1.0 - c;
61
134
return mat3 (c, s, 0 , - s, c, 0 , 0 , 0 , 1 )
62
135
* mat3 (c, 0 , s, 0 , 1 , 0 , - s, 0 , c)
63
136
* mat3 (1 , 0 , 0 , 0 , c, s, 0 , - s, c)
64
137
* v;
65
138
}
66
139
67
140
void main(){
68
- vec3 g = vec3 ( geom * vec2 (len, 1.0 ), 0 .0 );
141
+ vec3 g = geom * vec3 (len, 1.0 , 1 .0 );
69
142
vec3 r = rotate(g, dir.x, dir.y);
70
143
gl_Position = mvp * vec4 (r + pos, 1.0 );
71
144
idx = gl_InstanceIndex + 1 ;
72
145
}
73
146
@end
74
147
75
- @fs fsoff
148
+ @fs fsoff3d
76
149
precision mediump float ;
77
150
78
151
flat in uint idx;
@@ -85,3 +158,5 @@ void main(){
85
158
86
159
@program idx vsoff fsoff
87
160
@program s vs fs
161
+ @program idx3d vsoff3d fsoff3d
162
+ @program s3d vs3d fs3d
0 commit comments