mittsu 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/lib/mittsu.rb +8 -0
  4. data/lib/mittsu/core/face3.rb +1 -1
  5. data/lib/mittsu/core/geometry.rb +0 -4
  6. data/lib/mittsu/core/object_3d.rb +7 -6
  7. data/lib/mittsu/extras/helpers/camera_helper.rb +2 -2
  8. data/lib/mittsu/materials/material.rb +0 -4
  9. data/lib/mittsu/renderers/opengl/core/{opengl_geometry.rb → geometry.rb} +23 -32
  10. data/lib/mittsu/renderers/opengl/core/{opengl_object_3d.rb → object_3d.rb} +20 -24
  11. data/lib/mittsu/renderers/opengl/lights/{opengl_ambient_light.rb → ambient_light.rb} +4 -4
  12. data/lib/mittsu/renderers/opengl/lights/{opengl_directional_light.rb → directional_light.rb} +4 -4
  13. data/lib/mittsu/renderers/opengl/lights/{opengl_hemisphere_light.rb → hemisphere_light.rb} +4 -7
  14. data/lib/mittsu/renderers/opengl/lights/light.rb +55 -0
  15. data/lib/mittsu/renderers/opengl/lights/{opengl_point_light.rb → point_light.rb} +5 -5
  16. data/lib/mittsu/renderers/opengl/lights/{opengl_spot_light.rb → spot_light.rb} +8 -8
  17. data/lib/mittsu/renderers/opengl/materials/{opengl_line_basic_material.rb → line_basic_material.rb} +3 -3
  18. data/lib/mittsu/renderers/opengl/materials/{opengl_material.rb → material.rb} +55 -56
  19. data/lib/mittsu/renderers/opengl/materials/mesh_basic_material.rb +21 -0
  20. data/lib/mittsu/renderers/opengl/materials/{opengl_mesh_lambert_material.rb → mesh_lambert_material.rb} +9 -5
  21. data/lib/mittsu/renderers/opengl/materials/{opengl_mesh_phong_material.rb → mesh_phong_material.rb} +11 -7
  22. data/lib/mittsu/renderers/opengl/materials/opengl_material_basics.rb +57 -0
  23. data/lib/mittsu/renderers/opengl/materials/{opengl_shader_material.rb → shader_material.rb} +1 -1
  24. data/lib/mittsu/renderers/opengl/objects/group.rb +9 -0
  25. data/lib/mittsu/renderers/opengl/objects/line.rb +45 -0
  26. data/lib/mittsu/renderers/opengl/objects/{opengl_mesh.rb → mesh.rb} +15 -22
  27. data/lib/mittsu/renderers/opengl/opengl_buffer.rb +4 -0
  28. data/lib/mittsu/renderers/opengl/opengl_debug.rb +5 -4
  29. data/lib/mittsu/renderers/opengl/opengl_default_target.rb +0 -4
  30. data/lib/mittsu/renderers/opengl/opengl_geometry_group.rb +2 -8
  31. data/lib/mittsu/renderers/opengl/opengl_geometry_like.rb +2 -1
  32. data/lib/mittsu/renderers/opengl/opengl_implementations.rb +24 -53
  33. data/lib/mittsu/renderers/opengl/opengl_lib.rb +62 -0
  34. data/lib/mittsu/renderers/opengl/opengl_light_renderer.rb +6 -6
  35. data/lib/mittsu/renderers/opengl/opengl_program.rb +3 -5
  36. data/lib/mittsu/renderers/opengl/plugins/shadow_map_plugin.rb +11 -12
  37. data/lib/mittsu/renderers/opengl/scenes/scene.rb +9 -0
  38. data/lib/mittsu/renderers/opengl/textures/{opengl_compressed_texture.rb → compressed_texture.rb} +5 -6
  39. data/lib/mittsu/renderers/opengl/textures/{opengl_cube_texture.rb → cube_texture.rb} +23 -21
  40. data/lib/mittsu/renderers/opengl/textures/{opengl_data_texture.rb → data_texture.rb} +3 -5
  41. data/lib/mittsu/renderers/opengl/textures/{opengl_texture.rb → texture.rb} +29 -33
  42. data/lib/mittsu/renderers/opengl_render_target.rb +5 -6
  43. data/lib/mittsu/renderers/opengl_renderer.rb +35 -44
  44. data/lib/mittsu/textures/texture.rb +0 -4
  45. data/lib/mittsu/version.rb +1 -1
  46. metadata +26 -24
  47. data/lib/mittsu/renderers/opengl/lights/opengl_light.rb +0 -52
  48. data/lib/mittsu/renderers/opengl/materials/opengl_mesh_basic_material.rb +0 -69
  49. data/lib/mittsu/renderers/opengl/objects/opengl_group.rb +0 -8
  50. data/lib/mittsu/renderers/opengl/objects/opengl_line.rb +0 -54
  51. data/lib/mittsu/renderers/opengl/scenes/opengl_scene.rb +0 -8
@@ -1,5 +1,5 @@
1
1
  module Mittsu
2
- class OpenGLShaderMaterial < OpenGLMaterial
2
+ class ShaderMaterial
3
3
  def needs_camera_position_uniform?
4
4
  true
5
5
  end
@@ -0,0 +1,9 @@
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
@@ -0,0 +1,45 @@
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
38
+ end
39
+ end
40
+
41
+ def add_opengl_object
42
+ @renderer.add_opengl_object(geometry, self)
43
+ end
44
+ end
45
+ end
@@ -1,9 +1,6 @@
1
1
  module Mittsu
2
- class OpenGLMesh < OpenGLObject3D
3
- def initialize(mesh, renderer)
4
- super
5
- @mesh = mesh
6
- end
2
+ class Mesh
3
+ attr_accessor :renderer
7
4
 
8
5
  def render_buffer(camera, lights, fog, material, geometry_group, update_buffers)
9
6
  type = GL_UNSIGNED_INT # geometry_group.type_array == Uint32Array ? GL_UNSIGNED_INT : GL_UNSIGNED_SHORT
@@ -28,21 +25,16 @@ module Mittsu
28
25
 
29
26
  def update
30
27
  # check all geometry groubs
31
- geometry = @mesh.geometry
32
- geometry_impl = geometry.implementation(self)
33
-
34
- material = nil
35
- material_impl = nil
36
- geometry_impl.groups.each do |geometry_group|
28
+ mat = nil
29
+ geometry.groups.each do |geometry_group|
37
30
  # TODO: place to put this???
38
31
  # glBindVertexArray(geometry_group.vertex_array_object)
39
- material = buffer_material(geometry_group)
40
- material_impl = material.implementation(@renderer)
32
+ mat = buffer_material(geometry_group)
41
33
 
42
- custom_attributes_dirty = material.attributes && material_impl.custom_attributes_dirty?
34
+ custom_attributes_dirty = mat.attributes && mat.custom_attributes_dirty?
43
35
 
44
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
45
- geometry_group.set_mesh_buffers(@mesh, GL_DYNAMIC_DRAW, !geometry.dynamic, material)
37
+ geometry_group.set_mesh_buffers(self, GL_DYNAMIC_DRAW, !geometry.dynamic, mat)
46
38
  end
47
39
  end
48
40
 
@@ -54,23 +46,24 @@ module Mittsu
54
46
  geometry.colors_need_update = false
55
47
  geometry.tangents_need_update = false
56
48
 
57
- material.attributes && material_impl.clear_custom_attributes(material)
49
+ mat.attributes && mat.clear_custom_attributes
58
50
  end
59
51
 
60
52
  def init_geometry
61
- @object.geometry.implementation(@renderer).init_geometry_groups(@object)
53
+ geometry.renderer = @renderer
54
+ geometry.init_geometry_groups(self)
62
55
  end
63
56
 
64
57
  def add_opengl_object
65
- geometry = @object.geometry
66
58
  case geometry
67
59
  when BufferGeometry
68
- @renderer.add_opengl_object(geometry, @object)
60
+ @renderer.add_opengl_object(geometry, self)
69
61
  when Geometry
70
- geometry_impl = geometry.implementation(self)
71
- geometry_impl.groups.each do |group|
72
- @renderer.add_opengl_object(group, @object)
62
+ geometry.groups.each do |group|
63
+ @renderer.add_opengl_object(group, self)
73
64
  end
65
+ else
66
+ raise "GEOMETRY IS NULL"
74
67
  end
75
68
  end
76
69
  end
@@ -1,5 +1,9 @@
1
1
  module Mittsu
2
2
  class OpenGLBuffer < Struct.new(:buffer, :object, :material, :z)
3
3
  attr_accessor :render, :transparent, :opaque
4
+
5
+ def name
6
+ "BUFFER(#{object.name})"
7
+ end
4
8
  end
5
9
  end
@@ -31,8 +31,8 @@ module OpenGLDebug
31
31
  extend OpenGL
32
32
  end
33
33
 
34
- def self.load_lib
35
- OpenGL.load_lib
34
+ def self.load_lib(*args)
35
+ OpenGL.load_lib(*args)
36
36
  end
37
37
 
38
38
  OpenGL.constants.each do |c|
@@ -40,15 +40,16 @@ module OpenGLDebug
40
40
  end
41
41
 
42
42
  def call_debug_method m, *args
43
- r = OpenGLProxy.send(m, *args)
44
43
  if m.to_s.start_with?('glUniform')
45
44
  uniform_name = @@current_shader.get_uniform_name(args.first)
46
45
  call = "#{m}('#{uniform_name}',#{args[1..-1].map { |s| s.to_s[0..20] }.join(', ')})"
47
46
  else
48
47
  call = "#{m}(#{args.map { |s| s.to_s[0..20] }.join(', ')})"
49
48
  end
49
+ print call
50
+ r = OpenGLProxy.send(m, *args)
50
51
  ret = r.nil? ? '' : " => #{r}"
51
- puts "#{call}#{ret} (#{caller[0]})"
52
+ puts "#{ret} (#{caller[0]})"
52
53
  e = OpenGLProxy.glGetError
53
54
  raise "ERROR: #{m} => #{ERROR_STRINGS[e]}" unless e == OpenGL::GL_NO_ERROR
54
55
  r
@@ -46,9 +46,5 @@ module Mittsu
46
46
  def set_viewport_size(width, height)
47
47
  @viewport_width, @viewport_height = width, height
48
48
  end
49
-
50
- def implementation(_)
51
- self
52
- end
53
49
  end
54
50
  end
@@ -57,7 +57,6 @@ module Mittsu
57
57
 
58
58
  def init_mesh_buffers(object)
59
59
  geometry = object.geometry
60
- object_impl = object.implementation(@renderer)
61
60
 
62
61
  nvertices = @faces3.length * 3
63
62
  nvertices2 = nvertices * 2
@@ -66,7 +65,7 @@ module Mittsu
66
65
  ntris = @faces3.length * 1
67
66
  nlines = @faces3.length * 3
68
67
 
69
- material = object_impl.buffer_material(self)
68
+ material = object.buffer_material(self)
70
69
 
71
70
  @vertex_array = Array.new(nvertices3) # Float32Array
72
71
  @normal_array = Array.new(nvertices3) # Float32Array
@@ -159,9 +158,8 @@ module Mittsu
159
158
  return unless @initted_arrays
160
159
 
161
160
  geometry = object.geometry
162
- material_impl = material.implementation(@renderer)
163
161
 
164
- needs_face_normals = material_impl.needs_face_normals?
162
+ needs_face_normals = material.needs_face_normals?
165
163
 
166
164
  vertex_index = 0
167
165
 
@@ -755,9 +753,5 @@ module Mittsu
755
753
  @skin_index_array = nil
756
754
  @skin_weight_array = nil
757
755
  end
758
-
759
- def implementation(_)
760
- self
761
- end
762
756
  end
763
757
  end
@@ -29,7 +29,8 @@ module Mittsu
29
29
  :line_count,
30
30
  :initted_arrays,
31
31
  :custom_attributes_list,
32
- :num_vertices
32
+ :num_vertices,
33
+ :renderer
33
34
 
34
35
  def bind_vertex_array_object
35
36
  glBindVertexArray(@vertex_array_object) if @vertex_array_object
@@ -5,57 +5,28 @@ require 'mittsu/materials'
5
5
  require 'mittsu/textures'
6
6
  require 'mittsu/scenes'
7
7
 
8
- require 'mittsu/renderers/opengl/core/opengl_geometry'
9
- require 'mittsu/renderers/opengl/core/opengl_object_3d'
10
- require 'mittsu/renderers/opengl/objects/opengl_mesh'
11
- require 'mittsu/renderers/opengl/objects/opengl_line'
12
- require 'mittsu/renderers/opengl/objects/opengl_group'
13
- require 'mittsu/renderers/opengl/scenes/opengl_scene'
14
- require 'mittsu/renderers/opengl/materials/opengl_material'
15
- require 'mittsu/renderers/opengl/materials/opengl_mesh_basic_material'
16
- require 'mittsu/renderers/opengl/materials/opengl_mesh_lambert_material'
17
- require 'mittsu/renderers/opengl/materials/opengl_mesh_phong_material'
18
- require 'mittsu/renderers/opengl/materials/opengl_line_basic_material'
19
- require 'mittsu/renderers/opengl/materials/opengl_shader_material'
20
- require 'mittsu/renderers/opengl/textures/opengl_texture'
21
- require 'mittsu/renderers/opengl/textures/opengl_cube_texture'
22
- require 'mittsu/renderers/opengl/textures/opengl_data_texture'
23
- require 'mittsu/renderers/opengl/textures/opengl_compressed_texture'
24
- require 'mittsu/renderers/opengl/lights/opengl_light'
25
- require 'mittsu/renderers/opengl/lights/opengl_light'
26
- require 'mittsu/renderers/opengl/lights/opengl_spot_light'
27
- require 'mittsu/renderers/opengl/lights/opengl_point_light'
28
- require 'mittsu/renderers/opengl/lights/opengl_hemisphere_light'
29
- require 'mittsu/renderers/opengl/lights/opengl_ambient_light'
30
- require 'mittsu/renderers/opengl/lights/opengl_directional_light'
8
+ require 'mittsu/renderers/opengl/core/geometry'
9
+ require 'mittsu/renderers/opengl/core/object_3d'
10
+ require 'mittsu/renderers/opengl/objects/mesh'
11
+ require 'mittsu/renderers/opengl/objects/line'
12
+ require 'mittsu/renderers/opengl/objects/group'
13
+ require 'mittsu/renderers/opengl/scenes/scene'
31
14
 
32
- module Mittsu
33
- OPENGL_IMPLEMENTATIONS = {
34
- Object3D => OpenGLObject3D,
35
- Geometry => OpenGLGeometry,
36
- Material => OpenGLMaterial,
37
- Texture => OpenGLTexture,
38
- Light => OpenGLLight,
39
- CubeTexture => OpenGLCubeTexture,
40
- Mesh => OpenGLMesh,
41
- Line => OpenGLLine,
42
- SpotLight => OpenGLSpotLight,
43
- PointLight => OpenGLPointLight,
44
- HemisphereLight => OpenGLHemisphereLight,
45
- AmbientLight => OpenGLAmbientLight,
46
- DirectionalLight => OpenGLDirectionalLight,
47
- DataTexture => OpenGLDataTexture,
48
- CompressedTexture => OpenGLCompressedTexture,
49
- Scene => OpenGLScene,
50
- Group => OpenGLGroup,
51
- MeshBasicMaterial => OpenGLMeshBasicMaterial,
52
- MeshLambertMaterial => OpenGLMeshLambertMaterial,
53
- MeshPhongMaterial => OpenGLMeshPhongMaterial,
54
- LineBasicMaterial => OpenGLLineBasicMaterial,
55
- ShaderMaterial => OpenGLShaderMaterial
56
- }
57
- OPENGL_IMPLEMENTATIONS.default_proc = -> (hash, key) {
58
- super_klass = key.ancestors.find { |a| hash.has_key?(a) }
59
- super_klass ? (hash[key] = hash[super_klass]) : nil
60
- }
61
- end
15
+ require 'mittsu/renderers/opengl/lights/light'
16
+ require 'mittsu/renderers/opengl/lights/spot_light'
17
+ require 'mittsu/renderers/opengl/lights/point_light'
18
+ require 'mittsu/renderers/opengl/lights/hemisphere_light'
19
+ require 'mittsu/renderers/opengl/lights/ambient_light'
20
+ require 'mittsu/renderers/opengl/lights/directional_light'
21
+
22
+ require 'mittsu/renderers/opengl/materials/material'
23
+ require 'mittsu/renderers/opengl/materials/mesh_basic_material'
24
+ require 'mittsu/renderers/opengl/materials/mesh_lambert_material'
25
+ require 'mittsu/renderers/opengl/materials/mesh_phong_material'
26
+ require 'mittsu/renderers/opengl/materials/line_basic_material'
27
+ require 'mittsu/renderers/opengl/materials/shader_material'
28
+
29
+ require 'mittsu/renderers/opengl/textures/texture'
30
+ require 'mittsu/renderers/opengl/textures/cube_texture'
31
+ require 'mittsu/renderers/opengl/textures/data_texture'
32
+ require 'mittsu/renderers/opengl/textures/compressed_texture'
@@ -0,0 +1,62 @@
1
+ module OpenGLLib
2
+ def self.discover
3
+ case OpenGL.get_platform
4
+ when :OPENGL_PLATFORM_WINDOWS
5
+ Windows.new
6
+ when :OPENGL_PLATFORM_MACOSX
7
+ MacOS.new
8
+ when :OPENGL_PLATFORM_LINUX
9
+ Linux.new
10
+ else
11
+ fail "Unsupported platform."
12
+ end
13
+ end
14
+
15
+ class Linux
16
+ def path
17
+ # http://www.pilotlogic.com/sitejoom/index.php/wiki?id=398<F37>
18
+ # 32 64
19
+ # /usr/lib /usr/lib64 redhat, mandriva
20
+ # /usr/lib32 /usr/lib64 arch, gento
21
+ # /usr/lib /usr/lib64 slackware
22
+ # /usr/lib/i386.. /usr/libx86_64/ debian
23
+ libs = Dir.glob("/usr/lib*/**/libGL.so")
24
+ if libs.size == 0
25
+ puts "no libGL.so"
26
+ exit 1
27
+ end
28
+ case kernel_module_in_use
29
+ when /nvidia/
30
+ return File.dirname(libs.grep(/nvidia/)[0])
31
+ end
32
+ # Get the same architecture that the runnning ruby
33
+ if 1.size == 8 # 64 bits
34
+ File.dirname(libs.grep(/64/)[0])
35
+ else # 32 bits
36
+ File.dirname(libs[0])
37
+ end
38
+ end
39
+
40
+ def file
41
+ 'libGL.so'
42
+ end
43
+
44
+ private
45
+ def kernel_module_in_use
46
+ lspci_line = `lspci -nnk | grep -i vga -A3 | grep 'in use'`
47
+ return /in use:\s*(\S+)/ =~ lspci_line && $1
48
+ end
49
+ end
50
+
51
+ # TODO
52
+ class Windows
53
+ def path; nil; end
54
+ def file; nil; end
55
+ end
56
+
57
+ # TODO
58
+ class MacOS
59
+ def path; nil; end
60
+ def file; nil; end
61
+ end
62
+ end
@@ -3,11 +3,11 @@ module Mittsu
3
3
  attr_accessor :lights_need_update, :cache
4
4
 
5
5
  LIGHT_CLASSES = [
6
- OpenGLAmbientLight,
7
- OpenGLDirectionalLight,
8
- OpenGLPointLight,
9
- OpenGLSpotLight,
10
- OpenGLHemisphereLight
6
+ AmbientLight,
7
+ DirectionalLight,
8
+ PointLight,
9
+ SpotLight,
10
+ HemisphereLight
11
11
  ]
12
12
  LIGHT_TYPES = LIGHT_CLASSES.map { |klass| klass::TYPE }
13
13
 
@@ -25,7 +25,7 @@ module Mittsu
25
25
 
26
26
  lights.each do |light|
27
27
  next if light.only_shadow
28
- light.implementation(self).setup
28
+ light.setup(self)
29
29
  end
30
30
 
31
31
  LIGHT_CLASSES.each do |klass|
@@ -13,8 +13,7 @@ module Mittsu
13
13
 
14
14
  compile_and_link_program(material, parameters)
15
15
 
16
- material_impl = material.implementation(@renderer)
17
- cache_uniform_locations(material_impl.shader[:uniforms] || {}, parameters)
16
+ cache_uniform_locations(material.shader[:uniforms] || {}, parameters)
18
17
  cache_attribute_locations(material.attributes || {}, parameters)
19
18
 
20
19
  @code = code
@@ -149,7 +148,6 @@ module Mittsu
149
148
  end
150
149
 
151
150
  def compile_shaders(material, parameters)
152
- material_impl = material.implementation(@renderer)
153
151
  shadow_map_type_define = get_shadow_map_define(parameters[:shadow_map_type])
154
152
 
155
153
  env_map_type_define = get_env_map_type_define(parameters[:env_map], material)
@@ -168,8 +166,8 @@ module Mittsu
168
166
  prefix_fragment = File.read(File.expand_path('../../shaders/shader_templates/fragment.glsl.erb', __FILE__))
169
167
  end
170
168
 
171
- @vertex_shader = OpenGLShader.new(GL_VERTEX_SHADER, compile_shader_template(prefix_vertex + material_impl.shader[:vertex_shader], binding))
172
- @fragment_shader = OpenGLShader.new(GL_FRAGMENT_SHADER, compile_shader_template(prefix_fragment + material_impl.shader[:fragment_shader], binding))
169
+ @vertex_shader = OpenGLShader.new(GL_VERTEX_SHADER, compile_shader_template(prefix_vertex + material.shader[:vertex_shader], binding))
170
+ @fragment_shader = OpenGLShader.new(GL_FRAGMENT_SHADER, compile_shader_template(prefix_fragment + material.shader[:fragment_shader], binding))
173
171
 
174
172
  glAttachShader(@program, @vertex_shader.shader)
175
173
  glAttachShader(@program, @fragment_shader.shader)
@@ -49,10 +49,10 @@ module Mittsu
49
49
  skinning: true
50
50
  )
51
51
 
52
- @depth_material.implementation(renderer).shadow_pass = true
53
- @depth_material_morph.implementation(renderer).shadow_pass = true
54
- @depth_material_skin.implementation(renderer).shadow_pass = true
55
- @depth_material_morph_skin.implementation(renderer).shadow_pass = true
52
+ @depth_material.shadow_pass = true
53
+ @depth_material_morph.shadow_pass = true
54
+ @depth_material_skin.shadow_pass = true
55
+ @depth_material_morph_skin.shadow_pass = true
56
56
  end
57
57
 
58
58
  def render(scene, camera)
@@ -122,6 +122,7 @@ module Mittsu
122
122
  pars = { min_filter: shadow_filter, mag_filter: shadow_filter, format: RGBAFormat }
123
123
 
124
124
  light.shadow_map = OpenGLRenderTarget.new(light.shadow_map_width, light.shadow_map_height, pars)
125
+ light.shadow_map.renderer = @renderer
125
126
  light.shadow_map_size = Vector2.new(light.shadow_map_width, light.shadow_map_height)
126
127
 
127
128
  light.shadow_matrix = Matrix4.new
@@ -142,10 +143,9 @@ module Mittsu
142
143
  scene.update_matrix_world if scene.auto_update
143
144
  end
144
145
 
145
- light_impl = light.implementation(@renderer)
146
- if light.shadow_camera_visible && !light_impl.camera_helper
147
- light_impl.camera_helper = CameraHelper.new(light.shadow_camera)
148
- scene.add(light_impl.camera_helper)
146
+ if light.shadow_camera_visible && !light.camera_helper
147
+ light.camera_helper = CameraHelper.new(light.shadow_camera)
148
+ scene.add(light.camera_helper)
149
149
  end
150
150
 
151
151
  if light.virtual? && virtual_light.original_camera == camera
@@ -168,8 +168,8 @@ module Mittsu
168
168
  #
169
169
 
170
170
 
171
- light_impl.camera_helper.visible = light.shadow_camera_visible if light_impl.camera_helper
172
- light_impl.camera_helper.update if light.shadow_camera_visible
171
+ light.camera_helper.visible = light.shadow_camera_visible if light.camera_helper
172
+ light.camera_helper.update_points if light.shadow_camera_visible
173
173
 
174
174
  # compute shadow matrix
175
175
 
@@ -274,8 +274,7 @@ module Mittsu
274
274
 
275
275
  if opengl_objects && object.cast_shadow && (object.frustum_culled == false || @frustum.intersects_object?(object) == true)
276
276
  opengl_objects.each do |opengl_object|
277
- object_impl = object.implementation(@renderer)
278
- object_impl.model_view_matrix.multiply_matrices(shadow_camera.matrix_world_inverse, object.matrix_world)
277
+ object.model_view_matrix.multiply_matrices(shadow_camera.matrix_world_inverse, object.matrix_world)
279
278
  @render_list << opengl_object
280
279
  end
281
280
  end