   equivalent function in OpenGL is glLoadIdentity()"
   []
   (.resetMatrix (current-surface)))
+
+(def ^{:private true}
+     shader-modes {:points PApplet/POINTS
+                   :lines PApplet/LINES
+                   :triangles PApplet/TRIANGLES})
+
+(defn
+  ^{:requires-bindings true
+    :processing-name "resetShader()"
+    :category "Rendering"
+    :subcategory "Shaders"
+    :added "2.0"}
+  reset-shader
+  "Restores the default shaders. Code that runs after (reset-shader) will
+  not be affected by previously defined shaders. Optional 'kind' parameter -
+  type of shader, either :points, :lines, or :triangles"
+  ([] (.resetShader (current-surface)))
+  ([kind]
+    (let [mode (resolve-constant-key kind shader-modes)]
+      (.resetShader (current-surface) mode))))
 
 (defn
   ^{:requires-bindings true

  image."
  [x y ^PImage src]
  (.set (current-surface) (int x) (int y) src))

(defn
  ^{:requires-bindings true

    :added "1.0"}
  display-filter
  "Originally named filter in Processing Language.
  Filters the display window with the specified mode and level or using
  given shader (only in :p2d and :p3d modes). Level defines the quality
  of the filter and mode may be one of the following keywords:

  :threshold - converts the image to black and white pixels depending
               if they are above or below the threshold defined by
