anchor.diff:                             :shaders (list (make-instance 'lpsg:shader
                                                            :shader-type :vertex-shader
                                                            :source *vertex-shader-source*
  -                                                         :usets '(camera model))
  +                                                         :usets '(camera model light))
                                             (make-instance 'lpsg:shader
                                                            :shader-type :fragment-shader
                                                            :source *fragment-shader-source*
  
positive.code:   // add a temporary model and view transform
    vec4 modelPos = cameraMatrix * modelMatrix * in_Position;
    gl_Position = projectionMatrix * modelPos;
    float intense = max(dot(-in_Normal, lightDir.xyz), 0.0);
    theColor = intense * in_Color;
  }
  ")
  
negative.code: (lpsg:define-uset model (("modelMatrix" :float-mat4
                                          model-matrix :accessor model-matrix)))
  
  (lpsg:define-uset light (("lightDir" :float-vec4 light-direction :accessor light-direction)))
  
  (defclass cube-window (viewer-window lpsg:renderer)
    ((cube :accessor cube)
     (effect :accessor effect)
  