Class: RLSL::Prism::Transpiler
- Inherits:
-
Object
- Object
- RLSL::Prism::Transpiler
- Defined in:
- lib/rlsl/prism/transpiler.rb
Constant Summary collapse
- TARGETS =
{ c: Emitters::CEmitter, msl: Emitters::MSLEmitter, wgsl: Emitters::WGSLEmitter, glsl: Emitters::GLSLEmitter }.freeze
Instance Attribute Summary collapse
-
#custom_functions ⇒ Object
readonly
Returns the value of attribute custom_functions.
-
#uniforms ⇒ Object
readonly
Returns the value of attribute uniforms.
Instance Method Summary collapse
- #compile_block(block) ⇒ Object
- #compile_helpers(block, function_signatures = {}) ⇒ Object
- #compile_source(source) ⇒ Object
- #emit(target, compilation:, needs_return: true) ⇒ Object
-
#initialize(uniforms = {}, custom_functions = {}, globals: {}) ⇒ Transpiler
constructor
A new instance of Transpiler.
- #transpile(block, target) ⇒ Object
- #transpile_helpers(block, target, function_signatures = {}) ⇒ Object
- #transpile_source(source, target) ⇒ Object
Constructor Details
#initialize(uniforms = {}, custom_functions = {}, globals: {}) ⇒ Transpiler
Returns a new instance of Transpiler.
32 33 34 35 36 37 |
# File 'lib/rlsl/prism/transpiler.rb', line 32 def initialize(uniforms = {}, custom_functions = {}, globals: {}) @uniforms = uniforms @custom_functions = custom_functions @globals = globals @source_extractor = SourceExtractor.new end |
Instance Attribute Details
#custom_functions ⇒ Object (readonly)
Returns the value of attribute custom_functions.
30 31 32 |
# File 'lib/rlsl/prism/transpiler.rb', line 30 def custom_functions @custom_functions end |
#uniforms ⇒ Object (readonly)
Returns the value of attribute uniforms.
30 31 32 |
# File 'lib/rlsl/prism/transpiler.rb', line 30 def uniforms @uniforms end |
Instance Method Details
#compile_block(block) ⇒ Object
39 40 41 |
# File 'lib/rlsl/prism/transpiler.rb', line 39 def compile_block(block) compile_unit(@source_extractor.extract_unit(block)) end |
#compile_helpers(block, function_signatures = {}) ⇒ Object
47 48 49 50 51 52 |
# File 'lib/rlsl/prism/transpiler.rb', line 47 def compile_helpers(block, function_signatures = {}) compile_unit( @source_extractor.extract_unit(block).without_params, function_signatures: function_signatures ) end |
#compile_source(source) ⇒ Object
43 44 45 |
# File 'lib/rlsl/prism/transpiler.rb', line 43 def compile_source(source) compile_unit(source_unit(source)) end |
#emit(target, compilation:, needs_return: true) ⇒ Object
54 55 56 57 58 |
# File 'lib/rlsl/prism/transpiler.rb', line 54 def emit(target, compilation:, needs_return: true) emitter = resolve_emitter(target) validate_target_capabilities!(compilation.ir, target) emitter.emit(compilation.ir, needs_return: needs_return) end |
#transpile(block, target) ⇒ Object
60 61 62 |
# File 'lib/rlsl/prism/transpiler.rb', line 60 def transpile(block, target) emit(target, compilation: compile_block(block)) end |
#transpile_helpers(block, target, function_signatures = {}) ⇒ Object
68 69 70 71 72 73 74 |
# File 'lib/rlsl/prism/transpiler.rb', line 68 def transpile_helpers(block, target, function_signatures = {}) emit( target, needs_return: false, compilation: compile_helpers(block, function_signatures) ) end |
#transpile_source(source, target) ⇒ Object
64 65 66 |
# File 'lib/rlsl/prism/transpiler.rb', line 64 def transpile_source(source, target) emit(target, compilation: compile_source(source)) end |