Module: RLSL::UniformTypes::ValueNormalizer
- Included in:
- RLSL::UniformTypes
- Defined in:
- lib/rlsl/types/value_normalizer.rb
Instance Method Summary collapse
- #normalize_bool(value, name:, shader_name: nil) ⇒ Object
- #normalize_value(type, value, name:, shader_name: nil) ⇒ Object
- #normalize_values(uniform_types, uniforms, shader_name: nil) ⇒ Object
- #normalize_vector(value, vector_size, name:, shader_name: nil) ⇒ Object
Instance Method Details
#normalize_bool(value, name:, shader_name: nil) ⇒ Object
42 43 44 45 46 47 48 |
# File 'lib/rlsl/types/value_normalizer.rb', line 42 def normalize_bool(value, name:, shader_name: nil) return value if value == true || value == false return false if value == 0 return true if value == 1 raise ArgumentError, (name, :bool, value, shader_name) end |
#normalize_value(type, value, name:, shader_name: nil) ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/rlsl/types/value_normalizer.rb', line 16 def normalize_value(type, value, name:, shader_name: nil) return value if type.nil? spec = fetch(type) raise ArgumentError, (type, shader_name) unless spec.runtime_supported? case spec.wrapper_kind when :float Float(value) when :int Integer(value) when :bool normalize_bool(value, name: name, shader_name: shader_name) when :vector normalize_vector(value, spec.vector_size, name: name, shader_name: shader_name) else raise ArgumentError, (type, shader_name) end rescue TypeError raise ArgumentError, (name, type, value, shader_name) rescue ArgumentError => e raise e if e..start_with?("Invalid value for uniform", "Unsupported runtime uniform type") raise ArgumentError, (name, type, value, shader_name) end |
#normalize_values(uniform_types, uniforms, shader_name: nil) ⇒ Object
6 7 8 9 10 11 12 13 14 |
# File 'lib/rlsl/types/value_normalizer.rb', line 6 def normalize_values(uniform_types, uniforms, shader_name: nil) uniform_types.each_with_object({}) do |(name, type), normalized| unless uniforms.key?(name) raise ArgumentError, (name, shader_name) end normalized[name] = normalize_value(type, uniforms[name], name: name, shader_name: shader_name) end end |
#normalize_vector(value, vector_size, name:, shader_name: nil) ⇒ Object
50 51 52 53 54 55 56 |
# File 'lib/rlsl/types/value_normalizer.rb', line 50 def normalize_vector(value, vector_size, name:, shader_name: nil) unless value.is_a?(Array) && value.length == vector_size raise ArgumentError, (name, vector_size, value, shader_name) end value.map { |component| Float(component) } end |