function crtMushroom: TGeoBase;
var
i, i2, j: Integer;
lp: Integer;
c: TVecArray;
cc: Integer;
s: Integer;
m: TMatrix;
v: TVec;
gb, gb2: TGeoBase;
begin
Result.Clear;
s:=16;
SetLength(c, 7);
c[0]:=Vec(0,-0.1,0);
c[1]:=Vec(-0.15,0,0);
c[2]:=Vec(-0.175,0.15,0);
c[3]:=Vec(-0.225,0.4,0);
c[4]:=Vec(-0.175,0.8,0);
c[5]:=Vec(-0.15,1.2,0);
c[6]:=Vec(-0.15,1.3,0);
gb.Clear;
gb.Modifier_ExtrudeLattice(c, s);
gb.Modifier_TransformTex0(MatOff(MatScl(0.99), Vec(0.5, 0.5)));
gb.Modifier_MapAtlas(2, 2, 1, 0);
gb.Modifier_SmoothGrp(1);
Result.add(gb);
SetLength(c, 4);
c[0]:=Vec(-0.15,1.3,0);
c[1]:=Vec(-0.16,1.3,0);
c[2]:=Vec(-0.6,1.3,0);
c[3]:=Vec(-0.9,0.9,0);
gb.Clear;
gb.Modifier_ExtrudeLattice(c, s);
gb.Modifier_TransformTex0(MatScl(1,0.02,1));
gb.Modifier_SmoothGrp(2);
gb.Modifier_TransformTex0(MatOff(MatScl(0.99), Vec(0.5, 0.5)));
gb.Modifier_MapAtlas(2, 2, 0, 1);
Result.add(gb);
SetLength(c, 4);
c[0]:=Vec(-0.9,0.9,0);
c[1]:=Vec(-0.8,1.3,0);
c[2]:=Vec(-0.3,1.6,0);
c[3]:=Vec( 0.0,1.6,0);
gb.Clear;
gb.Modifier_ExtrudeLattice(c, s);
gb.Modifier_SmoothGrp(4);
Result.add(gb);
Result.Modifier_Weld(lt_Position);
Result.Modifier_Subdivide(1, true, false);
Result.Modifier_Noise2(MatScl(1,0.2,1), Vec(0.5,1,0.5)*0.5, 4);
Result.Modifier_Subdivide(1, true, false);
gb_Sel:=st_Intersect;
lp:=Result.FindLayer(lt_Position);
Result.Layer[lp].SelP_Clear;
Result.Layer[lp].SelP_ByGrp(4);
gb:=CutGeoBase_SelP(Result);
gb.Modifier_MapPlanar(MatScl(0.59)*MatRotX(pi/2)*MatPos(0.5, 0.5, 0));
gb.Modifier_MapAtlas(2, 2, 0, 0);
Result.add(gb);
SetLength(c, 3);
c[0]:=Vec( 0,1.0,0);
c[1]:=Vec(-0.3,0.95,0);
c[2]:=Vec(-0.45,0.7,0);
gb.Clear;
gb.Modifier_ExtrudeLattice(c, s);
gb.Modifier_SmoothGrp(1);
SetLength(c, 3);
c[0]:=Vec(-0.45,0.7,0);
c[1]:=Vec(-0.3,0.95,0);
c[2]:=Vec( 0,1.05,0);
gb2.Clear;
gb2.Modifier_ExtrudeLattice(c, s);
gb2.Modifier_SmoothGrp(2);
gb.add(gb2);
gb.Modifier_TransformTex0(MatScl(1,0.02,1));
gb.Modifier_Weld(lt_Position);
gb.Modifier_Subdivide(1, true, false);
gb.Modifier_Noise2(MatScl(3), Vec(0.5,1,0.5)*0.5, 4);
gb.Modifier_Subdivide(1, true, false);
gb.Modifier_TransformTex0(MatOff(MatScl(0.99), Vec(0.5, 0.5)));
gb.Modifier_MapAtlas(2, 2, 0, 1);
Result.add(gb);
end;