public MyRectangle ComputeAlignedTerrainArea(MyRectangle queryArea, TerrainCardinalResolution cardinalResolution) { var newTerrainArea = TerrainShapeUtils.GetAlignedTerrainArea(queryArea, cardinalResolution, _terrainDetailImageSideDisjointResolution); return(newTerrainArea); }
private async Task <TextureWithSize> RetriveFoundationTextureAsync(MyRectangle requestedArea, TerrainCardinalResolution resolution, RequiredCornersMergeStatus cornersMergeStatus) { Texture fundationTexture = null; MyRectangle renderCoords = null; TerrainDetailElementToken retrivedElementToken = null; if (resolution == TerrainCardinalResolution.MIN_RESOLUTION) { fundationTexture = _fullFundationTextureData.Texture; renderCoords = TerrainShapeUtils.ComputeUvOfSubElement(requestedArea, _fullFundationTextureData.Coords); } else { var lowerResolution = resolution.LowerResolution; var fundationQueryArea = TerrainShapeUtils.GetAlignedTerrainArea(requestedArea, lowerResolution, _configuration.TerrainDetailImageSideDisjointResolution); var foundationOutput = await _baseTerrainDetailProvider.RetriveTerrainDetailAsync( TerrainDescriptionElementTypeEnum.HEIGHT_ARRAY, fundationQueryArea, lowerResolution, cornersMergeStatus); retrivedElementToken = foundationOutput.TokenizedElement.Token; var fundationDetailElement = foundationOutput.TokenizedElement.DetailElement; renderCoords = TerrainShapeUtils.ComputeUvOfSubElement(requestedArea, fundationDetailElement.DetailArea); fundationTexture = fundationDetailElement.Texture.Texture; await _commonExecutor.AddAction(() => fundationTexture.filterMode = FilterMode.Bilinear); } IntVector2 outTextureSize = TerrainShapeUtils.RetriveTextureSize(requestedArea, resolution); UniformsPack pack = new UniformsPack(); pack.SetTexture("_SourceTexture", fundationTexture); ConventionalTextureInfo outTextureInfo = new ConventionalTextureInfo(outTextureSize.X, outTextureSize.Y, TextureFormat.ARGB32, true); TextureRenderingTemplate template = new TextureRenderingTemplate() { CanMultistep = false, Coords = renderCoords, OutTextureInfo = outTextureInfo, RenderTextureFormat = RenderTextureFormat.RFloat, ShaderName = "Custom/TerGen/Cutting", UniformPack = pack, CreateTexture2D = false }; var outTex = await _rendererProxy.AddOrder(template); await _commonExecutor.AddAction(() => outTex.wrapMode = TextureWrapMode.Clamp); if (retrivedElementToken != null) { await _baseTerrainDetailProvider.RemoveTerrainDetailAsync(retrivedElementToken); } return(new TextureWithSize() { Size = outTextureSize, Texture = outTex }); }
public MyRectangle GetAlignedTerrainArea(IntVector2 griddedArea, TerrainCardinalResolution cardinalResolution) { return(TerrainShapeUtils.GetAlignedTerrainArea(griddedArea, cardinalResolution, _terrainDetailImageSideDisjointResolution)); }
public MyRectangle GetAlignedTerrainArea(MyRectangle queryArea, TerrainCardinalResolution cardinalResolution) { return(TerrainShapeUtils.GetAlignedTerrainArea(queryArea, cardinalResolution, _terrainDetailImageSideDisjointResolution)); }