glrb 0.1.0 → 0.3.0
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/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
|