public void BuildVertices() { var mesh = GetMesh(); mesh.Clear(false); Bounds.Clear(); var step = Terrain.NormalStep; if (Terrain.Normals == SgtTerrain.NormalType.QuadStep) { var verts = (2 << Terrain.Subdivisions) + 1; var scale = 1 << Depth; step = 1.0f / (verts * scale); } SgtTerrainCompute.BeginFace(Terrain.ForceCPU); SgtTerrainCompute.SetFaceCorners(Side, CornerBL, CornerBR, CornerTL); SgtTerrainCompute.SetMain(Terrain.Radius, step, Terrain.NormalStrength, Terrain.HeightMap, Terrain.HeightScale); SgtTerrainCompute.SetDetail(Terrain.MaskMap, Terrain.DetailTiling, Terrain.DetailMapA, Terrain.DetailScaleA, Terrain.DetailMapB, Terrain.DetailScaleB); SgtTerrainCompute.DispatchFace(mesh, Terrain.Subdivisions, ref Bounds, Terrain.CenterMesh); Terrain.PositionChanged(Terrain.transform, this); //mesh.RecalculateBounds(); }
public SgtTerrainCompute.Output SampleLocalOutput(SgtVector3D localPoint) { SgtTerrainCompute.BeginPoint(ForceCPU); SgtTerrainCompute.SetMain(Radius, NormalStep, NormalStrength, HeightMap, HeightScale); SgtTerrainCompute.SetDetail(MaskMap, DetailTiling, DetailMapA, DetailScaleA, DetailMapA, DetailScaleB); return(SgtTerrainCompute.DispatchPoint((Vector3)localPoint)); }