Sha256: 2548d00393314f75889983ae67aee5cd6edf73250c8ece15b44ada4e03c24a09

Contents?: true

Size: 1.04 KB

Versions: 2

Compression:

Stored size: 1.04 KB

Contents

require 'propane'

class BwShader < Propane::App
  # Texture from Jason Liebig's FLICKR collection of vintage labels and wrappers:
  # http://www.flickr.com/photos/jasonliebigstuff/3739263136/in/photostream/
  
  attr_reader :label, :can, :angle, :bw_shader
  
  def setup
    size(640, 360, P3D)
    @label = load_image('lachoy.jpg')
    @can = create_can(100, 200, 32, label)
    @bw_shader = load_shader('bwfrag.glsl')
    @angle = 0
  end
  
  def draw
    background(0)
    shader(bw_shader)
    translate(width/2, height/2)
    rotate_y(angle)
    shape(can)
    @angle += 0.01
  end
  
  def create_can(r, h, detail, tex)
    texture_mode(NORMAL)
    sh = create_shape
    sh.begin_shape(QUAD_STRIP)
    sh.no_stroke
    sh.texture(tex)
    (0..detail).each do |i|
      angle = TAU / detail
      x = sin(i * angle)
      z = cos(i * angle)
      u = i.to_f / detail
      sh.normal(x, 0, z)
      sh.vertex(x * r, -h/2, z * r, u, 0)
      sh.vertex(x * r, +h/2, z * r, u, 1)
    end
    sh.end_shape
    sh
  end
end

BwShader.new title: 'Black & White Shader'

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
propane-0.7.0-java examples/complete/bw_shader.rb
propane-0.6.0-java examples/complete/bw_shader.rb