Class: Rays::Shader

Inherits:
Object
  • Object
show all
Defined in:
lib/rays/shader.rb

Instance Method Summary collapse

Constructor Details

#initialize(fragment_shader_source, vertex_shader_source = nil, builtin_variable_names = nil, ignore_no_uniform_location_error: false, **uniforms, &block) ⇒ Shader

Returns a new instance of Shader.



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/rays/shader.rb', line 10

def initialize(
  fragment_shader_source,
  vertex_shader_source   = nil,
  builtin_variable_names = nil,
  ignore_no_uniform_location_error: false,
  **uniforms, &block)

  setup(
    fragment_shader_source, vertex_shader_source,
    builtin_variable_names&.values_at(
      :attribute_position, :attribute_texcoord, :attribute_color,
        :varying_position,   :varying_texcoord,   :varying_color,
      :uniform_position_matrix, :uniform_texcoord_matrix,
      :uniform_texcoord_min, :uniform_texcoord_max, :uniform_texcoord_offset,
      :uniform_texture),
    ignore_no_uniform_location_error)

  uniform(**uniforms) unless uniforms.empty?

  Xot::BlockUtil.instance_eval_or_block_call self, &block if block
end

Instance Method Details

#uniform(name = nil, *args, **uniforms) ⇒ Object



32
33
34
35
36
37
# File 'lib/rays/shader.rb', line 32

def uniform(name = nil, *args, **uniforms)
  set_uniform name, *args if name
  uniforms.each do |key, value|
    set_uniform key, value
  end
end