public void renderTo(Rendering rendering) {
    
    //  First, we need to determine what the 'perp' angle should be (as in,
    //  perpendicular to the line of the beam, as perceived by the viewer.)
    perp.setTo(line.setTo(target).sub(origin)) ;
    line.normalise() ;
    rendering.port.viewMatrix(perp) ;
    perp.set(perp.y, -perp.x, 0) ;
    rendering.port.viewInvert(perp) ;
    perp.normalise().scale(model.width) ;
    
    //  Alright.  Based on time elapsed, divided by period, you should have a
    //  certain number of missiles in flight.
    final float distance = origin.distance(target), numParts, partLen ;
    if (model.period <= 0) {
      numParts = 1 ;
      partLen = distance ;
    }
    else {
      numParts = time / model.period ;
      partLen = model.length ;
    }

    //  Now render the beam itself-
    final Colour c = this.colour ;
    final float f = this.fog ;
    GL11.glColor4f(c.r * f, c.g * f, c.b * f, c.a) ;
    
    for (float n = numParts ; n-- > 0 ;) {
      final float progress = partLen * n ;
      final float lift = progress / distance ;
      
      start.setTo(line).scale(progress).add(origin) ;
      start.z += lift * (1 - lift) * (distance * model.arc) ;
      end.setTo(line).scale(partLen).add(start) ;
      
      if (end.distance(origin) > distance) {
        if (progress > distance) break ;
        else end.setTo(target) ;
      }
      if (progress < 0) start.setTo(origin) ;
      
      verts[0].setTo(start).add(perp) ;
      verts[1].setTo(end  ).add(perp) ;
      verts[2].setTo(end  ).sub(perp) ;
      verts[3].setTo(start).sub(perp) ;
      renderTex(verts, model.tex) ;
      
      if (! model.repeats) break ;
    }
    GL11.glColor4f(1, 1, 1, 1) ;
  }