Class: RLSL::ShaderBuilder::BuildService
- Inherits:
-
Object
- Object
- RLSL::ShaderBuilder::BuildService
- Defined in:
- lib/rlsl/shader_builder/build_service.rb
Instance Method Summary collapse
- #build_glsl_shader(version: "450") ⇒ Object
- #build_metal_shader ⇒ Object
- #build_wgsl_shader ⇒ Object
- #compile_and_load ⇒ Object
-
#initialize(name, definition, source_resolver_class: SourceResolver, compiler_factory: nil) ⇒ BuildService
constructor
A new instance of BuildService.
- #transpile_fragment(target) ⇒ Object
- #transpile_helpers(target) ⇒ Object
Constructor Details
#initialize(name, definition, source_resolver_class: SourceResolver, compiler_factory: nil) ⇒ BuildService
Returns a new instance of BuildService.
6 7 8 9 10 11 |
# File 'lib/rlsl/shader_builder/build_service.rb', line 6 def initialize(name, definition, source_resolver_class: SourceResolver, compiler_factory: nil) @name = name @definition = definition @source_resolver_class = source_resolver_class @compiler_factory = compiler_factory end |
Instance Method Details
#build_glsl_shader(version: "450") ⇒ Object
32 33 34 |
# File 'lib/rlsl/shader_builder/build_service.rb', line 32 def build_glsl_shader(version: "450") GLSL::Translator.new(@definition.uniforms, *translation_sources(:glsl), version: version).translate end |
#build_metal_shader ⇒ Object
21 22 23 24 25 26 |
# File 'lib/rlsl/shader_builder/build_service.rb', line 21 def translator = MSL::Translator.new(@definition.uniforms, *translation_sources(:msl)) msl_source = translator.translate MSL::Shader.new(@name, @definition.uniforms, msl_source) end |
#build_wgsl_shader ⇒ Object
28 29 30 |
# File 'lib/rlsl/shader_builder/build_service.rb', line 28 def build_wgsl_shader WGSL::Translator.new(@definition.uniforms, *translation_sources(:wgsl)).translate end |
#compile_and_load ⇒ Object
13 14 15 16 17 18 19 |
# File 'lib/rlsl/shader_builder/build_service.rb', line 13 def compile_and_load c_code = generate_c_code artifact = native_extension_compiler.build(c_code) require artifact.file CompiledShader.new(@name, artifact.ext_name, @definition.uniforms) end |
#transpile_fragment(target) ⇒ Object
36 37 38 39 40 |
# File 'lib/rlsl/shader_builder/build_service.rb', line 36 def transpile_fragment(target) return "" unless @definition.fragment_block source_resolver.fragment_code(target) end |
#transpile_helpers(target) ⇒ Object
42 43 44 45 46 |
# File 'lib/rlsl/shader_builder/build_service.rb', line 42 def transpile_helpers(target) return "" unless @definition.helpers_block source_resolver.helpers_code(target) end |