Example #1
0
        ready = function () {
            var cnv = document.createElement( 'canvas' );
            cnv.setAttribute( 'width', 128 );
            cnv.setAttribute( 'height', 128 );
            var tcanvas = new Texture();
            tcanvas.setImage( cnv );

            var gl = mockup.createFakeRenderer();
            gl.createTexture = function () {
                return 1;
            }; // simulate texture creation
            var state = new State( new ShaderGeneratorProxy() );
            state.setGraphicContext( gl );

            // check is ready api
            var texture = new Texture();
            texture.setImage( greyscale._image );
            assert.isOk( texture.getImage().isReady() === true, 'Image is ready' );

            texture = new Texture();
            texture.setImage( cnv );
            assert.isOk( texture.getImage().isReady() === true, 'Image is ready because of canvas' );


            assert.isOk( greyscale.isDirty() === true, 'dirty is true' );
            greyscale.apply( state );
            assert.isOk( greyscale._image === undefined, 'image should be undefined because of unrefAfterApply' );
            assert.isOk( greyscale._textureObject !== undefined, 'texture object' );
            assert.isOk( greyscale.isDirty() === false, 'dirty is false' );

            done();
        };
Example #2
0
        (function() {
            var state = new State(new ShaderGeneratorProxy());
            var fakeRenderer = mockup.createFakeRenderer();
            fakeRenderer.validateProgram = function() {
                return true;
            };
            fakeRenderer.getProgramParameter = function() {
                return true;
            };
            fakeRenderer.isContextLost = function() {
                return false;
            };
            state.setGraphicContext(fakeRenderer);

            var stateSet0 = new StateSet();
            stateSet0.setAttributeAndModes(new Material());

            var stateSet1 = new StateSet();
            stateSet1.setTextureAttributeAndModes(0, new Texture(undefined));

            state.pushStateSet(stateSet0);

            state.applyStateSet(stateSet1);

            assert.isOk(true, 'check not exception on material generator use');
        })();
Example #3
0
        ( function () {
            var gl = mockup.createFakeRenderer();
            var state = {
                getGraphicContext: function () {
                    return gl;
                },
                applyTextureAttribute: function () {}
            };


            var fbo = new FrameBufferObject();

            fbo.createFrameBufferObject( state );
            fbo.bindFrameBufferObject();
            var renderBuffer = fbo.createRenderBuffer( FrameBufferObject.DEPTH_COMPONENT16, 800, 600 );
            fbo.framebufferRenderBuffer( FrameBufferObject.DEPTH_ATTACHMENT, renderBuffer );

            var texture = new Texture();
            // mockup texture
            texture.getTextureObject = function () {
                return {
                    id: function () {
                        return 1;
                    }
                };
            };

            fbo.framebufferTexture2D( state, FrameBufferObject.COLOR_ATTACHMENT0, Texture.TEXTURE_2D, texture );

            fbo.apply( state );

            assert.isOk( fbo.isDirty() === false, 'Check that applied set dirty false even with no attachement' );
            assert.isOk( fbo.getFrameBufferObject() !== undefined, 'Check fbo' );

        } )();
Example #4
0
        (function() {
            var state = new State(new ShaderGeneratorProxy());
            var fakeRenderer = mockup.createFakeRenderer();
            fakeRenderer.validateProgram = function() {
                return true;
            };
            fakeRenderer.getProgramParameter = function() {
                return true;
            };
            fakeRenderer.isContextLost = function() {
                return false;
            };

            state.setGraphicContext(fakeRenderer);
            var camera0 = new Camera();
            camera0.setViewport(new Viewport());
            camera0.setRenderOrder(Camera.NESTED_RENDER);
            var geom = Shape.createTexturedQuadGeometry(
                -10 / 2.0,
                0,
                -10 / 2.0,
                20,
                0,
                0,
                0,
                0,
                20,
                1,
                1
            );
            camera0.addChild(geom);

            var cull = new CullVisitor();
            var rs = new RenderStage();
            var sg = new StateGraph();
            rs.setViewport(camera0.getViewport());

            cull.setRenderStage(rs);
            cull.setStateGraph(sg);

            cull.pushProjectionMatrix(mat4.create());
            cull.pushModelViewMatrix(mat4.create());
            cull.pushModelViewMatrix(mat4.create());
            cull.pushStateSet(new StateSet());

            camera0.accept(cull);

            assert.isOk(
                cull.rootRenderStage === cull.currentRenderBin,
                'renderStage should stay the render bin and id '
            ); // + cull.rootRenderStage === cull.currentRenderBin);

            rs.draw(state);
        })();
Example #5
0
        (function() {
            var canvas = mockup.createCanvas();
            var viewer = new mockup.Viewer(canvas);
            viewer.init();
            viewer.frame();
            var cull = viewer.getCamera().getRenderer()._cullVisitor;
            var q = Shape.createTexturedBoxGeometry(0, 0, 0, 1, 1, 1);

            var node0 = new MatrixTransform();
            mat4.fromTranslation(node0.getMatrix(), [0, 0, -10]);
            node0.getOrCreateStateSet().setRenderingHint('OPAQUE_BIN');
            node0.getOrCreateStateSet().setName('Node0');
            node0.addChild(q);

            var node1 = new MatrixTransform();
            mat4.fromTranslation(node1.getMatrix(), [0, 0, 5]);
            node0.getOrCreateStateSet().setRenderingHint('TRANSPARENT_BIN');
            node1.getOrCreateStateSet().setName('Node1');
            node1.addChild(q);

            var root = new Node();
            root.addChild(node1);
            root.addChild(node0);

            //var cull = new CullVisitor();
            var rs = new RenderStage();
            var sg = new StateGraph();
            rs.setViewport(new Viewport());
            cull.pushProjectionMatrix(mat4.create());
            cull.pushModelViewMatrix(mat4.create());
            cull.pushModelViewMatrix(mat4.create());
            cull.setRenderStage(rs);
            cull.setStateGraph(sg);
            cull.setComputeNearFar(false);

            root.accept(cull);
            rs.sort();

            var state = new State(new ShaderGeneratorProxy());
            var fakeRenderer = mockup.createFakeRenderer();
            fakeRenderer.validateProgram = function() {
                return true;
            };
            fakeRenderer.getProgramParameter = function() {
                return true;
            };
            fakeRenderer.isContextLost = function() {
                return false;
            };
            state.setGraphicContext(fakeRenderer);

            rs.draw(state);
        })();
Example #6
0
        (function() {
            var state = new State(new ShaderGeneratorProxy());
            var fakeRenderer = mockup.createFakeRenderer();
            fakeRenderer.validateProgram = function() {
                return true;
            };
            fakeRenderer.getProgramParameter = function() {
                return true;
            };
            fakeRenderer.isContextLost = function() {
                return false;
            };
            state.setGraphicContext(fakeRenderer);

            var stateSet = new StateSet();

            function getShader() {
                var vertexshader = [
                    '',
                    'attribute vec3 Vertex;',
                    'varying vec4 position;',
                    'void main(void) {',
                    '  gl_Position = vec4(Vertex,1.0);',
                    '}'
                ].join('\n');

                var fragmentshader = [
                    '',
                    'precision highp float;',
                    'varying vec4 position;',
                    'void main(void) {',
                    '  gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);',
                    '}',
                    ''
                ].join('\n');

                var program = new Program(
                    new Shader('VERTEX_SHADER', vertexshader),
                    new Shader('FRAGMENT_SHADER', fragmentshader)
                );

                program.setTrackAttributes({});
                program.getTrackAttributes().attributeKeys = [];

                return program;
            }
            stateSet.setAttributeAndModes(getShader());

            state.applyStateSet(stateSet);
            assert.isOk(true, 'check not exception on stateset generator use');
        })();
Example #7
0
    test('CullFace', function() {
        var n = new CullFace();
        assert.isOk(n.getMode() === CullFace.BACK, 'Check default mode');

        var state = new State(new ShaderGeneratorProxy());
        state.setGraphicContext(mockup.createFakeRenderer());

        n.apply(state);

        n = new CullFace(CullFace.DISABLE);
        n.apply(state);

        var n2 = new CullFace('FRONT');
        assert.isOk(n2.getMode() === CullFace.FRONT, 'Check string parameter');
    });
Example #8
0
        (function() {
            var gl = mockup.createFakeRenderer();
            gl.createBuffer = function() {
                return {};
            };

            var content = [];
            for (var i = 0, l = 3 * 50; i < l; i++) {
                content.push(i);
            }
            var b = new BufferArray(BufferArray.ARRAY_BUFFER, content, 3);
            b.bind(gl);
            assert.isOk(b._buffer !== undefined, 'Check we created gl buffer');
            b.releaseGLObjects();
            assert.isOk(b._buffer === undefined, 'Check we released gl buffer');

            assert.equal(b.getType(), 0x1406, 'Check the type set is float 32');
            assert.equal(b.getItemSize(), 3, 'Check item size is 3');
        })();
Example #9
0
    test( 'BlendColor', function () {

        var n = new BlendColor();
        assert.isOk( n.getConstantColor()[ 0 ] === 1.0 &&
            n.getConstantColor()[ 1 ] === 1.0 &&
            n.getConstantColor()[ 2 ] === 1.0 &&
            n.getConstantColor()[ 3 ] === 1.0, 'Check default constantColor' );

        n.setConstantColor( [ 0, 0.5, 0, 0.5 ] );
        assert.isOk( n.getConstantColor()[ 0 ] === 0.0 &&
            n.getConstantColor()[ 1 ] === 0.5 &&
            n.getConstantColor()[ 2 ] === 0.0 &&
            n.getConstantColor()[ 3 ] === 0.5, 'Check set constant color' );

        var state = new State( new ShaderGeneratorProxy() );
        state.setGraphicContext( mockup.createFakeRenderer() );

        n.apply( state );
    } );
Example #10
0
        ( function () {
            var gl = mockup.createFakeRenderer();
            var state = {
                getGraphicContext: function () {
                    return gl;
                },
                applyTextureAttribute: function () {}
            };


            var b = new FrameBufferObject();
            b.setAttachment( {
                texture: {
                    isDirty: function () {
                        return false;
                    },
                    getTextureObject: function () {
                        return {
                            id: function () {}
                        };
                    },
                    getWidth: function () {
                        return 1;
                    },
                    getHeight: function () {
                        return 1;
                    }
                },
                textureTarget: 'textureTarget'
            } );
            b.setAttachment( {
                format: 'texture',
                width: 1,
                height: 1
            } );

            b.dirty();
            b.apply( state );

            assert.isOk( b.getFrameBufferObject() !== undefined, 'Check we created gl framebuffer' );
            b.releaseGLObjects();
            assert.isOk( b.getFrameBufferObject() === undefined, 'Check we released gl famebuffer' );

            // check wrong frame buffer sizes
            b.setAttachment( {
                texture: {
                    isDirty: function () {
                        return false;
                    },
                    getTextureObject: function () {
                        return {
                            id: function () {}
                        };
                    },
                    getWidth: function () {
                        return maxRenderBufferSize + 1;
                    },
                    getHeight: function () {
                        return maxRenderBufferSize + 1;
                    }
                },
                textureTarget: 'textureTarget'
            } );
            b.setAttachment( {
                format: 'texture',
                width: maxRenderBufferSize + 1,
                height: maxRenderBufferSize + 1
            } );

            b.dirty();
            b.apply( state );
            assert.isOk( b.getFrameBufferObject() === undefined, 'Check we did not created gl framebuffer' );


        } )();