glrb 0.1.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/gl.rb +7 -6
- data/lib/math/mat.rb +41 -10
- data/lib/math/vec.rb +8 -3
- data/lib/utils/helpers.rb +1 -0
- data/lib/utils/version.rb +1 -1
- metadata +2 -4
- data/.DS_Store +0 -0
- data/raymarch.rb +0 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 32729b8faab82ca32211bf89905d9f405b95e0d5dcef88289e8429fe3f5b980b
|
4
|
+
data.tar.gz: cc9c88592e09288a1b95892e282b6d1d48c7ad12cc07e8179d438694fd26369a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 26ff4370b860a1ec2e12c2df95795700b0d47177a35887fac23aa5e243d5777fce8be651d3bfdb60a1267287b2ec1e565eb7601eb2be6c3e9aa7a2a2ded1ef88
|
7
|
+
data.tar.gz: 9c326afa555b58e1a765f3c0a5e8d6e573ad668dddabe42421164e23b1714bf2e997290f06178336703f7b6e2c0e5c4531e7c73b8bcc256cf1114333c86dd585
|
data/lib/gl.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
module Glrb
|
2
2
|
class GL
|
3
|
-
def initialize(w = 256, h = 256, filename = "", shader = gl_defaultSahder(self))
|
3
|
+
def initialize(w = 256, h = 256, filename = "tmp.ppm", shader = gl_defaultSahder(self))
|
4
4
|
@filename = filename
|
5
5
|
@w = w
|
6
6
|
@h = h
|
@@ -36,13 +36,13 @@ module Glrb
|
|
36
36
|
|
37
37
|
def gl_render (gl, i)
|
38
38
|
gl.i = i
|
39
|
-
gl.FragCoord = vec (i % gl.w).to_f + 0.5, i.to_f / gl.w.to_f + 0.5, 0, 0
|
40
|
-
gl.FragColor = gl.shader.call
|
39
|
+
gl.FragCoord = vec (i % gl.w).to_f + 0.5, gl.h.to_f - i.to_f / gl.w.to_f + 0.5, 0, 0
|
40
|
+
gl.FragColor = gl.shader.call || gl.FragColor
|
41
41
|
end
|
42
42
|
|
43
43
|
def gl_test (gl)
|
44
44
|
(gl.w.to_i * gl.h.to_i).times.inject("") do |acc, i|
|
45
|
-
col = gl[i]
|
45
|
+
col = gl[i].map(->v, i{v.clamp(0, 1)})
|
46
46
|
c = (col[3] * col.xyz.sum / 3 <= 0.5) ? "_ " : "# "
|
47
47
|
ret = acc + c + ((i % gl.w.to_i == gl.w.to_i - 1) ? "\n" : "")
|
48
48
|
end
|
@@ -52,8 +52,9 @@ module Glrb
|
|
52
52
|
open(@filename, "wb") do |f|
|
53
53
|
f.puts("P6\n#{gl.w} #{gl.h}\n255")
|
54
54
|
(gl.w.to_i * gl.h.to_i).times do |i|
|
55
|
-
|
56
|
-
|
55
|
+
puts "#{i} / #{gl.w.to_i * gl.h.to_i}"
|
56
|
+
col = gl[i].map(->v, i{(v.clamp(0, 1) * 255).to_i})
|
57
|
+
f.write(col.to_a.pack("ccc"))
|
57
58
|
end
|
58
59
|
end
|
59
60
|
end
|
data/lib/math/mat.rb
CHANGED
@@ -1,26 +1,57 @@
|
|
1
1
|
module Glrb
|
2
2
|
class Mat
|
3
|
-
def initialize(init = [
|
4
|
-
@v = init
|
3
|
+
def initialize(init = [Vec.new, Vec.new, Vec.new], args = 0)
|
4
|
+
@v = init.map{|v| isArr(v) ? Vec.new(v) : v}
|
5
5
|
@n = args
|
6
6
|
@_ = ->(v = @v, n = @n){Vec.new(v, n)}
|
7
7
|
end
|
8
|
-
def to_a() isArr(@v) ? @v : @v[@n] end
|
9
|
-
def to_s() to_a.to_s end
|
8
|
+
def to_a() (isArr(@v) ? @v : @v[@n]) end
|
9
|
+
def to_s() to_a.map(&:to_a).to_s end
|
10
10
|
def size() to_a.size end
|
11
|
-
def sort() @_[->n{to_a.sort}] end
|
12
11
|
def map(_) @_[->n{to_a.map.with_index{|v, i| _[v, i]}}] end
|
13
|
-
def
|
14
|
-
def -(_) map(isNum(_) ? ->v, i{v - _} : ->v, i{v - _[i]}) end
|
15
|
-
def *(_) map(isNum(_) ? ->v, i{v * _} : ->v, i{v * _[i]}) end
|
16
|
-
def /(_) map(isNum(_) ? ->v, i{v / _} : ->v, i{v / _[i]}) end
|
12
|
+
def tr() transpose(self) end
|
17
13
|
def [](_) @v[_] end
|
14
|
+
def +(_) map(!isMat(_) ? ->v, i{v + _} : ->v, i{v + _[i]}) end
|
15
|
+
def -(_) map(!isMat(_) ? ->v, i{v - _} : ->v, i{v - _[i]}) end
|
16
|
+
def %(_) map(isNum(_) ? ->v, i{v % _} : mx(_, ->a, b{a % b})) end
|
17
|
+
def *(_) map(isNum(_) ? ->v, i{v * _} : mx(_, ->a, b{a * b})) end
|
18
|
+
def /(_) map(isNum(_) ? ->v, i{v / _} : mx(_, ->a, b{a / b})) end
|
18
19
|
def <=>(_) @v = _ end
|
19
20
|
def >>(_) _ << @n end
|
20
21
|
def <<(n) @_[@v, n] end
|
21
22
|
def +@() map(->v, i{+v}) end
|
22
23
|
def -@() map(->v, i{-v}) end
|
24
|
+
def x() self[0] end
|
25
|
+
def y() self[1] end
|
26
|
+
def z() self[2] end
|
27
|
+
def xy() @_[->n{v = to_a; [v[0], v[1]]}] end
|
28
|
+
def xz() @_[->n{v = to_a; [v[0], v[2]]}] end
|
29
|
+
def yx() @_[->n{v = to_a; [v[1], v[0]]}] end
|
30
|
+
def yz() @_[->n{v = to_a; [v[1], v[2]]}] end
|
31
|
+
def zx() @_[->n{v = to_a; [v[2], v[0]]}] end
|
32
|
+
def zy() @_[->n{v = to_a; [v[2], v[1]]}] end
|
33
|
+
def xyz() @_[->n{v = to_a; [v[0], v[1], v[2]]}] end
|
34
|
+
def xzy() @_[->n{v = to_a; [v[0], v[2], v[1]]}] end
|
35
|
+
def yxz() @_[->n{v = to_a; [v[1], v[0], v[2]]}] end
|
36
|
+
def yzx() @_[->n{v = to_a; [v[1], v[2], v[0]]}] end
|
37
|
+
def zxy() @_[->n{v = to_a; [v[2], v[0], v[1]]}] end
|
38
|
+
def zyx() @_[->n{v = to_a; [v[2], v[1], v[0]]}] end
|
39
|
+
def mx(v, _) isMat(v) ? mxm(v, _) : mxv(v, _) end
|
40
|
+
def mxv(v, _) ->a, i{ _[a, v].sum } end
|
41
|
+
def mxm(m, _)
|
42
|
+
m = transpose(m)
|
43
|
+
->v, i{
|
44
|
+
v.map(->vv, j{
|
45
|
+
_[v, m[j]].sum
|
46
|
+
})
|
47
|
+
}
|
48
|
+
end
|
23
49
|
end
|
24
50
|
|
25
|
-
def
|
51
|
+
def mat(*init) Mat.new(init) end
|
52
|
+
|
53
|
+
def transpose(m)
|
54
|
+
a = m.to_a
|
55
|
+
Mat.new(a.size.times.map{|i| a[i].size.times.map{|j| a[j][i]}})
|
56
|
+
end
|
26
57
|
end
|
data/lib/math/vec.rb
CHANGED
@@ -10,18 +10,20 @@ module Glrb
|
|
10
10
|
def size() to_a.size end
|
11
11
|
def map(_) @_[->n{to_a.map.with_index{|v, i| _[v, i]}}] end
|
12
12
|
def sum() to_a.sum end
|
13
|
-
def length() Math::sqrt(self
|
13
|
+
def length() Math::sqrt(dot(self)) end
|
14
14
|
def !@() self / length end
|
15
15
|
def [](_) v = to_a; v[_] end
|
16
16
|
def +(_) map(isNum(_) ? ->v, i{v + _} : ->v, i{v + _[i]}) end
|
17
17
|
def -(_) map(isNum(_) ? ->v, i{v - _} : ->v, i{v - _[i]}) end
|
18
|
-
def
|
19
|
-
def
|
18
|
+
def %(_) map(isNum(_) ? ->v, i{v % _} : ->v, i{v % _[i]}) end
|
19
|
+
def *(_) map(isNum(_) ? ->v, i{v * _} : ->v, i{v * _[i]}) end
|
20
|
+
def /(_) map(isNum(_) ? ->v, i{v / _} : ->v, i{v / _[i]}) end
|
20
21
|
def <=>(_) @v = _ end
|
21
22
|
def >>(_) _ << @n end
|
22
23
|
def <<(n) @_[@v, n] end
|
23
24
|
def +@() map(->v, i{+v}) end
|
24
25
|
def -@() map(->v, i{-v}) end
|
26
|
+
def dot(_) map(->v, i{v * _[i]}).sum end
|
25
27
|
def cross(_) @_[->n{ _vec_cross(to_a, _.to_a) }] end
|
26
28
|
def x() self[0] end
|
27
29
|
def y() self[1] end
|
@@ -47,4 +49,7 @@ module Glrb
|
|
47
49
|
a[2] * b[0] - a[0] * b[2],
|
48
50
|
a[0] * b[1] - a[1] * b[0], ]
|
49
51
|
end
|
52
|
+
def dot(a, b) a.dot(b) end
|
53
|
+
def cross(a, b) a.cross(b) end
|
54
|
+
def length(a) a.length end
|
50
55
|
end
|
data/lib/utils/helpers.rb
CHANGED
data/lib/utils/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: glrb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- tseijp
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-11-
|
11
|
+
date: 2023-11-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -59,7 +59,6 @@ executables: []
|
|
59
59
|
extensions: []
|
60
60
|
extra_rdoc_files: []
|
61
61
|
files:
|
62
|
-
- ".DS_Store"
|
63
62
|
- CHANGELOG.md
|
64
63
|
- CODE_OF_CONDUCT.md
|
65
64
|
- LICENSE.txt
|
@@ -72,7 +71,6 @@ files:
|
|
72
71
|
- lib/math/vec.rb
|
73
72
|
- lib/utils/helpers.rb
|
74
73
|
- lib/utils/version.rb
|
75
|
-
- raymarch.rb
|
76
74
|
- sig/glrb.rbs
|
77
75
|
homepage: https://tsei.jp
|
78
76
|
licenses:
|
data/.DS_Store
DELETED
Binary file
|