Class: Three::Renderers::ThreeJSRenderer

Inherits:
Renderer
  • Object
show all
Defined in:
lib/three/renderers/threejs_renderer.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(canvas: nil, backend: Backends::ThreeJS.new, **options) ⇒ ThreeJSRenderer

Returns a new instance of ThreeJSRenderer.



11
12
13
14
15
16
17
18
19
20
# File 'lib/three/renderers/threejs_renderer.rb', line 11

def initialize(canvas: nil, backend: Backends::ThreeJS.new, **options)
  shadow_map_enabled = options.delete(:shadow_map_enabled)
  shadow_map_type = options.delete(:shadow_map_type)
  shadow_map_auto_update = options.delete(:shadow_map_auto_update)
  @backend = backend
  @handle = @backend.create_renderer(canvas: canvas, **options)
  if [shadow_map_enabled, shadow_map_type, shadow_map_auto_update].any?
    configure_shadow_map(enabled: shadow_map_enabled, type: shadow_map_type, auto_update: shadow_map_auto_update)
  end
end

Instance Attribute Details

#backendObject (readonly)

Returns the value of attribute backend.



9
10
11
# File 'lib/three/renderers/threejs_renderer.rb', line 9

def backend
  @backend
end

#handleObject (readonly)

Returns the value of attribute handle.



9
10
11
# File 'lib/three/renderers/threejs_renderer.rb', line 9

def handle
  @handle
end

Instance Method Details

#animation_loop(&block) ⇒ Object



51
52
53
54
# File 'lib/three/renderers/threejs_renderer.rb', line 51

def animation_loop(&block)
  @backend.set_animation_loop(@handle, block)
  self
end

#cached?(object) ⇒ Boolean

Returns:

  • (Boolean)


73
74
75
# File 'lib/three/renderers/threejs_renderer.rb', line 73

def cached?(object)
  @backend.cached?(object)
end

#configure_shadow_map(enabled: nil, type: nil, auto_update: nil) ⇒ Object



46
47
48
49
# File 'lib/three/renderers/threejs_renderer.rb', line 46

def configure_shadow_map(enabled: nil, type: nil, auto_update: nil)
  @backend.set_renderer_shadow_map(@handle, enabled: enabled, type: type, auto_update: auto_update)
  self
end

#dispose(object, **options) ⇒ Object



63
64
65
66
# File 'lib/three/renderers/threejs_renderer.rb', line 63

def dispose(object, **options)
  @backend.dispose(object, **options)
  self
end

#dispose_subtree(object, remove: true, dispose_geometries: true, dispose_materials: true, dispose_textures: true, dispose_skeletons: true) ⇒ Object



84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
# File 'lib/three/renderers/threejs_renderer.rb', line 84

def dispose_subtree(
  object,
  remove: true,
  dispose_geometries: true,
  dispose_materials: true,
  dispose_textures: true,
  dispose_skeletons: true
)
  @backend.dispose_subtree(
    object,
    remove: remove,
    dispose_geometries: dispose_geometries,
    dispose_materials: dispose_materials,
    dispose_textures: dispose_textures,
    dispose_skeletons: dispose_skeletons
  )
  self
end

#dom_elementObject



27
28
29
# File 'lib/three/renderers/threejs_renderer.rb', line 27

def dom_element
  @backend.renderer_dom_element(@handle)
end

#on_dispose(object, &block) ⇒ Object



68
69
70
71
# File 'lib/three/renderers/threejs_renderer.rb', line 68

def on_dispose(object, &block)
  @backend.add_event_listener(object, :dispose, block)
  self
end

#render(scene, camera) ⇒ Object



56
57
58
59
60
61
# File 'lib/three/renderers/threejs_renderer.rb', line 56

def render(scene, camera)
  scene.update_matrix_world if scene.respond_to?(:update_matrix_world)
  camera.update_matrix_world if camera.respond_to?(:update_matrix_world) && camera.parent.nil?
  @backend.render(@handle, scene, camera)
  self
end

#set_clear_color(color, alpha = 1) ⇒ Object



31
32
33
34
# File 'lib/three/renderers/threejs_renderer.rb', line 31

def set_clear_color(color, alpha = 1)
  @backend.set_clear_color(@handle, color, alpha)
  self
end

#set_size(width, height) ⇒ Object



22
23
24
25
# File 'lib/three/renderers/threejs_renderer.rb', line 22

def set_size(width, height)
  @backend.set_renderer_size(@handle, width, height)
  self
end

#tone_mapping=(value) ⇒ Object



36
37
38
39
# File 'lib/three/renderers/threejs_renderer.rb', line 36

def tone_mapping=(value)
  @backend.set_renderer_tone_mapping(@handle, value)
  value
end

#tone_mapping_exposure=(value) ⇒ Object



41
42
43
44
# File 'lib/three/renderers/threejs_renderer.rb', line 41

def tone_mapping_exposure=(value)
  @backend.set_renderer_tone_mapping_exposure(@handle, value)
  value
end

#traverse_handles(object, &block) ⇒ Object



77
78
79
80
81
82
# File 'lib/three/renderers/threejs_renderer.rb', line 77

def traverse_handles(object, &block)
  return enum_for(:traverse_handles, object) unless block

  @backend.traverse_handles(object, &block)
  self
end