rays 0.3.2 → 0.3.3
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/rays.cpp +7 -0
- data/ChangeLog.md +8 -0
- data/VERSION +1 -1
- data/ext/rays/rays.cpp +8 -0
- data/include/rays/rays.h +2 -0
- data/rays.gemspec +2 -2
- data/src/opengl.cpp +12 -0
- data/src/shader.cpp +20 -36
- data/src/shader_source.cpp +31 -1
- metadata +10 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 269385a45e74eaf01c182cbc322b720d22d34b5c7e0642918bd7f6bed05839bc
|
4
|
+
data.tar.gz: 52a94c5e763dbc4a4453ea1c119ea49933c8e6940c5e3a2455c935bbacfd64b8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '01789a502f4c6fd31c76ea275f2f73ee2afe60d254e9efdf340b1a443216a3c310e3620606c170c7c55b470310f4c8b8550af1ead0f658fd589407ef6e1e8ffd'
|
7
|
+
data.tar.gz: 24be83763d29af1b5e10ead9b2963eb53468320d721ddfd632e786071851abf7fda46db14eab5458569aad60d006f9d62b242d9f93f069d7c586036c83b26bf2
|
data/.doc/ext/rays/rays.cpp
CHANGED
@@ -70,6 +70,12 @@ VALUE fin(VALUE self)
|
|
70
70
|
return self;
|
71
71
|
}
|
72
72
|
|
73
|
+
static
|
74
|
+
VALUE renderer_info(VALUE self)
|
75
|
+
{
|
76
|
+
return value(Rays::get_renderer_info());
|
77
|
+
}
|
78
|
+
|
73
79
|
|
74
80
|
static Module mRays;
|
75
81
|
|
@@ -80,6 +86,7 @@ Init_rays ()
|
|
80
86
|
|
81
87
|
mRays.define_singleton_method("init!", init);
|
82
88
|
mRays.define_singleton_method("fin!", fin);
|
89
|
+
rb_define_singleton_method(mRays, "renderer_info", RUBY_METHOD_FUNC(renderer_info), 0);
|
83
90
|
|
84
91
|
for (auto it = CAP_TYPES.begin(); it != CAP_TYPES.end(); ++it)
|
85
92
|
mRays.define_const(it->name, it->value);
|
data/ChangeLog.md
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.
|
1
|
+
0.3.3
|
data/ext/rays/rays.cpp
CHANGED
@@ -72,6 +72,13 @@ RUCY_DEF0(fin)
|
|
72
72
|
}
|
73
73
|
RUCY_END
|
74
74
|
|
75
|
+
static
|
76
|
+
RUCY_DEF0(renderer_info)
|
77
|
+
{
|
78
|
+
return value(Rays::get_renderer_info());
|
79
|
+
}
|
80
|
+
RUCY_END
|
81
|
+
|
75
82
|
|
76
83
|
static Module mRays;
|
77
84
|
|
@@ -82,6 +89,7 @@ Init_rays ()
|
|
82
89
|
|
83
90
|
mRays.define_singleton_method("init!", init);
|
84
91
|
mRays.define_singleton_method("fin!", fin);
|
92
|
+
mRays.define_singleton_method("renderer_info", renderer_info);
|
85
93
|
|
86
94
|
for (auto it = CAP_TYPES.begin(); it != CAP_TYPES.end(); ++it)
|
87
95
|
mRays.define_const(it->name, it->value);
|
data/include/rays/rays.h
CHANGED
data/rays.gemspec
CHANGED
@@ -25,8 +25,8 @@ Gem::Specification.new do |s|
|
|
25
25
|
s.platform = Gem::Platform::RUBY
|
26
26
|
s.required_ruby_version = '>= 3.0.0'
|
27
27
|
|
28
|
-
s.add_dependency 'xot', '~> 0.3.
|
29
|
-
s.add_dependency 'rucy', '~> 0.3.
|
28
|
+
s.add_dependency 'xot', '~> 0.3.3', '>= 0.3.3'
|
29
|
+
s.add_dependency 'rucy', '~> 0.3.3', '>= 0.3.3'
|
30
30
|
|
31
31
|
s.files = `git ls-files`.split $/
|
32
32
|
s.executables = s.files.grep(%r{^bin/}) {|f| File.basename f}
|
data/src/opengl.cpp
CHANGED
@@ -56,4 +56,16 @@ namespace Rays
|
|
56
56
|
}
|
57
57
|
|
58
58
|
|
59
|
+
String
|
60
|
+
get_renderer_info ()
|
61
|
+
{
|
62
|
+
return Xot::stringf(
|
63
|
+
"{\"OpenGL Version\":\"%s\",\"GLSL Version\":\"%s\",\"Renderer\":\"%s\",\"Vendor\":\"%s\"}",
|
64
|
+
glGetString(GL_VERSION),
|
65
|
+
glGetString(GL_SHADING_LANGUAGE_VERSION),
|
66
|
+
glGetString(GL_RENDERER),
|
67
|
+
glGetString(GL_VENDOR));
|
68
|
+
}
|
69
|
+
|
70
|
+
|
59
71
|
}// Rays
|
data/src/shader.cpp
CHANGED
@@ -2,7 +2,6 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
#include <assert.h>
|
5
|
-
#include <regex>
|
6
5
|
#include "rays/exception.h"
|
7
6
|
#include "opengl.h"
|
8
7
|
#include "image.h"
|
@@ -50,7 +49,7 @@ namespace Rays
|
|
50
49
|
|
51
50
|
program.reset(new ShaderProgram(
|
52
51
|
make_vertex_shader_source(vertex_shader_source),
|
53
|
-
|
52
|
+
ShaderSource(GL_FRAGMENT_SHADER, fragment_shader_source),
|
54
53
|
env_ ? ShaderEnv_get_flags(*env_) : 0));
|
55
54
|
}
|
56
55
|
|
@@ -65,21 +64,6 @@ namespace Rays
|
|
65
64
|
}
|
66
65
|
}
|
67
66
|
|
68
|
-
ShaderSource make_fragment_shader_source (const char* source)
|
69
|
-
{
|
70
|
-
#ifdef IOS
|
71
|
-
static const String SHARED_HEADER = "precision highp float;\n";
|
72
|
-
static const std::regex PRECISION(R"(^\s*precision\s+\w+p\s+float\s*;)");
|
73
|
-
|
74
|
-
if (!std::regex_search(source, PRECISION))
|
75
|
-
return ShaderSource(GL_FRAGMENT_SHADER, SHARED_HEADER + source);
|
76
|
-
else
|
77
|
-
return ShaderSource(GL_FRAGMENT_SHADER, source);
|
78
|
-
#else
|
79
|
-
return ShaderSource(GL_FRAGMENT_SHADER, source);
|
80
|
-
#endif
|
81
|
-
}
|
82
|
-
|
83
67
|
};// Shader::Data
|
84
68
|
|
85
69
|
|
@@ -110,12 +94,12 @@ namespace Rays
|
|
110
94
|
"uniform sampler2D " + U_TEXTURE + ";\n"
|
111
95
|
"void main ()\n"
|
112
96
|
"{\n"
|
113
|
-
" vec2
|
97
|
+
" vec2 _rays_texcoord = clamp(" +
|
114
98
|
V_TEXCOORD + ".xy, " +
|
115
99
|
U_TEXCOORD_MIN + ".xy, " +
|
116
100
|
U_TEXCOORD_MAX + ".xy - " + U_TEXCOORD_OFFSET + ".xy);\n"
|
117
|
-
" vec4
|
118
|
-
" gl_FragColor
|
101
|
+
" vec4 _rays_color = texture2D(" + U_TEXTURE + ", _rays_texcoord);\n"
|
102
|
+
" gl_FragColor = " + V_COLOR + " * _rays_color;\n"
|
119
103
|
"}\n");
|
120
104
|
}
|
121
105
|
|
@@ -132,11 +116,11 @@ namespace Rays
|
|
132
116
|
"uniform sampler2D " + U_TEXTURE + ";\n"
|
133
117
|
"void main ()\n"
|
134
118
|
"{\n"
|
135
|
-
" vec2
|
136
|
-
" vec2
|
137
|
-
" vec2
|
138
|
-
" vec4
|
139
|
-
" gl_FragColor
|
119
|
+
" vec2 _rays_min = " + U_TEXCOORD_MIN + ".xy;\n"
|
120
|
+
" vec2 _rays_len = " + U_TEXCOORD_MAX + ".xy - _rays_min;\n"
|
121
|
+
" vec2 _rays_texcoord = mod(" + V_TEXCOORD + ".xy - _rays_min, _rays_len) + _rays_min;\n"
|
122
|
+
" vec4 _rays_color = texture2D(" + U_TEXTURE + ", _rays_texcoord);\n"
|
123
|
+
" gl_FragColor = " + V_COLOR + " * _rays_color;\n"
|
140
124
|
"}\n");
|
141
125
|
}
|
142
126
|
|
@@ -151,16 +135,16 @@ namespace Rays
|
|
151
135
|
"uniform sampler2D " + U_TEXTURE + ";\n"
|
152
136
|
"void main ()\n"
|
153
137
|
"{\n"
|
154
|
-
" vec4
|
138
|
+
" vec4 _rays_col = texture2D(" + U_TEXTURE + ", " + V_TEXCOORD + ".xy);\n"
|
155
139
|
#if defined(OSX) || defined(IOS)
|
156
140
|
// restore premultiplied rgb values
|
157
|
-
" vec3
|
158
|
-
" gl_FragColor
|
141
|
+
" vec3 _rays_rgb = _rays_col.a != 0.0 ? _rays_col.rgb / _rays_col.a : _rays_col.rgb;\n"
|
142
|
+
" gl_FragColor = " + V_COLOR + " * vec4(_rays_rgb, _rays_col.a);\n"
|
159
143
|
#elif defined(WIN32)
|
160
|
-
" float
|
161
|
-
" gl_FragColor
|
144
|
+
" float _rays_a = (_rays_col.r + _rays_col.g + _rays_col.b) / 3.0;\n"
|
145
|
+
" gl_FragColor = " + V_COLOR + " * vec4(1.0, 1.0, 1.0, _rays_a);\n"
|
162
146
|
#else
|
163
|
-
" gl_FragColor
|
147
|
+
" gl_FragColor = " + V_COLOR + " * _rays_col;\n"
|
164
148
|
#endif
|
165
149
|
"}\n");
|
166
150
|
}
|
@@ -422,12 +406,12 @@ namespace Rays
|
|
422
406
|
"uniform mat4 " + U_TEXCOORD_MATRIX + ";\n"
|
423
407
|
"void main ()\n"
|
424
408
|
"{\n"
|
425
|
-
" vec4
|
426
|
-
" vec4
|
427
|
-
" " + V_POSITION + " =
|
428
|
-
" " + V_TEXCOORD + " = " + U_TEXCOORD_MATRIX + " *
|
409
|
+
" vec4 _rays_pos = vec4(" + A_POSITION + ", 1.0);\n"
|
410
|
+
" vec4 _rays_texcoord = vec4(" + A_TEXCOORD + ", 1.0);\n"
|
411
|
+
" " + V_POSITION + " = _rays_pos;\n"
|
412
|
+
" " + V_TEXCOORD + " = " + U_TEXCOORD_MATRIX + " * _rays_texcoord;\n"
|
429
413
|
" " + V_COLOR + " = " + A_COLOR + ";\n"
|
430
|
-
" gl_Position = " + U_POSITION_MATRIX + " *
|
414
|
+
" gl_Position = " + U_POSITION_MATRIX + " * _rays_pos;\n"
|
431
415
|
"}\n";
|
432
416
|
}
|
433
417
|
|
data/src/shader_source.cpp
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
#include "shader_source.h"
|
2
2
|
|
3
3
|
|
4
|
+
#include <regex>
|
4
5
|
#include "rays/exception.h"
|
5
6
|
#include "rays/debug.h"
|
6
7
|
|
@@ -39,8 +40,11 @@ namespace Rays
|
|
39
40
|
if (is_valid())
|
40
41
|
invalid_state_error(__FILE__, __LINE__);
|
41
42
|
|
43
|
+
String buffer;
|
44
|
+
const char* src = add_headers(type_, source_, &buffer);
|
45
|
+
|
42
46
|
id = glCreateShader(type_);
|
43
|
-
glShaderSource(id, 1, &
|
47
|
+
glShaderSource(id, 1, &src, NULL);
|
44
48
|
glCompileShader(id);
|
45
49
|
|
46
50
|
GLint status = GL_FALSE;
|
@@ -52,6 +56,32 @@ namespace Rays
|
|
52
56
|
source = source_;
|
53
57
|
}
|
54
58
|
|
59
|
+
const char* add_headers (GLenum type, const char* source, String* buffer)
|
60
|
+
{
|
61
|
+
#ifdef IOS
|
62
|
+
if (type == GL_FRAGMENT_SHADER)
|
63
|
+
{
|
64
|
+
static const std::regex PRECISION(R"(^\s*precision\s+\w+p\s+float\s*;)");
|
65
|
+
if (!std::regex_search(source, PRECISION))
|
66
|
+
{
|
67
|
+
static const String PRECISION_HEADER = "precision highp float;\n";
|
68
|
+
*buffer = PRECISION_HEADER + source;
|
69
|
+
source = buffer->c_str();
|
70
|
+
}
|
71
|
+
}
|
72
|
+
#endif
|
73
|
+
|
74
|
+
static const std::regex VERSION(R"(^\s*#\s*version\s+\d+)");
|
75
|
+
if (!std::regex_search(source, VERSION))
|
76
|
+
{
|
77
|
+
static const String VERSION_HEADER = "#version 120\n";
|
78
|
+
*buffer = VERSION_HEADER + source;
|
79
|
+
source = buffer->c_str();
|
80
|
+
}
|
81
|
+
|
82
|
+
return source;
|
83
|
+
}
|
84
|
+
|
55
85
|
String get_compile_log () const
|
56
86
|
{
|
57
87
|
GLsizei len = 0;
|
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.3.
|
4
|
+
version: 0.3.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- xordog
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-01-
|
11
|
+
date: 2025-01-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: xot
|
@@ -16,40 +16,40 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.3.
|
19
|
+
version: 0.3.3
|
20
20
|
- - ">="
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: 0.3.
|
22
|
+
version: 0.3.3
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
27
|
- - "~>"
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: 0.3.
|
29
|
+
version: 0.3.3
|
30
30
|
- - ">="
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: 0.3.
|
32
|
+
version: 0.3.3
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: rucy
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
36
36
|
requirements:
|
37
37
|
- - "~>"
|
38
38
|
- !ruby/object:Gem::Version
|
39
|
-
version: 0.3.
|
39
|
+
version: 0.3.3
|
40
40
|
- - ">="
|
41
41
|
- !ruby/object:Gem::Version
|
42
|
-
version: 0.3.
|
42
|
+
version: 0.3.3
|
43
43
|
type: :runtime
|
44
44
|
prerelease: false
|
45
45
|
version_requirements: !ruby/object:Gem::Requirement
|
46
46
|
requirements:
|
47
47
|
- - "~>"
|
48
48
|
- !ruby/object:Gem::Version
|
49
|
-
version: 0.3.
|
49
|
+
version: 0.3.3
|
50
50
|
- - ">="
|
51
51
|
- !ruby/object:Gem::Version
|
52
|
-
version: 0.3.
|
52
|
+
version: 0.3.3
|
53
53
|
description: This library helps you to develop graphics application with OpenGL.
|
54
54
|
email: xordog@gmail.com
|
55
55
|
executables: []
|