mittsu 0.4.1 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
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