private WeldTexturePixelChangesInfo CalculateWeldTextureChangedPixelsShaderRange( WeldOnTextureInfo orderWeldOnTextureInfo) { return(new WeldTexturePixelChangesInfo() { ConstantCoord = orderWeldOnTextureInfo.ColumnIndex, Range1 = orderWeldOnTextureInfo.WeldRange.X, Range2 = orderWeldOnTextureInfo.WeldRange.Y, }); }
public TerrainWeldUvs AddStipSegment(WeldStripPosition stripPosition, StripSide follower) { var strip = _stripColumns[stripPosition.ColumnIndex].GetSegment(stripPosition.StripInColumnIndex); strip.Followers.Add(follower); var leader = strip.Leader; var leaderSideInfo = CreateDrawingSideInfo(leader, follower.NormalizedMarginUvOfTerrain); var followerSideInfo = CreateDrawingSideInfo(follower, new Vector2(0, 1)); var donorSide = leaderSideInfo; var acceptorSide = followerSideInfo; if (follower.WeldSideType.IsDonorSide()) { donorSide = followerSideInfo; acceptorSide = leaderSideInfo; } var weldRange = CalculateWeldRange(stripPosition.StripInColumnIndex, follower.NormalizedMarginUvOfTerrain); WeldOnTextureInfo weldInfo = new WeldOnTextureInfo() { ColumnIndex = stripPosition.ColumnIndex, WeldRange = weldRange }; acceptorSide.SamplingDistance = weldInfo.WeldRange.Length / (acceptorSide.FullLodSidePixelsRange.Length - 1); donorSide.SamplingDistance = weldInfo.WeldRange.Length / (donorSide.FullLodSidePixelsRange.Length - 1); _weldingExecutor.RenderWeld(new WeldTextureDrawingOrder() { FirstSideInfo = acceptorSide, SecondSideInfo = donorSide, WeldOnTextureInfo = weldInfo }); return(TerrainWeldUvs.CreateFrom(follower.WeldSideType, CreateNormalizedWeldRange(weldRange, stripPosition.ColumnIndex))); }