void GenerateVegetationColorMask(VegetationSystemPro vegetationSystemPro) { _path = EditorUtility.SaveFilePanelInProject("Save mask background", "", "png", "Please enter a file name to save the mask background to"); if (_path.Length != 0) { VegetationColorMaskCreator colorMaskCreator = (VegetationColorMaskCreator)target; //Terrain selectedTerrain = _vegetationSystem.currentTerrain; //if (selectedTerrain == null) return; _cameraObject = new GameObject { name = "Mask Background camera" }; _textureResolution = colorMaskCreator.GetVegetationColorMaskQualityPixelResolution(colorMaskCreator .VegetationColorMaskQuality); _rt = new RenderTexture(_textureResolution, _textureResolution, 24, RenderTextureFormat.ARGB32, RenderTextureReadWrite.Linear) { wrapMode = TextureWrapMode.Clamp, filterMode = FilterMode.Trilinear, autoGenerateMips = false }; _backgroundCamera = _cameraObject.AddComponent <Camera>(); _backgroundCamera.targetTexture = _rt; _backgroundCamera.clearFlags = CameraClearFlags.Color; _backgroundCamera.backgroundColor = colorMaskCreator.BackgroundColor; _backgroundCamera.orthographic = true; _backgroundCamera.orthographicSize = colorMaskCreator.AreaRect.size.x / 2f; _backgroundCamera.farClipPlane = 20000; _backgroundCamera.cullingMask = 1 << colorMaskCreator.InvisibleLayer; _cameraObject.transform.position = new Vector3(colorMaskCreator.AreaRect.position.x, 0, colorMaskCreator.AreaRect.position.y) + new Vector3(colorMaskCreator.AreaRect.size.x / 2f, 1000, colorMaskCreator.AreaRect.size.y / 2f); _cameraObject.transform.rotation = Quaternion.Euler(90, 0, 0); _backgroundCamera.Render(); Graphics.SetRenderTarget(_rt); GL.Viewport(new Rect(0, 0, _rt.width, _rt.height)); GL.Clear(true, true, new Color(0, 0, 0, 0), 1f); GL.PushMatrix(); GL.LoadProjectionMatrix(_backgroundCamera.projectionMatrix); GL.modelview = _backgroundCamera.worldToCameraMatrix; GL.PushMatrix(); List <VegetationCell> selectedCells = new List <VegetationCell>(); vegetationSystemPro.VegetationCellQuadTree.Query(colorMaskCreator.AreaRect, selectedCells); RenderVegetation(selectedCells, vegetationSystemPro, colorMaskCreator); GL.PopMatrix(); GL.PopMatrix(); PostProcessMask(); } }