rays 0.1.29 → 0.1.31

Sign up to get free protection for your applications and to get access to all the features.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/.doc/ext/rays/bitmap.cpp +1 -1
  3. data/.doc/ext/rays/bounds.cpp +1 -1
  4. data/.doc/ext/rays/camera.cpp +1 -1
  5. data/.doc/ext/rays/color.cpp +1 -1
  6. data/.doc/ext/rays/color_space.cpp +1 -1
  7. data/.doc/ext/rays/exception.cpp +1 -1
  8. data/.doc/ext/rays/font.cpp +1 -1
  9. data/.doc/ext/rays/image.cpp +1 -1
  10. data/.doc/ext/rays/matrix.cpp +1 -1
  11. data/.doc/ext/rays/native.cpp +35 -35
  12. data/.doc/ext/rays/noise.cpp +1 -1
  13. data/.doc/ext/rays/painter.cpp +1 -1
  14. data/.doc/ext/rays/point.cpp +1 -1
  15. data/.doc/ext/rays/polygon.cpp +1 -1
  16. data/.doc/ext/rays/polygon_line.cpp +1 -1
  17. data/.doc/ext/rays/polyline.cpp +1 -1
  18. data/.doc/ext/rays/shader.cpp +1 -1
  19. data/.github/workflows/release.yml +34 -0
  20. data/.github/workflows/tag.yml +35 -0
  21. data/.github/workflows/test.yml +32 -0
  22. data/.github/workflows/utils.rb +47 -0
  23. data/ChangeLog.md +20 -0
  24. data/Rakefile +4 -4
  25. data/VERSION +1 -1
  26. data/ext/rays/bitmap.cpp +1 -1
  27. data/ext/rays/bounds.cpp +1 -1
  28. data/ext/rays/camera.cpp +1 -1
  29. data/ext/rays/color.cpp +1 -1
  30. data/ext/rays/color_space.cpp +1 -1
  31. data/ext/rays/exception.cpp +1 -1
  32. data/ext/rays/extconf.rb +4 -4
  33. data/ext/rays/font.cpp +1 -1
  34. data/ext/rays/image.cpp +1 -1
  35. data/ext/rays/matrix.cpp +1 -1
  36. data/ext/rays/native.cpp +35 -35
  37. data/ext/rays/noise.cpp +1 -1
  38. data/ext/rays/painter.cpp +1 -1
  39. data/ext/rays/point.cpp +1 -1
  40. data/ext/rays/polygon.cpp +1 -1
  41. data/ext/rays/polygon_line.cpp +1 -1
  42. data/ext/rays/polyline.cpp +1 -1
  43. data/ext/rays/shader.cpp +1 -1
  44. data/lib/rays/{module.rb → extension.rb} +3 -3
  45. data/lib/rays.rb +1 -1
  46. data/rays.gemspec +11 -8
  47. data/src/opengl.cpp +2 -3
  48. data/src/painter.cpp +53 -91
  49. data/src/shader.cpp +4 -4
  50. data/src/texture.cpp +11 -6
  51. data/test/helper.rb +1 -1
  52. metadata +42 -9
data/ext/rays/painter.cpp CHANGED
@@ -656,7 +656,7 @@ RUCY_END
656
656
  static Class cPainter;
657
657
 
658
658
  void
659
- Init_painter ()
659
+ Init_rays_painter ()
660
660
  {
661
661
  Module mRays = define_module("Rays");
662
662
 
data/ext/rays/point.cpp CHANGED
@@ -272,7 +272,7 @@ RUCY_END
272
272
  static Class cPoint;
273
273
 
274
274
  void
275
- Init_point ()
275
+ Init_rays_point ()
276
276
  {
277
277
  Module mRays = define_module("Rays");
278
278
 
data/ext/rays/polygon.cpp CHANGED
@@ -249,7 +249,7 @@ RUCY_END
249
249
  static Class cPolygon;
250
250
 
251
251
  void
252
- Init_polygon ()
252
+ Init_rays_polygon ()
253
253
  {
254
254
  Module mRays = define_module("Rays");
255
255
 
@@ -42,7 +42,7 @@ RUCY_END
42
42
  static Class cPolygonLine;
43
43
 
44
44
  void
45
- Init_polygon_line ()
45
+ Init_rays_polygon_line ()
46
46
  {
47
47
  Module mRays = define_module("Rays");
48
48
  Class cPolygon = mRays.define_class("Polygon");
@@ -114,7 +114,7 @@ RUCY_END
114
114
  static Class cPolyline;
115
115
 
116
116
  void
117
- Init_polyline ()
117
+ Init_rays_polyline ()
118
118
  {
119
119
  Module mRays = define_module("Rays");
120
120
 
data/ext/rays/shader.cpp CHANGED
@@ -176,7 +176,7 @@ RUCY_END
176
176
  static Class cShader;
177
177
 
178
178
  void
179
- Init_shader ()
179
+ Init_rays_shader ()
180
180
  {
181
181
  Module mRays = define_module("Rays");
182
182
 
@@ -4,7 +4,7 @@
4
4
  module Rays
5
5
 
6
6
 
7
- module Module
7
+ module Extension
8
8
 
9
9
  module_function
10
10
 
@@ -13,7 +13,7 @@ module Rays
13
13
  end
14
14
 
15
15
  def version()
16
- open(root_dir 'VERSION') {|f| f.readline.chomp}
16
+ File.read(root_dir 'VERSION')[/[\d\.]+/]
17
17
  end
18
18
 
19
19
  def root_dir(path = '')
@@ -28,7 +28,7 @@ module Rays
28
28
  root_dir 'lib'
29
29
  end
30
30
 
31
- end# Module
31
+ end# Extension
32
32
 
33
33
 
34
34
  end# Rays
data/lib/rays.rb CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
  require 'rays/autoinit'
5
- require 'rays/module'
5
+ require 'rays/extension'
6
6
 
7
7
  require 'rays/point'
8
8
  require 'rays/bounds'
data/rays.gemspec CHANGED
@@ -1,10 +1,10 @@
1
1
  # -*- mode: ruby; coding: utf-8 -*-
2
2
 
3
3
 
4
- File.expand_path('../lib', __FILE__)
4
+ File.expand_path('lib', __dir__)
5
5
  .tap {|s| $:.unshift s if !$:.include?(s) && File.directory?(s)}
6
6
 
7
- require 'rays/module'
7
+ require 'rays/extension'
8
8
 
9
9
 
10
10
  Gem::Specification.new do |s|
@@ -12,24 +12,27 @@ Gem::Specification.new do |s|
12
12
  patterns.map {|pat| Dir.glob(pat).to_a}.flatten
13
13
  end
14
14
 
15
- mod = Rays::Module
16
- name = mod.name.downcase
15
+ ext = Rays::Extension
16
+ name = ext.name.downcase
17
17
  rdocs = glob.call *%w[README .doc/ext/**/*.cpp]
18
18
 
19
19
  s.name = name
20
20
  s.summary = 'A Drawing Engine using OpenGL.'
21
21
  s.description = 'This library helps you to develop graphics application with OpenGL.'
22
- s.version = mod.version
22
+ s.version = ext.version
23
23
 
24
24
  s.authors = %w[xordog]
25
25
  s.email = 'xordog@gmail.com'
26
26
  s.homepage = "https://github.com/xord/rays"
27
27
 
28
28
  s.platform = Gem::Platform::RUBY
29
- s.required_ruby_version = '>= 2.6.0'
29
+ s.required_ruby_version = '>= 2.7.0'
30
30
 
31
- s.add_runtime_dependency 'xot', '~> 0.1.29'
32
- s.add_runtime_dependency 'rucy', '~> 0.1.29'
31
+ s.add_runtime_dependency 'xot', '~> 0.1.31'
32
+ s.add_runtime_dependency 'rucy', '~> 0.1.31'
33
+
34
+ s.add_development_dependency 'rake'
35
+ s.add_development_dependency 'test-unit'
33
36
 
34
37
  s.files = `git ls-files`.split $/
35
38
  s.executables = s.files.grep(%r{^bin/}) {|f| File.basename f}
data/src/opengl.cpp CHANGED
@@ -24,7 +24,7 @@ namespace Rays
24
24
  case GL_INVALID_VALUE: return "GL_INVALID_VALUE";
25
25
  case GL_INVALID_OPERATION: return "GL_INVALID_OPERATION";
26
26
  case GL_OUT_OF_MEMORY: return "GL_OUT_OF_MEMORY";
27
- #if !defined(GL_VERSION_3_0)
27
+ #if !defined(GL_VERSION_3_0) && !defined(GL_ES_VERSION_2_0)
28
28
  case GL_STACK_OVERFLOW: return "GL_STACK_OVERFLOW";
29
29
  case GL_STACK_UNDERFLOW: return "GL_STACK_UNDERFLOW";
30
30
  case GL_INVALID_FRAMEBUFFER_OPERATION: return "GL_INVALID_FRAMEBUFFER_OPERATION";
@@ -45,11 +45,10 @@ namespace Rays
45
45
  void
46
46
  OpenGL_check_error (const char* file, int line, const char* format, ...)
47
47
  {
48
- XOT_STRINGF(format, s);
49
-
50
48
  GLenum e = glGetError();
51
49
  if (e != GL_NO_ERROR)
52
50
  {
51
+ XOT_STRINGF(format, s);
53
52
  opengl_error(
54
53
  file, line,
55
54
  "OpenGL error %s: %s", get_error_name(e).c_str(), s.c_str());
data/src/painter.cpp CHANGED
@@ -329,16 +329,18 @@ namespace Rays
329
329
 
330
330
  const auto& names = Shader_get_builtin_variable_names(shader);
331
331
  apply_builtin_uniforms(*program, names, texinfo);
332
- apply_attributes(*program, names, points, npoints, texcoords, color, [&]() {
333
- draw_indices(mode, indices, nindices, npoints);
334
- });
332
+ apply_attributes(*program, names, points, npoints, texcoords, color);
333
+ draw_indices(mode, indices, nindices, npoints);
334
+ cleanup();
335
335
 
336
336
  ShaderProgram_deactivate();
337
337
  }
338
338
 
339
339
  private:
340
340
 
341
- typedef std::vector<GLint> LocationList;
341
+ std::vector<GLint> locations;
342
+
343
+ std::vector<GLuint> buffers;
342
344
 
343
345
  void apply_builtin_uniforms (
344
346
  const ShaderProgram& program, const ShaderBuiltinVariableNames& names,
@@ -406,21 +408,16 @@ namespace Rays
406
408
 
407
409
  void apply_attributes (
408
410
  const ShaderProgram& program, const ShaderBuiltinVariableNames& names,
409
- const Coord3* points, size_t npoints, const Coord3* texcoords, const Color& color,
410
- std::function<void()> draw_fun)
411
+ const Coord3* points, size_t npoints, const Coord3* texcoords,
412
+ const Color& color)
411
413
  {
412
414
  assert(points && npoints > 0);
413
415
 
414
- std::vector<GLuint> buffers;
415
- LocationList locations;
416
-
417
416
  apply_attribute(
418
- &buffers, &locations,
419
417
  program, names.attribute_position_names,
420
418
  points, npoints);
421
419
 
422
420
  apply_attribute(
423
- &buffers, &locations,
424
421
  program, names.attribute_texcoord_names,
425
422
  texcoords ? texcoords : points, npoints);
426
423
 
@@ -429,54 +426,44 @@ namespace Rays
429
426
  // with specific glsl 'attribute' name.
430
427
  std::vector<Color> colors(npoints, color);
431
428
  apply_attribute(
432
- &buffers, &locations,
433
429
  program, names.attribute_color_names,
434
430
  (const Coord4*) &colors[0], npoints);
435
431
  #else
436
432
  for (const auto& name : names.attribute_color_names)
437
433
  {
438
- apply_attribute(NULL, program, name, [&](GLint loc) {
434
+ apply_attribute(program, name, [&](GLint loc) {
439
435
  glVertexAttrib4fv(loc, color.array);
440
436
  });
441
437
  }
442
438
  #endif
443
-
444
- draw_fun();
445
-
446
- for (auto loc : locations)
447
- {
448
- glDisableVertexAttribArray(loc);
449
- OpenGL_check_error(__FILE__, __LINE__);
450
- }
451
-
452
- glDeleteBuffers((GLsizei) buffers.size(), &buffers[0]);
453
- OpenGL_check_error(__FILE__, __LINE__);
454
439
  }
455
440
 
456
441
  template <typename CoordN>
457
442
  void apply_attribute(
458
- auto* buffers, LocationList* locations,
459
443
  const ShaderProgram& program, const auto& names,
460
444
  const CoordN* values, size_t nvalues)
461
445
  {
462
- assert(buffers);
463
-
464
446
  GLuint buffer = 0;
465
447
  for (const auto& name : names)
466
448
  {
467
- apply_attribute(locations, program, name, [&](GLint loc) {
449
+ #ifndef IOS
468
450
  if (buffer == 0)
469
451
  {
470
- buffer = create_and_bind_coordn_buffer(values, nvalues);
471
- buffers->push_back(buffer);
452
+ buffer = create_and_bind_buffer(
453
+ GL_ARRAY_BUFFER, values, sizeof(CoordN) * nvalues);
454
+ values = 0;
472
455
  }
456
+ #endif
473
457
 
458
+ apply_attribute(program, name, [&](GLint loc) {
474
459
  glEnableVertexAttribArray(loc);
475
- OpenGL_check_error(__FILE__, __LINE__, "loc: %d %s\n", loc, name.c_str());
460
+ OpenGL_check_error(
461
+ __FILE__, __LINE__, "loc: %d %s\n", loc, name.c_str());
476
462
 
477
463
  glVertexAttribPointer(
478
- loc, CoordN::SIZE, get_gl_type<coord>(),
479
- GL_FALSE, sizeof(CoordN), NULL);
464
+ loc, CoordN::SIZE, get_gl_type<coord>(), GL_FALSE, 0, values);
465
+
466
+ locations.push_back(loc);
480
467
  });
481
468
  }
482
469
 
@@ -485,26 +472,24 @@ namespace Rays
485
472
  }
486
473
 
487
474
  void apply_attribute (
488
- LocationList* locations, const ShaderProgram& program, const char* name,
489
- std::function<void(GLint)> apply)
475
+ const ShaderProgram& program, const char* name,
476
+ std::function<void(GLint)> apply_fun)
490
477
  {
491
478
  GLint loc = glGetAttribLocation(program.id(), name);
492
479
  if (loc < 0) return;
493
480
 
494
- apply(loc);
481
+ apply_fun(loc);
495
482
  OpenGL_check_error(__FILE__, __LINE__);
496
-
497
- if (locations) locations->push_back(loc);
498
483
  }
499
484
 
500
485
  void apply_uniform (
501
486
  const ShaderProgram& program, const char* name,
502
- std::function<void(GLint)> apply)
487
+ std::function<void(GLint)> apply_fun)
503
488
  {
504
489
  GLint loc = glGetUniformLocation(program.id(), name);
505
490
  if (loc < 0) return;
506
491
 
507
- apply(loc);
492
+ apply_fun(loc);
508
493
  OpenGL_check_error(__FILE__, __LINE__);
509
494
  }
510
495
 
@@ -518,75 +503,52 @@ namespace Rays
518
503
  nindices = npoints;
519
504
  }
520
505
 
521
- GLuint buffer = create_buffer();
522
- size_t size = sizeof(uint) * nindices;
523
-
524
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, buffer);
525
- OpenGL_check_error(__FILE__, __LINE__);
526
-
527
- glBufferData(GL_ELEMENT_ARRAY_BUFFER, size, indices, GL_STREAM_DRAW);
528
- OpenGL_check_error(__FILE__, __LINE__);
506
+ #ifdef IOS
507
+ glDrawElements(mode, (GLsizei) nindices, GL_UNSIGNED_INT, indices);
508
+ OpenGL_check_error(__FILE__, __LINE__);
509
+ #else
510
+ create_and_bind_buffer(
511
+ GL_ELEMENT_ARRAY_BUFFER, indices, sizeof(uint) * nindices);
529
512
 
530
- glDrawElements(mode, (GLsizei) nindices, GL_UNSIGNED_INT, NULL);
531
- OpenGL_check_error(__FILE__, __LINE__);
513
+ glDrawElements(mode, (GLsizei) nindices, GL_UNSIGNED_INT, 0);
514
+ OpenGL_check_error(__FILE__, __LINE__);
532
515
 
533
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
534
- OpenGL_check_error(__FILE__, __LINE__);
516
+ glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
517
+ OpenGL_check_error(__FILE__, __LINE__);
518
+ #endif
535
519
  }
536
520
 
537
- template <typename CoordN>
538
- GLuint create_and_bind_coordn_buffer (const CoordN* values, size_t nvalues)
521
+ GLuint create_and_bind_buffer (
522
+ GLenum target, const void* data, GLsizeiptr size)
539
523
  {
540
- GLuint id = create_buffer();
541
- size_t size = sizeof(CoordN) * nvalues;
542
-
543
- glBindBuffer(GL_ARRAY_BUFFER, id);
524
+ GLuint id = 0;
525
+ glGenBuffers(1, &id);
544
526
  OpenGL_check_error(__FILE__, __LINE__);
545
527
 
546
- glBufferData(GL_ARRAY_BUFFER, size, values, GL_STREAM_DRAW);
547
- OpenGL_check_error(__FILE__, __LINE__);
528
+ buffers.push_back(id);
548
529
 
549
- return id;
550
- }
530
+ glBindBuffer(target, id);
531
+ OpenGL_check_error(__FILE__, __LINE__);
551
532
 
552
- GLuint create_buffer ()
553
- {
554
- GLuint id;
555
- glGenBuffers(1, &id);
533
+ glBufferData(target, size, data, GL_STREAM_DRAW);
556
534
  OpenGL_check_error(__FILE__, __LINE__);
535
+
557
536
  return id;
558
537
  }
559
538
 
560
- void activate_texture (const Texture* texture)
539
+ void cleanup ()
561
540
  {
562
- if (!texture)
541
+ for (auto loc : locations)
563
542
  {
564
- glDisable(GL_TEXTURE_2D);
565
- return;
543
+ glDisableVertexAttribArray(loc);
544
+ OpenGL_check_error(__FILE__, __LINE__);
566
545
  }
567
546
 
568
- if (!*texture)
569
- argument_error(__FILE__, __LINE__, "invalid texture.");
570
-
571
- GLuint id = texture->id();
572
- if (id != get_current_texture_id())
573
- glBindTexture(GL_TEXTURE_2D, id);
574
-
575
- glEnable(GL_TEXTURE_2D);
576
- }
577
-
578
- GLuint get_current_texture_id ()
579
- {
580
- GLint id = 0;
581
- glGetIntegerv(GL_TEXTURE_BINDING_2D, &id);
582
- return (GLuint) id;
583
- }
584
-
585
- void deactivate_texture (const Texture* texture)
586
- {
587
- if (!texture) return;
547
+ glDeleteBuffers((GLsizei) buffers.size(), &buffers[0]);
548
+ OpenGL_check_error(__FILE__, __LINE__);
588
549
 
589
- glDisable(GL_TEXTURE_2D);
550
+ locations.clear();
551
+ buffers.clear();
590
552
  }
591
553
 
592
554
  };// Painter::Data
data/src/shader.cpp CHANGED
@@ -67,7 +67,7 @@ namespace Rays
67
67
  ShaderSource make_fragment_shader_source (const char* source)
68
68
  {
69
69
  #ifdef IOS
70
- static const String SHARED_HEADER = "precision mediump float;\n";
70
+ static const String SHARED_HEADER = "precision highp float;\n";
71
71
  static const std::regex PRECISION(R"(^\s*precision\s+\w+p\s+float\s*;)");
72
72
 
73
73
  if (!std::regex_search(source, PRECISION))
@@ -128,7 +128,7 @@ namespace Rays
128
128
  "void main ()\n"
129
129
  "{\n"
130
130
  " vec4 col__ = texture2D(" + U_TEXTURE + ", " + V_TEXCOORD + ".xy);\n"
131
- #ifdef OSX
131
+ #if defined(OSX) || defined(IOS)
132
132
  // restore premultiplied rgb values
133
133
  " vec3 rgb__ = col__.a != 0.0 ? col__.rgb / col__.a : col__.rgb;\n"
134
134
  " gl_FragColor = " + V_COLOR + " * vec4(rgb__, col__.a);\n"
@@ -386,8 +386,8 @@ namespace Rays
386
386
  "uniform mat4 " + U_TEXCOORD_MATRIX + ";\n"
387
387
  "void main ()\n"
388
388
  "{\n"
389
- " vec4 pos__ = vec4(" + A_POSITION + ", 1.0);\n"
390
- " vec4 texcoord__ = vec4(" + A_TEXCOORD + ", 1.0);\n"
389
+ " vec4 pos__ = vec4(" + A_POSITION + ", 1.0);\n"
390
+ " vec4 texcoord__ = vec4(" + A_TEXCOORD + ", 1.0);\n"
391
391
  " " + V_POSITION + " = pos__;\n"
392
392
  " " + V_TEXCOORD + " = " + U_TEXCOORD_MATRIX + " * texcoord__;\n"
393
393
  " " + V_COLOR + " = " + A_COLOR + ";\n"
data/src/texture.cpp CHANGED
@@ -181,7 +181,7 @@ namespace Rays
181
181
  static void
182
182
  setup_texture (
183
183
  Texture::Data* self, int width, int height, const ColorSpace& cs,
184
- const Bitmap* bitmap = NULL)
184
+ const Bitmap* bitmap = NULL, bool npot = false)
185
185
  {
186
186
  assert(self && !self->has_id());
187
187
 
@@ -205,11 +205,16 @@ namespace Rays
205
205
  GLenum format, type;
206
206
  ColorSpace_get_gl_format_and_type(&format, &type, cs);
207
207
 
208
- // create non-power-of-two texture
209
- glTexImage2D(
210
- GL_TEXTURE_2D, 0, format, width, height, 0, format, type,
211
- bitmap ? bitmap->pixels() : NULL);
212
- if (OpenGL_has_error())
208
+ if (npot)
209
+ {
210
+ // create non-power-of-two texture
211
+ glTexImage2D(
212
+ GL_TEXTURE_2D, 0, format, width, height, 0, format, type,
213
+ bitmap ? bitmap->pixels() : NULL);
214
+ npot = OpenGL_has_error();
215
+ }
216
+
217
+ if (!npot)
213
218
  {
214
219
  // create power-of-two texture
215
220
  int width_pow2 = min_pow2(width);
data/test/helper.rb CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
  %w[../xot ../rucy .]
5
- .map {|s| File.expand_path "../../#{s}/lib", __FILE__}
5
+ .map {|s| File.expand_path "../#{s}/lib", __dir__}
6
6
  .each {|s| $:.unshift s if !$:.include?(s) && File.directory?(s)}
7
7
 
8
8
  require 'test/unit'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rays
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.29
4
+ version: 0.1.31
5
5
  platform: ruby
6
6
  authors:
7
7
  - xordog
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-11-13 00:00:00.000000000 Z
11
+ date: 2023-02-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: xot
@@ -16,28 +16,56 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.1.29
19
+ version: 0.1.31
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.1.29
26
+ version: 0.1.31
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rucy
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.1.29
33
+ version: 0.1.31
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 0.1.29
40
+ version: 0.1.31
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: test-unit
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
41
69
  description: This library helps you to develop graphics application with OpenGL.
42
70
  email: xordog@gmail.com
43
71
  executables: []
@@ -83,6 +111,11 @@ files:
83
111
  - ".doc/ext/rays/polyline.cpp"
84
112
  - ".doc/ext/rays/rays.cpp"
85
113
  - ".doc/ext/rays/shader.cpp"
114
+ - ".github/workflows/release.yml"
115
+ - ".github/workflows/tag.yml"
116
+ - ".github/workflows/test.yml"
117
+ - ".github/workflows/utils.rb"
118
+ - ChangeLog.md
86
119
  - LICENSE
87
120
  - README.md
88
121
  - Rakefile
@@ -154,10 +187,10 @@ files:
154
187
  - lib/rays/color.rb
155
188
  - lib/rays/color_space.rb
156
189
  - lib/rays/ext.rb
190
+ - lib/rays/extension.rb
157
191
  - lib/rays/font.rb
158
192
  - lib/rays/image.rb
159
193
  - lib/rays/matrix.rb
160
- - lib/rays/module.rb
161
194
  - lib/rays/painter.rb
162
195
  - lib/rays/point.rb
163
196
  - lib/rays/polygon.rb
@@ -250,14 +283,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
250
283
  requirements:
251
284
  - - ">="
252
285
  - !ruby/object:Gem::Version
253
- version: 2.6.0
286
+ version: 2.7.0
254
287
  required_rubygems_version: !ruby/object:Gem::Requirement
255
288
  requirements:
256
289
  - - ">="
257
290
  - !ruby/object:Gem::Version
258
291
  version: '0'
259
292
  requirements: []
260
- rubygems_version: 3.2.33
293
+ rubygems_version: 3.4.6
261
294
  signing_key:
262
295
  specification_version: 4
263
296
  summary: A Drawing Engine using OpenGL.