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); }
public static void Draw(this BasicModelInstance instance, DeviceContext deviceContext, D3DVertexColorEffect effect, Matrix viewProjection) { var wvp = instance.World * viewProjection; effect.WorldViewProjection = wvp; effect.Material = instance.Model.Material; DrawTech(instance, deviceContext, effect.VertexColorTechnique); }
private static void DrawTech(BasicModelInstance instance, DeviceContext deviceContext, EffectTechnique technique) { var desc = technique.Description; for (var i = 0; i < desc.PassCount; ++i) { technique.GetPassByIndex(i).Apply(deviceContext); instance.Model.Mesh.Draw(deviceContext); } }
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); }
public Unit(BasicModelInstance model, MapTile mp, Terrain terrain) { _modelInstance = model; MapTile = mp; _terrain = terrain; _position = mp.WorldPos; _position.Y += HeightOffset; Time = 0.0f; _activeWP = 0; Moving = false; MovePrc = 0; Speed = 1.0f; }
public static void Draw(this BasicModelInstance instance, DeviceContext deviceContext, D3DSimpleTextureEffect effect, Matrix viewProjection) { var world = instance.World; var wit = MathF.InverseTranspose(world); var wvp = world * viewProjection; effect.WorldTransform = world; effect.WorldTransformInversedTransposed = wit; effect.WorldViewProjectionTransform = wvp; effect.Material = instance.Model.Material; effect.Texture = instance.Model.DiffuseMap; DrawTech(instance, deviceContext, effect.SimpleTextureTechnique); }
private void BuildSkullGeometryBuffers() { _skullModel = BasicModel.LoadFromTxtFile(Device, "Models/skull.txt"); _skullModel.Materials[0] = new Material { Ambient = new Color4(0.2f, 0.2f, 0.2f), Diffuse = new Color4(0.2f, 0.2f, 0.2f), Specular = new Color4(16.0f, 0.8f, 0.8f, 0.8f), Reflect = new Color4(0.5f, 0.5f, 0.5f) }; _skull = new BasicModelInstance(_skullModel) { World = Matrix.Scaling(0.5f, 0.5f, 0.5f) * Matrix.Translation(0, 1.0f, 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 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); }
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); }
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); }
public override bool Init() { if (!base.Init()) { return(false); } Effects.InitAll(Device); InputLayouts.InitAll(Device); RenderStates.InitAll(Device); _texMgr = new TextureManager(); _texMgr.Init(Device); _geosphereModel = new BasicModel(); _geosphereModel.CreateGeosphere(Device, 5, _subdivisions); _geosphereModel.Materials[0] = _material; _sphereModel = new BasicModel(); _sphereModel.CreateSphere(Device, 5, 20, 20); _sphereModel.Materials[0] = new Material() { Ambient = Color.Blue, Diffuse = Color.Red, Specular = new Color4(16.0f, 0.75f, 0.75f, 0.75f) }; _geosphere = new BasicModelInstance(_geosphereModel) { World = Matrix.Identity }; _sphere = new BasicModelInstance(_sphereModel); return(true); }
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) { World = Matrix.Scaling(0.1f, 0.1f, 0.1f) }; return(true); }
private void BuildShapeGeometryBuffers(Device device) { var textureManager = TextureManager11.Instance; _boxModel = BasicModel.CreateBox(device, 1, 1, 1); _boxModel.Materials[0] = new Material { Ambient = Color.White, Diffuse = Color.White, Specular = new Color(0.8f, 0.8f, 0.8f, 16.0f), Reflect = Color.Black }; _boxModel.DiffuseMapSRV[0] = textureManager.CreateTexture(NoireConfiguration.GetFullResourcePath("textures/bricks.dds")); //_boxModel.DiffuseMapSRV[0] = textureManager.CreateTexture(NoireConfiguration.GetFullResourcePath("textures/metal.jpg")); _boxModel.NormalMapSRV[0] = textureManager.CreateTexture(NoireConfiguration.GetFullResourcePath("textures/bricks_nmap.png")); _gridModel = BasicModel.CreateGrid(device, 80, 120, 40, 60); _gridModel.Materials[0] = new Material { Ambient = new Color(0.8f, 0.8f, 0.8f), Diffuse = new Color(0.8f, 0.8f, 0.8f), Specular = new Color(0.8f, 0.8f, 0.8f, 16.0f), Reflect = Color.Black }; _gridModel.DiffuseMapSRV[0] = textureManager.CreateTexture(NoireConfiguration.GetFullResourcePath("textures/floor.dds")); _gridModel.NormalMapSRV[0] = textureManager.CreateTexture(NoireConfiguration.GetFullResourcePath("textures/floor_nmap.png")); _sphereModel = BasicModel.CreateSphere(device, 0.5f, 20, 20); _sphereModel.Materials[0] = new Material { Ambient = new Color(0.6f, 0.8f, 0.9f), Diffuse = new Color(0.6f, 0.8f, 0.9f), Specular = new Color(0.9f, 0.9f, 0.9f, 16.0f), Reflect = new Color(0.4f, 0.4f, 0.4f) }; _cylinderModel = BasicModel.CreateCylinder(device, 0.5f, 0.3f, 3.0f, 20, 20); _cylinderModel.Materials[0] = new Material { Ambient = Color.White, Diffuse = Color.White, //Specular = new Color(0.3f, 0.3f, 0.3f, 16.0f), // plywood //Specular = new Color(0.8f, 0.8f, 0.8f, 16.0f), // metal, stone Specular = new Color(0.6f, 0.6f, 0.6f, 16.0f), // leather Reflect = Color.Black }; _cylinderModel.DiffuseMapSRV[0] = textureManager.CreateTexture(NoireConfiguration.GetFullResourcePath("textures/material/copper_Base_Color.png")); _cylinderModel.NormalMapSRV[0] = textureManager.CreateTexture(NoireConfiguration.GetFullResourcePath("textures/material/copper_Normal.png")); for (var i = 0; i < 5; i++) { _cylinders[i * 2] = new BasicModelInstance(_cylinderModel) { World = Matrix.Translation(-5.0f, 1.5f, -10.0f + i * 5.0f), TexTransform = Matrix.Scaling(1, 2, 1) }; _cylinders[i * 2 + 1] = new BasicModelInstance(_cylinderModel) { World = Matrix.Translation(5.0f, 1.5f, -10.0f + i * 5.0f), TexTransform = Matrix.Scaling(1, 2, 1) }; _spheres[i * 2] = new BasicModelInstance(_sphereModel) { World = Matrix.Translation(-5.0f, 3.5f, -10.0f + i * 5.0f) }; _spheres[i * 2 + 1] = new BasicModelInstance(_sphereModel) { World = Matrix.Translation(5.0f, 3.5f, -10.0f + i * 5.0f) }; } _grid = new BasicModelInstance(_gridModel) { TexTransform = Matrix.Scaling(32, 40, 1), World = Matrix.Identity }; _box = new BasicModelInstance(_boxModel) { TexTransform = Matrix.Scaling(2, 1, 1), World = Matrix.Scaling(3.0f, 1.0f, 3.0f) * Matrix.Translation(0, 0.5f, 0) }; // MIC const string decelFileDir = @"C:\Users\MIC\Documents\3dsMax\export"; var decelFile = Path.Combine(decelFileDir, "decel.3ds"); _decelModel = BasicModel.Create(device, TextureManager11.Instance, decelFile, decelFileDir); _decelWorld = Matrix.Scaling(8f) * Matrix.Translation(0, 0.6f, 5); // * Matrix.RotationX(MathUtil.DegreesToRadians(-90f)); _decelInstance = new BasicModelInstance(_decelModel) { TexTransform = Matrix.Identity, World = _decelWorld }; const string barbFileDir = @"C:\Users\MIC\Desktop\models\barb01"; var barbFile = Path.Combine(barbFileDir, "barb01.3ds"); _barbModel = BasicModel.Create(device, TextureManager11.Instance, barbFile, barbFileDir); _barbWorld = Matrix.Scaling(0.003f) * Matrix.Translation(0, 1, 0.3f); _barbInstance = new BasicModelInstance(_barbModel) { TexTransform = Matrix.Identity, World = _barbWorld }; const string truckFileDir = @"C:\Users\MIC\Desktop\m4\ea55"; var truckFile = Path.Combine(truckFileDir, "mic.3ds"); _truckModel = BasicModel.Create(device, TextureManager11.Instance, truckFile, truckFileDir); _truckWorld = Matrix.Scaling(0.003f) * Matrix.Translation(0, 8, 2) * Matrix.RotationX(MathUtil.DegreesToRadians(-90f)); _truckInstance = new BasicModelInstance(_truckModel) { TexTransform = Matrix.Identity, World = _truckWorld }; const string tireFileDir = @"C:\Users\MIC\Desktop\models\tire02"; var tireFile = Path.Combine(tireFileDir, "tire02.3ds"); _tireModel = BasicModel.Create(device, TextureManager11.Instance, tireFile, tireFileDir); _tireWorld = Matrix.Scaling(0.003f) * Matrix.Translation(0, 4, 1) * Matrix.RotationX(MathUtil.DegreesToRadians(-90f)); _tireInstance = new BasicModelInstance(_tireModel) { TexTransform = Matrix.Identity, World = _tireWorld }; }
public Firework(int type, float age, BasicModel m) { Type = type; Age = age; Model = new BasicModelInstance(m); }
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.DebugQuadTree = true; _terrain.Init(Device, ImmediateContext, tii); _camera.Height = _terrain.Height; _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); _sphereModel = new BasicModel(); _sphereModel.CreateSphere(Device, 0.25f, 10, 10); _sphereModel.Materials[0] = new Material { Ambient = Color.Red, Diffuse = Color.Red, Specular = new Color4(32, 1.0f, 1.0f, 1.0f) }; _sphereModel.DiffuseMapSRV[0] = _whiteTex; _sphere = new BasicModelInstance(_sphereModel); _spherePos = new Vector3(float.MaxValue); _path = null; return(true); }
public static void DrawModel(this RenderContext context, BasicModelInstance modelInstance, D3DVertexColorEffect effect, Matrix viewProjection) { modelInstance.Draw(context.Direct3DDevice.ImmediateContext, effect, viewProjection); }
public override bool Init() { if (!base.Init()) { return(false); } Effects.InitAll(Device); InputLayouts.InitAll(Device); RenderStates.InitAll(Device); _texMgr = new TextureManager(); _texMgr.Init(Device); _drone = new SkinnedModel(Device, _texMgr, "Models/drone.x", "Textures", true); _droneInstance = new SkinnedModelInstance( "Attack", Matrix.RotationY(MathF.PI), _drone ); foreach (var clip in _droneInstance.Clips) { _droneInstance.AddClip(clip); } _droneInstance.LoopClips = true; _mage = new SkinnedModel(Device, _texMgr, "Models/magician.x", "textures", true); _mageInstance = new SkinnedModelInstance( "Attack", Matrix.RotationY(MathF.PI) * Matrix.Translation(4.0f, 0, 0), _mage ); foreach (var clip in _mageInstance.Clips) { _mageInstance.AddClip(clip); } _mageInstance.LoopClips = true; _soldier = new SkinnedModel(Device, _texMgr, "Models/soldier.x", "Textures", true); _soldierInstance = new SkinnedModelInstance( "Attack", Matrix.RotationY(MathF.PI) * Matrix.Translation(10, 0, 0), _soldier ); foreach (var clip in _soldierInstance.Clips) { _soldierInstance.AddClip(clip); } _soldierInstance.LoopClips = true; _grid = new BasicModel(); _grid.CreateGrid(Device, 30, 30, 60, 60); _grid.DiffuseMapSRV[0] = (_texMgr.CreateTexture("Textures/floor.dds")); _grid.NormalMapSRV[0] = (_texMgr.CreateTexture("Textures/floor_nmap.dds")); _gridInstance = new BasicModelInstance(_grid) { World = Matrix.Translation(0, -1.5f, 0) }; return(true); }
private void BuildShapeGeometryBuffers() { _texMgr = new TextureManager(); _texMgr.Init(Device); _boxModel = new BasicModel(); _boxModel.CreateBox(Device, 1, 1, 1); _boxModel.Materials[0] = new Material { Ambient = Color.White, Diffuse = Color.White, Specular = new Color4(16.0f, 0.8f, 0.8f, 0.8f), Reflect = Color.Black }; _boxModel.DiffuseMapSRV[0] = _texMgr.CreateTexture("Textures/bricks.dds"); _boxModel.NormalMapSRV[0] = _texMgr.CreateTexture("Textures/bricks_nmap.dds"); _gridModel = new BasicModel(); _gridModel.CreateGrid(Device, 20, 30, 40, 60); _gridModel.Materials[0] = new Material { Ambient = new Color4(0.8f, 0.8f, 0.8f), Diffuse = new Color4(0.8f, 0.8f, 0.8f), Specular = new Color4(16.0f, 0.8f, 0.8f, 0.8f), Reflect = Color.Black }; _gridModel.DiffuseMapSRV[0] = _texMgr.CreateTexture("Textures/floor.dds"); _gridModel.NormalMapSRV[0] = _texMgr.CreateTexture("Textures/floor_nmap.dds"); _sphereModel = new BasicModel(); _sphereModel.CreateSphere(Device, 0.5f, 20, 20); _sphereModel.Materials[0] = new Material { Ambient = new Color4(0.6f, 0.8f, 0.9f), Diffuse = new Color4(0.6f, 0.8f, 0.9f), Specular = new Color4(16.0f, 0.9f, 0.9f, 0.9f), Reflect = new Color4(0.4f, 0.4f, 0.4f) }; _cylinderModel = new BasicModel(); _cylinderModel.CreateCylinder(Device, 0.5f, 0.3f, 3.0f, 20, 20); _cylinderModel.Materials[0] = new Material { Ambient = Color.White, Diffuse = Color.White, Specular = new Color4(16.0f, 0.8f, 0.8f, 0.8f), Reflect = Color.Black }; _cylinderModel.DiffuseMapSRV[0] = _texMgr.CreateTexture("Textures/bricks.dds"); _cylinderModel.NormalMapSRV[0] = _texMgr.CreateTexture("Textures/bricks_nmap.dds"); for (var i = 0; i < 5; i++) { _cylinders[i * 2] = new BasicModelInstance(_cylinderModel) { World = Matrix.Translation(-5.0f, 1.5f, -10.0f + i * 5.0f), TexTransform = Matrix.Scaling(1, 2, 1) }; _cylinders[i * 2 + 1] = new BasicModelInstance(_cylinderModel) { World = Matrix.Translation(5.0f, 1.5f, -10.0f + i * 5.0f), TexTransform = Matrix.Scaling(1, 2, 1) }; _spheres[i * 2] = new BasicModelInstance(_sphereModel) { World = Matrix.Translation(-5.0f, 3.5f, -10.0f + i * 5.0f) }; _spheres[i * 2 + 1] = new BasicModelInstance(_sphereModel) { World = Matrix.Translation(5.0f, 3.5f, -10.0f + i * 5.0f) }; } _grid = new BasicModelInstance(_gridModel) { TexTransform = Matrix.Scaling(8, 10, 1), World = Matrix.Identity }; _box = new BasicModelInstance(_boxModel) { TexTransform = Matrix.Scaling(2, 1, 1), World = Matrix.Scaling(3.0f, 1.0f, 3.0f) * Matrix.Translation(0, 0.5f, 0) }; }
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); Patch.InitPatchData(Terrain.CellsPerPatch, Device); 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 }; _terrain = new Terrain(); _terrain.Init(Device, ImmediateContext, tii); _camera.Height = _terrain.Height; _txMgr = new TextureManager(); _txMgr.Init(Device); _treeModel = new BasicModel(Device, _txMgr, "Models/tree.x", "Textures"); _treeInstances = new List <BasicModelInstance>(); for (var i = 0; i < NumTrees; i++) { var good = false; var x = MathF.Rand(0, _terrain.Width); var z = MathF.Rand(0, _terrain.Depth); while (!good) { if (_terrain.Height(x, z) < 12.0f) { good = true; } x = MathF.Rand(-_terrain.Width / 2, _terrain.Width / 2); z = MathF.Rand(-_terrain.Depth / 2, _terrain.Depth / 2); } var treeInstance = new BasicModelInstance(_treeModel) { World = Matrix.RotationX(MathF.PI / 2) * Matrix.Translation(x, _terrain.Height(x, z), z) }; _treeInstances.Add(treeInstance); } BuildInstancedBuffer(); return(true); }