mittsu 0.2.3 → 0.3.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/build-workflow.yml +95 -0
- data/.gitignore +1 -0
- data/Gemfile +3 -2
- data/README.md +3 -7
- data/Rakefile +1 -0
- data/install-glfw.ps1 +13 -0
- data/lib/mittsu.rb +1 -16
- data/lib/mittsu/cameras/camera.rb +0 -2
- data/lib/mittsu/cameras/cube_camera.rb +0 -2
- data/lib/mittsu/cameras/orthographic_camera.rb +2 -4
- data/lib/mittsu/cameras/perspective_camera.rb +4 -5
- data/lib/mittsu/core/buffer_geometry.rb +3 -3
- data/lib/mittsu/core/geometry.rb +10 -9
- data/lib/mittsu/core/object_3d.rb +9 -7
- data/lib/mittsu/core/raycaster.rb +0 -2
- data/lib/mittsu/extras/geometries.rb +13 -0
- data/lib/mittsu/extras/geometries/circle_geometry.rb +48 -0
- data/lib/mittsu/extras/geometries/cylinder_geometry.rb +145 -0
- data/lib/mittsu/extras/geometries/dodecahedron_geometry.rb +56 -0
- data/lib/mittsu/extras/geometries/icosahedron_geometry.rb +33 -0
- data/lib/mittsu/extras/geometries/lathe_geometry.rb +78 -0
- data/lib/mittsu/extras/geometries/octahedron_geometry.rb +26 -0
- data/lib/mittsu/extras/geometries/parametric_buffer_geometry.rb +92 -0
- data/lib/mittsu/extras/geometries/parametric_geometry.rb +93 -0
- data/lib/mittsu/extras/geometries/plane_buffer_geometry.rb +81 -0
- data/lib/mittsu/extras/geometries/plane_geometry.rb +22 -0
- data/lib/mittsu/extras/geometries/polyhedron_geometry.rb +168 -0
- data/lib/mittsu/extras/geometries/ring_geometry.rb +80 -0
- data/lib/mittsu/extras/geometries/sphere_geometry.rb +4 -4
- data/lib/mittsu/extras/geometries/tetrahedron_geometry.rb +26 -0
- data/lib/mittsu/extras/geometries/torus_geometry.rb +63 -0
- data/lib/mittsu/extras/geometries/torus_knot_buffer_geometry.rb +120 -0
- data/lib/mittsu/extras/geometries/torus_knot_geometry.rb +25 -0
- data/lib/mittsu/extras/helpers/camera_helper.rb +38 -38
- data/lib/mittsu/extras/image_utils.rb +1 -1
- data/lib/mittsu/lights/directional_light.rb +9 -5
- data/lib/mittsu/lights/spot_light.rb +1 -1
- data/lib/mittsu/loaders/loader.rb +2 -2
- data/lib/mittsu/loaders/obj_loader.rb +4 -0
- data/lib/mittsu/materials/material.rb +6 -3
- data/lib/mittsu/math.rb +0 -5
- data/lib/mittsu/math/box2.rb +0 -2
- data/lib/mittsu/math/box3.rb +0 -2
- data/lib/mittsu/math/color.rb +3 -4
- data/lib/mittsu/math/euler.rb +25 -26
- data/lib/mittsu/math/frustum.rb +0 -2
- data/lib/mittsu/math/line3.rb +0 -2
- data/lib/mittsu/math/matrix3.rb +0 -2
- data/lib/mittsu/math/matrix4.rb +10 -12
- data/lib/mittsu/math/plane.rb +0 -2
- data/lib/mittsu/math/quaternion.rb +18 -20
- data/lib/mittsu/math/ray.rb +1 -3
- data/lib/mittsu/math/sphere.rb +1 -3
- data/lib/mittsu/math/spline.rb +0 -2
- data/lib/mittsu/math/triangle.rb +1 -3
- data/lib/mittsu/math/vector.rb +4 -4
- data/lib/mittsu/math/vector2.rb +0 -1
- data/lib/mittsu/math/vector3.rb +0 -1
- data/lib/mittsu/math/vector4.rb +8 -9
- data/lib/mittsu/objects/line.rb +0 -1
- data/lib/mittsu/renderers/glfw_lib.rb +1 -1
- data/lib/mittsu/renderers/glfw_window.rb +1 -1
- data/lib/mittsu/renderers/opengl/core/object_3d.rb +1 -1
- data/lib/mittsu/renderers/opengl/lights/spot_light.rb +1 -1
- data/lib/mittsu/renderers/opengl/opengl_geometry_group.rb +1 -0
- data/lib/mittsu/renderers/opengl/opengl_program.rb +1 -2
- data/lib/mittsu/renderers/opengl/textures/texture.rb +1 -1
- data/lib/mittsu/renderers/opengl_renderer.rb +5 -10
- data/lib/mittsu/scenes/scene.rb +0 -2
- data/lib/mittsu/textures/texture.rb +4 -2
- data/lib/mittsu/utils.rb +15 -0
- data/lib/mittsu/version.rb +1 -1
- data/mittsu.gemspec +10 -9
- metadata +75 -47
- data/.circleci/config.yml +0 -44
- data/.travis.yml +0 -20
- data/appveyor.yml +0 -23
- data/install_glfw.ps1 +0 -11
data/lib/mittsu/math/frustum.rb
CHANGED
data/lib/mittsu/math/line3.rb
CHANGED
data/lib/mittsu/math/matrix3.rb
CHANGED
data/lib/mittsu/math/matrix4.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'mittsu/math'
|
2
|
-
|
3
1
|
module Mittsu
|
4
2
|
class Matrix4
|
5
3
|
attr_accessor :elements
|
@@ -88,9 +86,9 @@ module Mittsu
|
|
88
86
|
def make_rotation_from_euler(euler)
|
89
87
|
te = self.elements
|
90
88
|
x, y, z = euler.x, euler.y, euler.z
|
91
|
-
a, b = Math.cos(x), Math.sin(x)
|
92
|
-
c, d = Math.cos(y), Math.sin(y)
|
93
|
-
e, f = Math.cos(z), Math.sin(z)
|
89
|
+
a, b = ::Math.cos(x), ::Math.sin(x)
|
90
|
+
c, d = ::Math.cos(y), ::Math.sin(y)
|
91
|
+
e, f = ::Math.cos(z), ::Math.sin(z)
|
94
92
|
if euler.order == 'XYZ'
|
95
93
|
ae = a * e; af = a * f; be = b * e; bf = b * f
|
96
94
|
te[0] = c * e
|
@@ -401,7 +399,7 @@ module Mittsu
|
|
401
399
|
scale_x_sq = te[0] * te[0] + te[1] * te[1] + te[2] * te[2]
|
402
400
|
scale_y_sq = te[4] * te[4] + te[5] * te[5] + te[6] * te[6]
|
403
401
|
scale_z_sq = te[8] * te[8] + te[9] * te[9] + te[10] * te[10]
|
404
|
-
Math.sqrt([scale_x_sq, scale_y_sq, scale_z_sq].max)
|
402
|
+
::Math.sqrt([scale_x_sq, scale_y_sq, scale_z_sq].max)
|
405
403
|
end
|
406
404
|
|
407
405
|
def make_translation(x, y, z)
|
@@ -415,7 +413,7 @@ module Mittsu
|
|
415
413
|
end
|
416
414
|
|
417
415
|
def make_rotation_x(theta)
|
418
|
-
c, s = Math.cos(theta), Math.sin(theta)
|
416
|
+
c, s = ::Math.cos(theta), ::Math.sin(theta)
|
419
417
|
self.set(
|
420
418
|
1.0, 0.0, 0.0, 0.0,
|
421
419
|
0.0, c, -s, 0.0,
|
@@ -426,7 +424,7 @@ module Mittsu
|
|
426
424
|
end
|
427
425
|
|
428
426
|
def make_rotation_y(theta)
|
429
|
-
c, s = Math.cos(theta), Math.sin(theta)
|
427
|
+
c, s = ::Math.cos(theta), ::Math.sin(theta)
|
430
428
|
self.set(
|
431
429
|
c, 0.0, s, 0.0,
|
432
430
|
0.0, 1.0, 0.0, 0.0,
|
@@ -437,7 +435,7 @@ module Mittsu
|
|
437
435
|
end
|
438
436
|
|
439
437
|
def make_rotation_z(theta)
|
440
|
-
c, s = Math.cos(theta), Math.sin(theta)
|
438
|
+
c, s = ::Math.cos(theta), ::Math.sin(theta)
|
441
439
|
self.set(
|
442
440
|
c, -s, 0.0, 0.0,
|
443
441
|
s, c, 0.0, 0.0,
|
@@ -449,8 +447,8 @@ module Mittsu
|
|
449
447
|
|
450
448
|
def make_rotation_axis(axis, angle)
|
451
449
|
# Based on http:#www.gamedev.net/reference/articles/article1199.asp
|
452
|
-
c = Math.cos(angle)
|
453
|
-
s = Math.sin(angle)
|
450
|
+
c = ::Math.cos(angle)
|
451
|
+
s = ::Math.sin(angle)
|
454
452
|
t = 1.0 - c
|
455
453
|
x, y, z = axis.x, axis.y, axis.z
|
456
454
|
tx, ty = t * x, t * y
|
@@ -536,7 +534,7 @@ module Mittsu
|
|
536
534
|
def make_perspective(fov, aspect, near, far)
|
537
535
|
fov, aspect, near, far =
|
538
536
|
fov.to_f, aspect.to_f, near.to_f, far.to_f
|
539
|
-
ymax = near * Math.tan(Math.deg_to_rad(fov * 0.5))
|
537
|
+
ymax = near * ::Math.tan(Math.deg_to_rad(fov * 0.5))
|
540
538
|
ymin = -ymax
|
541
539
|
xmin = ymin * aspect
|
542
540
|
xmax = ymax * aspect
|
data/lib/mittsu/math/plane.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'mittsu/math'
|
2
|
-
|
3
1
|
module Mittsu
|
4
2
|
class Quaternion
|
5
3
|
EPS = 0.000001
|
@@ -8,6 +6,7 @@ module Mittsu
|
|
8
6
|
|
9
7
|
def initialize(x = 0.0, y = 0.0, z = 0.0, w = 1.0)
|
10
8
|
@x, @y, @z, @w = x, y, z, w
|
9
|
+
@on_change_callback = nil
|
11
10
|
end
|
12
11
|
|
13
12
|
def set(x, y, z, w)
|
@@ -52,12 +51,12 @@ module Mittsu
|
|
52
51
|
# http:#www.mathworks.com/matlabcentral/fileexchange/
|
53
52
|
# 20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/
|
54
53
|
# content/SpinCalc.m
|
55
|
-
c1 = Math.cos(euler.x / 2.0)
|
56
|
-
c2 = Math.cos(euler.y / 2.0)
|
57
|
-
c3 = Math.cos(euler.z / 2.0)
|
58
|
-
s1 = Math.sin(euler.x / 2.0)
|
59
|
-
s2 = Math.sin(euler.y / 2.0)
|
60
|
-
s3 = Math.sin(euler.z / 2.0)
|
54
|
+
c1 = ::Math.cos(euler.x / 2.0)
|
55
|
+
c2 = ::Math.cos(euler.y / 2.0)
|
56
|
+
c3 = ::Math.cos(euler.z / 2.0)
|
57
|
+
s1 = ::Math.sin(euler.x / 2.0)
|
58
|
+
s2 = ::Math.sin(euler.y / 2.0)
|
59
|
+
s3 = ::Math.sin(euler.z / 2.0)
|
61
60
|
if euler.order == 'XYZ'
|
62
61
|
@x = s1 * c2 * c3 + c1 * s2 * s3
|
63
62
|
@y = c1 * s2 * c3 - s1 * c2 * s3
|
@@ -97,11 +96,11 @@ module Mittsu
|
|
97
96
|
# http:#www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm
|
98
97
|
# assumes axis is normalized
|
99
98
|
half_angle = angle / 2.0
|
100
|
-
s = Math.sin(half_angle)
|
99
|
+
s = ::Math.sin(half_angle)
|
101
100
|
@x = axis.x * s
|
102
101
|
@y = axis.y * s
|
103
102
|
@z = axis.z * s
|
104
|
-
@w = Math.cos(half_angle)
|
103
|
+
@w = ::Math.cos(half_angle)
|
105
104
|
self.on_change_callback
|
106
105
|
self
|
107
106
|
end
|
@@ -115,25 +114,25 @@ module Mittsu
|
|
115
114
|
m31 = te[2]; m32 = te[6]; m33 = te[10]
|
116
115
|
trace = m11 + m22 + m33
|
117
116
|
if trace > 0
|
118
|
-
s = 0.5 / Math.sqrt(trace + 1.0)
|
117
|
+
s = 0.5 / ::Math.sqrt(trace + 1.0)
|
119
118
|
@w = 0.25 / s
|
120
119
|
@x = (m32 - m23) * s
|
121
120
|
@y = (m13 - m31) * s
|
122
121
|
@z = (m21 - m12) * s
|
123
122
|
elsif m11 > m22 && m11 > m33
|
124
|
-
s = 2.0 * Math.sqrt(1.0 + m11 - m22 - m33)
|
123
|
+
s = 2.0 * ::Math.sqrt(1.0 + m11 - m22 - m33)
|
125
124
|
@w = (m32 - m23) / s
|
126
125
|
@x = 0.25 * s
|
127
126
|
@y = (m12 + m21) / s
|
128
127
|
@z = (m13 + m31) / s
|
129
128
|
elsif m22 > m33
|
130
|
-
s = 2.0 * Math.sqrt(1.0 + m22 - m11 - m33)
|
129
|
+
s = 2.0 * ::Math.sqrt(1.0 + m22 - m11 - m33)
|
131
130
|
@w = (m13 - m31) / s
|
132
131
|
@x = (m12 + m21) / s
|
133
132
|
@y = 0.25 * s
|
134
133
|
@z = (m23 + m32) / s
|
135
134
|
else
|
136
|
-
s = 2.0 * Math.sqrt(1.0 + m33 - m11 - m22)
|
135
|
+
s = 2.0 * ::Math.sqrt(1.0 + m33 - m11 - m22)
|
137
136
|
@w = (m21 - m12) / s
|
138
137
|
@x = (m13 + m31) / s
|
139
138
|
@y = (m23 + m32) / s
|
@@ -188,7 +187,7 @@ module Mittsu
|
|
188
187
|
end
|
189
188
|
|
190
189
|
def length
|
191
|
-
Math.sqrt(@x * @x + @y * @y + @z * @z + @w * @w)
|
190
|
+
::Math.sqrt(@x * @x + @y * @y + @z * @z + @w * @w)
|
192
191
|
end
|
193
192
|
|
194
193
|
def normalize
|
@@ -247,8 +246,8 @@ module Mittsu
|
|
247
246
|
@z = _z
|
248
247
|
return self
|
249
248
|
end
|
250
|
-
half_theta = Math.acos(cos_half_theta)
|
251
|
-
sin_half_theta = Math.sqrt(1.0 - cos_half_theta * cos_half_theta)
|
249
|
+
half_theta = ::Math.acos(cos_half_theta)
|
250
|
+
sin_half_theta = ::Math.sqrt(1.0 - cos_half_theta * cos_half_theta)
|
252
251
|
if sin_half_theta.abs < 0.001
|
253
252
|
@w = 0.5 * (_w + @w)
|
254
253
|
@x = 0.5 * (_x + @x)
|
@@ -256,8 +255,8 @@ module Mittsu
|
|
256
255
|
@z = 0.5 * (_z + @z)
|
257
256
|
return self
|
258
257
|
end
|
259
|
-
ratio_a = Math.sin((1.0. - t) * half_theta) / sin_half_theta,
|
260
|
-
ratio_b = Math.sin(t * half_theta) / sin_half_theta
|
258
|
+
ratio_a = ::Math.sin((1.0. - t) * half_theta) / sin_half_theta,
|
259
|
+
ratio_b = ::Math.sin(t * half_theta) / sin_half_theta
|
261
260
|
@w = (_w * ratio_a + @w * ratio_b)
|
262
261
|
@x = (_x * ratio_a + @x * ratio_b)
|
263
262
|
@y = (_y * ratio_a + @y * ratio_b)
|
@@ -304,6 +303,5 @@ module Mittsu
|
|
304
303
|
def self.slerp(qa, qb, qm, t)
|
305
304
|
qm.copy(qa).slerp(qb, t)
|
306
305
|
end
|
307
|
-
|
308
306
|
end
|
309
307
|
end
|
data/lib/mittsu/math/ray.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'mittsu/math'
|
2
|
-
|
3
1
|
module Mittsu
|
4
2
|
class Ray
|
5
3
|
attr_accessor :origin, :direction
|
@@ -140,7 +138,7 @@ module Mittsu
|
|
140
138
|
d2 = v1.dot(v1) - tca * tca
|
141
139
|
radius2 = sphere.radius * sphere.radius
|
142
140
|
return nil if d2 > radius2
|
143
|
-
thc = Math.sqrt(radius2 - d2)
|
141
|
+
thc = ::Math.sqrt(radius2 - d2)
|
144
142
|
# t0 = first intersect point - entrance on front of sphere
|
145
143
|
t0 = tca - thc
|
146
144
|
# t1 = second intersect point - exit point on back of sphere
|
data/lib/mittsu/math/sphere.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'mittsu/math'
|
2
|
-
|
3
1
|
module Mittsu
|
4
2
|
class Sphere
|
5
3
|
attr_accessor :center, :radius
|
@@ -26,7 +24,7 @@ module Mittsu
|
|
26
24
|
points.each do |point|
|
27
25
|
max_radius_sq = [max_radius_sq, c.distance_to_squared(point)].max
|
28
26
|
end
|
29
|
-
@radius = Math.sqrt(max_radius_sq)
|
27
|
+
@radius = ::Math.sqrt(max_radius_sq)
|
30
28
|
self
|
31
29
|
end
|
32
30
|
|
data/lib/mittsu/math/spline.rb
CHANGED
data/lib/mittsu/math/triangle.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'mittsu/math'
|
2
|
-
|
3
1
|
module Mittsu
|
4
2
|
class Triangle
|
5
3
|
attr_accessor :a, :b, :c
|
@@ -73,7 +71,7 @@ module Mittsu
|
|
73
71
|
|
74
72
|
result_length_sq = target.length_sq
|
75
73
|
if (result_length_sq > 0)
|
76
|
-
target.multiply_scalar(1.0 / Math.sqrt(result_length_sq))
|
74
|
+
target.multiply_scalar(1.0 / ::Math.sqrt(result_length_sq))
|
77
75
|
else
|
78
76
|
target.set(0.0, 0.0, 0.0)
|
79
77
|
end
|
data/lib/mittsu/math/vector.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
module Mittsu
|
2
2
|
class Vector
|
3
|
-
attr_accessor :elements
|
3
|
+
attr_accessor :elements, :uv, :index
|
4
4
|
|
5
5
|
def initialize(elements)
|
6
6
|
@elements = elements
|
@@ -160,7 +160,7 @@ module Mittsu
|
|
160
160
|
end
|
161
161
|
|
162
162
|
def length
|
163
|
-
Math.sqrt(length_sq)
|
163
|
+
::Math.sqrt(length_sq)
|
164
164
|
end
|
165
165
|
|
166
166
|
def normalize
|
@@ -211,11 +211,11 @@ module Mittsu
|
|
211
211
|
theta = self.dot(v) / (self.length * v.length)
|
212
212
|
|
213
213
|
# clamp, to handle numerical problems
|
214
|
-
Math.acos(Math.clamp(theta, -1.0, 1.0))
|
214
|
+
::Math.acos(Math.clamp(theta, -1.0, 1.0))
|
215
215
|
end
|
216
216
|
|
217
217
|
def distance_to(v)
|
218
|
-
Math.sqrt(self.distance_to_squared(v))
|
218
|
+
::Math.sqrt(self.distance_to_squared(v))
|
219
219
|
end
|
220
220
|
|
221
221
|
def ==(v)
|
data/lib/mittsu/math/vector2.rb
CHANGED
data/lib/mittsu/math/vector3.rb
CHANGED
data/lib/mittsu/math/vector4.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
require 'mittsu/math'
|
2
1
|
require 'mittsu/math/vector'
|
3
2
|
|
4
3
|
module Mittsu
|
@@ -50,8 +49,8 @@ module Mittsu
|
|
50
49
|
def set_axis_angle_from_quaternion(q)
|
51
50
|
# http:#www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm
|
52
51
|
# q is assumed to be normalized
|
53
|
-
@elements[3] = 2.0 * Math.acos(q.w)
|
54
|
-
s = Math.sqrt(1.0 - q.w * q.w)
|
52
|
+
@elements[3] = 2.0 * ::Math.acos(q.w)
|
53
|
+
s = ::Math.sqrt(1.0 - q.w * q.w)
|
55
54
|
if s < 0.0001
|
56
55
|
@elements[0] = 1.0
|
57
56
|
@elements[1] = 0.0
|
@@ -89,7 +88,7 @@ module Mittsu
|
|
89
88
|
return self # zero angle, arbitrary axis
|
90
89
|
end
|
91
90
|
# otherwise self singularity is angle = 180
|
92
|
-
angle = Math::PI
|
91
|
+
angle = ::Math::PI
|
93
92
|
xx = (m11 + 1.0) / 2.0
|
94
93
|
yy = (m22 + 1.0) / 2.0
|
95
94
|
zz = (m33 + 1.0) / 2.0
|
@@ -102,7 +101,7 @@ module Mittsu
|
|
102
101
|
y1 = 0.707106781
|
103
102
|
z1 = 0.707106781
|
104
103
|
else
|
105
|
-
x1 = Math.sqrt(xx)
|
104
|
+
x1 = ::Math.sqrt(xx)
|
106
105
|
y1 = xy / x1
|
107
106
|
z1 = xz / x1
|
108
107
|
end
|
@@ -112,7 +111,7 @@ module Mittsu
|
|
112
111
|
y1 = 0.0
|
113
112
|
z1 = 0.707106781
|
114
113
|
else
|
115
|
-
y1 = Math.sqrt(yy)
|
114
|
+
y1 = ::Math.sqrt(yy)
|
116
115
|
x1 = xy / y1
|
117
116
|
z1 = yz / y1
|
118
117
|
end
|
@@ -122,7 +121,7 @@ module Mittsu
|
|
122
121
|
y1 = 0.707106781
|
123
122
|
z1 = 0.0
|
124
123
|
else
|
125
|
-
z1 = Math.sqrt(zz)
|
124
|
+
z1 = ::Math.sqrt(zz)
|
126
125
|
x1 = xz / z1
|
127
126
|
y1 = yz / z1
|
128
127
|
end
|
@@ -131,7 +130,7 @@ module Mittsu
|
|
131
130
|
return self # return 180 deg rotation
|
132
131
|
end
|
133
132
|
# as we have reached here there are no singularities so we can handle normally
|
134
|
-
s = Math.sqrt((m32 - m23) * (m32 - m23) +
|
133
|
+
s = ::Math.sqrt((m32 - m23) * (m32 - m23) +
|
135
134
|
(m13 - m31) * (m13 - m31) +
|
136
135
|
(m21 - m12) * (m21 - m12)) # used to normalize
|
137
136
|
s = 1.0 if (s.abs < 0.001)
|
@@ -140,7 +139,7 @@ module Mittsu
|
|
140
139
|
@elements[0] = (m32 - m23) / s
|
141
140
|
@elements[1] = (m13 - m31) / s
|
142
141
|
@elements[2] = (m21 - m12) / s
|
143
|
-
@elements[3] = Math.acos((m11 + m22 + m33 - 1.0) / 2.0)
|
142
|
+
@elements[3] = ::Math.acos((m11 + m22 + m33 - 1.0) / 2.0)
|
144
143
|
self
|
145
144
|
end
|
146
145
|
|
data/lib/mittsu/objects/line.rb
CHANGED
@@ -34,7 +34,7 @@ module Mittsu
|
|
34
34
|
|
35
35
|
def file
|
36
36
|
matches = Dir.glob('/usr/local/lib/libglfw*.dylib').map { |path| File.basename(path) }
|
37
|
-
return matches.find
|
37
|
+
return matches.find { |m| m == 'libglfw3.dylib' || m == 'libglfw.3.dylib' } || matches.first
|
38
38
|
end
|
39
39
|
end
|
40
40
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'opengl'
|
2
2
|
require 'glfw'
|
3
3
|
|
4
|
-
require 'mittsu'
|
4
|
+
require 'mittsu/utils'
|
5
5
|
require 'mittsu/renderers/glfw_lib'
|
6
6
|
glfw_lib = Mittsu::GLFWLib.discover
|
7
7
|
GLFW.load_lib(ENV["MITTSU_LIBGLFW_FILE"] || glfw_lib.file, ENV["MITTSU_LIBGLFW_PATH"] || glfw_lib.path) unless Mittsu.test?
|
@@ -35,7 +35,7 @@ module Mittsu
|
|
35
35
|
directions[offset + 1] = @_direction.y
|
36
36
|
directions[offset + 2] = @_direction.z
|
37
37
|
|
38
|
-
@cache.angles_cos[index] = Math.cos(angle)
|
38
|
+
@cache.angles_cos[index] = ::Math.cos(angle)
|
39
39
|
@cache.exponents[index] = exponent;
|
40
40
|
@cache.decays[index] = distance.zero? ? 0.0 : decay
|
41
41
|
end
|
@@ -1,10 +1,9 @@
|
|
1
1
|
require 'erb'
|
2
|
-
|
3
2
|
require 'mittsu/renderers/opengl/opengl_shader'
|
4
3
|
|
5
4
|
module Mittsu
|
6
5
|
class OpenGLProgram
|
7
|
-
attr_reader :id, :program, :uniforms
|
6
|
+
attr_reader :id, :program, :uniforms
|
8
7
|
attr_accessor :code, :used_times, :attributes, :vertex_shader, :fragment_shader
|
9
8
|
|
10
9
|
def initialize(renderer, code, material, parameters)
|