 
 (defmethod luxvalue :float-vec
   [_ id xs]
-  (format "\"float\" \"%s\" [%s]\n"
+  (format "\"float %s\" [%s]\n"
           (name id)
-          (apply str (interpose " " (map #(format "%1.8f" %) xs)))))
+          (apply str (interpose " " (map #(format "%1.8f" (float %)) xs)))))
 
 (defmethod luxvalue :int
   [_ id x] (format "\"integer %s\" [%d]\n" (name id) (int x)))
 
+(defmethod luxvalue :int-vec
+  [_ id xs]
+  (format "\"integer %s\" [%s]\n"
+          (name id)
+          (apply str (interpose " " (map #(format "%d" (int %)) xs)))))
+
+(defmethod luxvalue :point-vec
+  [_ id xs]
+  (format "\"point %s\" [%s]\n"
+          (name id)
+          (apply str (interpose " " (map #(format "%1.8f" (float %)) (mapcat identity xs))))))
+
 (defmethod luxvalue :bool
   [_ id x] (format "\"bool %s\" [\"%b\"]\n" (name id) x))
 

     :write_tga_channels [:string tga-channels]
     :ldr_clamp_method [:string ldr-method]
     :writeinterval [:int write-interval]
     :filmwriteinterval [:int write-interval]
     :displayinterval [:int display-interval]
     :haltspp [:int halt-spp]
     :halttime [:int halt-time]

  ([scene group id opts singleton?]
     (-> (if singleton? (dissoc scene group) scene)
         (assoc-in [group id] (or opts {})))))

(defn scene-comments
  [scene & comments]
  (update-in scene [:comments] (fnil into []) comments))

(defn include-headers
  [scene & paths]
  (update-in scene [:includes :headers] (fnil into []) paths))

(defn include-partials
  [scene & paths]
  (update-in scene [:includes :partials] (fnil into []) paths))

(defn material-null
  [scene id]
