rem: GeometryPtr geo1 = makeLatLongSphereGeo(50, 50, 1.0f);
add: GeometryPtr geo1 = makeLatLongSphereGeo(50, 50, 100.0f);
context: int main(int argc, char **argv){    // OSG init    osgInit(argc,argv);    // GLUT init    glutInit(&argc, argv);    glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE);    int winid = glutCreateWindow("OpenSG CGFX Shader");    // the connection between GLUT and OpenSG    _gwin = GLUTWindow::create();    _gwin->setId(winid);    _gwin->setSize( 800, 800 );    _gwin->init();    // init callbacks    glutSetWindow(winid);    glutReshapeFunc(reshape);    glutDisplayFunc(display);    glutMouseFunc(mouse);    glutMotionFunc(motion);    glutKeyboardFunc(keyboard);    const char *effectFile = "BumpGlossedShiny.fx";    if(argc > 1)    {        effectFile = argv[1];    }    _cgfxmat = CGFXMaterial::create();    beginEditCP(_cgfxmat);        _cgfxmat->setEffectFile(effectFile);        // this multipass technique leads to a render bug, I have no idea what's wrong :-(        //_cgfxmat->setTechnique(1);    endEditCP(_cgfxmat);    ChunkMaterialPtr mat2 = ChunkMaterial::create();    MaterialChunkPtr matc = MaterialChunk::create();    beginEditCP(matc);        matc->setDiffuse(Color4f(1, 0, 0, 1));    endEditCP(matc);    beginEditCP(mat2);        mat2->addChunk(matc);        //mat2->addChunk(texc);    endEditCP(mat2);    // create root node    _scene = Node::create();    GeometryPtr geo1 = makeLatLongSphereGeo(50, 50, 1.0f);        OSG::calcVertexTangents(geo1, 0, Geometry::TexCoords1FieldId, Geometry::TexCoords2FieldId);    beginEditCP( geo1, Geometry::MaterialFieldMask);        geo1->setMaterial(_cgfxmat);    endEditCP(geo1, Geometry::MaterialFieldMask);    NodePtr sphere1 = Node::create();    beginEditCP(sphere1, Node::CoreFieldMask);        sphere1->setCore(geo1);    endEditCP(sphere1, Node::CoreFieldMask);    TransformPtr trans1 = Transform::create();    beginEditCP(trans1);        trans1->getMatrix().setTranslate(-2 , 0, 0);    endEditCP(trans1);    NodePtr transn1 = Node::create();    beginEditCP(transn1);        transn1->setCore(trans1);        transn1->addChild(sphere1);    beginEditCP(transn1);    //    GeometryPtr geo2 = makeLatLongSphereGeo(50, 50, 1.0f);        beginEditCP( geo2, Geometry::MaterialFieldMask);        geo2->setMaterial(mat2);    endEditCP(geo2, Geometry::MaterialFieldMask);    NodePtr sphere2 = Node::create();    beginEditCP(sphere2, Node::CoreFieldMask);        sphere2->setCore(geo2);    endEditCP(sphere2, Node::CoreFieldMask);    TransformPtr trans2 = Transform::create();    beginEditCP(trans2);        trans2->getMatrix().setTranslate(2 , 0, 0);    endEditCP(trans2);    NodePtr transn2 = Node::create();    beginEditCP(transn2);        transn2->setCore(trans2);        transn2->addChild(sphere2);    beginEditCP(transn2);    beginEditCP(_scene);        _scene->setCore(Group::create());        _scene->addChild(transn1);        _scene->addChild(transn2);    endEditCP(_scene);    // create the SimpleSceneManager    _mgr = new SimpleSceneManager;    // tell the manager what to manage    _mgr->setWindow(_gwin);    _mgr->setRoot(_scene);    // show the whole scene    _mgr->showAll();    // create a gradient background.    GradientBackgroundPtr gback = GradientBackground::create();    beginEditCP(gback, GradientBackground::LineFieldMask);        gback->clearLines();        gback->addLine(Color3f(0.7, 0.7, 0.8), 0);        gback->addLine(Color3f(0.0, 0.1, 0.3), 1);    endEditCP(gback, GradientBackground::LineFieldMask);    WindowPtr win = _mgr->getWindow();    beginEditCP(win);        for(int i=0;i<win->getPort().size();++i)        {            ViewportPtr vp = win->getPort()[i];            beginEditCP(vp);                vp->setBackground(gback);            endEditCP(vp);        }    endEditCP(win);    // GLUT main loop    glutMainLoop();    return 0;}