Esempio n. 1
0
        public virtual void OnSetConstants(IMaterialRendererServices services)
        {
            IVideoDriver driver = services.VideoDriver;

            // set inverted world matrix
            // if we are using highlevel shaders (the user can select this when
            // starting the program), we must set the constants by name.
            Matrix4 invWorld = driver.GetTransform(TransformationState.WORLD);
            invWorld.MakeInverse();

            if (UseHighLevelShaders)
                services.SetVertexShaderConstant("mInvWorld", invWorld.GetFloats(), 16);
            else
                services.SetVertexShaderConstant(invWorld.GetFloats(), 0, 4);

            // set clip matrix
            Matrix4 worldViewProj;
            worldViewProj = driver.GetTransform(TransformationState.PROJECTION);
            worldViewProj *= driver.GetTransform(TransformationState.VIEW);
            worldViewProj *= driver.GetTransform(TransformationState.WORLD);

            if (UseHighLevelShaders)
                services.SetVertexShaderConstant("mWorldViewProj", worldViewProj.GetFloats(), 16);
            else
                services.SetVertexShaderConstant(worldViewProj.GetFloats(), 4, 4);

            // set camera position
            Vector3D pos = device.SceneManager.ActiveCamera.Position;

            if (UseHighLevelShaders)
                services.SetVertexShaderConstant("mLightPos",vectorToArray(pos), 3);
            else
                services.SetVertexShaderConstant(vectorToArray(pos), 8, 1);

            // set light color
            Colorf col= new Colorf(0.0f,1.0f,1.0f,0.0f);

            if (UseHighLevelShaders)
                services.SetVertexShaderConstant("mLightColor", colorToArray(col), 4);
            else
                services.SetVertexShaderConstant(colorToArray(col), 9, 1);

            // set transposed world matrix
            Matrix4 world = driver.GetTransform(TransformationState.WORLD);
            world = world.GetTransposed();

            if (UseHighLevelShaders)
                services.SetVertexShaderConstant("mTransWorld", world.GetFloats(), 16);
            else
                services.SetVertexShaderConstant(world.GetFloats(), 10, 4);
        }
Esempio n. 2
0
        public virtual void OnSetConstants(IMaterialRendererServices services)
        {
            IVideoDriver driver = services.VideoDriver;

            // set inverted world matrix
            // if we are using highlevel shaders (the user can select this when
            // starting the program), we must set the constants by name.
            Matrix4 invWorld = driver.GetTransform(TransformationState.WORLD);

            invWorld.MakeInverse();

            if (UseHighLevelShaders)
            {
                services.SetVertexShaderConstant("mInvWorld", invWorld.GetFloats(), 16);
            }
            else
            {
                services.SetVertexShaderConstant(invWorld.GetFloats(), 0, 4);
            }

            // set clip matrix
            Matrix4 worldViewProj;

            worldViewProj  = driver.GetTransform(TransformationState.PROJECTION);
            worldViewProj *= driver.GetTransform(TransformationState.VIEW);
            worldViewProj *= driver.GetTransform(TransformationState.WORLD);

            if (UseHighLevelShaders)
            {
                services.SetVertexShaderConstant("mWorldViewProj", worldViewProj.GetFloats(), 16);
            }
            else
            {
                services.SetVertexShaderConstant(worldViewProj.GetFloats(), 4, 4);
            }

            // set camera position
            Vector3D pos = device.SceneManager.ActiveCamera.Position;

            if (UseHighLevelShaders)
            {
                services.SetVertexShaderConstant("mLightPos", vectorToArray(pos), 3);
            }
            else
            {
                services.SetVertexShaderConstant(vectorToArray(pos), 8, 1);
            }

            // set light color
            Colorf col = new Colorf(0.0f, 1.0f, 1.0f, 0.0f);

            if (UseHighLevelShaders)
            {
                services.SetVertexShaderConstant("mLightColor", colorToArray(col), 4);
            }
            else
            {
                services.SetVertexShaderConstant(colorToArray(col), 9, 1);
            }

            // set transposed world matrix
            Matrix4 world = driver.GetTransform(TransformationState.WORLD);

            world = world.GetTransposed();

            if (UseHighLevelShaders)
            {
                services.SetVertexShaderConstant("mTransWorld", world.GetFloats(), 16);
            }
            else
            {
                services.SetVertexShaderConstant(world.GetFloats(), 10, 4);
            }
        }
Esempio n. 3
0
    public void OnSetConstants( IMaterialRendererServices services )
    {
        Matrix4 invWorld = services.VideoDriver.GetTransform(TransformationState.WORLD);
        invWorld.MakeInverse();

        if (UseHighLevelShaders)
            services.SetVertexShaderConstant("mInvWorld", invWorld.GetFloats(), 16);
        else
            services.SetVertexShaderConstant(invWorld.GetFloats(), 0, 4);

        // set clip matrix

        Matrix4 worldViewProj;
        worldViewProj = services.VideoDriver.GetTransform(TransformationState.PROJECTION);
        worldViewProj *= services.VideoDriver.GetTransform(TransformationState.VIEW);
        worldViewProj *= services.VideoDriver.GetTransform(TransformationState.WORLD);

        if (UseHighLevelShaders)
            services.SetVertexShaderConstant("mWorldViewProj", worldViewProj.GetFloats(), 16);
        else
            services.SetVertexShaderConstant(worldViewProj.GetFloats(), 4, 4);

        // set camera position

        Vector3D campos = device.SceneManager.ActiveCamera.Position;

        float[] pos = new float[4];
        pos[0] = campos.X;
        pos[1] = campos.Y;
        pos[2] = campos.Z;
        pos[3] = 0;

        if (UseHighLevelShaders)
            services.SetVertexShaderConstant("mLightPos", pos, 3);
        else
            services.SetVertexShaderConstant(pos, 8, 1);

        // set light color

        pos[0] = 0;
        pos[1] = 1;
        pos[2] = 1;
        pos[3] = 0;

        if (UseHighLevelShaders)
            services.SetVertexShaderConstant("mLightColor", pos, 4);
        else
            services.SetVertexShaderConstant(pos, 9, 1);

        // set transposed world matrix

        Matrix4 world = services.VideoDriver.GetTransform(TransformationState.WORLD);
        world = world.GetTransposed();

        if (UseHighLevelShaders)
            services.SetVertexShaderConstant("mTransWorld", world.GetFloats(), 16);
        else
            services.SetVertexShaderConstant(world.GetFloats(), 10, 4);
    }
Esempio n. 4
0
    public void OnSetConstants(IMaterialRendererServices services)
    {
        Matrix4 invWorld = services.VideoDriver.GetTransform(TransformationState.WORLD);

        invWorld.MakeInverse();

        if (UseHighLevelShaders)
        {
            services.SetVertexShaderConstant("mInvWorld", invWorld.GetFloats(), 16);
        }
        else
        {
            services.SetVertexShaderConstant(invWorld.GetFloats(), 0, 4);
        }

        // set clip matrix

        Matrix4 worldViewProj;

        worldViewProj  = services.VideoDriver.GetTransform(TransformationState.PROJECTION);
        worldViewProj *= services.VideoDriver.GetTransform(TransformationState.VIEW);
        worldViewProj *= services.VideoDriver.GetTransform(TransformationState.WORLD);

        if (UseHighLevelShaders)
        {
            services.SetVertexShaderConstant("mWorldViewProj", worldViewProj.GetFloats(), 16);
        }
        else
        {
            services.SetVertexShaderConstant(worldViewProj.GetFloats(), 4, 4);
        }

        // set camera position

        Vector3D campos = device.SceneManager.ActiveCamera.Position;

        float[] pos = new float[4];
        pos[0] = campos.X;
        pos[1] = campos.Y;
        pos[2] = campos.Z;
        pos[3] = 0;

        if (UseHighLevelShaders)
        {
            services.SetVertexShaderConstant("mLightPos", pos, 3);
        }
        else
        {
            services.SetVertexShaderConstant(pos, 8, 1);
        }

        // set light color

        pos[0] = 0;
        pos[1] = 1;
        pos[2] = 1;
        pos[3] = 0;

        if (UseHighLevelShaders)
        {
            services.SetVertexShaderConstant("mLightColor", pos, 4);
        }
        else
        {
            services.SetVertexShaderConstant(pos, 9, 1);
        }

        // set transposed world matrix

        Matrix4 world = services.VideoDriver.GetTransform(TransformationState.WORLD);

        world = world.GetTransposed();

        if (UseHighLevelShaders)
        {
            services.SetVertexShaderConstant("mTransWorld", world.GetFloats(), 16);
        }
        else
        {
            services.SetVertexShaderConstant(world.GetFloats(), 10, 4);
        }
    }