Module: RLSL
- Defined in:
- lib/rlsl.rb,
lib/rlsl/types.rb,
lib/rlsl/version.rb,
lib/rlsl/msl/shader.rb,
lib/rlsl/prism/ir/node.rb,
lib/rlsl/types/catalog.rb,
lib/rlsl/code_generator.rb,
lib/rlsl/msl/translator.rb,
lib/rlsl/prism/builtins.rb,
lib/rlsl/runtime_shader.rb,
lib/rlsl/shader_builder.rb,
lib/rlsl/base_translator.rb,
lib/rlsl/compiled_shader.rb,
lib/rlsl/glsl/translator.rb,
lib/rlsl/types/type_spec.rb,
lib/rlsl/uniform_context.rb,
lib/rlsl/wgsl/translator.rb,
lib/rlsl/function_context.rb,
lib/rlsl/prism/transpiler.rb,
lib/rlsl/prism/ast_visitor.rb,
lib/rlsl/prism/source_unit.rb,
lib/rlsl/prism/ir/traversal.rb,
lib/rlsl/prism/ir/definitions.rb,
lib/rlsl/prism/ir/expressions.rb,
lib/rlsl/prism/type_inference.rb,
lib/rlsl/prism/ir/control_flow.rb,
lib/rlsl/types/target_resolver.rb,
lib/rlsl/prism/compilation_unit.rb,
lib/rlsl/prism/source_extractor.rb,
lib/rlsl/types/value_normalizer.rb,
lib/rlsl/prism/emitters/c_emitter.rb,
lib/rlsl/prism/source_unit/parser.rb,
lib/rlsl/msl/uniform_buffer_packer.rb,
lib/rlsl/prism/emitters/msl_emitter.rb,
lib/rlsl/base_translator/call_parser.rb,
lib/rlsl/code_generator/math_prelude.rb,
lib/rlsl/prism/emitters/base_emitter.rb,
lib/rlsl/prism/emitters/glsl_emitter.rb,
lib/rlsl/prism/emitters/wgsl_emitter.rb,
lib/rlsl/base_translator/code_scanner.rb,
lib/rlsl/prism/builtins/swizzle_rules.rb,
lib/rlsl/shader_builder/build_service.rb,
lib/rlsl/base_translator/code_rewriter.rb,
lib/rlsl/prism/builtins/operator_rules.rb,
lib/rlsl/prism/emitters/target_emitter.rb,
lib/rlsl/prism/emitters/target_profile.rb,
lib/rlsl/shader_builder/source_resolver.rb,
lib/rlsl/code_generator/template_context.rb,
lib/rlsl/prism/ast_visitor/scope_context.rb,
lib/rlsl/prism/builtins/function_registry.rb,
lib/rlsl/prism/type_inference/scope_stack.rb,
lib/rlsl/prism/type_inference/type_shapes.rb,
lib/rlsl/shader_builder/shader_definition.rb,
lib/rlsl/prism/target_capability_validator.rb,
lib/rlsl/prism/ast_visitor/visitor_registry.rb,
lib/rlsl/prism/type_inference/call_validator.rb,
lib/rlsl/prism/source_extractor/block_locator.rb,
lib/rlsl/code_generator/ruby_wrapper_generator.rb,
lib/rlsl/prism/ast_visitor/definition_visiting.rb,
lib/rlsl/prism/ast_visitor/expression_visiting.rb,
lib/rlsl/prism/type_inference/inferer_registry.rb,
lib/rlsl/prism/type_inference/type_environment.rb,
lib/rlsl/code_generator/uniform_struct_generator.rb,
lib/rlsl/prism/ast_visitor/control_flow_visiting.rb,
lib/rlsl/prism/type_inference/call_type_resolver.rb,
lib/rlsl/prism/type_inference/definition_inferer.rb,
lib/rlsl/prism/type_inference/expression_inferer.rb,
lib/rlsl/code_generator/shader_function_generator.rb,
lib/rlsl/prism/type_inference/field_type_resolver.rb,
lib/rlsl/shader_builder/native_extension_compiler.rb,
lib/rlsl/prism/type_inference/control_flow_inferer.rb,
lib/rlsl/prism/type_inference/collection_type_resolver.rb,
lib/rlsl/prism/emitters/base_emitter/statement_emission.rb,
lib/rlsl/prism/emitters/base_emitter/definition_emission.rb,
lib/rlsl/prism/emitters/base_emitter/expression_emission.rb,
lib/rlsl/prism/emitters/base_emitter/control_flow_emission.rb
Defined Under Namespace
Modules: CompiledShaders, GLSL, MSL, Prism, TypeMapping, UniformTypes, WGSL Classes: BaseTranslator, CodeGenerator, CompiledShader, FunctionContext, RuntimeShader, ShaderBuilder, UniformContext, UniformTypeSpec
Constant Summary collapse
- CACHE_DIR =
File.("~/.cache/rlsl/compiled")
- VERSION =
"1.0.0"- C_TYPES =
<<~C typedef struct { float x, y; } vec2; typedef struct { float x, y, z; } vec3; typedef struct { float x, y, z, w; } vec4; typedef struct { float m[4]; } mat2; typedef struct { float m[9]; } mat3; typedef struct { float m[16]; } mat4; typedef struct { void* data; int width; int height; } sampler2D; #define PI 3.14159265f #define TAU 6.28318530f C
- UNIFORM_TYPE_SPECS =
{ float: UniformTypeSpec.new( c_type: "float", glsl_type: "float", wgsl_type: "f32", msl_type: "float", wrapper_kind: :float, metal_alignment: 4, metal_size: 4, compiled_supported: true, runtime_supported: true, function_shorthand: true ), vec2: UniformTypeSpec.new( c_type: "vec2", glsl_type: "vec2", wgsl_type: "vec2<f32>", msl_type: "float2", wrapper_kind: :vector, vector_size: 2, metal_alignment: 8, metal_size: 8, compiled_supported: true, runtime_supported: true, function_shorthand: true ), vec3: UniformTypeSpec.new( c_type: "vec3", glsl_type: "vec3", wgsl_type: "vec3<f32>", msl_type: "float3", wrapper_kind: :vector, vector_size: 3, metal_alignment: 16, metal_size: 16, compiled_supported: true, runtime_supported: true, function_shorthand: true ), vec4: UniformTypeSpec.new( c_type: "vec4", glsl_type: "vec4", wgsl_type: "vec4<f32>", msl_type: "float4", wrapper_kind: :vector, vector_size: 4, metal_alignment: 16, metal_size: 16, compiled_supported: true, runtime_supported: true, function_shorthand: true ), int: UniformTypeSpec.new( c_type: "int", glsl_type: "int", wgsl_type: "i32", msl_type: "int", wrapper_kind: :int, metal_alignment: 4, metal_size: 4, compiled_supported: true, runtime_supported: true, function_shorthand: true ), bool: UniformTypeSpec.new( c_type: "int", glsl_type: "bool", wgsl_type: "bool", msl_type: "bool", wrapper_kind: :bool, metal_alignment: 4, metal_size: 4, compiled_supported: true, runtime_supported: true, function_shorthand: true ), mat2: UniformTypeSpec.new( c_type: "mat2", glsl_type: "mat2", wgsl_type: "mat2x2<f32>", msl_type: "float2x2", compiled_supported: false, runtime_supported: false, function_shorthand: true ), mat3: UniformTypeSpec.new( c_type: "mat3", glsl_type: "mat3", wgsl_type: "mat3x3<f32>", msl_type: "float3x3", compiled_supported: false, runtime_supported: false, function_shorthand: true ), mat4: UniformTypeSpec.new( c_type: "mat4", glsl_type: "mat4", wgsl_type: "mat4x4<f32>", msl_type: "float4x4", compiled_supported: false, runtime_supported: false, function_shorthand: true ), sampler2D: UniformTypeSpec.new( c_type: "sampler2D", glsl_type: "sampler2D", wgsl_type: "texture_2d<f32>", msl_type: nil, compiled_supported: false, runtime_supported: false, function_shorthand: true ) }.transform_values(&:freeze).freeze
- UNIFORM_TYPES =
UNIFORM_TYPE_SPECS.keys.freeze
Class Method Summary collapse
- .cache_dir ⇒ Object
- .define(name, &block) ⇒ Object
- .define_metal(name, &block) ⇒ Object
- .to_glsl(name, version: "450", &block) ⇒ Object
- .to_wgsl(name, &block) ⇒ Object
Class Method Details
.cache_dir ⇒ Object
41 42 43 44 45 46 |
# File 'lib/rlsl.rb', line 41 def cache_dir @cache_dir ||= begin FileUtils.mkdir_p(CACHE_DIR) CACHE_DIR end end |
.define(name, &block) ⇒ Object
25 26 27 |
# File 'lib/rlsl.rb', line 25 def define(name, &block) build_shader(name, &block).compile_and_load end |
.define_metal(name, &block) ⇒ Object
29 30 31 |
# File 'lib/rlsl.rb', line 29 def (name, &block) build_shader(name, &block). end |
.to_glsl(name, version: "450", &block) ⇒ Object
37 38 39 |
# File 'lib/rlsl.rb', line 37 def to_glsl(name, version: "450", &block) build_shader(name, &block).build_glsl_shader(version: version) end |
.to_wgsl(name, &block) ⇒ Object
33 34 35 |
# File 'lib/rlsl.rb', line 33 def to_wgsl(name, &block) build_shader(name, &block).build_wgsl_shader end |