Class: Three::Postprocessing::EffectComposer

Inherits:
Object
  • Object
show all
Defined in:
lib/three/postprocessing/effect_composer.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(renderer:, backend: nil) ⇒ EffectComposer

Returns a new instance of EffectComposer.

Raises:

  • (ArgumentError)


10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/three/postprocessing/effect_composer.rb', line 10

def initialize(renderer:, backend: nil)
  @renderer = renderer
  renderer_backend = renderer.backend if renderer.respond_to?(:backend)
  @backend = backend || renderer_backend
  raise ArgumentError, "renderer must expose a backend or backend must be provided" unless @backend
  if renderer_backend && !renderer_backend.equal?(@backend)
    raise ArgumentError, "effect composer backend must match the renderer backend"
  end

  @handle = @backend.create_effect_composer(renderer.handle)
  @passes = []
end

Instance Attribute Details

#backendObject (readonly)

Returns the value of attribute backend.



8
9
10
# File 'lib/three/postprocessing/effect_composer.rb', line 8

def backend
  @backend
end

#handleObject (readonly)

Returns the value of attribute handle.



8
9
10
# File 'lib/three/postprocessing/effect_composer.rb', line 8

def handle
  @handle
end

#passesObject (readonly)

Returns the value of attribute passes.



8
9
10
# File 'lib/three/postprocessing/effect_composer.rb', line 8

def passes
  @passes
end

#rendererObject (readonly)

Returns the value of attribute renderer.



8
9
10
# File 'lib/three/postprocessing/effect_composer.rb', line 8

def renderer
  @renderer
end

Instance Method Details

#add_pass(pass) ⇒ Object



23
24
25
26
27
28
# File 'lib/three/postprocessing/effect_composer.rb', line 23

def add_pass(pass)
  ensure_pass_backend!(pass)
  @passes << pass
  @backend.add_effect_composer_pass(@handle, pass.handle)
  self
end

#disposeObject



42
43
44
45
# File 'lib/three/postprocessing/effect_composer.rb', line 42

def dispose
  @backend.dispose_effect_composer(@handle)
  self
end

#render(scene = nil, camera = nil) ⇒ Object



35
36
37
38
39
40
# File 'lib/three/postprocessing/effect_composer.rb', line 35

def render(scene = nil, camera = nil)
  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_effect_composer(@handle, scene, camera)
  self
end

#set_size(width, height) ⇒ Object



30
31
32
33
# File 'lib/three/postprocessing/effect_composer.rb', line 30

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