ray 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. data/README.md +9 -6
  2. data/Rakefile +1 -5
  3. data/ext/audio.c +25 -19
  4. data/ext/audio_source.c +67 -39
  5. data/ext/color.c +19 -19
  6. data/ext/drawable.c +190 -31
  7. data/ext/extconf.rb +16 -14
  8. data/ext/gl.c +310 -30
  9. data/ext/gl_buffer.c +223 -2
  10. data/ext/gl_index_buffer.c +11 -0
  11. data/ext/gl_int_array.c +24 -22
  12. data/ext/gl_vertex.c +84 -49
  13. data/ext/image.c +115 -51
  14. data/ext/image_target.c +58 -10
  15. data/ext/input.c +73 -6
  16. data/ext/mo.c +583 -0
  17. data/ext/mo.h +189 -0
  18. data/ext/music.c +9 -8
  19. data/ext/pixel_bus.c +349 -0
  20. data/ext/polygon.c +68 -45
  21. data/ext/ray.c +1 -0
  22. data/ext/ray.h +19 -1
  23. data/ext/rect.c +9 -47
  24. data/ext/say.h +1 -2
  25. data/ext/say_all.h +6 -0
  26. data/ext/say_audio.h +3 -0
  27. data/ext/say_audio_context.c +1 -4
  28. data/ext/say_basic_type.c +24 -0
  29. data/ext/say_basic_type.h +4 -0
  30. data/ext/say_buffer.c +217 -88
  31. data/ext/say_buffer.h +20 -5
  32. data/ext/say_buffer_renderer.c +10 -7
  33. data/ext/say_buffer_renderer.h +1 -1
  34. data/ext/say_buffer_slice.c +70 -76
  35. data/ext/say_context.c +109 -22
  36. data/ext/say_context.h +14 -0
  37. data/ext/say_drawable.c +113 -25
  38. data/ext/say_drawable.h +23 -2
  39. data/ext/say_error.c +7 -2
  40. data/ext/say_font.c +30 -27
  41. data/ext/say_font.h +3 -6
  42. data/ext/say_get_proc.c +35 -0
  43. data/ext/say_image.c +102 -27
  44. data/ext/say_image.h +11 -4
  45. data/ext/say_image_target.c +88 -34
  46. data/ext/say_image_target.h +3 -2
  47. data/ext/say_index_buffer.c +31 -19
  48. data/ext/say_index_buffer.h +4 -2
  49. data/ext/say_index_buffer_slice.c +78 -70
  50. data/ext/say_music.c +4 -2
  51. data/ext/say_osx.h +3 -2
  52. data/ext/say_osx_context.h +37 -4
  53. data/ext/say_osx_window.h +32 -37
  54. data/ext/say_pixel_bus.c +163 -0
  55. data/ext/say_pixel_bus.h +44 -0
  56. data/ext/say_polygon.c +2 -2
  57. data/ext/say_shader.c +66 -62
  58. data/ext/say_shader.h +2 -0
  59. data/ext/say_sprite.c +1 -2
  60. data/ext/say_target.c +14 -23
  61. data/ext/say_target.h +3 -1
  62. data/ext/say_text.c +45 -7
  63. data/ext/say_text.h +12 -3
  64. data/ext/say_thread.c +13 -6
  65. data/ext/say_thread.h +1 -1
  66. data/ext/say_thread_variable.c +5 -5
  67. data/ext/say_vertex_type.c +79 -41
  68. data/ext/say_vertex_type.h +6 -2
  69. data/ext/say_view.c +10 -31
  70. data/ext/say_view.h +1 -5
  71. data/ext/say_win.h +2 -2
  72. data/ext/say_win_context.h +49 -11
  73. data/ext/say_win_window.h +30 -27
  74. data/ext/say_window.c +3 -3
  75. data/ext/say_x11.h +3 -1
  76. data/ext/say_x11_context.h +64 -10
  77. data/ext/say_x11_window.h +22 -17
  78. data/ext/shader.c +9 -0
  79. data/ext/sprite.c +7 -1
  80. data/ext/target.c +80 -28
  81. data/ext/text.c +43 -1
  82. data/ext/view.c +53 -1
  83. data/ext/window.c +4 -0
  84. data/lib/ray/animation_list.rb +17 -2
  85. data/lib/ray/audio_source.rb +11 -0
  86. data/lib/ray/color.rb +14 -0
  87. data/lib/ray/drawable.rb +23 -0
  88. data/lib/ray/dsl/event.rb +1 -9
  89. data/lib/ray/dsl/event_runner.rb +3 -4
  90. data/lib/ray/dsl/matcher.rb +20 -1
  91. data/lib/ray/effect.rb +116 -0
  92. data/lib/ray/effect/black_and_white.rb +38 -0
  93. data/lib/ray/effect/color_inversion.rb +16 -0
  94. data/lib/ray/effect/generator.rb +145 -0
  95. data/lib/ray/effect/grayscale.rb +32 -0
  96. data/lib/ray/game.rb +25 -5
  97. data/lib/ray/gl/vertex.rb +105 -26
  98. data/lib/ray/helper.rb +5 -0
  99. data/lib/ray/image.rb +54 -13
  100. data/lib/ray/image_target.rb +7 -0
  101. data/lib/ray/matrix.rb +26 -0
  102. data/lib/ray/music.rb +4 -0
  103. data/lib/ray/pixel_bus.rb +22 -0
  104. data/lib/ray/polygon.rb +17 -0
  105. data/lib/ray/pp.rb +28 -0
  106. data/lib/ray/ray.rb +7 -1
  107. data/lib/ray/rect.rb +7 -13
  108. data/lib/ray/scene.rb +24 -5
  109. data/lib/ray/scene_list.rb +9 -0
  110. data/lib/ray/shader.rb +11 -2
  111. data/lib/ray/sound.rb +4 -0
  112. data/lib/ray/sprite.rb +23 -62
  113. data/lib/ray/target.rb +25 -0
  114. data/lib/ray/text.rb +10 -0
  115. data/lib/ray/turtle.rb +9 -3
  116. data/lib/ray/vector.rb +18 -0
  117. data/lib/ray/vertex.rb +6 -0
  118. data/lib/ray/view.rb +22 -0
  119. data/samples/animation/sprite_motion.rb +0 -60
  120. data/samples/audio/{spacial.rb → spatial.rb} +1 -1
  121. data/samples/buffer/buffer.rb +1 -0
  122. data/samples/buffer/index_buffer.rb +2 -0
  123. data/samples/cptn_ruby/cptn_ruby.rb +6 -7
  124. data/samples/effects/effect.rb +39 -0
  125. data/samples/effects/grayscale.rb +27 -0
  126. data/samples/opengl/image.rb +7 -5
  127. data/samples/opengl/instancing.rb +159 -0
  128. data/samples/opengl/instancing.rbc +3231 -0
  129. data/samples/opengl/obj_loader.rb +9 -8
  130. data/samples/opengl/shader.rb +1 -3
  131. data/samples/shaders/geometry.rb +108 -38
  132. data/samples/shaders/geometry.rbc +2074 -0
  133. data/samples/shaders/shape.rb +2 -2
  134. data/samples/starfighter/starfighter.rb +5 -5
  135. data/samples/window/get_pixel.rb +1 -1
  136. data/test/animation_list_test.rb +18 -4
  137. data/test/drawable_test.rb +70 -1
  138. data/test/effect_generator_test.rb +63 -0
  139. data/test/effect_test.rb +61 -0
  140. data/test/game_test.rb +18 -0
  141. data/test/gl_buffer_test.rb +43 -1
  142. data/test/gl_index_buffer_test.rb +5 -0
  143. data/test/gl_vertex_test.rb +28 -1
  144. data/test/image_test.rb +5 -5
  145. data/test/input_test.rb +49 -0
  146. data/test/pixel_bus_test.rb +28 -0
  147. data/test/rect_test.rb +4 -0
  148. data/{samples/_media → test/res}/Beep.wav +0 -0
  149. data/samples/_media/CptnRuby Gem.png b/data/test/res/CptnRuby → Gem.png +0 -0
  150. data/samples/_media/CptnRuby Map.txt b/data/test/res/CptnRuby → Map.txt +0 -0
  151. data/samples/_media/CptnRuby Tileset.png b/data/test/res/CptnRuby → Tileset.png +0 -0
  152. data/{samples/_media → test/res}/CptnRuby.png +0 -0
  153. data/{samples/_media → test/res}/Space.png +0 -0
  154. data/{samples/_media → test/res}/Star.png +0 -0
  155. data/{samples/_media → test/res}/Starfighter.png +0 -0
  156. data/test/res/cube.obj +28 -0
  157. data/test/res/light3d.c +2 -2
  158. data/test/res/stone.png +0 -0
  159. data/test/scene_test.rb +3 -0
  160. data/test/sprite_test.rb +10 -0
  161. data/test/text_test.rb +31 -2
  162. data/test/view_test.rb +13 -1
  163. metadata +38 -17
  164. data/ext/say_array.c +0 -124
  165. data/ext/say_array.h +0 -34
  166. data/ext/say_table.c +0 -86
  167. data/ext/say_table.h +0 -24
@@ -0,0 +1,27 @@
1
+ $:.unshift File.expand_path(File.dirname(__FILE__) + "/../../lib")
2
+ $:.unshift File.expand_path(File.dirname(__FILE__) + "/../../ext")
3
+
4
+ def path_of(res)
5
+ File.expand_path(File.dirname(__FILE__) + "/../../test/res/#{res}")
6
+ end
7
+
8
+ require 'ray'
9
+
10
+ Ray.game "grayscale" do
11
+ register { add_hook :quit, method(:exit!) }
12
+
13
+ scene :shader do
14
+ @obj = sprite path_of("sprite.png")
15
+
16
+ effect_generator do |gen|
17
+ gen << grayscale
18
+ gen.build window.shader
19
+ end
20
+
21
+ render do |win|
22
+ win.draw @obj
23
+ end
24
+ end
25
+
26
+ scenes << :shader
27
+ end
@@ -14,17 +14,19 @@ class CustomSprite < Ray::Drawable
14
14
  end
15
15
 
16
16
  def fill_vertices
17
+ rect = @img.tex_rect [0, 0, @img.w, @img.h]
18
+
17
19
  [
18
- Ray::Vertex.new([0, 0], Ray::Color.white, [0, 0]),
19
- Ray::Vertex.new([@img.w, 0], Ray::Color.white, [1, 0]),
20
- Ray::Vertex.new([@img.w, @img.h], Ray::Color.white, [1, 1]),
21
- Ray::Vertex.new([0, @img.h], Ray::Color.white, [0, 1]),
20
+ Ray::Vertex.new([0, 0], Ray::Color.white, rect.top_left),
21
+ Ray::Vertex.new([@img.w, 0], Ray::Color.white, rect.top_right),
22
+ Ray::Vertex.new([0, @img.h], Ray::Color.white, rect.bottom_left),
23
+ Ray::Vertex.new([@img.w, @img.h], Ray::Color.white, rect.bottom_right),
22
24
  ]
23
25
  end
24
26
 
25
27
  def render(first, index)
26
28
  @img.bind
27
- Ray::GL.draw_arrays :triangle_fan, first, 4
29
+ Ray::GL.draw_arrays :triangle_strip, first, 4
28
30
  end
29
31
  end
30
32
 
@@ -0,0 +1,159 @@
1
+ $:.unshift File.expand_path(File.dirname(__FILE__) + "/../../lib")
2
+ $:.unshift File.expand_path(File.dirname(__FILE__) + "/../../ext")
3
+
4
+ require 'ray'
5
+
6
+ Ray::GL.core_profile = true
7
+ Ray::GL.major_version = 3
8
+ Ray::GL.minor_version = 2
9
+
10
+ def path_of(res)
11
+ File.expand_path(res, File.join(File.dirname(__FILE__), '../../test/res'))
12
+ end
13
+
14
+ class Model < Ray::Drawable
15
+ include Ray::GL
16
+
17
+ InstanceSqrt = 120
18
+ InstanceCount = InstanceSqrt ** 2
19
+
20
+ Vertex = Ray::GL::Vertex.make [
21
+ [:pos, "in_Position", :vector3],
22
+
23
+ [:col, "in_Color", :color, true],
24
+ [:translation, "in_Translation", :vector3, true],
25
+ ]
26
+
27
+ def initialize(filename)
28
+ super()
29
+
30
+ @buffer = Ray::GL::Buffer.new :static, Vertex
31
+
32
+ @buffer.resize_instance InstanceCount
33
+
34
+ n = x = 0.0
35
+ (0...InstanceSqrt).each do
36
+ z = 0
37
+ (0...InstanceSqrt).each do
38
+ translation = [(x + rand * 2 - 1) * 10, 0, -10 * (z + 1)]
39
+ @buffer.set_instance(n, Vertex::Instance.new(Ray::Color.new(rand(256),
40
+ rand(256),
41
+ rand(256)),
42
+ translation))
43
+ n += 1
44
+
45
+ z += rand * 2
46
+ end
47
+
48
+ x += rand * 2
49
+ end
50
+
51
+ @buffer.update_instance
52
+
53
+ @buffer.resize 12 * 3
54
+
55
+ index = -1
56
+
57
+ positions = []
58
+
59
+ open(filename) do |io|
60
+ io.each_line do |line|
61
+ next if line[0] == "#" or line !~ /\S/
62
+
63
+ word, *args = line.split(" ")
64
+
65
+ case word
66
+ when "v" then positions << Ray::Vector3[*args.map(&:to_f)]
67
+ when "f" then
68
+ args.each do |arg|
69
+ pos, normal = arg.split("//").map { |s| s.to_i - 1 }
70
+ @buffer[index += 1] = Vertex.new(positions[pos])
71
+ end
72
+ end
73
+ end
74
+ end
75
+
76
+ @buffer.update
77
+
78
+ self.matrix_proc = proc do
79
+ c = Math.cos(@n / 100.0)
80
+ s = Math.sin(@n / 100.0)
81
+ Ray::Matrix.looking_at([200 + 50 * c, 100 * s, -50],
82
+ [500, 20, -500],
83
+ [0, -1, 0]).scale([4, 4, 4])
84
+ end
85
+ end
86
+
87
+ def move(n)
88
+ @n = n
89
+ matrix_changed!
90
+ end
91
+
92
+ def render(first, index)
93
+ @buffer.bind
94
+ draw_arrays_instanced :triangles, first, @buffer.size, InstanceCount
95
+ end
96
+ end
97
+
98
+ Ray.game "*Many* cubes!" do
99
+ register { add_hook :quit, method(:exit!) }
100
+
101
+ scene :teapot do
102
+ @model = Model.new path_of("cube.obj")
103
+
104
+ vertex_shader = <<-code
105
+ #version 150
106
+
107
+ in vec3 in_Position;
108
+ in vec3 in_Translation;
109
+ in vec4 in_Color;
110
+
111
+ uniform mat4 in_ModelView;
112
+ uniform mat4 in_Projection;
113
+
114
+ out vec4 var_Color;
115
+
116
+ void main() {
117
+ mat4 transform = in_ModelView *
118
+ mat4(1, 0, 0, in_Translation.x,
119
+ 0, 1, 0, in_Translation.y,
120
+ 0, 0, 1, in_Translation.z,
121
+ 0, 0, 0, 1);
122
+ mat4 mvp = transform * in_Projection;
123
+ gl_Position = vec4(in_Position, 1) * mvp;
124
+
125
+ var_Color = in_Color;
126
+ }
127
+ code
128
+
129
+ frag_shader = <<-code
130
+ #version 150
131
+
132
+ in vec4 var_Color;
133
+ out vec4 out_FragColor;
134
+
135
+ void main() {
136
+ out_FragColor = var_Color;
137
+ }
138
+ code
139
+
140
+ window.shader.apply_vertex Model::Vertex
141
+ window.shader.compile(:vertex => StringIO.new(vertex_shader),
142
+ :frag => StringIO.new(frag_shader))
143
+
144
+ window.view = Ray::View.new Ray::Matrix.perspective(120, 480.fdiv(640), 1,
145
+ 1000)
146
+
147
+ n = 0.0
148
+ always do
149
+ @model.move(n += 1)
150
+ end
151
+
152
+ render do |win|
153
+ win.draw @model
154
+ end
155
+ end
156
+
157
+ scenes << :teapot
158
+ end
159
+
@@ -0,0 +1,3231 @@
1
+ !RBIX
2
+ 11985915524486876935
3
+ x
4
+ M
5
+ 1
6
+ n
7
+ n
8
+ x
9
+ 10
10
+ __script__
11
+ i
12
+ 177
13
+ 99
14
+ 43
15
+ 0
16
+ 7
17
+ 1
18
+ 49
19
+ 2
20
+ 1
21
+ 45
22
+ 3
23
+ 4
24
+ 45
25
+ 3
26
+ 5
27
+ 65
28
+ 49
29
+ 6
30
+ 0
31
+ 49
32
+ 7
33
+ 1
34
+ 7
35
+ 8
36
+ 64
37
+ 81
38
+ 9
39
+ 49
40
+ 10
41
+ 1
42
+ 49
43
+ 11
44
+ 1
45
+ 15
46
+ 99
47
+ 43
48
+ 0
49
+ 7
50
+ 1
51
+ 49
52
+ 2
53
+ 1
54
+ 45
55
+ 3
56
+ 12
57
+ 45
58
+ 3
59
+ 13
60
+ 65
61
+ 49
62
+ 6
63
+ 0
64
+ 49
65
+ 7
66
+ 1
67
+ 7
68
+ 14
69
+ 64
70
+ 81
71
+ 9
72
+ 49
73
+ 10
74
+ 1
75
+ 49
76
+ 11
77
+ 1
78
+ 15
79
+ 5
80
+ 7
81
+ 15
82
+ 64
83
+ 47
84
+ 49
85
+ 16
86
+ 1
87
+ 15
88
+ 45
89
+ 17
90
+ 18
91
+ 43
92
+ 19
93
+ 2
94
+ 13
95
+ 18
96
+ 2
97
+ 49
98
+ 20
99
+ 1
100
+ 15
101
+ 15
102
+ 45
103
+ 17
104
+ 21
105
+ 43
106
+ 19
107
+ 4
108
+ 3
109
+ 13
110
+ 18
111
+ 2
112
+ 49
113
+ 22
114
+ 1
115
+ 15
116
+ 15
117
+ 45
118
+ 17
119
+ 23
120
+ 43
121
+ 19
122
+ 80
123
+ 13
124
+ 18
125
+ 2
126
+ 49
127
+ 24
128
+ 1
129
+ 15
130
+ 15
131
+ 99
132
+ 7
133
+ 25
134
+ 7
135
+ 26
136
+ 65
137
+ 67
138
+ 49
139
+ 27
140
+ 0
141
+ 49
142
+ 28
143
+ 4
144
+ 15
145
+ 99
146
+ 7
147
+ 29
148
+ 45
149
+ 17
150
+ 30
151
+ 43
152
+ 31
153
+ 65
154
+ 49
155
+ 32
156
+ 3
157
+ 13
158
+ 99
159
+ 12
160
+ 7
161
+ 33
162
+ 12
163
+ 7
164
+ 34
165
+ 12
166
+ 65
167
+ 12
168
+ 49
169
+ 35
170
+ 4
171
+ 15
172
+ 49
173
+ 33
174
+ 0
175
+ 15
176
+ 45
177
+ 17
178
+ 36
179
+ 7
180
+ 37
181
+ 64
182
+ 56
183
+ 38
184
+ 50
185
+ 39
186
+ 1
187
+ 15
188
+ 2
189
+ 11
190
+ I
191
+ 6
192
+ I
193
+ 0
194
+ I
195
+ 0
196
+ I
197
+ 0
198
+ n
199
+ p
200
+ 40
201
+ x
202
+ 7
203
+ Globals
204
+ x
205
+ 2
206
+ $:
207
+ x
208
+ 2
209
+ []
210
+ x
211
+ 4
212
+ File
213
+ n
214
+ n
215
+ x
216
+ 11
217
+ active_path
218
+ x
219
+ 7
220
+ dirname
221
+ s
222
+ 10
223
+ /../../lib
224
+ x
225
+ 1
226
+ +
227
+ x
228
+ 11
229
+ expand_path
230
+ x
231
+ 7
232
+ unshift
233
+ n
234
+ n
235
+ s
236
+ 10
237
+ /../../ext
238
+ s
239
+ 3
240
+ ray
241
+ x
242
+ 7
243
+ require
244
+ x
245
+ 3
246
+ Ray
247
+ n
248
+ x
249
+ 2
250
+ GL
251
+ x
252
+ 13
253
+ core_profile=
254
+ n
255
+ x
256
+ 14
257
+ major_version=
258
+ n
259
+ x
260
+ 14
261
+ minor_version=
262
+ x
263
+ 7
264
+ path_of
265
+ M
266
+ 1
267
+ n
268
+ n
269
+ x
270
+ 7
271
+ path_of
272
+ i
273
+ 28
274
+ 45
275
+ 0
276
+ 1
277
+ 20
278
+ 0
279
+ 45
280
+ 0
281
+ 2
282
+ 45
283
+ 0
284
+ 3
285
+ 65
286
+ 49
287
+ 4
288
+ 0
289
+ 49
290
+ 5
291
+ 1
292
+ 7
293
+ 6
294
+ 64
295
+ 49
296
+ 7
297
+ 2
298
+ 49
299
+ 8
300
+ 2
301
+ 11
302
+ I
303
+ 6
304
+ I
305
+ 1
306
+ I
307
+ 1
308
+ I
309
+ 1
310
+ n
311
+ p
312
+ 9
313
+ x
314
+ 4
315
+ File
316
+ n
317
+ n
318
+ n
319
+ x
320
+ 11
321
+ active_path
322
+ x
323
+ 7
324
+ dirname
325
+ s
326
+ 14
327
+ ../../test/res
328
+ x
329
+ 4
330
+ join
331
+ x
332
+ 11
333
+ expand_path
334
+ p
335
+ 5
336
+ I
337
+ -1
338
+ I
339
+ a
340
+ I
341
+ 0
342
+ I
343
+ b
344
+ I
345
+ 1c
346
+ x
347
+ 50
348
+ /home/kilian/code/ray/samples/opengl/instancing.rb
349
+ p
350
+ 1
351
+ x
352
+ 3
353
+ res
354
+ x
355
+ 17
356
+ method_visibility
357
+ x
358
+ 15
359
+ add_defn_method
360
+ x
361
+ 5
362
+ Model
363
+ n
364
+ x
365
+ 8
366
+ Drawable
367
+ x
368
+ 10
369
+ open_class
370
+ x
371
+ 14
372
+ __class_init__
373
+ M
374
+ 1
375
+ n
376
+ n
377
+ x
378
+ 5
379
+ Model
380
+ i
381
+ 126
382
+ 5
383
+ 66
384
+ 5
385
+ 45
386
+ 0
387
+ 1
388
+ 43
389
+ 2
390
+ 47
391
+ 49
392
+ 3
393
+ 1
394
+ 15
395
+ 65
396
+ 7
397
+ 4
398
+ 4
399
+ 120
400
+ 49
401
+ 5
402
+ 2
403
+ 15
404
+ 65
405
+ 7
406
+ 6
407
+ 45
408
+ 4
409
+ 7
410
+ 80
411
+ 49
412
+ 8
413
+ 1
414
+ 49
415
+ 5
416
+ 2
417
+ 15
418
+ 65
419
+ 7
420
+ 9
421
+ 45
422
+ 0
423
+ 10
424
+ 43
425
+ 2
426
+ 43
427
+ 9
428
+ 7
429
+ 11
430
+ 7
431
+ 12
432
+ 64
433
+ 7
434
+ 13
435
+ 35
436
+ 3
437
+ 7
438
+ 14
439
+ 7
440
+ 15
441
+ 64
442
+ 7
443
+ 16
444
+ 2
445
+ 35
446
+ 4
447
+ 7
448
+ 17
449
+ 7
450
+ 18
451
+ 64
452
+ 7
453
+ 13
454
+ 2
455
+ 35
456
+ 4
457
+ 35
458
+ 3
459
+ 49
460
+ 19
461
+ 1
462
+ 49
463
+ 5
464
+ 2
465
+ 15
466
+ 99
467
+ 7
468
+ 20
469
+ 7
470
+ 21
471
+ 65
472
+ 67
473
+ 49
474
+ 22
475
+ 0
476
+ 49
477
+ 23
478
+ 4
479
+ 15
480
+ 99
481
+ 7
482
+ 24
483
+ 7
484
+ 25
485
+ 65
486
+ 67
487
+ 49
488
+ 22
489
+ 0
490
+ 49
491
+ 23
492
+ 4
493
+ 15
494
+ 99
495
+ 7
496
+ 26
497
+ 7
498
+ 27
499
+ 65
500
+ 67
501
+ 49
502
+ 22
503
+ 0
504
+ 49
505
+ 23
506
+ 4
507
+ 11
508
+ I
509
+ 9
510
+ I
511
+ 0
512
+ I
513
+ 0
514
+ I
515
+ 0
516
+ n
517
+ p
518
+ 28
519
+ x
520
+ 3
521
+ Ray
522
+ n
523
+ x
524
+ 2
525
+ GL
526
+ x
527
+ 7
528
+ include
529
+ x
530
+ 12
531
+ InstanceSqrt
532
+ x
533
+ 9
534
+ const_set
535
+ x
536
+ 13
537
+ InstanceCount
538
+ n
539
+ x
540
+ 2
541
+ **
542
+ x
543
+ 6
544
+ Vertex
545
+ n
546
+ x
547
+ 3
548
+ pos
549
+ s
550
+ 11
551
+ in_Position
552
+ x
553
+ 7
554
+ vector3
555
+ x
556
+ 3
557
+ col
558
+ s
559
+ 8
560
+ in_Color
561
+ x
562
+ 5
563
+ color
564
+ x
565
+ 11
566
+ translation
567
+ s
568
+ 14
569
+ in_Translation
570
+ x
571
+ 4
572
+ make
573
+ x
574
+ 10
575
+ initialize
576
+ M
577
+ 1
578
+ n
579
+ n
580
+ x
581
+ 10
582
+ initialize
583
+ i
584
+ 140
585
+ 54
586
+ 52
587
+ 0
588
+ 0
589
+ 15
590
+ 45
591
+ 1
592
+ 2
593
+ 43
594
+ 3
595
+ 43
596
+ 4
597
+ 13
598
+ 71
599
+ 5
600
+ 47
601
+ 9
602
+ 35
603
+ 47
604
+ 49
605
+ 6
606
+ 0
607
+ 13
608
+ 7
609
+ 7
610
+ 45
611
+ 8
612
+ 9
613
+ 47
614
+ 49
615
+ 0
616
+ 2
617
+ 15
618
+ 8
619
+ 43
620
+ 7
621
+ 7
622
+ 45
623
+ 8
624
+ 10
625
+ 49
626
+ 5
627
+ 2
628
+ 38
629
+ 11
630
+ 15
631
+ 39
632
+ 11
633
+ 45
634
+ 12
635
+ 13
636
+ 49
637
+ 14
638
+ 1
639
+ 15
640
+ 7
641
+ 15
642
+ 19
643
+ 2
644
+ 19
645
+ 1
646
+ 15
647
+ 44
648
+ 43
649
+ 16
650
+ 78
651
+ 45
652
+ 17
653
+ 18
654
+ 2
655
+ 49
656
+ 5
657
+ 3
658
+ 56
659
+ 19
660
+ 50
661
+ 20
662
+ 0
663
+ 15
664
+ 39
665
+ 11
666
+ 49
667
+ 21
668
+ 0
669
+ 15
670
+ 39
671
+ 11
672
+ 4
673
+ 12
674
+ 4
675
+ 3
676
+ 49
677
+ 22
678
+ 1
679
+ 49
680
+ 23
681
+ 1
682
+ 15
683
+ 77
684
+ 19
685
+ 3
686
+ 15
687
+ 35
688
+ 0
689
+ 19
690
+ 4
691
+ 15
692
+ 5
693
+ 20
694
+ 0
695
+ 56
696
+ 24
697
+ 47
698
+ 50
699
+ 25
700
+ 1
701
+ 15
702
+ 39
703
+ 11
704
+ 49
705
+ 26
706
+ 0
707
+ 15
708
+ 5
709
+ 5
710
+ 56
711
+ 27
712
+ 47
713
+ 50
714
+ 28
715
+ 0
716
+ 13
717
+ 18
718
+ 2
719
+ 47
720
+ 49
721
+ 29
722
+ 1
723
+ 15
724
+ 11
725
+ I
726
+ 9
727
+ I
728
+ 5
729
+ I
730
+ 1
731
+ I
732
+ 1
733
+ n
734
+ p
735
+ 30
736
+ x
737
+ 10
738
+ initialize
739
+ x
740
+ 3
741
+ Ray
742
+ n
743
+ x
744
+ 2
745
+ GL
746
+ x
747
+ 6
748
+ Buffer
749
+ x
750
+ 3
751
+ new
752
+ x
753
+ 8
754
+ allocate
755
+ x
756
+ 6
757
+ static
758
+ x
759
+ 6
760
+ Vertex
761
+ n
762
+ n
763
+ x
764
+ 7
765
+ @buffer
766
+ x
767
+ 13
768
+ InstanceCount
769
+ n
770
+ x
771
+ 15
772
+ resize_instance
773
+ d
774
+ +0.000000000000000000000000000000000000000000000000000000 0
775
+ x
776
+ 5
777
+ Range
778
+ x
779
+ 12
780
+ InstanceSqrt
781
+ n
782
+ M
783
+ 1
784
+ p
785
+ 2
786
+ x
787
+ 9
788
+ for_block
789
+ t
790
+ n
791
+ x
792
+ 10
793
+ initialize
794
+ i
795
+ 37
796
+ 78
797
+ 19
798
+ 0
799
+ 15
800
+ 44
801
+ 43
802
+ 0
803
+ 78
804
+ 45
805
+ 1
806
+ 2
807
+ 2
808
+ 49
809
+ 3
810
+ 3
811
+ 56
812
+ 4
813
+ 50
814
+ 5
815
+ 0
816
+ 15
817
+ 21
818
+ 1
819
+ 2
820
+ 5
821
+ 48
822
+ 6
823
+ 80
824
+ 49
825
+ 7
826
+ 1
827
+ 81
828
+ 8
829
+ 22
830
+ 1
831
+ 2
832
+ 11
833
+ I
834
+ 6
835
+ I
836
+ 1
837
+ I
838
+ 0
839
+ I
840
+ 0
841
+ I
842
+ -2
843
+ p
844
+ 9
845
+ x
846
+ 5
847
+ Range
848
+ x
849
+ 12
850
+ InstanceSqrt
851
+ n
852
+ x
853
+ 3
854
+ new
855
+ M
856
+ 1
857
+ p
858
+ 2
859
+ x
860
+ 9
861
+ for_block
862
+ t
863
+ n
864
+ x
865
+ 10
866
+ initialize
867
+ i
868
+ 238
869
+ 21
870
+ 2
871
+ 2
872
+ 5
873
+ 48
874
+ 0
875
+ 80
876
+ 49
877
+ 1
878
+ 1
879
+ 81
880
+ 2
881
+ 79
882
+ 82
883
+ 3
884
+ 4
885
+ 10
886
+ 49
887
+ 1
888
+ 1
889
+ 78
890
+ 7
891
+ 4
892
+ 21
893
+ 1
894
+ 0
895
+ 79
896
+ 81
897
+ 2
898
+ 49
899
+ 1
900
+ 1
901
+ 35
902
+ 3
903
+ 19
904
+ 0
905
+ 15
906
+ 39
907
+ 5
908
+ 21
909
+ 2
910
+ 1
911
+ 45
912
+ 6
913
+ 7
914
+ 43
915
+ 8
916
+ 13
917
+ 71
918
+ 9
919
+ 47
920
+ 9
921
+ 135
922
+ 47
923
+ 49
924
+ 10
925
+ 0
926
+ 13
927
+ 45
928
+ 11
929
+ 12
930
+ 43
931
+ 13
932
+ 13
933
+ 71
934
+ 9
935
+ 47
936
+ 9
937
+ 102
938
+ 47
939
+ 49
940
+ 10
941
+ 0
942
+ 13
943
+ 5
944
+ 7
945
+ 14
946
+ 47
947
+ 49
948
+ 0
949
+ 1
950
+ 5
951
+ 7
952
+ 14
953
+ 47
954
+ 49
955
+ 0
956
+ 1
957
+ 5
958
+ 7
959
+ 14
960
+ 47
961
+ 49
962
+ 0
963
+ 1
964
+ 47
965
+ 49
966
+ 15
967
+ 3
968
+ 15
969
+ 8
970
+ 126
971
+ 5
972
+ 7
973
+ 14
974
+ 47
975
+ 49
976
+ 0
977
+ 1
978
+ 5
979
+ 7
980
+ 14
981
+ 47
982
+ 49
983
+ 0
984
+ 1
985
+ 5
986
+ 7
987
+ 14
988
+ 47
989
+ 49
990
+ 0
991
+ 1
992
+ 49
993
+ 9
994
+ 3
995
+ 20
996
+ 0
997
+ 47
998
+ 49
999
+ 15
1000
+ 2
1001
+ 15
1002
+ 8
1003
+ 208
1004
+ 45
1005
+ 11
1006
+ 16
1007
+ 43
1008
+ 13
1009
+ 13
1010
+ 71
1011
+ 9
1012
+ 47
1013
+ 9
1014
+ 179
1015
+ 47
1016
+ 49
1017
+ 10
1018
+ 0
1019
+ 13
1020
+ 5
1021
+ 7
1022
+ 14
1023
+ 47
1024
+ 49
1025
+ 0
1026
+ 1
1027
+ 5
1028
+ 7
1029
+ 14
1030
+ 47
1031
+ 49
1032
+ 0
1033
+ 1
1034
+ 5
1035
+ 7
1036
+ 14
1037
+ 47
1038
+ 49
1039
+ 0
1040
+ 1
1041
+ 47
1042
+ 49
1043
+ 15
1044
+ 3
1045
+ 15
1046
+ 8
1047
+ 203
1048
+ 5
1049
+ 7
1050
+ 14
1051
+ 47
1052
+ 49
1053
+ 0
1054
+ 1
1055
+ 5
1056
+ 7
1057
+ 14
1058
+ 47
1059
+ 49
1060
+ 0
1061
+ 1
1062
+ 5
1063
+ 7
1064
+ 14
1065
+ 47
1066
+ 49
1067
+ 0
1068
+ 1
1069
+ 49
1070
+ 9
1071
+ 3
1072
+ 20
1073
+ 0
1074
+ 49
1075
+ 9
1076
+ 2
1077
+ 49
1078
+ 17
1079
+ 2
1080
+ 15
1081
+ 21
1082
+ 2
1083
+ 1
1084
+ 79
1085
+ 81
1086
+ 2
1087
+ 22
1088
+ 2
1089
+ 1
1090
+ 15
1091
+ 21
1092
+ 1
1093
+ 0
1094
+ 5
1095
+ 48
1096
+ 0
1097
+ 80
1098
+ 49
1099
+ 1
1100
+ 1
1101
+ 81
1102
+ 2
1103
+ 22
1104
+ 1
1105
+ 0
1106
+ 11
1107
+ I
1108
+ c
1109
+ I
1110
+ 1
1111
+ I
1112
+ 0
1113
+ I
1114
+ 0
1115
+ I
1116
+ -2
1117
+ p
1118
+ 18
1119
+ x
1120
+ 4
1121
+ rand
1122
+ x
1123
+ 1
1124
+ *
1125
+ x
1126
+ 1
1127
+ +
1128
+ x
1129
+ 1
1130
+ -
1131
+ I
1132
+ -a
1133
+ x
1134
+ 7
1135
+ @buffer
1136
+ x
1137
+ 6
1138
+ Vertex
1139
+ n
1140
+ x
1141
+ 8
1142
+ Instance
1143
+ x
1144
+ 3
1145
+ new
1146
+ x
1147
+ 8
1148
+ allocate
1149
+ x
1150
+ 3
1151
+ Ray
1152
+ n
1153
+ x
1154
+ 5
1155
+ Color
1156
+ I
1157
+ 100
1158
+ x
1159
+ 10
1160
+ initialize
1161
+ n
1162
+ x
1163
+ 12
1164
+ set_instance
1165
+ p
1166
+ 37
1167
+ I
1168
+ 0
1169
+ I
1170
+ 26
1171
+ I
1172
+ 25
1173
+ I
1174
+ 27
1175
+ I
1176
+ 51
1177
+ I
1178
+ 28
1179
+ I
1180
+ 58
1181
+ I
1182
+ 29
1183
+ I
1184
+ 66
1185
+ I
1186
+ 27
1187
+ I
1188
+ 6d
1189
+ I
1190
+ 28
1191
+ I
1192
+ 74
1193
+ I
1194
+ 29
1195
+ I
1196
+ 7e
1197
+ I
1198
+ 2a
1199
+ I
1200
+ 87
1201
+ I
1202
+ 27
1203
+ I
1204
+ 9e
1205
+ I
1206
+ 28
1207
+ I
1208
+ a5
1209
+ I
1210
+ 29
1211
+ I
1212
+ b3
1213
+ I
1214
+ 27
1215
+ I
1216
+ ba
1217
+ I
1218
+ 28
1219
+ I
1220
+ c1
1221
+ I
1222
+ 29
1223
+ I
1224
+ cb
1225
+ I
1226
+ 2a
1227
+ I
1228
+ d0
1229
+ I
1230
+ 27
1231
+ I
1232
+ d4
1233
+ I
1234
+ 2b
1235
+ I
1236
+ de
1237
+ I
1238
+ 2d
1239
+ I
1240
+ ee
1241
+ x
1242
+ 50
1243
+ /home/kilian/code/ray/samples/opengl/instancing.rb
1244
+ p
1245
+ 1
1246
+ x
1247
+ 11
1248
+ translation
1249
+ x
1250
+ 4
1251
+ each
1252
+ x
1253
+ 4
1254
+ rand
1255
+ x
1256
+ 1
1257
+ *
1258
+ x
1259
+ 1
1260
+ +
1261
+ p
1262
+ 7
1263
+ I
1264
+ 0
1265
+ I
1266
+ 24
1267
+ I
1268
+ 4
1269
+ I
1270
+ 25
1271
+ I
1272
+ 15
1273
+ I
1274
+ 30
1275
+ I
1276
+ 25
1277
+ x
1278
+ 50
1279
+ /home/kilian/code/ray/samples/opengl/instancing.rb
1280
+ p
1281
+ 1
1282
+ x
1283
+ 1
1284
+ z
1285
+ x
1286
+ 4
1287
+ each
1288
+ x
1289
+ 15
1290
+ update_instance
1291
+ x
1292
+ 1
1293
+ *
1294
+ x
1295
+ 6
1296
+ resize
1297
+ M
1298
+ 1
1299
+ p
1300
+ 2
1301
+ x
1302
+ 9
1303
+ for_block
1304
+ t
1305
+ n
1306
+ x
1307
+ 10
1308
+ initialize
1309
+ i
1310
+ 12
1311
+ 57
1312
+ 19
1313
+ 0
1314
+ 15
1315
+ 20
1316
+ 0
1317
+ 56
1318
+ 0
1319
+ 50
1320
+ 1
1321
+ 0
1322
+ 11
1323
+ I
1324
+ 4
1325
+ I
1326
+ 1
1327
+ I
1328
+ 1
1329
+ I
1330
+ 1
1331
+ n
1332
+ p
1333
+ 2
1334
+ M
1335
+ 1
1336
+ p
1337
+ 2
1338
+ x
1339
+ 9
1340
+ for_block
1341
+ t
1342
+ n
1343
+ x
1344
+ 10
1345
+ initialize
1346
+ i
1347
+ 147
1348
+ 57
1349
+ 19
1350
+ 0
1351
+ 15
1352
+ 20
1353
+ 0
1354
+ 78
1355
+ 49
1356
+ 0
1357
+ 1
1358
+ 7
1359
+ 1
1360
+ 64
1361
+ 83
1362
+ 2
1363
+ 13
1364
+ 10
1365
+ 48
1366
+ 15
1367
+ 20
1368
+ 0
1369
+ 7
1370
+ 3
1371
+ 13
1372
+ 70
1373
+ 9
1374
+ 39
1375
+ 15
1376
+ 44
1377
+ 43
1378
+ 4
1379
+ 7
1380
+ 5
1381
+ 78
1382
+ 49
1383
+ 6
1384
+ 2
1385
+ 6
1386
+ 3
1387
+ 49
1388
+ 7
1389
+ 1
1390
+ 10
1391
+ 47
1392
+ 2
1393
+ 8
1394
+ 48
1395
+ 3
1396
+ 9
1397
+ 54
1398
+ 1
1399
+ 11
1400
+ 8
1401
+ 55
1402
+ 1
1403
+ 15
1404
+ 20
1405
+ 0
1406
+ 7
1407
+ 8
1408
+ 64
1409
+ 49
1410
+ 9
1411
+ 1
1412
+ 97
1413
+ 37
1414
+ 19
1415
+ 1
1416
+ 15
1417
+ 36
1418
+ 19
1419
+ 2
1420
+ 15
1421
+ 2
1422
+ 15
1423
+ 20
1424
+ 1
1425
+ 13
1426
+ 7
1427
+ 10
1428
+ 64
1429
+ 12
1430
+ 49
1431
+ 11
1432
+ 1
1433
+ 9
1434
+ 124
1435
+ 15
1436
+ 21
1437
+ 2
1438
+ 4
1439
+ 45
1440
+ 12
1441
+ 13
1442
+ 43
1443
+ 14
1444
+ 20
1445
+ 2
1446
+ 7
1447
+ 15
1448
+ 13
1449
+ 70
1450
+ 10
1451
+ 111
1452
+ 44
1453
+ 43
1454
+ 16
1455
+ 12
1456
+ 49
1457
+ 17
1458
+ 1
1459
+ 50
1460
+ 18
1461
+ 0
1462
+ 36
1463
+ 1
1464
+ 51
1465
+ 0
1466
+ 0
1467
+ 49
1468
+ 19
1469
+ 1
1470
+ 8
1471
+ 146
1472
+ 13
1473
+ 7
1474
+ 20
1475
+ 64
1476
+ 12
1477
+ 49
1478
+ 11
1479
+ 1
1480
+ 9
1481
+ 144
1482
+ 15
1483
+ 20
1484
+ 2
1485
+ 56
1486
+ 21
1487
+ 50
1488
+ 22
1489
+ 0
1490
+ 8
1491
+ 146
1492
+ 15
1493
+ 1
1494
+ 11
1495
+ I
1496
+ 9
1497
+ I
1498
+ 3
1499
+ I
1500
+ 1
1501
+ I
1502
+ 1
1503
+ n
1504
+ p
1505
+ 23
1506
+ x
1507
+ 2
1508
+ []
1509
+ s
1510
+ 1
1511
+ #
1512
+ x
1513
+ 2
1514
+ ==
1515
+ n
1516
+ x
1517
+ 6
1518
+ Regexp
1519
+ s
1520
+ 2
1521
+ \S
1522
+ x
1523
+ 3
1524
+ new
1525
+ x
1526
+ 2
1527
+ =~
1528
+ s
1529
+ 1
1530
+
1531
+ x
1532
+ 5
1533
+ split
1534
+ s
1535
+ 1
1536
+ v
1537
+ x
1538
+ 3
1539
+ ===
1540
+ x
1541
+ 3
1542
+ Ray
1543
+ n
1544
+ x
1545
+ 7
1546
+ Vector3
1547
+ x
1548
+ 4
1549
+ to_f
1550
+ x
1551
+ 4
1552
+ Proc
1553
+ x
1554
+ 14
1555
+ __from_block__
1556
+ x
1557
+ 3
1558
+ map
1559
+ x
1560
+ 2
1561
+ <<
1562
+ s
1563
+ 1
1564
+ f
1565
+ M
1566
+ 1
1567
+ p
1568
+ 2
1569
+ x
1570
+ 9
1571
+ for_block
1572
+ t
1573
+ n
1574
+ x
1575
+ 10
1576
+ initialize
1577
+ i
1578
+ 88
1579
+ 57
1580
+ 19
1581
+ 0
1582
+ 15
1583
+ 20
1584
+ 0
1585
+ 7
1586
+ 0
1587
+ 64
1588
+ 49
1589
+ 1
1590
+ 1
1591
+ 56
1592
+ 2
1593
+ 50
1594
+ 3
1595
+ 0
1596
+ 97
1597
+ 37
1598
+ 19
1599
+ 1
1600
+ 15
1601
+ 37
1602
+ 19
1603
+ 2
1604
+ 15
1605
+ 15
1606
+ 2
1607
+ 15
1608
+ 39
1609
+ 4
1610
+ 21
1611
+ 3
1612
+ 3
1613
+ 79
1614
+ 81
1615
+ 5
1616
+ 22
1617
+ 3
1618
+ 3
1619
+ 45
1620
+ 6
1621
+ 7
1622
+ 13
1623
+ 71
1624
+ 8
1625
+ 47
1626
+ 9
1627
+ 69
1628
+ 47
1629
+ 49
1630
+ 9
1631
+ 0
1632
+ 13
1633
+ 21
1634
+ 3
1635
+ 4
1636
+ 20
1637
+ 1
1638
+ 49
1639
+ 10
1640
+ 1
1641
+ 47
1642
+ 49
1643
+ 11
1644
+ 1
1645
+ 15
1646
+ 8
1647
+ 80
1648
+ 21
1649
+ 3
1650
+ 4
1651
+ 20
1652
+ 1
1653
+ 49
1654
+ 10
1655
+ 1
1656
+ 49
1657
+ 8
1658
+ 1
1659
+ 13
1660
+ 18
1661
+ 3
1662
+ 49
1663
+ 12
1664
+ 2
1665
+ 15
1666
+ 11
1667
+ I
1668
+ a
1669
+ I
1670
+ 3
1671
+ I
1672
+ 1
1673
+ I
1674
+ 1
1675
+ n
1676
+ p
1677
+ 13
1678
+ s
1679
+ 2
1680
+ //
1681
+ x
1682
+ 5
1683
+ split
1684
+ M
1685
+ 1
1686
+ p
1687
+ 2
1688
+ x
1689
+ 9
1690
+ for_block
1691
+ t
1692
+ n
1693
+ x
1694
+ 10
1695
+ initialize
1696
+ i
1697
+ 13
1698
+ 57
1699
+ 19
1700
+ 0
1701
+ 15
1702
+ 20
1703
+ 0
1704
+ 49
1705
+ 0
1706
+ 0
1707
+ 79
1708
+ 82
1709
+ 1
1710
+ 11
1711
+ I
1712
+ 4
1713
+ I
1714
+ 1
1715
+ I
1716
+ 1
1717
+ I
1718
+ 1
1719
+ n
1720
+ p
1721
+ 2
1722
+ x
1723
+ 4
1724
+ to_i
1725
+ x
1726
+ 1
1727
+ -
1728
+ p
1729
+ 3
1730
+ I
1731
+ 0
1732
+ I
1733
+ 45
1734
+ I
1735
+ d
1736
+ x
1737
+ 50
1738
+ /home/kilian/code/ray/samples/opengl/instancing.rb
1739
+ p
1740
+ 1
1741
+ x
1742
+ 1
1743
+ s
1744
+ x
1745
+ 3
1746
+ map
1747
+ x
1748
+ 7
1749
+ @buffer
1750
+ x
1751
+ 1
1752
+ +
1753
+ x
1754
+ 6
1755
+ Vertex
1756
+ n
1757
+ x
1758
+ 3
1759
+ new
1760
+ x
1761
+ 8
1762
+ allocate
1763
+ x
1764
+ 2
1765
+ []
1766
+ x
1767
+ 10
1768
+ initialize
1769
+ x
1770
+ 3
1771
+ []=
1772
+ p
1773
+ 7
1774
+ I
1775
+ 0
1776
+ I
1777
+ 44
1778
+ I
1779
+ 4
1780
+ I
1781
+ 45
1782
+ I
1783
+ 1d
1784
+ I
1785
+ 46
1786
+ I
1787
+ 58
1788
+ x
1789
+ 50
1790
+ /home/kilian/code/ray/samples/opengl/instancing.rb
1791
+ p
1792
+ 3
1793
+ x
1794
+ 3
1795
+ arg
1796
+ x
1797
+ 3
1798
+ pos
1799
+ x
1800
+ 6
1801
+ normal
1802
+ x
1803
+ 4
1804
+ each
1805
+ p
1806
+ 21
1807
+ I
1808
+ 0
1809
+ I
1810
+ 3c
1811
+ I
1812
+ 4
1813
+ I
1814
+ 3d
1815
+ I
1816
+ 37
1817
+ I
1818
+ 0
1819
+ I
1820
+ 38
1821
+ I
1822
+ 3f
1823
+ I
1824
+ 4b
1825
+ I
1826
+ 41
1827
+ I
1828
+ 4d
1829
+ I
1830
+ 42
1831
+ I
1832
+ 7c
1833
+ I
1834
+ 43
1835
+ I
1836
+ 87
1837
+ I
1838
+ 44
1839
+ I
1840
+ 91
1841
+ I
1842
+ 41
1843
+ I
1844
+ 92
1845
+ I
1846
+ 0
1847
+ I
1848
+ 93
1849
+ x
1850
+ 50
1851
+ /home/kilian/code/ray/samples/opengl/instancing.rb
1852
+ p
1853
+ 3
1854
+ x
1855
+ 4
1856
+ line
1857
+ x
1858
+ 4
1859
+ word
1860
+ x
1861
+ 4
1862
+ args
1863
+ x
1864
+ 9
1865
+ each_line
1866
+ p
1867
+ 5
1868
+ I
1869
+ 0
1870
+ I
1871
+ 3b
1872
+ I
1873
+ 4
1874
+ I
1875
+ 3c
1876
+ I
1877
+ c
1878
+ x
1879
+ 50
1880
+ /home/kilian/code/ray/samples/opengl/instancing.rb
1881
+ p
1882
+ 1
1883
+ x
1884
+ 2
1885
+ io
1886
+ x
1887
+ 4
1888
+ open
1889
+ x
1890
+ 6
1891
+ update
1892
+ M
1893
+ 1
1894
+ p
1895
+ 2
1896
+ x
1897
+ 9
1898
+ for_block
1899
+ t
1900
+ n
1901
+ x
1902
+ 10
1903
+ initialize
1904
+ i
1905
+ 87
1906
+ 45
1907
+ 0
1908
+ 1
1909
+ 39
1910
+ 2
1911
+ 7
1912
+ 3
1913
+ 49
1914
+ 4
1915
+ 1
1916
+ 49
1917
+ 5
1918
+ 1
1919
+ 19
1920
+ 0
1921
+ 15
1922
+ 45
1923
+ 0
1924
+ 6
1925
+ 39
1926
+ 2
1927
+ 7
1928
+ 7
1929
+ 49
1930
+ 4
1931
+ 1
1932
+ 49
1933
+ 8
1934
+ 1
1935
+ 19
1936
+ 1
1937
+ 15
1938
+ 45
1939
+ 9
1940
+ 10
1941
+ 43
1942
+ 11
1943
+ 4
1944
+ 200
1945
+ 4
1946
+ 50
1947
+ 20
1948
+ 0
1949
+ 49
1950
+ 12
1951
+ 1
1952
+ 81
1953
+ 13
1954
+ 4
1955
+ 100
1956
+ 20
1957
+ 1
1958
+ 49
1959
+ 12
1960
+ 1
1961
+ 7
1962
+ 14
1963
+ 35
1964
+ 3
1965
+ 7
1966
+ 15
1967
+ 4
1968
+ 20
1969
+ 7
1970
+ 16
1971
+ 35
1972
+ 3
1973
+ 78
1974
+ 77
1975
+ 78
1976
+ 35
1977
+ 3
1978
+ 49
1979
+ 17
1980
+ 3
1981
+ 4
1982
+ 4
1983
+ 4
1984
+ 4
1985
+ 4
1986
+ 4
1987
+ 35
1988
+ 3
1989
+ 49
1990
+ 18
1991
+ 1
1992
+ 11
1993
+ I
1994
+ 9
1995
+ I
1996
+ 2
1997
+ I
1998
+ 0
1999
+ I
2000
+ 0
2001
+ I
2002
+ -2
2003
+ p
2004
+ 19
2005
+ x
2006
+ 4
2007
+ Math
2008
+ n
2009
+ x
2010
+ 2
2011
+ @n
2012
+ d
2013
+ +0.781250000000000000000000000000000000000000000000000000 7
2014
+ x
2015
+ 1
2016
+ /
2017
+ x
2018
+ 3
2019
+ cos
2020
+ n
2021
+ d
2022
+ +0.781250000000000000000000000000000000000000000000000000 7
2023
+ x
2024
+ 3
2025
+ sin
2026
+ x
2027
+ 3
2028
+ Ray
2029
+ n
2030
+ x
2031
+ 6
2032
+ Matrix
2033
+ x
2034
+ 1
2035
+ *
2036
+ x
2037
+ 1
2038
+ +
2039
+ I
2040
+ -32
2041
+ I
2042
+ 1f4
2043
+ I
2044
+ -1f4
2045
+ x
2046
+ 10
2047
+ looking_at
2048
+ x
2049
+ 5
2050
+ scale
2051
+ p
2052
+ 17
2053
+ I
2054
+ 0
2055
+ I
2056
+ 4f
2057
+ I
2058
+ 10
2059
+ I
2060
+ 50
2061
+ I
2062
+ 20
2063
+ I
2064
+ 51
2065
+ I
2066
+ 3b
2067
+ I
2068
+ 52
2069
+ I
2070
+ 43
2071
+ I
2072
+ 53
2073
+ I
2074
+ 48
2075
+ I
2076
+ 51
2077
+ I
2078
+ 4b
2079
+ I
2080
+ 53
2081
+ I
2082
+ 53
2083
+ I
2084
+ 51
2085
+ I
2086
+ 57
2087
+ x
2088
+ 50
2089
+ /home/kilian/code/ray/samples/opengl/instancing.rb
2090
+ p
2091
+ 2
2092
+ x
2093
+ 1
2094
+ c
2095
+ x
2096
+ 1
2097
+ s
2098
+ x
2099
+ 4
2100
+ proc
2101
+ x
2102
+ 12
2103
+ matrix_proc=
2104
+ p
2105
+ 29
2106
+ I
2107
+ -1
2108
+ I
2109
+ 1b
2110
+ I
2111
+ 0
2112
+ I
2113
+ 1c
2114
+ I
2115
+ 5
2116
+ I
2117
+ 1e
2118
+ I
2119
+ 2e
2120
+ I
2121
+ 20
2122
+ I
2123
+ 37
2124
+ I
2125
+ 22
2126
+ I
2127
+ 3e
2128
+ I
2129
+ 23
2130
+ I
2131
+ 4f
2132
+ I
2133
+ 33
2134
+ I
2135
+ 55
2136
+ I
2137
+ 35
2138
+ I
2139
+ 62
2140
+ I
2141
+ 37
2142
+ I
2143
+ 66
2144
+ I
2145
+ 39
2146
+ I
2147
+ 6b
2148
+ I
2149
+ 3b
2150
+ I
2151
+ 75
2152
+ I
2153
+ 4c
2154
+ I
2155
+ 7b
2156
+ I
2157
+ 9f
2158
+ I
2159
+ 7c
2160
+ I
2161
+ 4e
2162
+ I
2163
+ 8c
2164
+ x
2165
+ 50
2166
+ /home/kilian/code/ray/samples/opengl/instancing.rb
2167
+ p
2168
+ 5
2169
+ x
2170
+ 8
2171
+ filename
2172
+ x
2173
+ 1
2174
+ n
2175
+ x
2176
+ 1
2177
+ x
2178
+ x
2179
+ 5
2180
+ index
2181
+ x
2182
+ 9
2183
+ positions
2184
+ x
2185
+ 17
2186
+ method_visibility
2187
+ x
2188
+ 15
2189
+ add_defn_method
2190
+ x
2191
+ 4
2192
+ move
2193
+ M
2194
+ 1
2195
+ n
2196
+ n
2197
+ x
2198
+ 4
2199
+ move
2200
+ i
2201
+ 11
2202
+ 20
2203
+ 0
2204
+ 38
2205
+ 0
2206
+ 15
2207
+ 5
2208
+ 47
2209
+ 49
2210
+ 1
2211
+ 0
2212
+ 11
2213
+ I
2214
+ 2
2215
+ I
2216
+ 1
2217
+ I
2218
+ 1
2219
+ I
2220
+ 1
2221
+ n
2222
+ p
2223
+ 2
2224
+ x
2225
+ 2
2226
+ @n
2227
+ x
2228
+ 15
2229
+ matrix_changed!
2230
+ p
2231
+ 7
2232
+ I
2233
+ -1
2234
+ I
2235
+ 57
2236
+ I
2237
+ 0
2238
+ I
2239
+ 58
2240
+ I
2241
+ 5
2242
+ I
2243
+ 59
2244
+ I
2245
+ b
2246
+ x
2247
+ 50
2248
+ /home/kilian/code/ray/samples/opengl/instancing.rb
2249
+ p
2250
+ 1
2251
+ x
2252
+ 1
2253
+ n
2254
+ x
2255
+ 6
2256
+ render
2257
+ M
2258
+ 1
2259
+ n
2260
+ n
2261
+ x
2262
+ 6
2263
+ render
2264
+ i
2265
+ 24
2266
+ 39
2267
+ 0
2268
+ 49
2269
+ 1
2270
+ 0
2271
+ 15
2272
+ 5
2273
+ 7
2274
+ 2
2275
+ 20
2276
+ 0
2277
+ 39
2278
+ 0
2279
+ 49
2280
+ 3
2281
+ 0
2282
+ 45
2283
+ 4
2284
+ 5
2285
+ 47
2286
+ 49
2287
+ 6
2288
+ 4
2289
+ 11
2290
+ I
2291
+ 7
2292
+ I
2293
+ 2
2294
+ I
2295
+ 2
2296
+ I
2297
+ 2
2298
+ n
2299
+ p
2300
+ 7
2301
+ x
2302
+ 7
2303
+ @buffer
2304
+ x
2305
+ 4
2306
+ bind
2307
+ x
2308
+ 9
2309
+ triangles
2310
+ x
2311
+ 4
2312
+ size
2313
+ x
2314
+ 13
2315
+ InstanceCount
2316
+ n
2317
+ x
2318
+ 21
2319
+ draw_arrays_instanced
2320
+ p
2321
+ 7
2322
+ I
2323
+ -1
2324
+ I
2325
+ 5c
2326
+ I
2327
+ 0
2328
+ I
2329
+ 5d
2330
+ I
2331
+ 6
2332
+ I
2333
+ 5e
2334
+ I
2335
+ 18
2336
+ x
2337
+ 50
2338
+ /home/kilian/code/ray/samples/opengl/instancing.rb
2339
+ p
2340
+ 2
2341
+ x
2342
+ 5
2343
+ first
2344
+ x
2345
+ 5
2346
+ index
2347
+ p
2348
+ 23
2349
+ I
2350
+ 2
2351
+ I
2352
+ f
2353
+ I
2354
+ d
2355
+ I
2356
+ 11
2357
+ I
2358
+ 16
2359
+ I
2360
+ 12
2361
+ I
2362
+ 24
2363
+ I
2364
+ 14
2365
+ I
2366
+ 2e
2367
+ I
2368
+ 15
2369
+ I
2370
+ 37
2371
+ I
2372
+ 17
2373
+ I
2374
+ 41
2375
+ I
2376
+ 18
2377
+ I
2378
+ 4d
2379
+ I
2380
+ 14
2381
+ I
2382
+ 54
2383
+ I
2384
+ 1b
2385
+ I
2386
+ 62
2387
+ I
2388
+ 57
2389
+ I
2390
+ 70
2391
+ I
2392
+ 5c
2393
+ I
2394
+ 7e
2395
+ x
2396
+ 50
2397
+ /home/kilian/code/ray/samples/opengl/instancing.rb
2398
+ p
2399
+ 0
2400
+ x
2401
+ 13
2402
+ attach_method
2403
+ n
2404
+ s
2405
+ 13
2406
+ *Many* cubes!
2407
+ M
2408
+ 1
2409
+ p
2410
+ 2
2411
+ x
2412
+ 9
2413
+ for_block
2414
+ t
2415
+ n
2416
+ x
2417
+ 9
2418
+ __block__
2419
+ i
2420
+ 27
2421
+ 5
2422
+ 56
2423
+ 0
2424
+ 47
2425
+ 50
2426
+ 1
2427
+ 0
2428
+ 15
2429
+ 5
2430
+ 7
2431
+ 2
2432
+ 56
2433
+ 3
2434
+ 47
2435
+ 50
2436
+ 4
2437
+ 1
2438
+ 15
2439
+ 5
2440
+ 48
2441
+ 5
2442
+ 7
2443
+ 2
2444
+ 49
2445
+ 6
2446
+ 1
2447
+ 11
2448
+ I
2449
+ 4
2450
+ I
2451
+ 0
2452
+ I
2453
+ 0
2454
+ I
2455
+ 0
2456
+ I
2457
+ -2
2458
+ p
2459
+ 7
2460
+ M
2461
+ 1
2462
+ p
2463
+ 2
2464
+ x
2465
+ 9
2466
+ for_block
2467
+ t
2468
+ n
2469
+ x
2470
+ 9
2471
+ __block__
2472
+ i
2473
+ 15
2474
+ 5
2475
+ 7
2476
+ 0
2477
+ 5
2478
+ 7
2479
+ 1
2480
+ 47
2481
+ 49
2482
+ 2
2483
+ 1
2484
+ 47
2485
+ 49
2486
+ 3
2487
+ 2
2488
+ 11
2489
+ I
2490
+ 5
2491
+ I
2492
+ 0
2493
+ I
2494
+ 0
2495
+ I
2496
+ 0
2497
+ I
2498
+ -2
2499
+ p
2500
+ 4
2501
+ x
2502
+ 4
2503
+ quit
2504
+ x
2505
+ 5
2506
+ exit!
2507
+ x
2508
+ 6
2509
+ method
2510
+ x
2511
+ 8
2512
+ add_hook
2513
+ p
2514
+ 3
2515
+ I
2516
+ 0
2517
+ I
2518
+ 63
2519
+ I
2520
+ f
2521
+ x
2522
+ 50
2523
+ /home/kilian/code/ray/samples/opengl/instancing.rb
2524
+ p
2525
+ 0
2526
+ x
2527
+ 8
2528
+ register
2529
+ x
2530
+ 6
2531
+ teapot
2532
+ M
2533
+ 1
2534
+ p
2535
+ 2
2536
+ x
2537
+ 9
2538
+ for_block
2539
+ t
2540
+ n
2541
+ x
2542
+ 9
2543
+ __block__
2544
+ i
2545
+ 255
2546
+ 45
2547
+ 0
2548
+ 1
2549
+ 13
2550
+ 71
2551
+ 2
2552
+ 47
2553
+ 9
2554
+ 29
2555
+ 47
2556
+ 49
2557
+ 3
2558
+ 0
2559
+ 13
2560
+ 5
2561
+ 7
2562
+ 4
2563
+ 64
2564
+ 47
2565
+ 49
2566
+ 5
2567
+ 1
2568
+ 47
2569
+ 49
2570
+ 6
2571
+ 1
2572
+ 15
2573
+ 8
2574
+ 40
2575
+ 5
2576
+ 7
2577
+ 4
2578
+ 64
2579
+ 47
2580
+ 49
2581
+ 5
2582
+ 1
2583
+ 49
2584
+ 2
2585
+ 1
2586
+ 38
2587
+ 7
2588
+ 15
2589
+ 7
2590
+ 8
2591
+ 64
2592
+ 19
2593
+ 0
2594
+ 15
2595
+ 7
2596
+ 9
2597
+ 64
2598
+ 19
2599
+ 1
2600
+ 15
2601
+ 5
2602
+ 48
2603
+ 10
2604
+ 49
2605
+ 11
2606
+ 0
2607
+ 45
2608
+ 0
2609
+ 12
2610
+ 43
2611
+ 13
2612
+ 49
2613
+ 14
2614
+ 1
2615
+ 15
2616
+ 5
2617
+ 48
2618
+ 10
2619
+ 49
2620
+ 11
2621
+ 0
2622
+ 44
2623
+ 43
2624
+ 15
2625
+ 80
2626
+ 49
2627
+ 16
2628
+ 1
2629
+ 13
2630
+ 7
2631
+ 17
2632
+ 45
2633
+ 18
2634
+ 19
2635
+ 13
2636
+ 71
2637
+ 2
2638
+ 47
2639
+ 9
2640
+ 109
2641
+ 47
2642
+ 49
2643
+ 3
2644
+ 0
2645
+ 13
2646
+ 20
2647
+ 0
2648
+ 47
2649
+ 49
2650
+ 6
2651
+ 1
2652
+ 15
2653
+ 8
2654
+ 114
2655
+ 20
2656
+ 0
2657
+ 49
2658
+ 2
2659
+ 1
2660
+ 49
2661
+ 20
2662
+ 2
2663
+ 15
2664
+ 13
2665
+ 7
2666
+ 21
2667
+ 45
2668
+ 18
2669
+ 22
2670
+ 13
2671
+ 71
2672
+ 2
2673
+ 47
2674
+ 9
2675
+ 144
2676
+ 47
2677
+ 49
2678
+ 3
2679
+ 0
2680
+ 13
2681
+ 20
2682
+ 1
2683
+ 47
2684
+ 49
2685
+ 6
2686
+ 1
2687
+ 15
2688
+ 8
2689
+ 149
2690
+ 20
2691
+ 1
2692
+ 49
2693
+ 2
2694
+ 1
2695
+ 49
2696
+ 20
2697
+ 2
2698
+ 15
2699
+ 49
2700
+ 23
2701
+ 1
2702
+ 15
2703
+ 5
2704
+ 48
2705
+ 10
2706
+ 45
2707
+ 24
2708
+ 25
2709
+ 43
2710
+ 26
2711
+ 13
2712
+ 71
2713
+ 2
2714
+ 47
2715
+ 9
2716
+ 203
2717
+ 47
2718
+ 49
2719
+ 3
2720
+ 0
2721
+ 13
2722
+ 45
2723
+ 24
2724
+ 27
2725
+ 43
2726
+ 28
2727
+ 4
2728
+ 120
2729
+ 7
2730
+ 29
2731
+ 7
2732
+ 30
2733
+ 49
2734
+ 31
2735
+ 1
2736
+ 79
2737
+ 7
2738
+ 32
2739
+ 49
2740
+ 33
2741
+ 4
2742
+ 47
2743
+ 49
2744
+ 6
2745
+ 1
2746
+ 15
2747
+ 8
2748
+ 226
2749
+ 45
2750
+ 24
2751
+ 34
2752
+ 43
2753
+ 28
2754
+ 4
2755
+ 120
2756
+ 7
2757
+ 29
2758
+ 7
2759
+ 30
2760
+ 49
2761
+ 31
2762
+ 1
2763
+ 79
2764
+ 7
2765
+ 32
2766
+ 49
2767
+ 33
2768
+ 4
2769
+ 49
2770
+ 2
2771
+ 1
2772
+ 13
2773
+ 18
2774
+ 2
2775
+ 49
2776
+ 35
2777
+ 1
2778
+ 15
2779
+ 15
2780
+ 7
2781
+ 36
2782
+ 19
2783
+ 2
2784
+ 15
2785
+ 5
2786
+ 56
2787
+ 37
2788
+ 47
2789
+ 50
2790
+ 38
2791
+ 0
2792
+ 15
2793
+ 5
2794
+ 56
2795
+ 39
2796
+ 47
2797
+ 50
2798
+ 40
2799
+ 0
2800
+ 11
2801
+ I
2802
+ c
2803
+ I
2804
+ 3
2805
+ I
2806
+ 0
2807
+ I
2808
+ 0
2809
+ I
2810
+ -2
2811
+ p
2812
+ 41
2813
+ x
2814
+ 5
2815
+ Model
2816
+ n
2817
+ x
2818
+ 3
2819
+ new
2820
+ x
2821
+ 8
2822
+ allocate
2823
+ s
2824
+ 8
2825
+ cube.obj
2826
+ x
2827
+ 7
2828
+ path_of
2829
+ x
2830
+ 10
2831
+ initialize
2832
+ x
2833
+ 6
2834
+ @model
2835
+ s
2836
+ 445
2837
+ #version 150
2838
+
2839
+ in vec3 in_Position;
2840
+ in vec3 in_Translation;
2841
+ in vec4 in_Color;
2842
+
2843
+ uniform mat4 in_ModelView;
2844
+ uniform mat4 in_Projection;
2845
+
2846
+ out vec4 var_Color;
2847
+
2848
+ void main() {
2849
+ mat4 transform = in_ModelView *
2850
+ mat4(1, 0, 0, in_Translation.x,
2851
+ 0, 1, 0, in_Translation.y,
2852
+ 0, 0, 1, in_Translation.z,
2853
+ 0, 0, 0, 1);
2854
+ mat4 mvp = transform * in_Projection;
2855
+ gl_Position = vec4(in_Position, 1) * mvp;
2856
+
2857
+ var_Color = in_Color;
2858
+ }
2859
+
2860
+ s
2861
+ 104
2862
+ #version 150
2863
+
2864
+ in vec4 var_Color;
2865
+ out vec4 out_FragColor;
2866
+
2867
+ void main() {
2868
+ out_FragColor = var_Color;
2869
+ }
2870
+
2871
+ x
2872
+ 6
2873
+ window
2874
+ x
2875
+ 6
2876
+ shader
2877
+ n
2878
+ x
2879
+ 6
2880
+ Vertex
2881
+ x
2882
+ 12
2883
+ apply_vertex
2884
+ x
2885
+ 4
2886
+ Hash
2887
+ x
2888
+ 16
2889
+ new_from_literal
2890
+ x
2891
+ 6
2892
+ vertex
2893
+ x
2894
+ 8
2895
+ StringIO
2896
+ n
2897
+ x
2898
+ 3
2899
+ []=
2900
+ x
2901
+ 4
2902
+ frag
2903
+ n
2904
+ x
2905
+ 7
2906
+ compile
2907
+ x
2908
+ 3
2909
+ Ray
2910
+ n
2911
+ x
2912
+ 4
2913
+ View
2914
+ n
2915
+ x
2916
+ 6
2917
+ Matrix
2918
+ I
2919
+ 1e0
2920
+ I
2921
+ 280
2922
+ x
2923
+ 4
2924
+ fdiv
2925
+ I
2926
+ 3e8
2927
+ x
2928
+ 11
2929
+ perspective
2930
+ n
2931
+ x
2932
+ 5
2933
+ view=
2934
+ d
2935
+ +0.000000000000000000000000000000000000000000000000000000 0
2936
+ M
2937
+ 1
2938
+ p
2939
+ 2
2940
+ x
2941
+ 9
2942
+ for_block
2943
+ t
2944
+ n
2945
+ x
2946
+ 9
2947
+ __block__
2948
+ i
2949
+ 15
2950
+ 39
2951
+ 0
2952
+ 21
2953
+ 1
2954
+ 2
2955
+ 79
2956
+ 81
2957
+ 1
2958
+ 22
2959
+ 1
2960
+ 2
2961
+ 49
2962
+ 2
2963
+ 1
2964
+ 11
2965
+ I
2966
+ 4
2967
+ I
2968
+ 0
2969
+ I
2970
+ 0
2971
+ I
2972
+ 0
2973
+ I
2974
+ -2
2975
+ p
2976
+ 3
2977
+ x
2978
+ 6
2979
+ @model
2980
+ x
2981
+ 1
2982
+ +
2983
+ x
2984
+ 4
2985
+ move
2986
+ p
2987
+ 3
2988
+ I
2989
+ 0
2990
+ I
2991
+ 95
2992
+ I
2993
+ f
2994
+ x
2995
+ 50
2996
+ /home/kilian/code/ray/samples/opengl/instancing.rb
2997
+ p
2998
+ 0
2999
+ x
3000
+ 6
3001
+ always
3002
+ M
3003
+ 1
3004
+ p
3005
+ 2
3006
+ x
3007
+ 9
3008
+ for_block
3009
+ t
3010
+ n
3011
+ x
3012
+ 9
3013
+ __block__
3014
+ i
3015
+ 12
3016
+ 57
3017
+ 19
3018
+ 0
3019
+ 15
3020
+ 20
3021
+ 0
3022
+ 39
3023
+ 0
3024
+ 49
3025
+ 1
3026
+ 1
3027
+ 11
3028
+ I
3029
+ 4
3030
+ I
3031
+ 1
3032
+ I
3033
+ 1
3034
+ I
3035
+ 1
3036
+ n
3037
+ p
3038
+ 2
3039
+ x
3040
+ 6
3041
+ @model
3042
+ x
3043
+ 4
3044
+ draw
3045
+ p
3046
+ 5
3047
+ I
3048
+ 0
3049
+ I
3050
+ 98
3051
+ I
3052
+ 4
3053
+ I
3054
+ 99
3055
+ I
3056
+ c
3057
+ x
3058
+ 50
3059
+ /home/kilian/code/ray/samples/opengl/instancing.rb
3060
+ p
3061
+ 1
3062
+ x
3063
+ 3
3064
+ win
3065
+ x
3066
+ 6
3067
+ render
3068
+ p
3069
+ 35
3070
+ I
3071
+ 0
3072
+ I
3073
+ 66
3074
+ I
3075
+ 2b
3076
+ I
3077
+ 68
3078
+ I
3079
+ 31
3080
+ I
3081
+ 81
3082
+ I
3083
+ 37
3084
+ I
3085
+ 8c
3086
+ I
3087
+ 46
3088
+ I
3089
+ 8d
3090
+ I
3091
+ 4c
3092
+ I
3093
+ 8e
3094
+ I
3095
+ 54
3096
+ I
3097
+ 8d
3098
+ I
3099
+ 77
3100
+ I
3101
+ 8e
3102
+ I
3103
+ 99
3104
+ I
3105
+ 8d
3106
+ I
3107
+ 9d
3108
+ I
3109
+ 90
3110
+ I
3111
+ bf
3112
+ I
3113
+ 91
3114
+ I
3115
+ c1
3116
+ I
3117
+ 90
3118
+ I
3119
+ da
3120
+ I
3121
+ 91
3122
+ I
3123
+ dc
3124
+ I
3125
+ 90
3126
+ I
3127
+ ea
3128
+ I
3129
+ 93
3130
+ I
3131
+ ef
3132
+ I
3133
+ 94
3134
+ I
3135
+ f7
3136
+ I
3137
+ 98
3138
+ I
3139
+ ff
3140
+ x
3141
+ 50
3142
+ /home/kilian/code/ray/samples/opengl/instancing.rb
3143
+ p
3144
+ 3
3145
+ x
3146
+ 13
3147
+ vertex_shader
3148
+ x
3149
+ 11
3150
+ frag_shader
3151
+ x
3152
+ 1
3153
+ n
3154
+ x
3155
+ 5
3156
+ scene
3157
+ x
3158
+ 6
3159
+ scenes
3160
+ x
3161
+ 2
3162
+ <<
3163
+ p
3164
+ 7
3165
+ I
3166
+ 0
3167
+ I
3168
+ 63
3169
+ I
3170
+ 8
3171
+ I
3172
+ 65
3173
+ I
3174
+ 12
3175
+ I
3176
+ 9d
3177
+ I
3178
+ 1b
3179
+ x
3180
+ 50
3181
+ /home/kilian/code/ray/samples/opengl/instancing.rb
3182
+ p
3183
+ 0
3184
+ x
3185
+ 4
3186
+ game
3187
+ p
3188
+ 19
3189
+ I
3190
+ 0
3191
+ I
3192
+ 1
3193
+ I
3194
+ 21
3195
+ I
3196
+ 2
3197
+ I
3198
+ 42
3199
+ I
3200
+ 4
3201
+ I
3202
+ 4b
3203
+ I
3204
+ 6
3205
+ I
3206
+ 59
3207
+ I
3208
+ 7
3209
+ I
3210
+ 68
3211
+ I
3212
+ 8
3213
+ I
3214
+ 76
3215
+ I
3216
+ a
3217
+ I
3218
+ 84
3219
+ I
3220
+ e
3221
+ I
3222
+ a3
3223
+ I
3224
+ 62
3225
+ I
3226
+ b1
3227
+ x
3228
+ 50
3229
+ /home/kilian/code/ray/samples/opengl/instancing.rb
3230
+ p
3231
+ 0