Пример #1
0
        public void instanciarMonsterBlur(string ShadersDir, Monster monster, string MediaDir)
        {
            var d3dDevice = D3DDevice.Instance.Device;

            MyShaderDir = ShadersDir;

            //Cargar mesh

            /*TgcMesh sectario;
             *
             * var loader = new TgcSceneLoader();
             * var scene2 = loader.loadSceneFromFile(MediaDir + "Modelame\\Sectarian-TgcScene.xml");
             *
             * sectario = scene2.Meshes[0];*/

            //sectario.Position = new TGCVector3(9500f, -350f, -15000f);

            //sectario.Transform = TGCMatrix.Translation(0, -350, 0);


            /*mesh = monster.ghost;
            *  effect = TGCShaders.Instance.LoadEffect(MyShaderDir + "MonsterMotionBlur.fx");
            *  effect.Technique = "DefaultTechnique";
            *  mesh.Effect = effect;*/

            effect = TGCShaders.Instance.LoadEffect(MyShaderDir + "MonsterMotionBlur.fx");
            //Configurar Technique dentro del shader
            effectTrait = TGCShaders.Instance.LoadEffect(MyShaderDir + "PostProcesado.fx");
            // stencil
            g_pDepthStencil = d3dDevice.CreateDepthStencilSurface(d3dDevice.PresentationParameters.BackBufferWidth,
                                                                  d3dDevice.PresentationParameters.BackBufferHeight,
                                                                  DepthFormat.D24S8, MultiSampleType.None, 0, true);

            // inicializo el render target
            g_pRenderTarget = new Texture(d3dDevice, d3dDevice.PresentationParameters.BackBufferWidth
                                          , d3dDevice.PresentationParameters.BackBufferHeight, 1, Usage.RenderTarget,
                                          Format.X8R8G8B8, Pool.Default);

            // velocidad del pixel
            g_pVel1 = new Texture(d3dDevice, d3dDevice.PresentationParameters.BackBufferWidth
                                  , d3dDevice.PresentationParameters.BackBufferHeight, 1, Usage.RenderTarget,
                                  Format.A16B16G16R16F, Pool.Default);

            g_pVel2 = new Texture(d3dDevice, d3dDevice.PresentationParameters.BackBufferWidth
                                  , d3dDevice.PresentationParameters.BackBufferHeight, 1, Usage.RenderTarget,
                                  Format.A16B16G16R16F, Pool.Default);

            // Resolucion de pantalla
            effect.SetValue("screen_dx", d3dDevice.PresentationParameters.BackBufferWidth);
            effect.SetValue("screen_dy", d3dDevice.PresentationParameters.BackBufferHeight);

            CustomVertex.PositionTextured[] vertices =
            {
                new CustomVertex.PositionTextured(-1,  1, 1, 0, 0),
                new CustomVertex.PositionTextured(1,   1, 1, 1, 0),
                new CustomVertex.PositionTextured(-1, -1, 1, 0, 1),
                new CustomVertex.PositionTextured(1,  -1, 1, 1, 1)
            };
            //vertex buffer de los triangulos
            g_pVBV3D = new VertexBuffer(typeof(CustomVertex.PositionTextured),
                                        4, d3dDevice, Usage.Dynamic | Usage.WriteOnly,
                                        CustomVertex.PositionTextured.Format, Pool.Default);
            g_pVBV3D.SetData(vertices, 0, LockFlags.None);

            antMatWorldView = TGCMatrix.Identity;
        }