mittsu 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (203) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +10 -0
  3. data/.travis.yml +3 -0
  4. data/CODE_OF_CONDUCT.md +13 -0
  5. data/Gemfile +4 -0
  6. data/LICENSE.txt +21 -0
  7. data/README.md +39 -0
  8. data/Rakefile +7 -0
  9. data/bin/console +14 -0
  10. data/bin/setup +7 -0
  11. data/examples/01_-_Default1noCulling.png +0 -0
  12. data/examples/01_scene_example.rb +14 -0
  13. data/examples/02_box_mesh_example.rb +30 -0
  14. data/examples/02_sphere_mesh_example.rb +30 -0
  15. data/examples/03_complex_object_example.rb +52 -0
  16. data/examples/04_ambient_light_example.rb +33 -0
  17. data/examples/04_dir_light_example.rb +36 -0
  18. data/examples/04_hemi_light_example.rb +30 -0
  19. data/examples/04_point_light_example.rb +50 -0
  20. data/examples/04_spot_light_example.rb +44 -0
  21. data/examples/05_earth_example.rb +42 -0
  22. data/examples/05_earth_moon_example.rb +46 -0
  23. data/examples/05_texture_example.rb +32 -0
  24. data/examples/06_cube_texture_example.rb +36 -0
  25. data/examples/06_skybox_example.rb +60 -0
  26. data/examples/07_earth_normal_example.rb +36 -0
  27. data/examples/08_shadow_example.rb +87 -0
  28. data/examples/09_line_example.rb +52 -0
  29. data/examples/10_obj_loader_example.rb +68 -0
  30. data/examples/11_character_input_example.rb +18 -0
  31. data/examples/11_continuous_keyboard_input_example.rb +35 -0
  32. data/examples/11_keyboard_input_example.rb +43 -0
  33. data/examples/12_mouse_click_example.rb +38 -0
  34. data/examples/12_mouse_motion_example.rb +35 -0
  35. data/examples/12_mouse_scroll_example.rb +36 -0
  36. data/examples/12_orbit_zoom_example.rb +68 -0
  37. data/examples/13_joystick_example.rb +80 -0
  38. data/examples/cubemap/tron_bk.png +0 -0
  39. data/examples/cubemap/tron_dn.png +0 -0
  40. data/examples/cubemap/tron_ft.png +0 -0
  41. data/examples/cubemap/tron_lf.png +0 -0
  42. data/examples/cubemap/tron_rt.png +0 -0
  43. data/examples/cubemap/tron_up.png +0 -0
  44. data/examples/earth.png +0 -0
  45. data/examples/earth_normal.png +0 -0
  46. data/examples/example_helper.rb +2 -0
  47. data/examples/male-02-1noCulling.png +0 -0
  48. data/examples/male02.mtl +54 -0
  49. data/examples/male02.obj +13888 -0
  50. data/examples/moon.png +0 -0
  51. data/examples/orig_02_-_Defaul1noCulling.png +0 -0
  52. data/examples/texture.png +0 -0
  53. data/lib/mittsu.rb +15 -0
  54. data/lib/mittsu/cameras.rb +4 -0
  55. data/lib/mittsu/cameras/camera.rb +34 -0
  56. data/lib/mittsu/cameras/cube_camera.rb +74 -0
  57. data/lib/mittsu/cameras/orthographic_camera.rb +53 -0
  58. data/lib/mittsu/cameras/perspective_camera.rb +115 -0
  59. data/lib/mittsu/constants.rb +160 -0
  60. data/lib/mittsu/core.rb +10 -0
  61. data/lib/mittsu/core/buffer_attribute.rb +87 -0
  62. data/lib/mittsu/core/buffer_geometry.rb +694 -0
  63. data/lib/mittsu/core/clock.rb +44 -0
  64. data/lib/mittsu/core/dynamic_buffer_attribute.rb +16 -0
  65. data/lib/mittsu/core/event_dispatcher.rb +39 -0
  66. data/lib/mittsu/core/face3.rb +30 -0
  67. data/lib/mittsu/core/geometry.rb +596 -0
  68. data/lib/mittsu/core/hash_array.rb +36 -0
  69. data/lib/mittsu/core/hash_object.rb +19 -0
  70. data/lib/mittsu/core/object_3d.rb +421 -0
  71. data/lib/mittsu/core/raycaster.rb +78 -0
  72. data/lib/mittsu/extras.rb +3 -0
  73. data/lib/mittsu/extras/geometries.rb +2 -0
  74. data/lib/mittsu/extras/geometries/box_geometry.rb +108 -0
  75. data/lib/mittsu/extras/geometries/sphere_geometry.rb +88 -0
  76. data/lib/mittsu/extras/helpers.rb +1 -0
  77. data/lib/mittsu/extras/helpers/camera_helper.rb +155 -0
  78. data/lib/mittsu/extras/image.rb +3 -0
  79. data/lib/mittsu/extras/image_utils.rb +80 -0
  80. data/lib/mittsu/lights.rb +7 -0
  81. data/lib/mittsu/lights/ambient_light.rb +16 -0
  82. data/lib/mittsu/lights/area_light.rb +24 -0
  83. data/lib/mittsu/lights/directional_light.rb +131 -0
  84. data/lib/mittsu/lights/hemisphere_light.rb +29 -0
  85. data/lib/mittsu/lights/light.rb +21 -0
  86. data/lib/mittsu/lights/point_light.rb +27 -0
  87. data/lib/mittsu/lights/spot_light.rb +104 -0
  88. data/lib/mittsu/loaders.rb +7 -0
  89. data/lib/mittsu/loaders/cache.rb +53 -0
  90. data/lib/mittsu/loaders/file_loader.rb +22 -0
  91. data/lib/mittsu/loaders/image_loader.rb +32 -0
  92. data/lib/mittsu/loaders/loader.rb +212 -0
  93. data/lib/mittsu/loaders/loading_manager.rb +17 -0
  94. data/lib/mittsu/loaders/mtl_loader.rb +242 -0
  95. data/lib/mittsu/loaders/obj_mtl_loader.rb +225 -0
  96. data/lib/mittsu/materials.rb +7 -0
  97. data/lib/mittsu/materials/line_basic_material.rb +39 -0
  98. data/lib/mittsu/materials/material.rb +156 -0
  99. data/lib/mittsu/materials/mesh_basic_material.rb +122 -0
  100. data/lib/mittsu/materials/mesh_face_material.rb +30 -0
  101. data/lib/mittsu/materials/mesh_lambert_material.rb +126 -0
  102. data/lib/mittsu/materials/mesh_phong_material.rb +152 -0
  103. data/lib/mittsu/materials/shader_material.rb +108 -0
  104. data/lib/mittsu/math.rb +105 -0
  105. data/lib/mittsu/math/box2.rb +135 -0
  106. data/lib/mittsu/math/box3.rb +194 -0
  107. data/lib/mittsu/math/color.rb +252 -0
  108. data/lib/mittsu/math/color_keywords.rb +151 -0
  109. data/lib/mittsu/math/euler.rb +182 -0
  110. data/lib/mittsu/math/frustum.rb +106 -0
  111. data/lib/mittsu/math/line3.rb +76 -0
  112. data/lib/mittsu/math/matrix3.rb +163 -0
  113. data/lib/mittsu/math/matrix4.rb +581 -0
  114. data/lib/mittsu/math/plane.rb +128 -0
  115. data/lib/mittsu/math/quaternion.rb +309 -0
  116. data/lib/mittsu/math/ray.rb +292 -0
  117. data/lib/mittsu/math/sphere.rb +91 -0
  118. data/lib/mittsu/math/spline.rb +128 -0
  119. data/lib/mittsu/math/triangle.rb +121 -0
  120. data/lib/mittsu/math/vector2.rb +238 -0
  121. data/lib/mittsu/math/vector3.rb +491 -0
  122. data/lib/mittsu/math/vector4.rb +414 -0
  123. data/lib/mittsu/objects.rb +3 -0
  124. data/lib/mittsu/objects/group.rb +8 -0
  125. data/lib/mittsu/objects/line.rb +143 -0
  126. data/lib/mittsu/objects/mesh.rb +243 -0
  127. data/lib/mittsu/renderers.rb +1 -0
  128. data/lib/mittsu/renderers/glfw_window.rb +216 -0
  129. data/lib/mittsu/renderers/opengl/opengl_debug.rb +38 -0
  130. data/lib/mittsu/renderers/opengl/opengl_program.rb +402 -0
  131. data/lib/mittsu/renderers/opengl/opengl_shader.rb +58 -0
  132. data/lib/mittsu/renderers/opengl/opengl_state.rb +207 -0
  133. data/lib/mittsu/renderers/opengl/plugins/shadow_map_plugin.rb +416 -0
  134. data/lib/mittsu/renderers/opengl_render_target.rb +87 -0
  135. data/lib/mittsu/renderers/opengl_renderer.rb +3376 -0
  136. data/lib/mittsu/renderers/shaders/shader_chunk.rb +12 -0
  137. data/lib/mittsu/renderers/shaders/shader_chunk/alphamap_fragment.glsl +5 -0
  138. data/lib/mittsu/renderers/shaders/shader_chunk/alphamap_pars_fragment.glsl +5 -0
  139. data/lib/mittsu/renderers/shaders/shader_chunk/alphatest_fragment.glsl +5 -0
  140. data/lib/mittsu/renderers/shaders/shader_chunk/bumpmap_pars_fragment.glsl +40 -0
  141. data/lib/mittsu/renderers/shaders/shader_chunk/color_fragment.glsl +5 -0
  142. data/lib/mittsu/renderers/shaders/shader_chunk/color_pars_fragment.glsl +5 -0
  143. data/lib/mittsu/renderers/shaders/shader_chunk/color_pars_vertex.glsl +5 -0
  144. data/lib/mittsu/renderers/shaders/shader_chunk/color_vertex.glsl +5 -0
  145. data/lib/mittsu/renderers/shaders/shader_chunk/common.glsl +60 -0
  146. data/lib/mittsu/renderers/shaders/shader_chunk/default_vertex.glsl +15 -0
  147. data/lib/mittsu/renderers/shaders/shader_chunk/defaultnormal_vertex.glsl +21 -0
  148. data/lib/mittsu/renderers/shaders/shader_chunk/envmap_fragment.glsl +62 -0
  149. data/lib/mittsu/renderers/shaders/shader_chunk/envmap_pars_fragment.glsl +21 -0
  150. data/lib/mittsu/renderers/shaders/shader_chunk/envmap_pars_vertex.glsl +7 -0
  151. data/lib/mittsu/renderers/shaders/shader_chunk/envmap_vertex.glsl +17 -0
  152. data/lib/mittsu/renderers/shaders/shader_chunk/fog_fragment.glsl +26 -0
  153. data/lib/mittsu/renderers/shaders/shader_chunk/fog_pars_fragment.glsl +15 -0
  154. data/lib/mittsu/renderers/shaders/shader_chunk/lightmap_fragment.glsl +5 -0
  155. data/lib/mittsu/renderers/shaders/shader_chunk/lightmap_pars_fragment.glsl +6 -0
  156. data/lib/mittsu/renderers/shaders/shader_chunk/lightmap_pars_vertex.glsl +5 -0
  157. data/lib/mittsu/renderers/shaders/shader_chunk/lightmap_vertex.glsl +5 -0
  158. data/lib/mittsu/renderers/shaders/shader_chunk/lights_lambert_pars_vertex.glsl +43 -0
  159. data/lib/mittsu/renderers/shaders/shader_chunk/lights_lambert_vertex.glsl +196 -0
  160. data/lib/mittsu/renderers/shaders/shader_chunk/lights_phong_fragment.glsl +243 -0
  161. data/lib/mittsu/renderers/shaders/shader_chunk/lights_phong_pars_fragment.glsl +58 -0
  162. data/lib/mittsu/renderers/shaders/shader_chunk/lights_phong_pars_vertex.glsl +5 -0
  163. data/lib/mittsu/renderers/shaders/shader_chunk/lights_phong_vertex.glsl +5 -0
  164. data/lib/mittsu/renderers/shaders/shader_chunk/linear_to_gamma_fragment.glsl +2 -0
  165. data/lib/mittsu/renderers/shaders/shader_chunk/logdepthbuf_fragment.glsl +5 -0
  166. data/lib/mittsu/renderers/shaders/shader_chunk/logdepthbuf_pars_fragment.glsl +12 -0
  167. data/lib/mittsu/renderers/shaders/shader_chunk/logdepthbuf_pars_vertex.glsl +11 -0
  168. data/lib/mittsu/renderers/shaders/shader_chunk/logdepthbuf_vertex.glsl +15 -0
  169. data/lib/mittsu/renderers/shaders/shader_chunk/map_fragment.glsl +9 -0
  170. data/lib/mittsu/renderers/shaders/shader_chunk/map_pars_fragment.glsl +11 -0
  171. data/lib/mittsu/renderers/shaders/shader_chunk/map_pars_vertex.glsl +6 -0
  172. data/lib/mittsu/renderers/shaders/shader_chunk/map_particle_fragment.glsl +5 -0
  173. data/lib/mittsu/renderers/shaders/shader_chunk/map_particle_pars_fragment.glsl +6 -0
  174. data/lib/mittsu/renderers/shaders/shader_chunk/map_vertex.glsl +5 -0
  175. data/lib/mittsu/renderers/shaders/shader_chunk/morphnormal_vertex.glsl +12 -0
  176. data/lib/mittsu/renderers/shaders/shader_chunk/morphtarget_pars_vertex.glsl +13 -0
  177. data/lib/mittsu/renderers/shaders/shader_chunk/morphtarget_vertex.glsl +20 -0
  178. data/lib/mittsu/renderers/shaders/shader_chunk/normalmap_pars_fragment.glsl +27 -0
  179. data/lib/mittsu/renderers/shaders/shader_chunk/shadowmap_fragment.glsl +217 -0
  180. data/lib/mittsu/renderers/shaders/shader_chunk/shadowmap_pars_fragment.glsl +19 -0
  181. data/lib/mittsu/renderers/shaders/shader_chunk/shadowmap_pars_vertex.glsl +6 -0
  182. data/lib/mittsu/renderers/shaders/shader_chunk/shadowmap_vertex.glsl +9 -0
  183. data/lib/mittsu/renderers/shaders/shader_chunk/skinbase_vertex.glsl +8 -0
  184. data/lib/mittsu/renderers/shaders/shader_chunk/skinning_pars_vertex.glsl +47 -0
  185. data/lib/mittsu/renderers/shaders/shader_chunk/skinning_vertex.glsl +20 -0
  186. data/lib/mittsu/renderers/shaders/shader_chunk/skinnormal_vertex.glsl +20 -0
  187. data/lib/mittsu/renderers/shaders/shader_chunk/specularmap_fragment.glsl +12 -0
  188. data/lib/mittsu/renderers/shaders/shader_chunk/specularmap_pars_fragment.glsl +5 -0
  189. data/lib/mittsu/renderers/shaders/shader_chunk/worldpos_vertex.glsl +17 -0
  190. data/lib/mittsu/renderers/shaders/shader_lib.rb +420 -0
  191. data/lib/mittsu/renderers/shaders/uniforms_lib.rb +107 -0
  192. data/lib/mittsu/renderers/shaders/uniforms_utils.rb +31 -0
  193. data/lib/mittsu/scenes.rb +1 -0
  194. data/lib/mittsu/scenes/scene.rb +27 -0
  195. data/lib/mittsu/textures.rb +5 -0
  196. data/lib/mittsu/textures/compressed_texture.rb +30 -0
  197. data/lib/mittsu/textures/cube_texture.rb +19 -0
  198. data/lib/mittsu/textures/data_texture.rb +17 -0
  199. data/lib/mittsu/textures/texture.rb +92 -0
  200. data/lib/mittsu/textures/video_texture.rb +17 -0
  201. data/lib/mittsu/version.rb +4 -0
  202. data/mittsu.gemspec +31 -0
  203. metadata +357 -0
@@ -0,0 +1,107 @@
1
+ require 'mittsu/math'
2
+ require 'mittsu/core/hash_object'
3
+
4
+ module Mittsu
5
+ class Uniform < HashObject
6
+ attr_accessor :type, :value, :needs_update
7
+
8
+ def initialize(type, value)
9
+ super()
10
+ @type, @value = type, value
11
+ @needs_update = nil
12
+ end
13
+
14
+ def clone
15
+ new_value = case self.value
16
+ when Color, Vector2, Vector3, Vector4, Matrix4#, Texture # TODO: when Texture exists
17
+ self.value.clone
18
+ when Array
19
+ self.value.dup
20
+ else
21
+ self.value
22
+ end
23
+ Uniform.new(self.type, new_value)
24
+ end
25
+ end
26
+
27
+ UniformsLib = {
28
+ common: {
29
+ 'diffuse' => Uniform.new(:c, Color.new(0xeeeeee)),
30
+ 'opacity' => Uniform.new(:f, 1.0),
31
+
32
+ 'map' => Uniform.new(:t, nil),
33
+ 'offsetRepeat' => Uniform.new(:v4, Vector4.new(0.0, 0.0, 1.0, 1.0)),
34
+
35
+ 'lightMap' => Uniform.new(:t, nil),
36
+ 'specularMap' => Uniform.new(:t, nil),
37
+ 'alphaMap' => Uniform.new(:t, nil),
38
+
39
+ 'envMap' => Uniform.new(:t, nil),
40
+ 'flipEnvMap' => Uniform.new(:f, -1.0),
41
+ 'reflectivity' => Uniform.new(:f, 1.0),
42
+ 'refractionRatio' => Uniform.new(:f, 0.98),
43
+
44
+ 'morphTargetInfluences' => Uniform.new(:f, 0.0)
45
+ },
46
+
47
+ bump: {
48
+ 'bumpMap' => Uniform.new(:t, nil),
49
+ 'bumpScale' => Uniform.new(:f, 1.0)
50
+ },
51
+
52
+ normal_map: {
53
+ 'normalMap' => Uniform.new(:t, nil),
54
+ 'normalScale' => Uniform.new(:v2, Vector2.new(1.0, 1.0))
55
+ },
56
+
57
+ fog: {
58
+ 'fogDensity' => Uniform.new(:f, 0.00025),
59
+ 'fogNear' => Uniform.new(:f, 1.0),
60
+ 'fogFar' => Uniform.new(:f, 2000.0),
61
+ 'fogColor' => Uniform.new(:c, Color.new(0xffffff))
62
+ },
63
+
64
+ lights: {
65
+ 'ambientLightColor' => Uniform.new(:fv, []),
66
+
67
+ 'directionalLightDirection' => Uniform.new(:fv, []),
68
+ 'directionalLightColor' => Uniform.new(:fv, []),
69
+
70
+ 'hemisphereLightDirection' => Uniform.new(:fv, []),
71
+ 'hemisphereLightSkyColor' => Uniform.new(:fv, []),
72
+ 'hemisphereLightGroundColor' => Uniform.new(:fv, []),
73
+
74
+ 'pointLightColor' => Uniform.new(:fv, []),
75
+ 'pointLightPosition' => Uniform.new(:fv, []),
76
+ 'pointLightDistance' => Uniform.new(:fv1, []),
77
+ 'pointLightDecay' => Uniform.new(:fv1, []),
78
+
79
+ 'spotLightColor' => Uniform.new(:fv, []),
80
+ 'spotLightPosition' => Uniform.new(:fv, []),
81
+ 'spotLightDirection' => Uniform.new(:fv, []),
82
+ 'spotLightDistance' => Uniform.new(:fv, []),
83
+ 'spotLightAngleCos' => Uniform.new(:fv, []),
84
+ 'spotLightExponent' => Uniform.new(:fv, []),
85
+ 'spotLightDecay' => Uniform.new(:fv, [])
86
+ },
87
+
88
+ particle: {
89
+ 'psColor' => Uniform.new(:c, Color.new(0xeeeeee)),
90
+ 'opacity' => Uniform.new(:f, 1.0),
91
+ 'size' => Uniform.new(:f, 1.0),
92
+ 'scale' => Uniform.new(:f, 1.0),
93
+ 'map' => Uniform.new(:t, nil),
94
+ 'offsetRepeat' => Uniform.new(:v4, Vector4.new(0.0, 0.0, 1.0, 1.0))
95
+ },
96
+
97
+ shadow_map: {
98
+ 'shadowMap' => Uniform.new(:tv, []),
99
+ 'shadowMapSize' => Uniform.new(:v2v, []),
100
+
101
+ 'shadowBias' => Uniform.new(:fv1, []),
102
+ 'shadowDarkness' => Uniform.new(:fv1, []),
103
+
104
+ 'shadowMatrix' => Uniform.new(:m4v, [])
105
+ }
106
+ }
107
+ end
@@ -0,0 +1,31 @@
1
+ module Mittsu
2
+ module UniformsUtils
3
+ def self.merge(uniforms)
4
+ merged = {}
5
+
6
+ uniforms.each do |uniform|
7
+ tmp = UniformsUtils.clone(uniform)
8
+
9
+ next if tmp.nil?
10
+
11
+ tmp.each do |(p, tmp_p)|
12
+ merged[p] = tmp_p
13
+ end
14
+ end
15
+
16
+ merged
17
+ end
18
+
19
+ def self.clone(uniforms_src)
20
+ return if uniforms_src.nil?
21
+
22
+ uniforms_dst = {}
23
+
24
+ uniforms_src.each do |(u, uniform_src)|
25
+ uniforms_dst[u] = uniform_src.clone
26
+ end
27
+
28
+ uniforms_dst
29
+ end
30
+ end
31
+ end
@@ -0,0 +1 @@
1
+ require 'mittsu/scenes/scene'
@@ -0,0 +1,27 @@
1
+ require 'mittsu'
2
+
3
+ module Mittsu
4
+ class Scene < Object3D
5
+
6
+ attr_accessor :fog, :override_material, :auto_update
7
+
8
+ def initialize
9
+ super
10
+
11
+ @type = 'Scene'
12
+
13
+ @auto_update = true
14
+ end
15
+
16
+ def clone(object = Scene.new)
17
+ super
18
+
19
+ object.fog = fog unless fog.nil?
20
+ object.override_material = override_material unless override_material.nil?
21
+
22
+ object.auto_update = auto_update
23
+ object.matrix_auto_update = matrix_auto_update
24
+ object
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,5 @@
1
+ require 'mittsu/textures/texture'
2
+ require 'mittsu/textures/compressed_texture'
3
+ require 'mittsu/textures/cube_texture'
4
+ require 'mittsu/textures/data_texture'
5
+ require 'mittsu/textures/video_texture'
@@ -0,0 +1,30 @@
1
+ require 'mittsu/textures/texture'
2
+
3
+ module Mittsu
4
+ class CompressedTexture < Texture
5
+ attr_accessor :mipmaps
6
+
7
+ def initialize(mipmaps = nil, width = nil, height = nil, format = RGBAFormat, type = UnsignedByteType, mapping = DEFAULT_MAPPING, wrap_s = ClampToEdgeWrapping, wrap_t = ClampToEdgeWrapping, mag_filter = LinearFilter, min_filter = LinearMipMapLinearFilter, anisotropy = 1)
8
+ super(null, mapping, wrap_s, wrap_t, mag_filter, min_filter, format, type, anisotropy)
9
+
10
+ @image = { width: width, height: height }
11
+ @mipmaps = mipmaps
12
+
13
+ # no flipping for cube textures
14
+ # (also flipping doesn't work for compressed textures )
15
+
16
+ @flip_y = false
17
+
18
+ # can't generate mipmaps for compressed textures
19
+ # mips must be embedded in DDS files
20
+
21
+ @generate_mipmaps = false
22
+ end
23
+
24
+ def clone
25
+ texture = CompressedTexture.new
26
+ super(texture)
27
+ texture
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,19 @@
1
+ require 'mittsu/textures/texture'
2
+
3
+ module Mittsu
4
+ class CubeTexture < Texture
5
+ attr_accessor :images
6
+
7
+ def initialize(images = nil, mapping = DEFAULT_MAPPING, wrap_s = ClampToEdgeWrapping, wrap_t = ClampToEdgeWrapping, mag_filter = LinearFilter, min_filter = LinearMipMapLinearFilter, format = RGBAFormat, type = UnsignedByteType, anisotropy = 1)
8
+ super(images, mapping, wrap_s, wrap_t, mag_filter, min_filter, format, type, anisotropy)
9
+
10
+ @images = images
11
+ end
12
+
13
+ def clone(texture = CubeTexture.new)
14
+ super(texture)
15
+ texture.images = @images
16
+ texture
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,17 @@
1
+ require 'mittsu/textures/texture'
2
+
3
+ module Mittsu
4
+ class DataTexture < Texture
5
+ def initialize(data = nil, width = nil, height = nil, format = RGBAFormat, type = UnsignedByteType, mapping = DEFAULT_MAPPING, wrap_s = ClampToEdgeWrapping, wrap_t = ClampToEdgeWrapping, mag_filter = LinearFilter, min_filter = LinearMipMapLinearFilter, anisotropy = 1)
6
+ super(null, mapping, wrap_s, wrap_t, mag_filter, min_filter, format, type, anisotropy)
7
+
8
+ @image = { data: data, width: width, height: height }
9
+ end
10
+
11
+ def clone
12
+ texture = DataTexture.new
13
+ super(texture)
14
+ texture
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,92 @@
1
+ require 'securerandom'
2
+ require 'mittsu/math'
3
+ require 'mittsu/core/event_dispatcher'
4
+ require 'mittsu/constants'
5
+ require 'mittsu/core/hash_object'
6
+
7
+ module Mittsu
8
+ class Texture < HashObject
9
+ include EventDispatcher
10
+
11
+ DEFAULT_IMAGE = nil
12
+ DEFAULT_MAPPING = UVMapping
13
+
14
+ attr_reader :id, :uuid, :type
15
+
16
+ attr_accessor :image, :name, :source_file, :mipmaps, :offset, :repeat, :generate_mipmaps, :premultiply_alpha, :filp_y, :unpack_alignment, :on_update, :mipmaps, :mapping, :wrap_s, :wrap_t, :mag_filter, :min_filter, :anisotropy, :format, :type
17
+
18
+ def initialize(image = DEFAULT_IMAGE, mapping = DEFAULT_MAPPING, wrap_s = ClampToEdgeWrapping, wrap_t = ClampToEdgeWrapping, mag_filter = LinearFilter, min_filter = LinearMipMapLinearFilter, format = RGBAFormat, type = UnsignedByteType, anisotropy = 1)
19
+ super()
20
+
21
+ @id = (@@id ||= 1).tap { @@id += 1 }
22
+ @uuid = SecureRandom.uuid
23
+
24
+ @name = ''
25
+ @source_file = ''
26
+
27
+ @image = image
28
+ @mipmaps = []
29
+
30
+ @mapping = mapping
31
+ @wrap_s, @wrap_t = wrap_s, wrap_t
32
+ @mag_filter, @min_filter = mag_filter, min_filter
33
+ @anisotropy = anisotropy
34
+ @format, @type = format, type
35
+
36
+ @offset = Vector2.new(0.0, 0.0)
37
+ @repeat = Vector2.new(1.0, 1.0)
38
+
39
+ @generate_mipmaps = true
40
+ @premultiply_alpha = false
41
+ @filp_y = true
42
+ @unpack_alignment = 4 # valid values: 1, 2, 4, 8 (see http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml)
43
+
44
+ @_needs_update = false
45
+ @on_update = nil
46
+ end
47
+
48
+ def needs_update?
49
+ @_needs_update
50
+ end
51
+
52
+ def needs_update=(value)
53
+ update if value
54
+ @_needs_update = value
55
+ end
56
+
57
+ def clone(texture = Texture.new)
58
+ texture.image = @image
59
+ texture.mipmaps = @mipmaps.dup
60
+
61
+ texture.mapping = @mapping
62
+
63
+ texture.wrap_s = @wrap_s
64
+ texture.wrap_t = @wrap_t
65
+
66
+ texture.mag_filter = @mag_filter
67
+ texture.min_filter = @min_filter
68
+
69
+ texture.anisotropy = @anisotropy
70
+
71
+ texture.format = @format
72
+ texture.type = @type
73
+
74
+ texture.offset.copy(@offset)
75
+ texture.repeat.copy(@repeat)
76
+
77
+ texture.generate_mipmaps = @generate_mipmaps
78
+ texture.premultiply_alpha = @premultiply_alpha
79
+ texture.flip_y = @flip_y
80
+
81
+ texture
82
+ end
83
+
84
+ def update
85
+ dispatch_event type: :update
86
+ end
87
+
88
+ def dispose
89
+ dispatch_event type: :dispose
90
+ end
91
+ end
92
+ end
@@ -0,0 +1,17 @@
1
+ require 'mittsu/textures/texture'
2
+
3
+ module Mittsu
4
+ class VideoTexture < Texture
5
+ def initialize(video = nil, mapping = DEFAULT_MAPPING, wrap_s = ClampToEdgeWrapping, wrap_t = ClampToEdgeWrapping, mag_filter = LinearFilter, min_filter = LinearMipMapLinearFilter, format = RGBAFormat, type = UnsignedByteType, anisotropy = 1)
6
+ super(video, mapping, wrap_s, wrap_t, mag_filter, min_filter, format, type, anisotropy)
7
+
8
+ @generate_mipmaps = false
9
+
10
+ # TODO: update ???
11
+ # requestAnimationFrame( update );
12
+ # if ( video.readyState === video.HAVE_ENOUGH_DATA ) {
13
+ # scope.needsUpdate = true;
14
+ # }
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,4 @@
1
+ module Mittsu
2
+ VERSION = "0.1.0"
3
+ REVISION = "71"
4
+ end
@@ -0,0 +1,31 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'mittsu/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "mittsu"
8
+ spec.version = Mittsu::VERSION
9
+ spec.authors = ["Daniel Smith"]
10
+ spec.email = ["jellymann@gmail.com"]
11
+
12
+ spec.summary = %q{THREE.js for Ruby}
13
+ spec.description = %q{A direct port of THREE.js from JavaScript/WebGL to Ruby/OpenGL}
14
+ spec.homepage = "https://github.com/jellymann/mittsu"
15
+ spec.license = "MIT"
16
+
17
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
18
+ spec.bindir = "exe"
19
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
+ spec.require_paths = ["lib"]
21
+
22
+ spec.add_runtime_dependency 'opengl-bindings', "~> 1.5"
23
+ spec.add_runtime_dependency 'ffi', "~> 1.9"
24
+ spec.add_runtime_dependency 'rmagick', "~> 2.15"
25
+
26
+ spec.add_development_dependency "bundler", "~> 1.9"
27
+ spec.add_development_dependency "rake", "~> 10.0"
28
+ spec.add_development_dependency 'minitest', '~> 5.7'
29
+ spec.add_development_dependency 'pry', '~> 0.10'
30
+ spec.add_development_dependency 'benchmark-ips', '~> 2.3'
31
+ end
metadata ADDED
@@ -0,0 +1,357 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mittsu
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Daniel Smith
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2016-02-05 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: opengl-bindings
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.5'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.5'
27
+ - !ruby/object:Gem::Dependency
28
+ name: ffi
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.9'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.9'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rmagick
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '2.15'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '2.15'
55
+ - !ruby/object:Gem::Dependency
56
+ name: bundler
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.9'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.9'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '10.0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '10.0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: minitest
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '5.7'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '5.7'
97
+ - !ruby/object:Gem::Dependency
98
+ name: pry
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '0.10'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '0.10'
111
+ - !ruby/object:Gem::Dependency
112
+ name: benchmark-ips
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '2.3'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '2.3'
125
+ description: A direct port of THREE.js from JavaScript/WebGL to Ruby/OpenGL
126
+ email:
127
+ - jellymann@gmail.com
128
+ executables: []
129
+ extensions: []
130
+ extra_rdoc_files: []
131
+ files:
132
+ - ".gitignore"
133
+ - ".travis.yml"
134
+ - CODE_OF_CONDUCT.md
135
+ - Gemfile
136
+ - LICENSE.txt
137
+ - README.md
138
+ - Rakefile
139
+ - bin/console
140
+ - bin/setup
141
+ - examples/01_-_Default1noCulling.png
142
+ - examples/01_scene_example.rb
143
+ - examples/02_box_mesh_example.rb
144
+ - examples/02_sphere_mesh_example.rb
145
+ - examples/03_complex_object_example.rb
146
+ - examples/04_ambient_light_example.rb
147
+ - examples/04_dir_light_example.rb
148
+ - examples/04_hemi_light_example.rb
149
+ - examples/04_point_light_example.rb
150
+ - examples/04_spot_light_example.rb
151
+ - examples/05_earth_example.rb
152
+ - examples/05_earth_moon_example.rb
153
+ - examples/05_texture_example.rb
154
+ - examples/06_cube_texture_example.rb
155
+ - examples/06_skybox_example.rb
156
+ - examples/07_earth_normal_example.rb
157
+ - examples/08_shadow_example.rb
158
+ - examples/09_line_example.rb
159
+ - examples/10_obj_loader_example.rb
160
+ - examples/11_character_input_example.rb
161
+ - examples/11_continuous_keyboard_input_example.rb
162
+ - examples/11_keyboard_input_example.rb
163
+ - examples/12_mouse_click_example.rb
164
+ - examples/12_mouse_motion_example.rb
165
+ - examples/12_mouse_scroll_example.rb
166
+ - examples/12_orbit_zoom_example.rb
167
+ - examples/13_joystick_example.rb
168
+ - examples/cubemap/tron_bk.png
169
+ - examples/cubemap/tron_dn.png
170
+ - examples/cubemap/tron_ft.png
171
+ - examples/cubemap/tron_lf.png
172
+ - examples/cubemap/tron_rt.png
173
+ - examples/cubemap/tron_up.png
174
+ - examples/earth.png
175
+ - examples/earth_normal.png
176
+ - examples/example_helper.rb
177
+ - examples/male-02-1noCulling.png
178
+ - examples/male02.mtl
179
+ - examples/male02.obj
180
+ - examples/moon.png
181
+ - examples/orig_02_-_Defaul1noCulling.png
182
+ - examples/texture.png
183
+ - lib/mittsu.rb
184
+ - lib/mittsu/cameras.rb
185
+ - lib/mittsu/cameras/camera.rb
186
+ - lib/mittsu/cameras/cube_camera.rb
187
+ - lib/mittsu/cameras/orthographic_camera.rb
188
+ - lib/mittsu/cameras/perspective_camera.rb
189
+ - lib/mittsu/constants.rb
190
+ - lib/mittsu/core.rb
191
+ - lib/mittsu/core/buffer_attribute.rb
192
+ - lib/mittsu/core/buffer_geometry.rb
193
+ - lib/mittsu/core/clock.rb
194
+ - lib/mittsu/core/dynamic_buffer_attribute.rb
195
+ - lib/mittsu/core/event_dispatcher.rb
196
+ - lib/mittsu/core/face3.rb
197
+ - lib/mittsu/core/geometry.rb
198
+ - lib/mittsu/core/hash_array.rb
199
+ - lib/mittsu/core/hash_object.rb
200
+ - lib/mittsu/core/object_3d.rb
201
+ - lib/mittsu/core/raycaster.rb
202
+ - lib/mittsu/extras.rb
203
+ - lib/mittsu/extras/geometries.rb
204
+ - lib/mittsu/extras/geometries/box_geometry.rb
205
+ - lib/mittsu/extras/geometries/sphere_geometry.rb
206
+ - lib/mittsu/extras/helpers.rb
207
+ - lib/mittsu/extras/helpers/camera_helper.rb
208
+ - lib/mittsu/extras/image.rb
209
+ - lib/mittsu/extras/image_utils.rb
210
+ - lib/mittsu/lights.rb
211
+ - lib/mittsu/lights/ambient_light.rb
212
+ - lib/mittsu/lights/area_light.rb
213
+ - lib/mittsu/lights/directional_light.rb
214
+ - lib/mittsu/lights/hemisphere_light.rb
215
+ - lib/mittsu/lights/light.rb
216
+ - lib/mittsu/lights/point_light.rb
217
+ - lib/mittsu/lights/spot_light.rb
218
+ - lib/mittsu/loaders.rb
219
+ - lib/mittsu/loaders/cache.rb
220
+ - lib/mittsu/loaders/file_loader.rb
221
+ - lib/mittsu/loaders/image_loader.rb
222
+ - lib/mittsu/loaders/loader.rb
223
+ - lib/mittsu/loaders/loading_manager.rb
224
+ - lib/mittsu/loaders/mtl_loader.rb
225
+ - lib/mittsu/loaders/obj_mtl_loader.rb
226
+ - lib/mittsu/materials.rb
227
+ - lib/mittsu/materials/line_basic_material.rb
228
+ - lib/mittsu/materials/material.rb
229
+ - lib/mittsu/materials/mesh_basic_material.rb
230
+ - lib/mittsu/materials/mesh_face_material.rb
231
+ - lib/mittsu/materials/mesh_lambert_material.rb
232
+ - lib/mittsu/materials/mesh_phong_material.rb
233
+ - lib/mittsu/materials/shader_material.rb
234
+ - lib/mittsu/math.rb
235
+ - lib/mittsu/math/box2.rb
236
+ - lib/mittsu/math/box3.rb
237
+ - lib/mittsu/math/color.rb
238
+ - lib/mittsu/math/color_keywords.rb
239
+ - lib/mittsu/math/euler.rb
240
+ - lib/mittsu/math/frustum.rb
241
+ - lib/mittsu/math/line3.rb
242
+ - lib/mittsu/math/matrix3.rb
243
+ - lib/mittsu/math/matrix4.rb
244
+ - lib/mittsu/math/plane.rb
245
+ - lib/mittsu/math/quaternion.rb
246
+ - lib/mittsu/math/ray.rb
247
+ - lib/mittsu/math/sphere.rb
248
+ - lib/mittsu/math/spline.rb
249
+ - lib/mittsu/math/triangle.rb
250
+ - lib/mittsu/math/vector2.rb
251
+ - lib/mittsu/math/vector3.rb
252
+ - lib/mittsu/math/vector4.rb
253
+ - lib/mittsu/objects.rb
254
+ - lib/mittsu/objects/group.rb
255
+ - lib/mittsu/objects/line.rb
256
+ - lib/mittsu/objects/mesh.rb
257
+ - lib/mittsu/renderers.rb
258
+ - lib/mittsu/renderers/glfw_window.rb
259
+ - lib/mittsu/renderers/opengl/opengl_debug.rb
260
+ - lib/mittsu/renderers/opengl/opengl_program.rb
261
+ - lib/mittsu/renderers/opengl/opengl_shader.rb
262
+ - lib/mittsu/renderers/opengl/opengl_state.rb
263
+ - lib/mittsu/renderers/opengl/plugins/shadow_map_plugin.rb
264
+ - lib/mittsu/renderers/opengl_render_target.rb
265
+ - lib/mittsu/renderers/opengl_renderer.rb
266
+ - lib/mittsu/renderers/shaders/shader_chunk.rb
267
+ - lib/mittsu/renderers/shaders/shader_chunk/alphamap_fragment.glsl
268
+ - lib/mittsu/renderers/shaders/shader_chunk/alphamap_pars_fragment.glsl
269
+ - lib/mittsu/renderers/shaders/shader_chunk/alphatest_fragment.glsl
270
+ - lib/mittsu/renderers/shaders/shader_chunk/bumpmap_pars_fragment.glsl
271
+ - lib/mittsu/renderers/shaders/shader_chunk/color_fragment.glsl
272
+ - lib/mittsu/renderers/shaders/shader_chunk/color_pars_fragment.glsl
273
+ - lib/mittsu/renderers/shaders/shader_chunk/color_pars_vertex.glsl
274
+ - lib/mittsu/renderers/shaders/shader_chunk/color_vertex.glsl
275
+ - lib/mittsu/renderers/shaders/shader_chunk/common.glsl
276
+ - lib/mittsu/renderers/shaders/shader_chunk/default_vertex.glsl
277
+ - lib/mittsu/renderers/shaders/shader_chunk/defaultnormal_vertex.glsl
278
+ - lib/mittsu/renderers/shaders/shader_chunk/envmap_fragment.glsl
279
+ - lib/mittsu/renderers/shaders/shader_chunk/envmap_pars_fragment.glsl
280
+ - lib/mittsu/renderers/shaders/shader_chunk/envmap_pars_vertex.glsl
281
+ - lib/mittsu/renderers/shaders/shader_chunk/envmap_vertex.glsl
282
+ - lib/mittsu/renderers/shaders/shader_chunk/fog_fragment.glsl
283
+ - lib/mittsu/renderers/shaders/shader_chunk/fog_pars_fragment.glsl
284
+ - lib/mittsu/renderers/shaders/shader_chunk/lightmap_fragment.glsl
285
+ - lib/mittsu/renderers/shaders/shader_chunk/lightmap_pars_fragment.glsl
286
+ - lib/mittsu/renderers/shaders/shader_chunk/lightmap_pars_vertex.glsl
287
+ - lib/mittsu/renderers/shaders/shader_chunk/lightmap_vertex.glsl
288
+ - lib/mittsu/renderers/shaders/shader_chunk/lights_lambert_pars_vertex.glsl
289
+ - lib/mittsu/renderers/shaders/shader_chunk/lights_lambert_vertex.glsl
290
+ - lib/mittsu/renderers/shaders/shader_chunk/lights_phong_fragment.glsl
291
+ - lib/mittsu/renderers/shaders/shader_chunk/lights_phong_pars_fragment.glsl
292
+ - lib/mittsu/renderers/shaders/shader_chunk/lights_phong_pars_vertex.glsl
293
+ - lib/mittsu/renderers/shaders/shader_chunk/lights_phong_vertex.glsl
294
+ - lib/mittsu/renderers/shaders/shader_chunk/linear_to_gamma_fragment.glsl
295
+ - lib/mittsu/renderers/shaders/shader_chunk/logdepthbuf_fragment.glsl
296
+ - lib/mittsu/renderers/shaders/shader_chunk/logdepthbuf_pars_fragment.glsl
297
+ - lib/mittsu/renderers/shaders/shader_chunk/logdepthbuf_pars_vertex.glsl
298
+ - lib/mittsu/renderers/shaders/shader_chunk/logdepthbuf_vertex.glsl
299
+ - lib/mittsu/renderers/shaders/shader_chunk/map_fragment.glsl
300
+ - lib/mittsu/renderers/shaders/shader_chunk/map_pars_fragment.glsl
301
+ - lib/mittsu/renderers/shaders/shader_chunk/map_pars_vertex.glsl
302
+ - lib/mittsu/renderers/shaders/shader_chunk/map_particle_fragment.glsl
303
+ - lib/mittsu/renderers/shaders/shader_chunk/map_particle_pars_fragment.glsl
304
+ - lib/mittsu/renderers/shaders/shader_chunk/map_vertex.glsl
305
+ - lib/mittsu/renderers/shaders/shader_chunk/morphnormal_vertex.glsl
306
+ - lib/mittsu/renderers/shaders/shader_chunk/morphtarget_pars_vertex.glsl
307
+ - lib/mittsu/renderers/shaders/shader_chunk/morphtarget_vertex.glsl
308
+ - lib/mittsu/renderers/shaders/shader_chunk/normalmap_pars_fragment.glsl
309
+ - lib/mittsu/renderers/shaders/shader_chunk/shadowmap_fragment.glsl
310
+ - lib/mittsu/renderers/shaders/shader_chunk/shadowmap_pars_fragment.glsl
311
+ - lib/mittsu/renderers/shaders/shader_chunk/shadowmap_pars_vertex.glsl
312
+ - lib/mittsu/renderers/shaders/shader_chunk/shadowmap_vertex.glsl
313
+ - lib/mittsu/renderers/shaders/shader_chunk/skinbase_vertex.glsl
314
+ - lib/mittsu/renderers/shaders/shader_chunk/skinning_pars_vertex.glsl
315
+ - lib/mittsu/renderers/shaders/shader_chunk/skinning_vertex.glsl
316
+ - lib/mittsu/renderers/shaders/shader_chunk/skinnormal_vertex.glsl
317
+ - lib/mittsu/renderers/shaders/shader_chunk/specularmap_fragment.glsl
318
+ - lib/mittsu/renderers/shaders/shader_chunk/specularmap_pars_fragment.glsl
319
+ - lib/mittsu/renderers/shaders/shader_chunk/worldpos_vertex.glsl
320
+ - lib/mittsu/renderers/shaders/shader_lib.rb
321
+ - lib/mittsu/renderers/shaders/uniforms_lib.rb
322
+ - lib/mittsu/renderers/shaders/uniforms_utils.rb
323
+ - lib/mittsu/scenes.rb
324
+ - lib/mittsu/scenes/scene.rb
325
+ - lib/mittsu/textures.rb
326
+ - lib/mittsu/textures/compressed_texture.rb
327
+ - lib/mittsu/textures/cube_texture.rb
328
+ - lib/mittsu/textures/data_texture.rb
329
+ - lib/mittsu/textures/texture.rb
330
+ - lib/mittsu/textures/video_texture.rb
331
+ - lib/mittsu/version.rb
332
+ - mittsu.gemspec
333
+ homepage: https://github.com/jellymann/mittsu
334
+ licenses:
335
+ - MIT
336
+ metadata: {}
337
+ post_install_message:
338
+ rdoc_options: []
339
+ require_paths:
340
+ - lib
341
+ required_ruby_version: !ruby/object:Gem::Requirement
342
+ requirements:
343
+ - - ">="
344
+ - !ruby/object:Gem::Version
345
+ version: '0'
346
+ required_rubygems_version: !ruby/object:Gem::Requirement
347
+ requirements:
348
+ - - ">="
349
+ - !ruby/object:Gem::Version
350
+ version: '0'
351
+ requirements: []
352
+ rubyforge_project:
353
+ rubygems_version: 2.5.1
354
+ signing_key:
355
+ specification_version: 4
356
+ summary: THREE.js for Ruby
357
+ test_files: []