mittsu 0.4.1 → 0.5.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.
Files changed (147) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/build-workflow.yml +3 -38
  3. data/Gemfile +0 -4
  4. data/README.md +16 -130
  5. data/bin/console +0 -4
  6. data/lib/mittsu/cameras/cube_camera.rb +1 -1
  7. data/lib/mittsu/core/uniform.rb +23 -0
  8. data/lib/mittsu/core.rb +1 -0
  9. data/lib/mittsu/loaders/stl_loader.rb +186 -0
  10. data/lib/mittsu/loaders.rb +1 -0
  11. data/lib/mittsu/textures/render_target.rb +93 -0
  12. data/lib/mittsu/textures/render_target_cube.rb +8 -0
  13. data/lib/mittsu/textures/texture.rb +1 -1
  14. data/lib/mittsu/textures.rb +2 -0
  15. data/lib/mittsu/version.rb +1 -1
  16. data/lib/mittsu.rb +0 -1
  17. data/mittsu.gemspec +8 -12
  18. metadata +28 -199
  19. data/install-glfw.ps1 +0 -13
  20. data/lib/mittsu/renderers/generic_lib.rb +0 -125
  21. data/lib/mittsu/renderers/glfw_lib.rb +0 -64
  22. data/lib/mittsu/renderers/glfw_window.rb +0 -233
  23. data/lib/mittsu/renderers/opengl/core/buffer_geometry.rb +0 -11
  24. data/lib/mittsu/renderers/opengl/core/geometry.rb +0 -346
  25. data/lib/mittsu/renderers/opengl/core/object_3d.rb +0 -134
  26. data/lib/mittsu/renderers/opengl/lights/ambient_light.rb +0 -26
  27. data/lib/mittsu/renderers/opengl/lights/directional_light.rb +0 -35
  28. data/lib/mittsu/renderers/opengl/lights/hemisphere_light.rb +0 -39
  29. data/lib/mittsu/renderers/opengl/lights/light.rb +0 -55
  30. data/lib/mittsu/renderers/opengl/lights/point_light.rb +0 -36
  31. data/lib/mittsu/renderers/opengl/lights/spot_light.rb +0 -47
  32. data/lib/mittsu/renderers/opengl/materials/line_basic_material.rb +0 -16
  33. data/lib/mittsu/renderers/opengl/materials/material.rb +0 -274
  34. data/lib/mittsu/renderers/opengl/materials/mesh_basic_material.rb +0 -21
  35. data/lib/mittsu/renderers/opengl/materials/mesh_lambert_material.rb +0 -33
  36. data/lib/mittsu/renderers/opengl/materials/mesh_phong_material.rb +0 -44
  37. data/lib/mittsu/renderers/opengl/materials/opengl_material_basics.rb +0 -57
  38. data/lib/mittsu/renderers/opengl/materials/point_cloud_material.rb +0 -27
  39. data/lib/mittsu/renderers/opengl/materials/shader_material.rb +0 -11
  40. data/lib/mittsu/renderers/opengl/objects/group.rb +0 -9
  41. data/lib/mittsu/renderers/opengl/objects/line.rb +0 -45
  42. data/lib/mittsu/renderers/opengl/objects/mesh.rb +0 -70
  43. data/lib/mittsu/renderers/opengl/objects/point_cloud.rb +0 -39
  44. data/lib/mittsu/renderers/opengl/objects/sprite.rb +0 -12
  45. data/lib/mittsu/renderers/opengl/opengl_buffer.rb +0 -13
  46. data/lib/mittsu/renderers/opengl/opengl_debug.rb +0 -81
  47. data/lib/mittsu/renderers/opengl/opengl_default_target.rb +0 -50
  48. data/lib/mittsu/renderers/opengl/opengl_geometry_group.rb +0 -758
  49. data/lib/mittsu/renderers/opengl/opengl_geometry_like.rb +0 -132
  50. data/lib/mittsu/renderers/opengl/opengl_helper.rb +0 -161
  51. data/lib/mittsu/renderers/opengl/opengl_implementations.rb +0 -37
  52. data/lib/mittsu/renderers/opengl/opengl_lib.rb +0 -19
  53. data/lib/mittsu/renderers/opengl/opengl_light_renderer.rb +0 -43
  54. data/lib/mittsu/renderers/opengl/opengl_mittsu_params.rb +0 -53
  55. data/lib/mittsu/renderers/opengl/opengl_program.rb +0 -250
  56. data/lib/mittsu/renderers/opengl/opengl_shader.rb +0 -58
  57. data/lib/mittsu/renderers/opengl/opengl_state.rb +0 -205
  58. data/lib/mittsu/renderers/opengl/plugins/shadow_map_plugin.rb +0 -417
  59. data/lib/mittsu/renderers/opengl/plugins/sprite_fragment.glsl +0 -38
  60. data/lib/mittsu/renderers/opengl/plugins/sprite_plugin.rb +0 -250
  61. data/lib/mittsu/renderers/opengl/plugins/sprite_vertex.glsl +0 -31
  62. data/lib/mittsu/renderers/opengl/scenes/scene.rb +0 -9
  63. data/lib/mittsu/renderers/opengl/textures/compressed_texture.rb +0 -20
  64. data/lib/mittsu/renderers/opengl/textures/cube_texture.rb +0 -77
  65. data/lib/mittsu/renderers/opengl/textures/data_texture.rb +0 -21
  66. data/lib/mittsu/renderers/opengl/textures/texture.rb +0 -107
  67. data/lib/mittsu/renderers/opengl_render_target.rb +0 -201
  68. data/lib/mittsu/renderers/opengl_renderer.rb +0 -1028
  69. data/lib/mittsu/renderers/shaders/rbsl_loader.rb +0 -166
  70. data/lib/mittsu/renderers/shaders/shader_chunk/alphamap_fragment.glsl +0 -5
  71. data/lib/mittsu/renderers/shaders/shader_chunk/alphamap_pars_fragment.glsl +0 -5
  72. data/lib/mittsu/renderers/shaders/shader_chunk/alphatest_fragment.glsl +0 -5
  73. data/lib/mittsu/renderers/shaders/shader_chunk/bumpmap_pars_fragment.glsl +0 -40
  74. data/lib/mittsu/renderers/shaders/shader_chunk/color_fragment.glsl +0 -5
  75. data/lib/mittsu/renderers/shaders/shader_chunk/color_pars_fragment.glsl +0 -5
  76. data/lib/mittsu/renderers/shaders/shader_chunk/color_pars_vertex.glsl +0 -5
  77. data/lib/mittsu/renderers/shaders/shader_chunk/color_vertex.glsl +0 -5
  78. data/lib/mittsu/renderers/shaders/shader_chunk/common.glsl +0 -60
  79. data/lib/mittsu/renderers/shaders/shader_chunk/default_vertex.glsl +0 -15
  80. data/lib/mittsu/renderers/shaders/shader_chunk/defaultnormal_vertex.glsl +0 -21
  81. data/lib/mittsu/renderers/shaders/shader_chunk/envmap_fragment.glsl +0 -62
  82. data/lib/mittsu/renderers/shaders/shader_chunk/envmap_pars_fragment.glsl +0 -21
  83. data/lib/mittsu/renderers/shaders/shader_chunk/envmap_pars_vertex.glsl +0 -7
  84. data/lib/mittsu/renderers/shaders/shader_chunk/envmap_vertex.glsl +0 -17
  85. data/lib/mittsu/renderers/shaders/shader_chunk/fog_fragment.glsl +0 -26
  86. data/lib/mittsu/renderers/shaders/shader_chunk/fog_pars_fragment.glsl +0 -15
  87. data/lib/mittsu/renderers/shaders/shader_chunk/lightmap_fragment.glsl +0 -5
  88. data/lib/mittsu/renderers/shaders/shader_chunk/lightmap_pars_fragment.glsl +0 -6
  89. data/lib/mittsu/renderers/shaders/shader_chunk/lightmap_pars_vertex.glsl +0 -5
  90. data/lib/mittsu/renderers/shaders/shader_chunk/lightmap_vertex.glsl +0 -5
  91. data/lib/mittsu/renderers/shaders/shader_chunk/lights_lambert_pars_vertex.glsl +0 -43
  92. data/lib/mittsu/renderers/shaders/shader_chunk/lights_lambert_vertex.glsl +0 -196
  93. data/lib/mittsu/renderers/shaders/shader_chunk/lights_phong_fragment.glsl +0 -243
  94. data/lib/mittsu/renderers/shaders/shader_chunk/lights_phong_pars_fragment.glsl +0 -58
  95. data/lib/mittsu/renderers/shaders/shader_chunk/lights_phong_pars_vertex.glsl +0 -5
  96. data/lib/mittsu/renderers/shaders/shader_chunk/lights_phong_vertex.glsl +0 -5
  97. data/lib/mittsu/renderers/shaders/shader_chunk/linear_to_gamma_fragment.glsl +0 -2
  98. data/lib/mittsu/renderers/shaders/shader_chunk/logdepthbuf_fragment.glsl +0 -5
  99. data/lib/mittsu/renderers/shaders/shader_chunk/logdepthbuf_pars_fragment.glsl +0 -12
  100. data/lib/mittsu/renderers/shaders/shader_chunk/logdepthbuf_pars_vertex.glsl +0 -11
  101. data/lib/mittsu/renderers/shaders/shader_chunk/logdepthbuf_vertex.glsl +0 -15
  102. data/lib/mittsu/renderers/shaders/shader_chunk/map_fragment.glsl +0 -9
  103. data/lib/mittsu/renderers/shaders/shader_chunk/map_pars_fragment.glsl +0 -11
  104. data/lib/mittsu/renderers/shaders/shader_chunk/map_pars_vertex.glsl +0 -6
  105. data/lib/mittsu/renderers/shaders/shader_chunk/map_particle_fragment.glsl +0 -5
  106. data/lib/mittsu/renderers/shaders/shader_chunk/map_particle_pars_fragment.glsl +0 -6
  107. data/lib/mittsu/renderers/shaders/shader_chunk/map_vertex.glsl +0 -5
  108. data/lib/mittsu/renderers/shaders/shader_chunk/morphnormal_vertex.glsl +0 -12
  109. data/lib/mittsu/renderers/shaders/shader_chunk/morphtarget_pars_vertex.glsl +0 -13
  110. data/lib/mittsu/renderers/shaders/shader_chunk/morphtarget_vertex.glsl +0 -20
  111. data/lib/mittsu/renderers/shaders/shader_chunk/normalmap_pars_fragment.glsl +0 -27
  112. data/lib/mittsu/renderers/shaders/shader_chunk/shadowmap_fragment.glsl +0 -216
  113. data/lib/mittsu/renderers/shaders/shader_chunk/shadowmap_pars_fragment.glsl +0 -19
  114. data/lib/mittsu/renderers/shaders/shader_chunk/shadowmap_pars_vertex.glsl +0 -6
  115. data/lib/mittsu/renderers/shaders/shader_chunk/shadowmap_vertex.glsl +0 -9
  116. data/lib/mittsu/renderers/shaders/shader_chunk/skinbase_vertex.glsl +0 -8
  117. data/lib/mittsu/renderers/shaders/shader_chunk/skinning_pars_vertex.glsl +0 -47
  118. data/lib/mittsu/renderers/shaders/shader_chunk/skinning_vertex.glsl +0 -20
  119. data/lib/mittsu/renderers/shaders/shader_chunk/skinnormal_vertex.glsl +0 -20
  120. data/lib/mittsu/renderers/shaders/shader_chunk/specularmap_fragment.glsl +0 -12
  121. data/lib/mittsu/renderers/shaders/shader_chunk/specularmap_pars_fragment.glsl +0 -5
  122. data/lib/mittsu/renderers/shaders/shader_chunk/worldpos_vertex.glsl +0 -17
  123. data/lib/mittsu/renderers/shaders/shader_chunk.rb +0 -9
  124. data/lib/mittsu/renderers/shaders/shader_lib/basic/basic_fragment.rbsl +0 -37
  125. data/lib/mittsu/renderers/shaders/shader_lib/basic/basic_uniforms.rbslu +0 -3
  126. data/lib/mittsu/renderers/shaders/shader_lib/basic/basic_vertex.rbsl +0 -33
  127. data/lib/mittsu/renderers/shaders/shader_lib/cube/cube_fragment.rbsl +0 -12
  128. data/lib/mittsu/renderers/shaders/shader_lib/cube/cube_uniforms.rbslu +0 -2
  129. data/lib/mittsu/renderers/shaders/shader_lib/cube/cube_vertex.rbsl +0 -12
  130. data/lib/mittsu/renderers/shaders/shader_lib/depth_rgba/depth_rgba_fragment.rbsl +0 -26
  131. data/lib/mittsu/renderers/shaders/shader_lib/depth_rgba/depth_rgba_uniforms.rbslu +0 -0
  132. data/lib/mittsu/renderers/shaders/shader_lib/depth_rgba/depth_rgba_vertex.rbsl +0 -12
  133. data/lib/mittsu/renderers/shaders/shader_lib/lambert/lambert_fragment.rbsl +0 -56
  134. data/lib/mittsu/renderers/shaders/shader_lib/lambert/lambert_uniforms.rbslu +0 -7
  135. data/lib/mittsu/renderers/shaders/shader_lib/lambert/lambert_vertex.rbsl +0 -37
  136. data/lib/mittsu/renderers/shaders/shader_lib/particle_basic/particle_basic_fragment.rbsl +0 -27
  137. data/lib/mittsu/renderers/shaders/shader_lib/particle_basic/particle_basic_uniforms.rbslu +0 -2
  138. data/lib/mittsu/renderers/shaders/shader_lib/particle_basic/particle_basic_vertex.rbsl +0 -25
  139. data/lib/mittsu/renderers/shaders/shader_lib/phong/phong_fragment.rbsl +0 -45
  140. data/lib/mittsu/renderers/shaders/shader_lib/phong/phong_uniforms.rbslu +0 -11
  141. data/lib/mittsu/renderers/shaders/shader_lib/phong/phong_vertex.rbsl +0 -43
  142. data/lib/mittsu/renderers/shaders/shader_lib.rb +0 -43
  143. data/lib/mittsu/renderers/shaders/shader_templates/fragment.glsl.erb +0 -105
  144. data/lib/mittsu/renderers/shaders/shader_templates/vertex.glsl.erb +0 -143
  145. data/lib/mittsu/renderers/shaders/uniforms_lib.rb +0 -106
  146. data/lib/mittsu/renderers/shaders/uniforms_utils.rb +0 -31
  147. data/lib/mittsu/renderers.rb +0 -1
@@ -1,33 +0,0 @@
1
- require 'mittsu/renderers/opengl/materials/opengl_material_basics'
2
-
3
- module Mittsu
4
- class MeshLambertMaterial
5
- include OpenGLMaterialBasics
6
-
7
- def refresh_uniforms(uniforms)
8
- refresh_uniforms_basic(uniforms)
9
-
10
- uniforms['emissive'].value = emissive
11
-
12
- if wrap_around
13
- uniforms['wrapRGB'].value.copy(wrap_rgb)
14
- end
15
- end
16
-
17
- def needs_view_matrix_uniform?
18
- true
19
- end
20
-
21
- def needs_lights?
22
- true
23
- end
24
-
25
- def init_shader
26
- @shader = ShaderLib.create_shader(shader_id)
27
- end
28
-
29
- def shader_id
30
- :lambert
31
- end
32
- end
33
- end
@@ -1,44 +0,0 @@
1
- require 'mittsu/renderers/opengl/materials/opengl_material_basics'
2
-
3
- module Mittsu
4
- class MeshPhongMaterial
5
- include OpenGLMaterialBasics
6
-
7
- def needs_face_normals?
8
- false
9
- end
10
-
11
- def refresh_uniforms(uniforms)
12
- refresh_uniforms_basic(uniforms)
13
-
14
- uniforms['shininess'].value = shininess
15
-
16
- uniforms['emissive'].value = emissive
17
- uniforms['specular'].value = specular
18
-
19
- if wrap_around
20
- uniforms['wrapRGB'].value.copy(wrap_rgb)
21
- end
22
- end
23
-
24
- def needs_camera_position_uniform?
25
- true
26
- end
27
-
28
- def needs_view_matrix_uniform?
29
- true
30
- end
31
-
32
- def needs_lights?
33
- true
34
- end
35
-
36
- def init_shader
37
- @shader = ShaderLib.create_shader(shader_id)
38
- end
39
-
40
- def shader_id
41
- :phong
42
- end
43
- end
44
- end
@@ -1,57 +0,0 @@
1
- module Mittsu
2
- module OpenGLMaterialBasics
3
- def refresh_uniforms_basic(uniforms)
4
- refresh_map_uniforms(uniforms)
5
- refresh_env_map_uniforms(uniforms)
6
- refresh_other_uniforms(uniforms)
7
- end
8
-
9
- def refresh_map_uniforms(uniforms)
10
- uniforms['map'].value = map
11
- uniforms['lightMap'].value = light_map
12
- uniforms['specularMap'].value = specular_map
13
- uniforms['alphaMap'].value = alpha_map
14
-
15
- if bump_map
16
- uniforms['bumpMap'].value = bump_map
17
- uniforms['bumpScale'].value = bump_scale
18
- end
19
-
20
- if normal_map
21
- uniforms['normalMap'].value = normal_map
22
- uniforms['normalScale'].value.copy(normal_scale)
23
- end
24
- end
25
-
26
- def refresh_env_map_uniforms(uniforms)
27
- uv_scale_map = get_uv_scale_map
28
-
29
- if uv_scale_map
30
- offset = uv_scale_map.offset
31
- repeat = uv_scale_map.repeat
32
-
33
- uniforms['offsetRepeat'].value.set(offset.x, offset.y, repeat.x, repeat.y)
34
- end
35
-
36
- uniforms['envMap'].value = env_map
37
- # TODO: when OpenGLRenderTargetCube exists
38
- # uniforms['flipEnvMap'].value = envMap.is_a?(OpenGLRenderTargetCube) ? 1 : - 1
39
- end
40
-
41
- def refresh_other_uniforms(uniforms)
42
- uniforms['opacity'].value = opacity
43
- uniforms['diffuse'].value = color
44
-
45
- uniforms['reflectivity'].value = reflectivity
46
- uniforms['refractionRatio'].value = refraction_ratio
47
- end
48
-
49
- def get_uv_scale_map
50
- map ||
51
- specular_map ||
52
- normal_map ||
53
- bump_map ||
54
- alpha_map
55
- end
56
- end
57
- end
@@ -1,27 +0,0 @@
1
- module Mittsu
2
- class PointCloudMaterial
3
- def refresh_uniforms(uniforms)
4
- uniforms['psColor'].value = color
5
- uniforms['opacity'].value = opacity
6
- uniforms['size'].value = size
7
- # uniforms['scale'].value = _canvas.height / 2.0 # TODO get window height?
8
-
9
- uniforms['map'].value = map
10
-
11
- if !map.nil?
12
- offset = material.map.offset
13
- repeat = material.map.repeat
14
-
15
- uniforms['offsetRepeat'].value.set(offset.x, offset.y, repeat.x, repeat.y)
16
- end
17
- end
18
-
19
- def init_shader
20
- @shader = ShaderLib.create_shader(shader_id)
21
- end
22
-
23
- def shader_id
24
- :particle_basic
25
- end
26
- end
27
- end
@@ -1,11 +0,0 @@
1
- module Mittsu
2
- class ShaderMaterial
3
- def needs_camera_position_uniform?
4
- true
5
- end
6
-
7
- def needs_view_matrix_uniform?
8
- true
9
- end
10
- end
11
- end
@@ -1,9 +0,0 @@
1
- module Mittsu
2
- class Group
3
- def project(renderer)
4
- @renderer = renderer
5
- return unless visible
6
- project_children
7
- end
8
- end
9
- end
@@ -1,45 +0,0 @@
1
- module Mittsu
2
- class Line
3
- def render_buffer(camera, lights, fog, material, geometry_group, update_buffers)
4
- opengl_mode = mode == LineStrip ? GL_LINE_STRIP : GL_LINES
5
-
6
- @renderer.state.set_line_width(material.line_width * @renderer.pixel_ratio)
7
-
8
- glDrawArrays(opengl_mode, 0, geometry_group.line_count)
9
-
10
- @renderer.info[:render][:calls] += 1
11
- end
12
-
13
- def update
14
- # TODO: glBindVertexArray ???
15
- material = buffer_material(geometry)
16
- custom_attributes_dirty = material.attributes && material.custom_attributes_dirty?
17
-
18
- if geometry.vertices_need_update || geometry.colors_need_update || geometry.line_distances_need_update || custom_attributes_dirty
19
- geometry.set_line_buffers(GL_DYNAMIC_DRAW)
20
- end
21
-
22
- geometry.vertices_need_update = false
23
- geometry.colors_need_update = false
24
- geometry.line_distances_need_update = false
25
-
26
- material.attributes && material.clear_custom_attributes
27
- end
28
-
29
- def init_geometry
30
- geometry.renderer = @renderer
31
- if geometry.vertex_buffer.nil?
32
- geometry.create_line_buffers
33
- geometry.init_line_buffers(self)
34
-
35
- geometry.vertices_need_update = true
36
- geometry.colors_need_update = true
37
- geometry.line_distances_need_update = true
38
- end
39
- end
40
-
41
- def add_opengl_object
42
- @renderer.add_opengl_object(geometry, self)
43
- end
44
- end
45
- end
@@ -1,70 +0,0 @@
1
- module Mittsu
2
- class Mesh
3
- attr_accessor :renderer
4
-
5
- def render_buffer(camera, lights, fog, material, geometry_group, update_buffers)
6
- type = GL_UNSIGNED_INT # geometry_group.type_array == Uint32Array ? GL_UNSIGNED_INT : GL_UNSIGNED_SHORT
7
-
8
- # wireframe
9
- if material.wireframe
10
- @renderer.state.set_line_width(material.wireframe_linewidth * @renderer.pixel_ratio)
11
-
12
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, geometry_group.line_buffer) if update_buffers
13
- glDrawElements(GL_LINES, geometry_group.line_count, type, 0)
14
-
15
- # triangles
16
- else
17
- glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, geometry_group.face_buffer) if update_buffers
18
- glDrawElements(GL_TRIANGLES, geometry_group.face_count, type, 0)
19
- end
20
-
21
- @renderer.info[:render][:calls] += 1
22
- @renderer.info[:render][:vertices] += geometry_group.face_count
23
- @renderer.info[:render][:faces] += geometry_group.face_count / 3
24
- end
25
-
26
- def update
27
- # check all geometry groubs
28
- mat = nil
29
- geometry.groups.each do |geometry_group|
30
- # TODO: place to put this???
31
- # glBindVertexArray(geometry_group.vertex_array_object)
32
- mat = buffer_material(geometry_group)
33
-
34
- custom_attributes_dirty = mat.attributes && mat.custom_attributes_dirty?
35
-
36
- if geometry.vertices_need_update || geometry.morph_targets_need_update || geometry.elements_need_update || geometry.uvs_need_update || geometry.normals_need_update || geometry.colors_need_update || geometry.tangents_need_update || custom_attributes_dirty
37
- geometry_group.set_mesh_buffers(self, GL_DYNAMIC_DRAW, !geometry.dynamic, mat)
38
- end
39
- end
40
-
41
- geometry.vertices_need_update = false
42
- geometry.morph_targets_need_update = false
43
- geometry.elements_need_update = false
44
- geometry.uvs_need_update = false
45
- geometry.normals_need_update = false
46
- geometry.colors_need_update = false
47
- geometry.tangents_need_update = false
48
-
49
- mat.attributes && mat.clear_custom_attributes
50
- end
51
-
52
- def init_geometry
53
- geometry.renderer = @renderer
54
- geometry.init_geometry_groups(self)
55
- end
56
-
57
- def add_opengl_object
58
- case geometry
59
- when BufferGeometry
60
- @renderer.add_opengl_object(geometry, self)
61
- when Geometry
62
- geometry.groups.each do |group|
63
- @renderer.add_opengl_object(group, self)
64
- end
65
- else
66
- raise "GEOMETRY IS NULL"
67
- end
68
- end
69
- end
70
- end
@@ -1,39 +0,0 @@
1
- module Mittsu
2
- class PointCloud
3
- def render_buffer(camera, lights, fog, material, geometry_group, update_buffers)
4
- glDrawArrays(GL_POINTS, 0, geometry_group.particle_count)
5
-
6
- @renderer.info[:render][:calls] += 1
7
- @renderer.info[:render][:points] += geometry_group.particle_count
8
- end
9
-
10
- def update
11
- material = buffer_material(geometry)
12
- custom_attributes_dirty = material.attributes && material.custom_attributes_dirty?
13
-
14
- if geometry.vertices_need_update || geometry.colors_need_update || custom_attributes_dirty
15
- geometry.set_particle_buffers(GL_DYNAMIC_DRAW)
16
- end
17
-
18
- geometry.vertices_need_update = false
19
- geometry.colors_need_update = false
20
-
21
- material.attributes && material.clear_custom_attributes
22
- end
23
-
24
- def init_geometry
25
- geometry.renderer = @renderer
26
- if geometry.vertex_buffer.nil?
27
- geometry.create_particle_buffers
28
- geometry.init_particle_buffers(self)
29
-
30
- geometry.vertices_need_update = true
31
- geometry.colors_need_update = true
32
- end
33
- end
34
-
35
- def add_opengl_object
36
- @renderer.add_opengl_object(geometry, self)
37
- end
38
- end
39
- end
@@ -1,12 +0,0 @@
1
- module Mittsu
2
- class Sprite
3
- def project(renderer)
4
- @renderer = renderer
5
- return unless visible
6
- init
7
- # TODO!!! FIXME!!!
8
- @renderer.instance_variable_get(:@sprites) << self
9
- project_children
10
- end
11
- end
12
- end
@@ -1,13 +0,0 @@
1
- module Mittsu
2
- class OpenGLBuffer < Struct.new(:buffer, :object, :material, :z)
3
- attr_accessor :render, :transparent, :opaque
4
-
5
- def name
6
- "BUFFER(#{object.name})"
7
- end
8
-
9
- def id
10
- object.id
11
- end
12
- end
13
- end
@@ -1,81 +0,0 @@
1
- require 'opengl'
2
-
3
- ERROR_STRINGS = {
4
- OpenGL::GL_NO_ERROR => 'NO_ERROR',
5
- OpenGL::GL_INVALID_ENUM => 'INVALID_ENUM',
6
- OpenGL::GL_INVALID_VALUE => 'INVALID_VALUE',
7
- OpenGL::GL_INVALID_OPERATION => 'INVALID_OPERATION',
8
- OpenGL::GL_STACK_OVERFLOW => 'STACK_OVERFLOW',
9
- OpenGL::GL_STACK_UNDERFLOW => 'STACK_UNDERFLOW',
10
- OpenGL::GL_OUT_OF_MEMORY => 'OUT_OF_MEMORY',
11
- # OpenGL::GL_TABLE_TOO_LARGE => 'TABLE_TOO_LARGE'
12
- }
13
-
14
- module OpenGLDebug
15
- class DebugShader
16
- def initialize(handle)
17
- @handle = handle
18
- @uniforms = {}
19
- end
20
-
21
- def set_uniform(handle, name)
22
- @uniforms[handle] = name
23
- end
24
-
25
- def get_uniform_name(handle)
26
- @uniforms[handle]
27
- end
28
- end
29
-
30
- module OpenGLProxy
31
- extend OpenGL
32
- end
33
-
34
- def self.load_lib(*args)
35
- OpenGL.load_lib(*args)
36
- end
37
-
38
- OpenGL.constants.each do |c|
39
- const_set c, OpenGL.const_get(c)
40
- end
41
-
42
- def call_debug_method m, called_from = caller[0], *args
43
- if m.to_s.start_with?('glUniform')
44
- uniform_name = @@current_shader.get_uniform_name(args.first)
45
- call = "#{m}('#{uniform_name}',#{args[1..-1].map { |s| s.to_s[0..20] }.join(', ')})"
46
- else
47
- call = "#{m}(#{args.map { |s| s.to_s[0..20] }.join(', ')})"
48
- end
49
- print call
50
- r = OpenGLProxy.send(m, *args)
51
- ret = r.nil? ? '' : " => #{r}"
52
- puts "#{ret} (#{called_from})"
53
- e = OpenGLProxy.glGetError
54
- raise "ERROR: #{m} => #{ERROR_STRINGS[e]}" unless e == OpenGL::GL_NO_ERROR
55
- r
56
- end
57
-
58
- OpenGL.instance_methods.each do |m|
59
- define_method m do |*args|
60
- self.call_debug_method(m, caller[0], *args)
61
- end
62
- end
63
-
64
- def glCreateProgram
65
- call_debug_method(:glCreateProgram, caller[0]).tap do |handle|
66
- @@shaders ||= {}
67
- @@shaders[handle] = DebugShader.new(handle)
68
- end
69
- end
70
-
71
- def glUseProgram(handle)
72
- @@current_shader = @@shaders[handle]
73
- call_debug_method(:glUseProgram, caller[0], handle)
74
- end
75
-
76
- def glGetUniformLocation(program, name)
77
- call_debug_method(:glGetUniformLocation, caller[0], program, name).tap do |handle|
78
- @@shaders[program].set_uniform(handle, name)
79
- end
80
- end
81
- end
@@ -1,50 +0,0 @@
1
- module Mittsu
2
- class OpenGLDefaultTarget
3
- attr_accessor :viewport_width, :viewport_height, :viewport_x, :viewport_y
4
- alias :width :viewport_width
5
- alias :height :viewport_height
6
-
7
- def initialize renderer
8
- @renderer = renderer
9
- @viewport_width = 0
10
- @viewport_height = 0
11
- @viewport_x = 0
12
- @viewport_y = 0
13
- end
14
-
15
- def framebuffer
16
- 0
17
- end
18
-
19
- def update_mipmap
20
- # NOOP
21
- end
22
-
23
- def setup_buffers
24
- # NOOP
25
- end
26
-
27
- def use
28
- glBindFramebuffer(GL_FRAMEBUFFER, 0)
29
- use_viewport
30
- end
31
-
32
- def use_viewport
33
- glViewport(@viewport_x, @viewport_y, @viewport_width, @viewport_height)
34
- end
35
-
36
- def set_and_use_viewport(x, y, width, height)
37
- set_viewport(x, y, width, height)
38
- use_viewport
39
- end
40
-
41
- def set_viewport(x, y, width, height)
42
- @viewport_x, @viewport_y = x, y
43
- set_viewport_size(width, height)
44
- end
45
-
46
- def set_viewport_size(width, height)
47
- @viewport_width, @viewport_height = width, height
48
- end
49
- end
50
- end