Class: Vizcore::Renderer::SceneFrameSource

Inherits:
Object
  • Object
show all
Defined in:
lib/vizcore/renderer/scene_frame_source.rb

Overview

Produces analyzed scene frames for offline renderers.

Instance Method Summary collapse

Constructor Details

#initialize(config:, frame_rate: nil) ⇒ SceneFrameSource

Returns a new instance of SceneFrameSource.



11
12
13
14
15
# File 'lib/vizcore/renderer/scene_frame_source.rb', line 11

def initialize(config:, frame_rate: nil)
  @config = config
  @frame_rate = frame_rate
  @shader_source_resolver = Vizcore::DSL::ShaderSourceResolver.new
end

Instance Method Details

#captureHash

Returns frame data consumed by offline renderers.

Returns:

  • (Hash)

    frame data consumed by offline renderers



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/vizcore/renderer/scene_frame_source.rb', line 30

def capture
  ensure_started!

  audio = @pipeline.call(@input_manager.capture_frame(@capture_size))
  @frame_count += 1
  layers = Vizcore::DSL::MappingResolver.new.resolve_layers(
    scene_layers: @scene[:layers],
    audio: audio,
    time: frame_time,
    frame: @frame_count
  )

  {
    scene: { name: @scene[:name], layers: layers },
    audio: audio,
    scene_name: @scene[:name].to_s
  }
end

#startVizcore::Renderer::SceneFrameSource



18
19
20
21
22
23
24
25
26
27
# File 'lib/vizcore/renderer/scene_frame_source.rb', line 18

def start
  @definition = resolve_shader_sources(Vizcore::DSL::Engine.load_file(@config.scene_file.to_s))
  @scene = first_scene(@definition)
  @input_manager = build_input_manager
  @input_manager.start
  @capture_size = capture_size
  @pipeline = build_pipeline
  @frame_count = 0
  self
end

#stopvoid

This method returns an undefined value.



50
51
52
# File 'lib/vizcore/renderer/scene_frame_source.rb', line 50

def stop
  @input_manager&.stop
end