示例#1
0
    test( 'NodeVisitor Heavy Static Scene', function () {

        var root = new Node();
        mockupBench.addScene( root, 25, false, false );

        var timed = Timer.instance().tick();

        var visitor = new NodeVisitor();

        console.profile();
        console.time( 'time' );

        var nCount = 20;
        for ( var n = 0; n < nCount; n++ ) {
            visitor.apply( root );
        }

        console.timeEnd( 'time' );
        console.profileEnd();

        timed = Timer.instance().tick() - timed;

        reportStats( timed, 'Visitor Visiting' );

    } );
示例#2
0
文件: Utils.js 项目: Fav/learn_osgjs
    var fn = Notify.console.timeEnd || function ( name ) {

        if ( times[ name ] === undefined )
            return;

        var duration = Timer.instance().deltaM( times[ name ], Timer.instance().tick() );

        Notify.debug( name + ': ' + duration + 'ms' );
        times[ name ] = undefined;

    };
示例#3
0
    test('Full Frame ', function() {
        var canvas = mockup.createCanvas(true);
        var viewer = new mockup.Viewer(canvas);
        viewer.setupManipulator();
        viewer.init();
        viewer.frame();
        var cullVisitor = viewer
            .getCamera()
            .getRenderer()
            .getCullVisitor();
        var root = new Node();

        // dreaded camera no modelview
        cullVisitor.pushProjectionMatrix(mat4.create());
        cullVisitor.pushModelViewMatrix(mat4.create());
        cullVisitor.pushModelViewMatrix(mat4.create());

        mockupBench.addScene(root, 20, true, true);

        viewer.setSceneData(root);

        var fake = mat4.create();
        // dreaded camera no modelview
        cullVisitor.pushProjectionMatrix(fake);
        cullVisitor.pushModelViewMatrix(fake);
        cullVisitor.pushModelViewMatrix(fake);

        // first frame for warm start
        // shadercompil and averaged stuff
        for (var k = 0; k < 10; k++) {
            viewer.frame();
        }

        console.profile();
        console.time('time');

        var nCount = 20;
        var s = Timer.instance().tick();
        for (var n = 0; n < nCount; n++) {
            viewer.frame();
        }
        var result = Timer.instance().tick() - s;

        console.timeEnd('time');
        console.profileEnd();

        reportStats(result, 'perf Frame');
    });
示例#4
0
 flushDeletedTextureObjects: function ( gl, availableTime ) {
     // if no time available don't try to flush objects.
     if ( availableTime <= 0.0 ) return availableTime;
     var nbTextures = this._orphanedTextureObjects.length;
     // Should we use a maxSizeTexturePool value?
     //var size = this.getProfile().getSize();
     // We need to test if we have time to flush
     var elapsedTime = 0.0;
     var beginTime = Timer.instance().tick();
     var i;
     for ( i = 0; i < nbTextures && elapsedTime < availableTime; i++ ) {
         gl.deleteTexture( this._orphanedTextureObjects[ i ].id() );
         this._orphanedTextureObjects[ i ].reset();
         elapsedTime = Timer.instance().deltaS( beginTime, Timer.instance().tick() );
     }
     this._orphanedTextureObjects.splice( 0, i );
     return availableTime - elapsedTime;
 },
示例#5
0
    test('CullVisitor Heavy Static Scene with 1 light And Shadows ', function() {
        var canvas = mockup.createCanvas(true);
        var viewer = new mockup.Viewer(canvas);
        viewer.setupManipulator();
        viewer.init();
        viewer.frame();
        var cullVisitor = viewer
            .getCamera()
            .getRenderer()
            .getCullVisitor();
        var root = new Node();

        // dreaded camera no modelview
        cullVisitor.pushProjectionMatrix(mat4.create());
        cullVisitor.pushModelViewMatrix(mat4.create());
        cullVisitor.pushModelViewMatrix(mat4.create());

        mockupBench.addScene(root, 20, true, true);

        var fake = mat4.create();
        // dreaded camera no modelview
        cullVisitor.pushProjectionMatrix(fake);
        cullVisitor.pushModelViewMatrix(fake);
        cullVisitor.pushModelViewMatrix(fake);
        //            viewer.setSceneData( root );
        //          viewer.getCamera().addChild( root );
        // dreaded camera no modelview end

        console.profile();
        console.time('time');
        var timed = Timer.instance().tick();

        var nCount = 10;
        for (var n = 0; n < nCount; n++) {
            //
            cullVisitor.apply(root);
        }

        timed = Timer.instance().tick() - timed;
        console.timeEnd('time');
        console.profileEnd();

        reportStats(timed, 'Main CullVisitor Loop scene + shadow Loop');
    });
示例#6
0
FrameBufferObject.flushDeletedGLRenderBuffers = function ( gl, availableTime ) {

    // if no time available don't try to flush objects.
    if ( availableTime <= 0.0 ) return availableTime;

    if ( !FrameBufferObject._sDeletedGLRenderBufferCache.has( gl ) ) return availableTime;

    var elapsedTime = 0.0;
    var beginTime = Timer.instance().tick();
    var deleteList = FrameBufferObject._sDeletedGLRenderBufferCache.get( gl );
    var numBuffers = deleteList.length;

    for ( var i = numBuffers - 1; i >= 0 && elapsedTime < availableTime; i-- ) {
        gl.deleteRenderbuffer( deleteList[ i ] );
        deleteList.splice( i, 1 );
        elapsedTime = Timer.instance().deltaS( beginTime, Timer.instance().tick() );
    }

    return availableTime - elapsedTime;
};
示例#7
0
    test( 'IntersectVisitor Heavy Static Scene', function () {
        this.timeout( 20000 );

        var view = new View();
        view.getCamera().setViewport( new Viewport() );
        view.getCamera().setViewMatrix( Matrix.makeLookAt(
            Vec3.createAndSet( 0, 0, -10 ),
            Vec3.createAndSet( 0, 0, 0 ),
            Vec3.createAndSet( 0, 1, 0 ),
            Matrix.create() ) );
        view.getCamera().setProjectionMatrix( Matrix.makePerspective( 60, 800 / 600, 0.1, 100.0, Matrix.create() ) );

        // TODO it uses the old sync parseSceneGraphDeprecated
        var root = ReaderParser.parseSceneGraph( mockup.getScene() );
        view.setSceneData( root );

        mockupBench.addScene( root, 25, false, false );

        var treeBuilder = new KdTreeBuilder( {
            _numVerticesProcessed: 0,
            _targetNumTrianglesPerLeaf: 50,
            _maxNumLevels: 20
        } );
        treeBuilder.apply( root );


        var camera = new Camera();
        camera.setViewport( new Viewport() );
        camera.setViewMatrix( Matrix.makeLookAt(
            Vec3.createAndSet( 0, 0, -10 ),
            Vec3.createAndSet( 0, 0, 0 ),
            Vec3.createAndSet( 0, 1, 0 ), Matrix.create() ) );
        camera.setProjectionMatrix( Matrix.makePerspective( 60, 800 / 600, 0.1, 100.0, Matrix.create() ) );

        var result;
        var accum = 0;
        var nCount = 100;
        var x = new Array( nCount );
        var y = new Array( nCount );
        var n;
        for ( n = 0; n < nCount; n++ ) {
            x[ n ] = Math.random() * 800;
            y[ n ] = Math.random() * 600;
        }


        for ( n = 0; n < nCount; n++ ) {

            result = view.computeIntersections( x[ n ], y[ n ] );
            accum += result.length;

        }

        var timed = Timer.instance().tick();
        console.profile();
        console.time( 'time' );

        for ( n = 0; n < nCount; n++ ) {

            result = view.computeIntersections( x[ n ], y[ n ] );
            accum += result.length;

        }

        console.timeEnd( 'time' );
        console.profileEnd();
        timed = Timer.instance().tick() - timed;

        module.accum = accum; // keep the variable on a scope to avoid JIT otimimization and remove code
        reportStats( timed, 'IntersectVisitor Visiting' );
    } );
示例#8
0
文件: Utils.js 项目: Fav/learn_osgjs
 var fn = Notify.console.time || function ( name ) {
     times[ name ] = Timer.instance().tick();
 };