コード例 #1
0
        protected override void Dispose(bool disposing)
        {
            if (!_disposed)
            {
                if (disposing)
                {
                    ImmediateContext.ClearState();
                    Util.ReleaseCom(ref _sky);
                    Util.ReleaseCom(ref _terrain);
                    Util.ReleaseCom(ref _minimap);
                    Util.ReleaseCom(ref _sMap);
                    Util.ReleaseCom(ref _ssao);
                    Util.ReleaseCom(ref _whiteTex);
                    Util.ReleaseCom(ref _screenQuadIB);
                    Util.ReleaseCom(ref _screenQuadVB);
                    Util.ReleaseCom(ref _sphereModel);

                    Effects.DestroyAll();
                    InputLayouts.DestroyAll();
                    RenderStates.DestroyAll();
                    Patch.DestroyPatchIndexBuffers();
                }
                _disposed = true;
            }
            base.Dispose(disposing);
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: virus-404/dx11
        public override bool Init()
        {
            if (!base.Init())
            {
                return(false);
            }

            Effects.InitAll(Device);
            InputLayouts.InitAll(Device);

            _sky = new Sky(Device, "Textures/sunsetcube1024.dds", 5000.0f);

            _floorTexSRV = ShaderResourceView.FromFile(Device, "Textures/floor.dds");
            _stoneTexSRV = ShaderResourceView.FromFile(Device, "Textures/stone.dds");
            _brickTexSRV = ShaderResourceView.FromFile(Device, "Textures/bricks.dds");

            BuildDynamicCubeMapViews();

            BuildShapeGeometryBuffers();
            BuildSkullGeometryBuffers();

            Window.KeyDown += SwitchLights;

            return(true);
        }
コード例 #3
0
        public override bool Init()
        {
            if (!base.Init())
            {
                return(false);
            }

            Effects.InitAll(Device);
            InputLayouts.InitAll(Device);
            RenderStates.InitAll(Device);

            _texMgr = new TextureManager();
            _texMgr.Init(Device);

            _bunnyModel = BasicModel.LoadSdkMesh(Device, _texMgr, "Models/bunny.sdkmesh", "Textures");

            _bunnyInstance = new BasicModelInstance(_bunnyModel);

            _effect = new DirectionalLightingEffect(Device, "FX/forwardLight.fxo");

            var passDesc = _effect.Ambient.GetPassByIndex(0).Description;

            _layout = new InputLayout(Device, passDesc.Signature, InputLayoutDescriptions.PosNormalTexTan);

            AddUIElements();

            return(true);
        }
コード例 #4
0
ファイル: Program.cs プロジェクト: mrommel/dx11
        protected override void Dispose(bool disposing)
        {
            if (!_disposed)
            {
                if (disposing)
                {
                    Util.ReleaseCom(ref _sky);
                    Util.ReleaseCom(ref _shapesVB);
                    Util.ReleaseCom(ref _shapesIB);
                    Util.ReleaseCom(ref _skullVB);
                    Util.ReleaseCom(ref _skullIB);


                    Util.ReleaseCom(ref _stoneTexSRV);
                    Util.ReleaseCom(ref _brickTexSRV);

                    Util.ReleaseCom(ref _stoneNormalTexSRV);
                    Util.ReleaseCom(ref _brickNormalTexSRV);



                    Effects.DestroyAll();
                    InputLayouts.DestroyAll();
                    RenderStates.DestroyAll();
                }
                _disposed = true;
            }
            base.Dispose(disposing);
        }
コード例 #5
0
ファイル: FireworksDemo.cs プロジェクト: virus-404/dx11
        protected override void Dispose(bool disposing)
        {
            if (!_disposed)
            {
                if (disposing)
                {
                    Util.ReleaseCom(ref _gridModel);
                    Util.ReleaseCom(ref _cylinderModel);
                    Util.ReleaseCom(ref _sky);
                    Util.ReleaseCom(ref _texMgr);

                    foreach (var t in _rules)
                    {
                        var fireWorkRule = t;
                        Util.ReleaseCom(ref fireWorkRule);
                    }
                    _rules.Clear();

                    Effects.DestroyAll();
                    InputLayouts.DestroyAll();
                    RenderStates.DestroyAll();
                }
                _disposed = true;
            }
            base.Dispose(disposing);
        }
コード例 #6
0
ファイル: Program.cs プロジェクト: virus-404/dx11
        protected override void Dispose(bool disposing)
        {
            if (!_disposed)
            {
                if (disposing)
                {
                    Util.ReleaseCom(ref _sky);
                    Util.ReleaseCom(ref _shapesVB);
                    Util.ReleaseCom(ref _shapesIB);
                    Util.ReleaseCom(ref _skullVB);
                    Util.ReleaseCom(ref _skullIB);

                    Util.ReleaseCom(ref _floorTexSRV);
                    Util.ReleaseCom(ref _stoneTexSRV);
                    Util.ReleaseCom(ref _brickTexSRV);

                    Util.ReleaseCom(ref _dynamicCubeMapDSV);
                    Util.ReleaseCom(ref _dynamicCubeMapSRV);
                    for (int i = 0; i < _dynamicCubeMapRTV.Length; i++)
                    {
                        Util.ReleaseCom(ref _dynamicCubeMapRTV[i]);
                    }

                    Effects.DestroyAll();
                    InputLayouts.DestroyAll();
                }
                _disposed = true;
            }
            base.Dispose(disposing);
        }
コード例 #7
0
        protected override void Dispose(bool disposing)
        {
            if (!_disposed)
            {
                if (disposing)
                {
                    ImmediateContext.ClearState();
                    Util.ReleaseCom(ref _landVB);
                    Util.ReleaseCom(ref _landIB);
                    Util.ReleaseCom(ref _waveVB);
                    Util.ReleaseCom(ref _waveIB);
                    Util.ReleaseCom(ref _boxVB);
                    Util.ReleaseCom(ref _boxIB);
                    Util.ReleaseCom(ref _grassMapSRV);
                    Util.ReleaseCom(ref _wavesMapSRV);
                    Util.ReleaseCom(ref _boxMapSRV);

                    Effects.DestroyAll();
                    InputLayouts.DestroyAll();
                    RenderStates.DestroyAll();
                }
                _disposed = true;
            }
            base.Dispose(disposing);
        }
コード例 #8
0
        public override bool Init()
        {
            if (!base.Init())
            {
                return(false);
            }

            _waves = new Waves();
            _waves.Init(160, 160, 1.0f, 0.03f, 5.0f, 0.3f);

            Effects.InitAll(Device);
            InputLayouts.InitAll(Device);
            RenderStates.InitAll(Device);

            _grassMapSRV = ShaderResourceView.FromFile(Device, "Textures/grass.dds");
            _wavesMapSRV = ShaderResourceView.FromFile(Device, "Textures/water2.dds");
            _boxMapSRV   = ShaderResourceView.FromFile(Device, "Textures/WireFence.dds");

            BuildLandGeometryBuffers();
            BuildWaveGeometryBuffers();
            BuildCrateGeometryBuffers();

            Window.KeyDown += SwitchRenderState;

            return(true);
        }
コード例 #9
0
        protected override void Dispose(bool disposing)
        {
            if (!_disposed)
            {
                if (disposing)
                {
                    ImmediateContext.ClearState();

                    Util.ReleaseCom(ref _randomTex);
                    Util.ReleaseCom(ref _flareTexSRV);
                    Util.ReleaseCom(ref _rainTexSRV);

                    Util.ReleaseCom(ref _sky);
                    Util.ReleaseCom(ref _terrain);
                    Patch.DestroyPatchIndexBuffers();

                    Util.ReleaseCom(ref _rain);
                    Util.ReleaseCom(ref _fire);

                    Effects.DestroyAll();
                    InputLayouts.DestroyAll();
                    RenderStates.DestroyAll();
                }
                _disposed = true;
            }
            base.Dispose(disposing);
        }
コード例 #10
0
ファイル: ShadowsDemo.cs プロジェクト: mrommel/dx11
        protected override void Dispose(bool disposing)
        {
            if (!_disposed)
            {
                if (disposing)
                {
                    Util.ReleaseCom(ref _sky);
                    Util.ReleaseCom(ref _sMap);
                    Util.ReleaseCom(ref _skullVB);
                    Util.ReleaseCom(ref _skullIB);

                    Util.ReleaseCom(ref _screenQuadVB);
                    Util.ReleaseCom(ref _screenQuadIB);


                    Util.ReleaseCom(ref _texMgr);

                    Util.ReleaseCom(ref _gridModel);
                    Util.ReleaseCom(ref _boxModel);
                    Util.ReleaseCom(ref _sphereModel);
                    Util.ReleaseCom(ref _cylinderModel);



                    Effects.DestroyAll();
                    InputLayouts.DestroyAll();
                    RenderStates.DestroyAll();
                }
                _disposed = true;
            }
            base.Dispose(disposing);
        }
コード例 #11
0
        public override bool Init()
        {
            if (!base.Init())
            {
                return(false);
            }
            Effects.InitAll(Device);
            InputLayouts.InitAll(Device);
            RenderStates.InitAll(Device);

            _sky = new Sky(Device, "Textures/snowcube1024.dds", 5000.0f);

            _texMgr = new TextureManager();
            _texMgr.Init(Device);

            _waves = new Waves();
            _waves.Init(Device, _texMgr, 40, 60);


            BuildShapeGeometryBuffers();
            BuildSkullGeometryBuffers();


            return(true);
        }
コード例 #12
0
ファイル: Program.cs プロジェクト: virus-404/dx11
        public override bool Init()
        {
            if (!base.Init())
            {
                return(false);
            }

            _waves = new Waves();
            _waves.Init(160, 160, 1.0f, 0.03f, 5.0f, 0.3f);

            Effects.InitAll(Device);
            InputLayouts.InitAll(Device);
            RenderStates.InitAll(Device);

            _grassMapSRV = ShaderResourceView.FromFile(Device, "Textures/grass.dds");
            _wavesMapSRV = ShaderResourceView.FromFile(Device, "Textures/water2.dds");
            _boxMapSRV   = ShaderResourceView.FromFile(Device, "Textures/WireFence.dds");

            var filenames = new [] { "Textures/tree0.dds", "Textures/tree1.dds", "Textures/tree2.dds", "Textures/tree3.dds" };

            _treeTextureMapArraySRV = Util.CreateTexture2DArraySRV(Device, ImmediateContext, filenames, Format.R8G8B8A8_UNorm);

            BuildLandGeometryBuffers();
            BuildWaveGeometryBuffers();
            BuildCrateGeometryBuffers();
            BuildTreeSpritesBuffers();

            Window.KeyDown += SwitchRenderState;

            return(true);
        }
コード例 #13
0
        public override bool Init()
        {
            if (!base.Init())
            {
                return(false);
            }

            Effects.InitAll(Device);
            InputLayouts.InitAll(Device);
            RenderStates.InitAll(Device);
            Patch.InitPatchData(Terrain.CellsPerPatch, Device);

            _sky = new Sky(Device, "Textures/grasscube1024.dds", 5000.0f);

            var tii = new InitInfo {
                HeightMapFilename = null,
                LayerMapFilename0 = "textures/grass.dds",
                LayerMapFilename1 = "textures/darkdirt.dds",
                LayerMapFilename2 = "textures/stone.dds",
                LayerMapFilename3 = "Textures/lightdirt.dds",
                LayerMapFilename4 = "textures/snow.dds",
                BlendMapFilename  = null,
                HeightScale       = 50.0f,
                HeightMapWidth    = 2049,
                HeightMapHeight   = 2049,
                CellSpacing       = 0.5f,

                Seed         = 0,
                NoiseSize1   = 3.0f,
                Persistence1 = 0.7f,
                Octaves1     = 7,
                NoiseSize2   = 2.5f,
                Persistence2 = 0.8f,
                Octaves2     = 3,
            };

            _terrain = new Terrain();
            _terrain.Init(Device, ImmediateContext, tii);

            _camera.Height = _terrain.Height;

            AddUIElements();

            _camera.SetLens(0.25f * MathF.PI, AspectRatio, 1.0f, 1000.0f);
            _ssao = new Ssao(Device, ImmediateContext, ClientWidth, ClientHeight, _camera.FovY, _camera.FarZ);

            _whiteTex = ShaderResourceView.FromFile(Device, "Textures/white.dds");


            _sMap = new ShadowMap(Device, SMapSize, SMapSize);

            _sceneBounds = new BoundingSphere(new Vector3(), MathF.Sqrt(_terrain.Width * _terrain.Width + _terrain.Depth * _terrain.Depth) / 2);

            _minimap = new Minimap(Device, ImmediateContext, MinimapSize, MinimapSize, _terrain, _camera);

            return(true);
        }
コード例 #14
0
        protected override async void InternalLoad()
        {
            // Compile Vertex and Pixel shaders
            var vertexShaderDescription = await this.assetsDirectory.ReadAndCompileShader(this.graphicsContext, "HLSL", "VertexShader", ShaderStages.Vertex, "VS");

            var pixelShaderDescription = await this.assetsDirectory.ReadAndCompileShader(this.graphicsContext, "HLSL", "FragmentShader", ShaderStages.Pixel, "PS");

            var vertexShader = this.graphicsContext.Factory.CreateShader(ref vertexShaderDescription);
            var pixelShader  = this.graphicsContext.Factory.CreateShader(ref pixelShaderDescription);

            var vertexBufferDescription = new BufferDescription((uint)Unsafe.SizeOf <Vector4>() * (uint)this.vertexData.Length, BufferFlags.VertexBuffer, ResourceUsage.Default);
            var vertexBuffer            = this.graphicsContext.Factory.CreateBuffer(this.vertexData, ref vertexBufferDescription);

            // Prepare Pipeline
            var vertexLayouts = new InputLayouts()
                                .Add(new LayoutDescription()
                                     .Add(new ElementDescription(ElementFormat.Float4, ElementSemanticType.Position))
                                     .Add(new ElementDescription(ElementFormat.Float4, ElementSemanticType.Color)));

            var pipelineDescription = new GraphicsPipelineDescription
            {
                PrimitiveTopology = PrimitiveTopology.TriangleList,
                InputLayouts      = vertexLayouts,
                Shaders           = new GraphicsShaderStateDescription()
                {
                    VertexShader = vertexShader,
                    PixelShader  = pixelShader,
                },
                RenderStates = new RenderStateDescription()
                {
                    RasterizerState   = RasterizerStates.CullBack,
                    BlendState        = BlendStates.Opaque,
                    DepthStencilState = DepthStencilStates.ReadWrite,
                },
                Outputs = this.frameBuffer.OutputDescription,
            };

            this.pipelineState = this.graphicsContext.Factory.CreateGraphicsPipeline(ref pipelineDescription);
            this.commandQueue  = this.graphicsContext.Factory.CreateCommandQueue();

            var swapChainDescription = this.swapChain?.SwapChainDescription;
            var width  = swapChainDescription.HasValue ? swapChainDescription.Value.Width : this.surface.Width;
            var height = swapChainDescription.HasValue ? swapChainDescription.Value.Height : this.surface.Height;

            this.viewports    = new Viewport[1];
            this.viewports[0] = new Viewport(0, 0, width, height);
            this.scissors     = new Rectangle[1];
            this.scissors[0]  = new Rectangle(0, 0, (int)width, (int)height);

            this.vertexBuffers    = new Buffer[1];
            this.vertexBuffers[0] = vertexBuffer;
        }
コード例 #15
0
        public override bool Init()
        {
            if (!base.Init())
            {
                return(false);
            }
            Effects.InitAll(Device);
            InputLayouts.InitAll(Device);
            RenderStates.InitAll(Device);

            _texMgr = new TextureManager();
            _texMgr.Init(Device);

            _gridModel = new BasicModel();
            _gridModel.CreateGrid(Device, 20, 20, 40, 40);
            _gridModel.Materials[0] = new Material {
                Diffuse = Color.SaddleBrown, Specular = new Color4(16, .9f, .9f, .9f)
            };
            _gridModel.DiffuseMapSRV[0] = _texMgr.CreateTexture("Textures/floor.dds");
            _gridModel.NormalMapSRV[0]  = _texMgr.CreateTexture("textures/floor_nmap.dds");

            _sphereModel = new BasicModel();
            _sphereModel.CreateSphere(Device, 0.3f, 5, 4);
            _sphereModel.Materials[0] = new Material {
                Ambient = Color.Blue, Diffuse = Color.Blue, Specular = new Color4(64.0f, 1.0f, 1.0f, 1.0f)
            };
            _sphereModel.NormalMapSRV[0] = _texMgr.CreateTexture("Textures/stones_nmap.dds");

            _cylinderModel = new BasicModel();
            _cylinderModel.CreateCylinder(Device, 1, 1, 3, 20, 20);
            _cylinderModel.Materials[0] = new Material {
                Ambient = Color.Green, Diffuse = Color.Green, Specular = new Color4(64.0f, 1.0f, 1.0f, 1.0f)
            };
            _cylinderModel.NormalMapSRV[0] = _texMgr.CreateTexture("Textures/stones_nmap.dds");

            _grid = new BasicModelInstance(_gridModel)
            {
                TexTransform = Matrix.Scaling(10, 10, 1),
                World        = Matrix.Scaling(10, 1, 10) * Matrix.Translation(0, 0, 90)
            };

            _sphere = new BasicModelInstance(_sphereModel);

            _cylinder = new BasicModelInstance(_cylinderModel)
            {
                World = Matrix.Translation(0, 1.5f, 0)
            };

            return(true);
        }
コード例 #16
0
ファイル: VoronoiMapDemo.cs プロジェクト: mrommel/dx11
        public override bool Init()
        {
            if (!base.Init())
            {
                return(false);
            }

            Effects.InitAll(Device);
            InputLayouts.InitAll(Device);
            RenderStates.InitAll(Device);

            BuildMapGeomertryBuffers();
            return(true);
        }
コード例 #17
0
        public override bool Init()
        {
            if (!base.Init())
            {
                return(false);
            }

            Effects.InitAll(Device);
            _fx = Effects.BasicFX;
            InputLayouts.InitAll(Device);

            _diffuseMapSRV = ShaderResourceView.FromFile(Device, "Textures/WoodCrate01.dds");

            BuildGeometryBuffers();
            return(true);
        }
コード例 #18
0
ファイル: VoronoiMapDemo.cs プロジェクト: mrommel/dx11
 protected override void Dispose(bool disposing)
 {
     if (!_disposed)
     {
         if (disposing)
         {
             Util.ReleaseCom(ref _mapVB);
             Util.ReleaseCom(ref _mapIB);
             RenderStates.DestroyAll();
             Effects.DestroyAll();
             InputLayouts.DestroyAll();
         }
         _disposed = true;
     }
     base.Dispose(disposing);
 }
コード例 #19
0
 protected override void Dispose(bool disposing)
 {
     if (!_disposed)
     {
         if (disposing)
         {
             Util.ReleaseCom(ref _boxVB);
             Util.ReleaseCom(ref _boxIB);
             Util.ReleaseCom(ref _diffuseMapSRV);
             Effects.DestroyAll();
             InputLayouts.DestroyAll();
         }
         _disposed = true;
     }
     base.Dispose(disposing);
 }
コード例 #20
0
ファイル: Program.cs プロジェクト: mrommel/dx11
        public override bool Init()
        {
            if (!base.Init())
            {
                return(false);
            }

            Effects.InitAll(Device);
            InputLayouts.InitAll(Device);

            BuildSkullGeometryBuffers();
            BuildInstancedBuffer();
            BuildBoxBuffers();

            return(true);
        }
コード例 #21
0
ファイル: Program.cs プロジェクト: mrommel/dx11
 protected override void Dispose(bool disposing)
 {
     if (!_disposed)
     {
         if (disposing)
         {
             Util.ReleaseCom(ref _skullVB);
             Util.ReleaseCom(ref _skullIB);
             Util.ReleaseCom(ref _instanceBuffer);
             Effects.DestroyAll();
             InputLayouts.DestroyAll();
         }
         _disposed = true;
     }
     base.Dispose(disposing);
 }
コード例 #22
0
ファイル: Program.cs プロジェクト: mrommel/dx11
        public override bool Init()
        {
            if (!base.Init())
            {
                return(false);
            }

            Effects.InitAll(Device);
            _fx = Effects.BasicFX;
            InputLayouts.InitAll(Device);

            _fireAtlas = new TextureAtlas(Device, Directory.GetFiles("Textures", "fire*.bmp"));

            BuildGeometryBuffers();
            return(true);
        }
コード例 #23
0
        public override bool Init()
        {
            if (!base.Init())
            {
                return(false);
            }
            Effects.InitAll(Device);
            _fx = Effects.BasicFX;
            InputLayouts.InitAll(Device);

            BuildShapeGeometryBuffers();
            BuildSkullGeometryBuffers();

            Window.KeyDown += SwitchLights;

            return(true);
        }
コード例 #24
0
        public override bool Init()
        {
            if (!base.Init())
            {
                return(false);
            }

            Effects.InitAll(Device);
            InputLayouts.InitAll(Device);
            RenderStates.InitAll(Device);
            Patch.InitPatchData(Terrain.CellsPerPatch, Device);

            _sky = new Sky(Device, "Textures/grasscube1024.dds", 5000.0f);

            var tii = new InitInfo {
                HeightMapFilename = null,
                LayerMapFilename0 = "textures/grass.dds",
                LayerMapFilename1 = "textures/darkdirt.dds",
                LayerMapFilename2 = "textures/stone.dds",
                LayerMapFilename3 = "Textures/lightdirt.dds",
                LayerMapFilename4 = "textures/snow.dds",
                BlendMapFilename  = null,
                HeightScale       = 50.0f,
                HeightMapWidth    = 2049,
                HeightMapHeight   = 2049,
                CellSpacing       = 0.5f,

                Seed         = 0,
                NoiseSize1   = 1.0f,
                Persistence1 = 0.7f,
                Octaves1     = 7,
                NoiseSize2   = 2.5f,
                Persistence2 = 0.8f,
                Octaves2     = 3
            };

            _terrain = new Terrain();
            _terrain.Init(Device, ImmediateContext, tii);

            _camera.Height = _terrain.Height;

            AddUIElements();

            return(true);
        }
コード例 #25
0
ファイル: PointLightDemo.cs プロジェクト: virus-404/dx11
        public override bool Init()
        {
            if (!base.Init())
            {
                return(false);
            }

            Effects.InitAll(Device);
            InputLayouts.InitAll(Device);
            RenderStates.InitAll(Device);

            _texMgr = new TextureManager();
            _texMgr.Init(Device);

            _bunnyModel = BasicModel.LoadSdkMesh(Device, _texMgr, "Models/bunny.sdkmesh", "Textures");

            _bunnyInstance = new BasicModelInstance(_bunnyModel);

            _effect = new FowardLightingEffect(Device, "FX/ForwardLight.fxo");

            var blendDesc = new BlendStateDescription {
                AlphaToCoverageEnable  = false,
                IndependentBlendEnable = false
            };

            blendDesc.RenderTargets[0].BlendEnable           = true;
            blendDesc.RenderTargets[0].SourceBlend           = BlendOption.One;
            blendDesc.RenderTargets[0].DestinationBlend      = BlendOption.One;
            blendDesc.RenderTargets[0].BlendOperation        = BlendOperation.Add;
            blendDesc.RenderTargets[0].SourceBlendAlpha      = BlendOption.One;
            blendDesc.RenderTargets[0].DestinationBlendAlpha = BlendOption.One;
            blendDesc.RenderTargets[0].BlendOperationAlpha   = BlendOperation.Add;
            blendDesc.RenderTargets[0].RenderTargetWriteMask = ColorWriteMaskFlags.All;

            _additiveBlend = BlendState.FromDescription(Device, blendDesc);


            var passDesc = _effect.Ambient.GetPassByIndex(0).Description;

            _layout = new InputLayout(Device, passDesc.Signature, InputLayoutDescriptions.PosNormalTexTan);

            AddUIElements();

            return(true);
        }
コード例 #26
0
ファイル: AssimpModelDemo.cs プロジェクト: mrommel/dx11
        public override bool Init()
        {
            if (!base.Init())
            {
                return(false);
            }

            Effects.InitAll(Device);
            InputLayouts.InitAll(Device);
            RenderStates.InitAll(Device);

            _texMgr = new TextureManager();
            _texMgr.Init(Device);

            _treeModel = new BasicModel(Device, _texMgr, "Models/tree.x", "Textures");

            _modelInstance = new BasicModelInstance(_treeModel)
            {
                World = Matrix.RotationX(MathF.PI / 2)
            };

            _stoneModel    = new BasicModel(Device, _texMgr, "Models/stone.x", "Textures");
            _stoneInstance = new BasicModelInstance(_stoneModel)
            {
                World = Matrix.Scaling(0.1f, 0.1f, 0.1f) * Matrix.Translation(2, 0, 2)
            };

            _dwarfModel = new BasicModel(Device, _texMgr, "Models/Bob.md5mesh", "Textures", true);
            for (int i = 0; i < _dwarfModel.Materials.Count; i++)
            {
                _dwarfModel.Materials[i] = new Material()
                {
                    Ambient  = Color.DarkGray,
                    Diffuse  = Color.White,
                    Specular = new Color4(128, 1f, 1.0f, 1.0f)
                };
            }

            _dwarfInstance = new BasicModelInstance(_dwarfModel)
            {
                World = Matrix.RotationX(-MathF.PI / 2) * Matrix.Scaling(0.05f, 0.05f, 0.05f) * Matrix.Translation(4, 0, 4)
            };

            return(true);
        }
コード例 #27
0
        public override bool Init()
        {
            if (!base.Init())
            {
                return(false);
            }
            Enable4XMsaa = true;
            Effects.InitAll(Device);
            InputLayouts.InitAll(Device);
            RenderStates.InitAll(Device);

            _sky = new Sky(Device, "Textures/grasscube1024.dds", 5000.0f);

            var tii = new InitInfo {
                HeightMapFilename = "Textures/terrain.raw",
                LayerMapFilename0 = "textures/grass.dds",
                LayerMapFilename1 = "textures/darkdirt.dds",
                LayerMapFilename2 = "textures/stone.dds",
                LayerMapFilename3 = "Textures/lightdirt.dds",
                LayerMapFilename4 = "textures/snow.dds",
                BlendMapFilename  = "textures/blend.dds",
                HeightScale       = 50.0f,
                HeightMapWidth    = 2049,
                HeightMapHeight   = 2049,
                CellSpacing       = 0.5f
            };

            Patch.InitPatchData(Terrain.CellsPerPatch, Device);
            _terrain = new Terrain();
            _terrain.Init(Device, ImmediateContext, tii);

            _randomTex = Util.CreateRandomTexture1DSRV(Device);

            _flareTexSRV = Util.CreateTexture2DArraySRV(Device, ImmediateContext, new[] { "Textures/flare0.dds" }, Format.R8G8B8A8_UNorm);
            _fire        = new ParticleSystem();
            _fire.Init(Device, Effects.FireFX, _flareTexSRV, _randomTex, 500);
            _fire.EmitPosW = new Vector3(0, 1.0f, 120.0f);

            _rainTexSRV = Util.CreateTexture2DArraySRV(Device, ImmediateContext, new[] { "Textures/raindrop.dds" }, Format.R8G8B8A8_UNorm);
            _rain       = new ParticleSystem();
            _rain.Init(Device, Effects.RainFX, _rainTexSRV, _randomTex, 10000);

            return(true);
        }
コード例 #28
0
ファイル: FireworksDemo.cs プロジェクト: virus-404/dx11
        public override bool Init()
        {
            if (!base.Init())
            {
                return(false);
            }
            Effects.InitAll(Device);
            InputLayouts.InitAll(Device);
            RenderStates.InitAll(Device);

            _sky = new Sky(Device, "Textures/grasscube1024.dds", 5000.0f);

            _texMgr = new TextureManager();
            _texMgr.Init(Device);

            _gridModel = new BasicModel();
            _gridModel.CreateGrid(Device, 20, 20, 40, 40);
            _gridModel.Materials[0] = new Material {
                Diffuse = Color.LightGray, Specular = new Color4(16, .9f, .9f, .9f)
            };
            _gridModel.DiffuseMapSRV[0] = _texMgr.CreateTexture("Textures/floor.dds");
            _gridModel.NormalMapSRV[0]  = _texMgr.CreateTexture("textures/floor_nmap.dds");

            _grid = new BasicModelInstance(_gridModel)
            {
                TexTransform = Matrix.Scaling(10, 10, 1),
                World        = Matrix.Scaling(10, 1, 10)
            };
            InitFireworksRules();
            _cylinderModel = new BasicModel();
            _cylinderModel.CreateCylinder(Device, 1, 1, 3, 20, 20);
            _cylinderModel.Materials[0] = new Material {
                Ambient = Color.Green, Diffuse = Color.Green, Specular = new Color4(64.0f, 1.0f, 1.0f, 1.0f)
            };
            _cylinderModel.DiffuseMapSRV[0] = _texMgr.CreateTexture("Textures/stones.dds");
            _cylinderModel.NormalMapSRV[0]  = _texMgr.CreateTexture("Textures/stones_nmap.dds");

            _cylinder = new BasicModelInstance(_cylinderModel)
            {
                World = Matrix.Translation(0, 1.5f, 0)
            };

            return(true);
        }
コード例 #29
0
 protected override void Dispose(bool disposing)
 {
     if (!_disposed)
     {
         if (disposing)
         {
             Util.ReleaseCom(ref _landVB);
             Util.ReleaseCom(ref _landIB);
             Util.ReleaseCom(ref _waveVB);
             Util.ReleaseCom(ref _waveIB);
             Util.ReleaseCom(ref _grassMapSRV);
             Util.ReleaseCom(ref _wavesMapSRV);
             Effects.DestroyAll();
             InputLayouts.DestroyAll();
         }
         _disposed = true;
     }
     base.Dispose(disposing);
 }
コード例 #30
0
ファイル: GeosphereDemo.cs プロジェクト: virus-404/dx11
        protected override void Dispose(bool disposing)
        {
            if (!_disposed)
            {
                if (disposing)
                {
                    Util.ReleaseCom(ref _texMgr);

                    Util.ReleaseCom(ref _geosphereModel);
                    Util.ReleaseCom(ref _sphereModel);

                    Effects.DestroyAll();
                    InputLayouts.DestroyAll();
                    RenderStates.DestroyAll();
                }
                _disposed = true;
            }
            base.Dispose(disposing);
        }