rays 0.1.29 → 0.1.30
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.
- checksums.yaml +4 -4
- data/.doc/ext/rays/bitmap.cpp +1 -1
- data/.doc/ext/rays/bounds.cpp +1 -1
- data/.doc/ext/rays/camera.cpp +1 -1
- data/.doc/ext/rays/color.cpp +1 -1
- data/.doc/ext/rays/color_space.cpp +1 -1
- data/.doc/ext/rays/exception.cpp +1 -1
- data/.doc/ext/rays/font.cpp +1 -1
- data/.doc/ext/rays/image.cpp +1 -1
- data/.doc/ext/rays/matrix.cpp +1 -1
- data/.doc/ext/rays/native.cpp +35 -35
- data/.doc/ext/rays/noise.cpp +1 -1
- data/.doc/ext/rays/painter.cpp +1 -1
- data/.doc/ext/rays/point.cpp +1 -1
- data/.doc/ext/rays/polygon.cpp +1 -1
- data/.doc/ext/rays/polygon_line.cpp +1 -1
- data/.doc/ext/rays/polyline.cpp +1 -1
- data/.doc/ext/rays/shader.cpp +1 -1
- data/VERSION +1 -1
- data/ext/rays/bitmap.cpp +1 -1
- data/ext/rays/bounds.cpp +1 -1
- data/ext/rays/camera.cpp +1 -1
- data/ext/rays/color.cpp +1 -1
- data/ext/rays/color_space.cpp +1 -1
- data/ext/rays/exception.cpp +1 -1
- data/ext/rays/extconf.rb +1 -1
- data/ext/rays/font.cpp +1 -1
- data/ext/rays/image.cpp +1 -1
- data/ext/rays/matrix.cpp +1 -1
- data/ext/rays/native.cpp +35 -35
- data/ext/rays/noise.cpp +1 -1
- data/ext/rays/painter.cpp +1 -1
- data/ext/rays/point.cpp +1 -1
- data/ext/rays/polygon.cpp +1 -1
- data/ext/rays/polygon_line.cpp +1 -1
- data/ext/rays/polyline.cpp +1 -1
- data/ext/rays/shader.cpp +1 -1
- data/rays.gemspec +3 -3
- data/src/opengl.cpp +2 -3
- data/src/painter.cpp +53 -91
- data/src/shader.cpp +4 -4
- data/src/texture.cpp +11 -6
- data/test/helper.rb +1 -1
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 88387a7d63567dd0f87d5c28708d1c666b7bd41df31ae34d676a9fcfeb4b19b5
|
4
|
+
data.tar.gz: 6a05891d8c4aee2b2ffbdc11fd9d6acc9dee8678f7e98180d399f6a64b04383b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 14ec81d1d115983f66e39432af1f98d29efe759bf891412fb67e85b09801c89fa6702e4970fd56fcb29cc1d2dfacbeb7d5edc8fb43aaa17accf964bca2b4df30
|
7
|
+
data.tar.gz: 4d07ba7e7280e7aba01eed8b483978e750a6bfc5201a345e062977cf379c10f12ca1d75b38ef00677bc0bd0798245050cc14c5f0aa33e70fd93dcca5aa58d920
|
data/.doc/ext/rays/bitmap.cpp
CHANGED
data/.doc/ext/rays/bounds.cpp
CHANGED
data/.doc/ext/rays/camera.cpp
CHANGED
data/.doc/ext/rays/color.cpp
CHANGED
data/.doc/ext/rays/exception.cpp
CHANGED
data/.doc/ext/rays/font.cpp
CHANGED
data/.doc/ext/rays/image.cpp
CHANGED
data/.doc/ext/rays/matrix.cpp
CHANGED
data/.doc/ext/rays/native.cpp
CHANGED
@@ -2,25 +2,25 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
void Init_rays ();
|
5
|
-
void
|
5
|
+
void Init_rays_exception ();
|
6
6
|
|
7
|
-
void
|
8
|
-
void
|
9
|
-
void
|
10
|
-
void
|
11
|
-
void
|
7
|
+
void Init_rays_point ();
|
8
|
+
void Init_rays_bounds ();
|
9
|
+
void Init_rays_color ();
|
10
|
+
void Init_rays_color_space ();
|
11
|
+
void Init_rays_matrix ();
|
12
12
|
|
13
|
-
void
|
14
|
-
void
|
15
|
-
void
|
16
|
-
void
|
17
|
-
void
|
18
|
-
void
|
19
|
-
void
|
20
|
-
void
|
21
|
-
void
|
13
|
+
void Init_rays_painter ();
|
14
|
+
void Init_rays_polyline ();
|
15
|
+
void Init_rays_polygon_line ();
|
16
|
+
void Init_rays_polygon ();
|
17
|
+
void Init_rays_bitmap ();
|
18
|
+
void Init_rays_image ();
|
19
|
+
void Init_rays_font ();
|
20
|
+
void Init_rays_shader ();
|
21
|
+
void Init_rays_camera ();
|
22
22
|
|
23
|
-
void
|
23
|
+
void Init_rays_noise ();
|
24
24
|
|
25
25
|
|
26
26
|
extern "C" void
|
@@ -35,25 +35,25 @@ extern "C" void
|
|
35
35
|
Rucy::init();
|
36
36
|
|
37
37
|
Init_rays();
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
38
|
+
Init_rays_exception();
|
39
|
+
|
40
|
+
Init_rays_point();
|
41
|
+
Init_rays_bounds();
|
42
|
+
Init_rays_color();
|
43
|
+
Init_rays_color_space();
|
44
|
+
Init_rays_matrix();
|
45
|
+
|
46
|
+
Init_rays_painter();
|
47
|
+
Init_rays_polyline();
|
48
|
+
Init_rays_polygon_line();
|
49
|
+
Init_rays_polygon();
|
50
|
+
Init_rays_bitmap();
|
51
|
+
Init_rays_image();
|
52
|
+
Init_rays_font();
|
53
|
+
Init_rays_shader();
|
54
|
+
Init_rays_camera();
|
55
|
+
|
56
|
+
Init_rays_noise();
|
57
57
|
|
58
58
|
RUCY_CATCH
|
59
59
|
}
|
data/.doc/ext/rays/noise.cpp
CHANGED
data/.doc/ext/rays/painter.cpp
CHANGED
data/.doc/ext/rays/point.cpp
CHANGED
data/.doc/ext/rays/polygon.cpp
CHANGED
data/.doc/ext/rays/polyline.cpp
CHANGED
data/.doc/ext/rays/shader.cpp
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.30
|
data/ext/rays/bitmap.cpp
CHANGED
data/ext/rays/bounds.cpp
CHANGED
data/ext/rays/camera.cpp
CHANGED
data/ext/rays/color.cpp
CHANGED
data/ext/rays/color_space.cpp
CHANGED
data/ext/rays/exception.cpp
CHANGED
data/ext/rays/extconf.rb
CHANGED
data/ext/rays/font.cpp
CHANGED
data/ext/rays/image.cpp
CHANGED
data/ext/rays/matrix.cpp
CHANGED
data/ext/rays/native.cpp
CHANGED
@@ -2,25 +2,25 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
void Init_rays ();
|
5
|
-
void
|
5
|
+
void Init_rays_exception ();
|
6
6
|
|
7
|
-
void
|
8
|
-
void
|
9
|
-
void
|
10
|
-
void
|
11
|
-
void
|
7
|
+
void Init_rays_point ();
|
8
|
+
void Init_rays_bounds ();
|
9
|
+
void Init_rays_color ();
|
10
|
+
void Init_rays_color_space ();
|
11
|
+
void Init_rays_matrix ();
|
12
12
|
|
13
|
-
void
|
14
|
-
void
|
15
|
-
void
|
16
|
-
void
|
17
|
-
void
|
18
|
-
void
|
19
|
-
void
|
20
|
-
void
|
21
|
-
void
|
13
|
+
void Init_rays_painter ();
|
14
|
+
void Init_rays_polyline ();
|
15
|
+
void Init_rays_polygon_line ();
|
16
|
+
void Init_rays_polygon ();
|
17
|
+
void Init_rays_bitmap ();
|
18
|
+
void Init_rays_image ();
|
19
|
+
void Init_rays_font ();
|
20
|
+
void Init_rays_shader ();
|
21
|
+
void Init_rays_camera ();
|
22
22
|
|
23
|
-
void
|
23
|
+
void Init_rays_noise ();
|
24
24
|
|
25
25
|
|
26
26
|
extern "C" void
|
@@ -35,25 +35,25 @@ extern "C" void
|
|
35
35
|
Rucy::init();
|
36
36
|
|
37
37
|
Init_rays();
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
38
|
+
Init_rays_exception();
|
39
|
+
|
40
|
+
Init_rays_point();
|
41
|
+
Init_rays_bounds();
|
42
|
+
Init_rays_color();
|
43
|
+
Init_rays_color_space();
|
44
|
+
Init_rays_matrix();
|
45
|
+
|
46
|
+
Init_rays_painter();
|
47
|
+
Init_rays_polyline();
|
48
|
+
Init_rays_polygon_line();
|
49
|
+
Init_rays_polygon();
|
50
|
+
Init_rays_bitmap();
|
51
|
+
Init_rays_image();
|
52
|
+
Init_rays_font();
|
53
|
+
Init_rays_shader();
|
54
|
+
Init_rays_camera();
|
55
|
+
|
56
|
+
Init_rays_noise();
|
57
57
|
|
58
58
|
RUCY_CATCH
|
59
59
|
}
|
data/ext/rays/noise.cpp
CHANGED
data/ext/rays/painter.cpp
CHANGED
data/ext/rays/point.cpp
CHANGED
data/ext/rays/polygon.cpp
CHANGED
data/ext/rays/polygon_line.cpp
CHANGED
data/ext/rays/polyline.cpp
CHANGED
data/ext/rays/shader.cpp
CHANGED
data/rays.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# -*- mode: ruby; coding: utf-8 -*-
|
2
2
|
|
3
3
|
|
4
|
-
File.expand_path('
|
4
|
+
File.expand_path('lib', __dir__)
|
5
5
|
.tap {|s| $:.unshift s if !$:.include?(s) && File.directory?(s)}
|
6
6
|
|
7
7
|
require 'rays/module'
|
@@ -28,8 +28,8 @@ Gem::Specification.new do |s|
|
|
28
28
|
s.platform = Gem::Platform::RUBY
|
29
29
|
s.required_ruby_version = '>= 2.6.0'
|
30
30
|
|
31
|
-
s.add_runtime_dependency 'xot', '~> 0.1.
|
32
|
-
s.add_runtime_dependency 'rucy', '~> 0.1.
|
31
|
+
s.add_runtime_dependency 'xot', '~> 0.1.30'
|
32
|
+
s.add_runtime_dependency 'rucy', '~> 0.1.30'
|
33
33
|
|
34
34
|
s.files = `git ls-files`.split $/
|
35
35
|
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
|
-
|
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
|
-
|
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,
|
410
|
-
|
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(
|
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
|
-
|
449
|
+
#ifndef IOS
|
468
450
|
if (buffer == 0)
|
469
451
|
{
|
470
|
-
buffer =
|
471
|
-
|
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(
|
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
|
-
|
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
|
-
|
489
|
-
std::function<void(GLint)>
|
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
|
-
|
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)>
|
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
|
-
|
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
|
-
|
522
|
-
|
523
|
-
|
524
|
-
|
525
|
-
|
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
|
-
|
531
|
-
|
513
|
+
glDrawElements(mode, (GLsizei) nindices, GL_UNSIGNED_INT, 0);
|
514
|
+
OpenGL_check_error(__FILE__, __LINE__);
|
532
515
|
|
533
|
-
|
534
|
-
|
516
|
+
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
|
517
|
+
OpenGL_check_error(__FILE__, __LINE__);
|
518
|
+
#endif
|
535
519
|
}
|
536
520
|
|
537
|
-
|
538
|
-
|
521
|
+
GLuint create_and_bind_buffer (
|
522
|
+
GLenum target, const void* data, GLsizeiptr size)
|
539
523
|
{
|
540
|
-
GLuint id
|
541
|
-
|
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
|
-
|
547
|
-
OpenGL_check_error(__FILE__, __LINE__);
|
528
|
+
buffers.push_back(id);
|
548
529
|
|
549
|
-
|
550
|
-
|
530
|
+
glBindBuffer(target, id);
|
531
|
+
OpenGL_check_error(__FILE__, __LINE__);
|
551
532
|
|
552
|
-
|
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
|
539
|
+
void cleanup ()
|
561
540
|
{
|
562
|
-
|
541
|
+
for (auto loc : locations)
|
563
542
|
{
|
564
|
-
|
565
|
-
|
543
|
+
glDisableVertexAttribArray(loc);
|
544
|
+
OpenGL_check_error(__FILE__, __LINE__);
|
566
545
|
}
|
567
546
|
|
568
|
-
|
569
|
-
|
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
|
-
|
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
|
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
|
-
#
|
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__
|
390
|
-
" vec4 texcoord__
|
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
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
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
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.
|
4
|
+
version: 0.1.30
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- xordog
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-02-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: xot
|
@@ -16,28 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.1.
|
19
|
+
version: 0.1.30
|
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.
|
26
|
+
version: 0.1.30
|
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.
|
33
|
+
version: 0.1.30
|
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.
|
40
|
+
version: 0.1.30
|
41
41
|
description: This library helps you to develop graphics application with OpenGL.
|
42
42
|
email: xordog@gmail.com
|
43
43
|
executables: []
|
@@ -257,7 +257,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
257
257
|
- !ruby/object:Gem::Version
|
258
258
|
version: '0'
|
259
259
|
requirements: []
|
260
|
-
rubygems_version: 3.
|
260
|
+
rubygems_version: 3.4.1
|
261
261
|
signing_key:
|
262
262
|
specification_version: 4
|
263
263
|
summary: A Drawing Engine using OpenGL.
|