Self organized random dichotomic "sunny" trees. New twig is rejected if it is shadowed (there is a neighbour above). 128×128 array is used to store top heights. As by product of shadowing test we get simple 128×128 shadow map texture. More simple demo.
A few tens of trees with fixed level of details overload PC. To make real forest we need adaptive GPU based LOD, spline patches and tesselation shaders (in WebGL 2+ :)