Sha256: 3d454c9969b9c37601e81e750a8ecd1c029fe03b7c9a31dfd33827721e85bb3f

Contents?: true

Size: 1.04 KB

Versions: 20

Compression:

Stored size: 1.04 KB

Contents

require 'xot/block_util'
require 'rays/ext'


module Rays


  class Shader

    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

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

  end# Shader


end# Rays

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
rays-0.3.3 lib/rays/shader.rb
rays-0.3.2 lib/rays/shader.rb
rays-0.3.1 lib/rays/shader.rb
rays-0.3 lib/rays/shader.rb
rays-0.2.1 lib/rays/shader.rb
rays-0.2 lib/rays/shader.rb
rays-0.1.49 lib/rays/shader.rb
rays-0.1.48 lib/rays/shader.rb
rays-0.1.47 lib/rays/shader.rb
rays-0.1.46 lib/rays/shader.rb
rays-0.1.45 lib/rays/shader.rb
rays-0.1.44 lib/rays/shader.rb
rays-0.1.43 lib/rays/shader.rb
rays-0.1.42 lib/rays/shader.rb
rays-0.1.40 lib/rays/shader.rb
rays-0.1.39 lib/rays/shader.rb
rays-0.1.38 lib/rays/shader.rb
rays-0.1.37 lib/rays/shader.rb
rays-0.1.36 lib/rays/shader.rb
rays-0.1.35 lib/rays/shader.rb