init = () ->

  white = new PXL.Colour.RGBA.WHITE()

  v0 = new PXL.Geometry.Vertex 
    p : new PXL.Math.Vec3(-1,-1,0)
  
  v1 = new PXL.Geometry.Vertex
    p : new PXL.Math.Vec3( 0, 1,0)

  v2 = new PXL.Geometry.Vertex 
    p : new PXL.Math.Vec3( 1,-1,0)

  t = new PXL.Geometry.Triangle v0,v1,v2

  q = new PXL.Geometry.Quad()

  q.vertices[0].c = new PXL.Colour.RGBA 1.0, 0.0, 0.0, 1.0
  q.vertices[1].c = new PXL.Colour.RGBA 0.0, 1.0, 0.0, 1.0
  q.vertices[2].c = new PXL.Colour.RGBA 0.0, 0.0, 1.0, 1.0

  @n0 = new PXL.Node t
  @n1 = new PXL.Node q
  @n2 = new PXL.Node t

  @n0.add @n2

  @n0.matrix.translate new PXL.Math.Vec3(-1.1,0,0)
  @n1.matrix.translate new PXL.Math.Vec3(1.1,0,0)

  @n2.matrix.scale new PXL.Math.Vec3(0.5,0.5,0.5)
  @n2.matrix.translate new PXL.Math.Vec3(0.0,1.5,0.0)

  @c = new PXL.Camera.PerspCamera()

  uniformMaterial = new PXL.Material.BasicColourMaterial white
  @n0.add uniformMaterial

  vertexMaterial = new PXL.Material.VertexColourMaterial()
  @n1.add vertexMaterial

  @topnode = new PXL.Node
  @topnode.add @n0
  @topnode.add @n1
  @topnode.add @c

  uber = new PXL.GL.UberShader @topnode
  @topnode.add uber


draw = () ->
  
  GL.clearColor(0.15, 0.15, 0.15, 1.0)
  GL.clear(GL.COLOR_BUFFER_BIT | GL.DEPTH_BUFFER_BIT)

  @topnode.draw()


params = 
  canvas : 'webgl-canvas'
  context : @
  init : init
  debug : true
  draw : draw

cgl = new PXL.App params