commit 410dfc37d4121c1aa06a8444c8c7128e92bf5444
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Thu May 7 00:52:24 2020 +0100

    Convert ObjectTree to stretchless API.

diff --git a/src/main/java/org/distorted/examples/objecttree/ObjectTreeRenderer.java b/src/main/java/org/distorted/examples/objecttree/ObjectTreeRenderer.java
index 5b8165a..bfbe2bb 100644
--- a/src/main/java/org/distorted/examples/objecttree/ObjectTreeRenderer.java
+++ b/src/main/java/org/distorted/examples/objecttree/ObjectTreeRenderer.java
@@ -30,6 +30,7 @@ import org.distorted.examples.R;
 import org.distorted.library.effect.FragmentEffectChroma;
 import org.distorted.library.effect.MatrixEffectRotate;
 import org.distorted.library.effect.MatrixEffectScale;
+import org.distorted.library.effect.VertexEffectScale;
 import org.distorted.library.effect.VertexEffectSink;
 import org.distorted.library.main.DistortedEffects;
 import org.distorted.library.main.DistortedFramebuffer;
@@ -56,7 +57,7 @@ import android.opengl.GLSurfaceView;
 class ObjectTreeRenderer implements GLSurfaceView.Renderer
 {
    private static final int NODE_FBO_SIZE = 300;
-   private static final int GRID = 20;
+   private static final int GRID = 10;
 
    private GLSurfaceView mView;
    private DistortedEffects mEffectsNode, mEffectsGrid;
@@ -97,10 +98,13 @@ class ObjectTreeRenderer implements GLSurfaceView.Renderer
       MatrixEffectRotate rotate = new MatrixEffectRotate(rotDyn, new Static3D(1,0,0), new Static3D(0,0,0));
       mEffectsGrid.apply(rotate);
 
+      VertexEffectScale vScale = new VertexEffectScale( new Static3D(GRID,GRID,1) );
+      mEffectsGrid.apply(vScale);
+
       Dynamic1D sinkDyn = new Dynamic1D(3000,0.0f);
       sinkDyn.add(new Static1D(1.0f));
       sinkDyn.add(new Static1D(0.3f));
-      VertexEffectSink sink = new VertexEffectSink(sinkDyn, new Static3D(0,0,0), new Static4D(0,0,0,10) );
+      VertexEffectSink sink = new VertexEffectSink(sinkDyn, new Static3D(0,0,0), new Static4D(0,0,0,GRID*0.5f) );
       mEffectsGrid.apply(sink);
 
       mScreen = new DistortedScreen();
@@ -139,10 +143,7 @@ class ObjectTreeRenderer implements GLSurfaceView.Renderer
     
    public void onSurfaceChanged(GL10 glUnused, int width, int height)
       {
-      float hor   = width /mLisaAspectRatio;
-      float ver   = height;
-      float factor= hor>ver ? ver : hor;
-
+      float factor= Math.min(width/mLisaAspectRatio, height);
       mScale.set( factor,factor,factor );
       mScreen.resize(width, height);
       }
@@ -185,12 +186,7 @@ class ObjectTreeRenderer implements GLSurfaceView.Renderer
       final Static4D mapTB = new Static4D(0.0f,0.0f,1.0f     ,1.0f/GRID);
 
       if( mMeshQuad ==null ) mMeshQuad = new MeshQuad();
-      if( mMeshCubes==null )
-        {
-        mMeshCubes= new MeshCubes(GRID,GRID,1, mapFB, mapFB, mapLR, mapLR, mapTB, mapTB);
-        mMeshCubes.setStretch(GRID,GRID,1);
-        }
-
+      if( mMeshCubes==null ) mMeshCubes= new MeshCubes(GRID,GRID,1, mapFB, mapFB, mapLR, mapLR, mapTB, mapTB);
 
       mRoot = new DistortedNode(mLisaTexture, mEffectsNode, mMeshQuad);
       mRoot.resizeFBO(NODE_FBO_SIZE,NODE_FBO_SIZE);
@@ -201,6 +197,7 @@ class ObjectTreeRenderer implements GLSurfaceView.Renderer
       mScreen.detachAll();
       mScreen.attach(mRoot);
 
+      VertexEffectScale.enable();
       VertexEffectSink.enable();
       FragmentEffectChroma.enable();
 
