public TerrainVoxel() { Transformation.SetScale(Vector3.One * TerrainSize); Transformation.SetPosition(Vector3.Up * TerrainSize * 0.25f); GenerateFloatingIslands(128); terrainMaterial = ResourceManager.Inst.GetMaterial("TerrainMaterial"); climate = ResourceManager.Inst.GetTerrainClimate("TestTerrain"); PrepareTriangles(); }
public TerrainVoxel(string filename) { Transformation.SetScale(new Vector3(1, 0.25f, 1) * TerrainSize); Transformation.SetPosition(Vector3.Up * TerrainSize * 0.0725f); terrainMaterial = ResourceManager.Inst.GetMaterial("TerrainMaterial"); climate = ResourceManager.Inst.GetTerrainClimate("TestTerrain"); GenerateTerrainFromFile(filename); }
public TerrainVoxel() { Transformation.SetScale(new Vector3(1, 0.25f, 1) * TerrainSize); Transformation.SetPosition(Vector3.Up * TerrainSize * 0.22f); //GenerateFloatingIslands(128); GenerateTerrainProcedurally(); terrainMaterial = ResourceManager.Inst.GetMaterial("TerrainMaterial"); climate = ResourceManager.Inst.GetTerrainClimate("TestTerrain"); PrepareTriangles(); TransformLandmarks(); }
public ClutterPlacement(TerrainHeightmap terrain, RenderView renderView) { this.terrain = terrain; this.view = renderView; this.climate = terrain.GetClimate(); BuildPlantSpots(); }
void BuildBlendMap(Texture2D heightmap) { climate = ResourceManager.Inst.GetTerrainClimate("TestTerrain"); DepthStencilBuffer dsOld = GFX.Device.DepthStencilBuffer; GFX.Device.DepthStencilBuffer = GFX.Inst.dsBufferLarge; Shader gradientShader = ResourceManager.Inst.GetShader("GradientHeightmap"); gradientShader.SetupShader(); GFX.Device.SetVertexShaderConstant(GFXShaderConstants.VC_INVTEXRES, Vector2.One / new Vector2(heightmap.Width, heightmap.Height)); GFX.Device.SetPixelShaderConstant(0, Vector2.One / new Vector2(heightmap.Width, heightmap.Height)); GFX.Device.Textures[0] = heightmap; RenderTarget2D rtGradient = new RenderTarget2D(GFX.Device, heightmap.Width, heightmap.Height, 1, SurfaceFormat.Single); GFX.Device.SetRenderTarget(0, rtGradient); GFXPrimitives.Quad.Render(); GFX.Device.SetRenderTarget(0, null); GFX.Device.Textures[0] = rtGradient.GetTexture(); RenderTarget2D rtCurvature = new RenderTarget2D(GFX.Device, heightmap.Width, heightmap.Height, 1, SurfaceFormat.Single); GFX.Device.SetRenderTarget(0, rtCurvature); GFXPrimitives.Quad.Render(); GFX.Device.SetRenderTarget(0, null); Shader blendShader = ResourceManager.Inst.GetShader("BlendHeightmap"); blendShader.SetupShader(); GFX.Device.Textures[0] = heightmap; GFX.Device.Textures[1] = rtGradient.GetTexture(); GFX.Device.Textures[2] = rtCurvature.GetTexture(); Vector4[] climateParams = new Vector4[4]; Vector4[] climateParams2 = new Vector4[4]; int numBlendMapsNeeded = climate.blendZones.Length / 4; blendMaps = new RenderTarget2D[numBlendMapsNeeded]; for (int i = 0; i < numBlendMapsNeeded; i++) { int offset = i * 4; for (int j = 0; j < 4; j++) { int climateIndex = j + offset; climateParams[j] = new Vector4(climate.heightCoeffs[climateIndex], climate.gradientCoeffs[climateIndex], climate.curvatureCoeffs[climateIndex], climate.baseScores[climateIndex]); climateParams2[j] = Vector4.One * climate.blendZones[climateIndex]; } GFX.Device.SetPixelShaderConstant(0, climateParams); GFX.Device.SetPixelShaderConstant(4, climateParams2); blendMaps[i] = new RenderTarget2D(GFX.Device, heightmap.Width, heightmap.Height, 1, SurfaceFormat.Color); GFX.Device.SetRenderTarget(0, blendMaps[i]); GFXPrimitives.Quad.Render(); GFX.Device.SetRenderTarget(0, null); } NormalizeBlendWeights(); GFX.Device.DepthStencilBuffer = dsOld; }
public override void AddElement(TerrainClimate climate, TerrainRenderElement element) { Elements.Enqueue(element); }
public virtual void AddElement(TerrainClimate climate, TerrainRenderElement element) { }
public override void AddElement(TerrainClimate climate, TerrainRenderElement element) { if (!Elements.ContainsKey(climate)) Elements.Add(climate, new Queue<TerrainRenderElement>()); Elements[climate].Enqueue(element); }