anchor.diff:             (env (make-instance 'lpsg:environment :program shader-program
                                  :attribute-map '((gl:vertex . "in_Position")
                                                   (gl:normal . "in_Normal"))
  -                               :uniform-sets (list *proj-uset*))))
  +                               :uniform-sets (list *proj-uset* *model-uset*))))
         (setf (cube window) cube)
         (setf (projection-matrix *proj-uset*)
               (compute-projection-matrix window (projection-type window) 1.0 10.0))
  +      (setf (model-matrix *model-uset*) (sb-cga:translate* 0.0 0.0 -5.0))
         (setf (effect window) (make-instance 'lpsg:simple-effect :environment env))
         (let ((buffer (make-instance 'lpsg:gl-buffer)) ;default size should be fine
               (alloc-size (lpsg:compute-buffer-allocation cube)))
  
positive.code: vec4 lightDir = vec4(-0.577350, -0.577350, -0.577350, 0);
  
  uniform mat4 projectionMatrix;
  
  void main()
  {
    // add a temporary model and view transform
    vec3 modelPos = in_Position + vec3(0.0, 0.0, -5.0) - vec3(0.25, 0.75, 0.0);
    gl_Position = projectionMatrix * vec4(modelPos, 1.0);
    float intense = max(dot(-in_Normal, lightDir.xyz), 0.0);
    theColor = intense * in_Color;
  }
  
negative.code:                            :shaders (list (make-instance 'lpsg:shader
                                                           :shader-type :vertex-shader
                                                           :source *vertex-shader-source*
                                                           :usets '(projection model))
                                            (make-instance 'lpsg:shader
                                                           :shader-type :fragment-shader
                                                           :source *fragment-shader-source*
  