public async Task <TextureWithSize> GenerateHeightDetailElementAsync(MyRectangle requestedArea, TerrainCardinalResolution resolution, RequiredCornersMergeStatus cornersMergeStatus) { var textureWithSize = await RetriveFoundationTextureAsync(requestedArea, resolution, cornersMergeStatus); var workTexture = new TextureWithCoords(sizedTexture: textureWithSize, coords: requestedArea); foreach (var applier in _featureAppliers.Where(c => c.AvalibleResolutions.Contains(resolution)) .OrderBy(c => c.Rank)) { workTexture = await applier.Applier.ApplyFeatureAsync(workTexture, resolution, false); //todo var localTexture = workTexture; await _commonExecutor.AddAction(() => localTexture.Texture.wrapMode = TextureWrapMode.Clamp); } var textureWithMipMaps = await GenerateTextureWithMipMapsAsync(new TextureWithSize() { Size = textureWithSize.Size, Texture = workTexture.Texture }); return(new TextureWithSize() { Size = textureWithSize.Size, Texture = textureWithMipMaps }); }
public TerrainDetailGenerator(TerrainDetailGeneratorConfiguration configuration, UTTextureRendererProxy rendererProxy, TextureWithCoords fullFundationTextureData, List <RankedTerrainFeatureApplier> featureAppliers, CommonExecutorUTProxy commonExecutor) { _configuration = configuration; _rendererProxy = rendererProxy; _fullFundationTextureData = fullFundationTextureData; _featureAppliers = featureAppliers; _commonExecutor = commonExecutor; }
private TerrainDetailProvider CreateTerrainDetailProvider(List <RankedTerrainFeatureApplier> featureAppliers) { TerrainDetailGeneratorConfiguration generatorConfiguration = new TerrainDetailGeneratorConfiguration() { TerrainDetailImageSideDisjointResolution = 240 }; TextureWithCoords fullFundationData = new TextureWithCoords(new TextureWithSize() { Texture = MainTexture, Size = new IntVector2(MainTexture.width, MainTexture.height) }, new MyRectangle(0, 0, 3601 * 24, 3601 * 24)); TerrainDetailGenerator generator = new TerrainDetailGenerator(generatorConfiguration, _utTextureRendererProxy, fullFundationData, featureAppliers, new CommonExecutorUTProxy()); var provider = new TerrainDetailProvider(generator, null, new TerrainDetailAlignmentCalculator(240)); generator.SetBaseTerrainDetailProvider(BaseTerrainDetailProvider.CreateFrom(provider)); return(provider); }
public TerrainDetailGenerator CreateTerrainDetailGenerator(TextureWithSize mainTexture) { var featureAppliers = TerrainDetailProviderDebugUtils.CreateFeatureAppliers(_utTextureRendererProxy, ContainerGameObject, _commonExecutorUtProxy, _computeShaderExecutorObject); TerrainDetailGeneratorConfiguration generatorConfiguration = new TerrainDetailGeneratorConfiguration() { TerrainDetailImageSideDisjointResolution = 240 }; TextureWithCoords fullFundationData = new TextureWithCoords(new TextureWithSize() { Texture = mainTexture.Texture, Size = new IntVector2(mainTexture.Size.X, mainTexture.Size.Y) }, new MyRectangle(0, 0, 3601 * 24, 3601 * 24)); TerrainDetailGenerator generator = new TerrainDetailGenerator(generatorConfiguration, _utTextureRendererProxy, fullFundationData, featureAppliers, _commonExecutorUtProxy); return(generator); }