commit 53de44379a48da4e8d798ee33152db6cdc739900
Author: leszek <leszek@koltunski.pl>
Date:   Fri May 12 23:55:23 2017 +0100

    1. Correct some bugs in DistortedRenderState
    2. Thus make the Stencil App work
    3. New icon for it

diff --git a/src/main/java/org/distorted/examples/stencil/StencilRenderer.java b/src/main/java/org/distorted/examples/stencil/StencilRenderer.java
index 941ce50..ff98b60 100644
--- a/src/main/java/org/distorted/examples/stencil/StencilRenderer.java
+++ b/src/main/java/org/distorted/examples/stencil/StencilRenderer.java
@@ -54,7 +54,6 @@ class StencilRenderer implements GLSurfaceView.Renderer
     private DistortedTexture mCubeTex, mFloorTex;
     private DistortedEffects mCube1Effects, mCube2Effects, mFloorEffects;
     private MeshObject mCubeMesh, mFloorMesh;
-    private DistortedNode mCube1Node, mCube2Node, mFloorNode;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -74,26 +73,26 @@ class StencilRenderer implements GLSurfaceView.Renderer
 
       mCube2Effects.brightness(new Static1D(0.5f));
 
-      mCube1Node = new DistortedNode(mCubeTex ,mCube1Effects,mCubeMesh );
-      mCube2Node = new DistortedNode(mCubeTex ,mCube2Effects,mCubeMesh );
-      mFloorNode = new DistortedNode(mFloorTex,mFloorEffects,mFloorMesh);
+      DistortedNode cube1Node = new DistortedNode(mCubeTex ,mCube1Effects,mCubeMesh );
+      DistortedNode cube2Node = new DistortedNode(mCubeTex ,mCube2Effects,mCubeMesh );
+      DistortedNode floorNode = new DistortedNode(mFloorTex,mFloorEffects,mFloorMesh);
 
-      mFloorNode.glEnable(GLES30.GL_STENCIL_TEST);                               // Enable Stencil when rendering this Node
-      mFloorNode.glStencilFunc(GLES30.GL_ALWAYS, 1, 0xFF);                       // Set any stencil to 1
-      mFloorNode.glStencilOp(GLES30.GL_KEEP, GLES30.GL_KEEP, GLES30.GL_REPLACE); // replace with 1 when we fail Depth test
-      mFloorNode.glStencilMask(0xFF);                                            // Write to stencil buffer
-      mFloorNode.glDepthMask(false);                                             // Don't write to depth buffer
-      mFloorNode.glClear(GLES30.GL_STENCIL_BUFFER_BIT);                          // Clear stencil buffer (0 by default)
+      floorNode.glEnable(GLES30.GL_STENCIL_TEST);                               // Enable Stencil when rendering this Node
+      floorNode.glStencilFunc(GLES30.GL_ALWAYS, 1, 0xFF);                       // Set any stencil to 1
+      floorNode.glStencilOp(GLES30.GL_KEEP, GLES30.GL_KEEP, GLES30.GL_REPLACE); // replace with 1 when we fail Depth test
+      floorNode.glStencilMask(0xFF);                                            // Write to stencil buffer
+      floorNode.glDepthMask(false);                                             // Don't write to depth buffer
+      floorNode.glClear(GLES30.GL_STENCIL_BUFFER_BIT);                          // Clear stencil buffer (0 by default)
 
-      mCube2Node.glEnable(GLES30.GL_STENCIL_TEST);                               // Enable Stencil when rendering this Node
-      mCube2Node.glStencilFunc(GLES30.GL_EQUAL, 1, 0xFF);                        // Pass test if stencil value is 1
-      mCube2Node.glStencilMask(0x00);                                            // Don't write anything to stencil buffer
-      mCube2Node.glDepthMask(true);                                              // Write to depth buffer
+      cube2Node.glEnable(GLES30.GL_STENCIL_TEST);                               // Enable Stencil when rendering this Node
+      cube2Node.glStencilFunc(GLES30.GL_EQUAL, 1, 0xFF);                        // Pass test if stencil value is 1
+      cube2Node.glStencilMask(0x00);                                            // Don't write anything to stencil buffer
+      cube2Node.glDepthMask(true);                                              // Write to depth buffer
 
       mScreen = new DistortedScreen();
-      mScreen.attach(mCube1Node);
-      mScreen.attach(mFloorNode);
-      mScreen.attach(mCube2Node);
+      mScreen.attach(cube1Node);
+      mScreen.attach(floorNode);
+      mScreen.attach(cube2Node);
       mScreen.glClearColor(1.0f,1.0f,1.0f,1.0f);
       }
 
diff --git a/src/main/java/org/distorted/examples/stencil/StencilSurfaceView.java b/src/main/java/org/distorted/examples/stencil/StencilSurfaceView.java
index 39ff359..8092a25 100644
--- a/src/main/java/org/distorted/examples/stencil/StencilSurfaceView.java
+++ b/src/main/java/org/distorted/examples/stencil/StencilSurfaceView.java
@@ -36,6 +36,7 @@ class StencilSurfaceView extends GLSurfaceView
       final ActivityManager activityManager     = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
       final ConfigurationInfo configurationInfo = activityManager.getDeviceConfigurationInfo();
       setEGLContextClientVersion( (configurationInfo.reqGlEsVersion>>16) >= 3 ? 3:2 );
+      setEGLConfigChooser(5,6,5,0,16,8);       // 16 bit depth, 8 bit STENCIL
       setRenderer(new StencilRenderer(this));
       }
 }
diff --git a/src/main/res/drawable-hdpi/icon_example_stencil.png b/src/main/res/drawable-hdpi/icon_example_stencil.png
index 3d73dbc..3ff1318 100644
Binary files a/src/main/res/drawable-hdpi/icon_example_stencil.png and b/src/main/res/drawable-hdpi/icon_example_stencil.png differ
