protected override void ThreadMission_Pixel(int i, int j) { base.ThreadMission_Pixel(i, j); Vector2 uv = SWTextureProcess.TexUV(texWidth, texHeight, i, j); for (int k = 0; k < info.pts.Count; k++) { if (k == 0) { var p0 = info.pts [SWTextureProcess.LoopID(k - 1, info.pts.Count)]; var p1 = info.pts [SWTextureProcess.LoopID(k, info.pts.Count)]; var p2 = info.pts [SWTextureProcess.LoopID(k + 1, info.pts.Count)]; float pcg = SWTextureProcess.PointOnSegPcgSign(uv, p1.after, p2.uv); if (k == info.pts.Count - 1) { pcg = p1.pcg + (1 - p1.pcg) * pcg; } else { pcg = p1.pcg + (p2.pcg - p1.pcg) * pcg; } float innerDis = 0; bool seg = SWTextureProcess.Point2SegOnlyDisSign(uv, p1.after, p2.pre, ref innerDis); innerDis = -innerDis; if (seg && (Mathf.Abs(innerDis) <= size)) { float g = (innerDis / size + 1) * 0.5f; float b = (pcg > 0.995f || pcg < 0.005f)? 1:0; float a = GreenToAlpha(g); texColorBuffer [(texHeight - j - 1) * texWidth + i] = new Color(pcg, g, b, a); } } else { var p0 = info.pts [SWTextureProcess.LoopID(k - 1, info.pts.Count)]; var p1 = info.pts [SWTextureProcess.LoopID(k, info.pts.Count)]; var p2 = info.pts [SWTextureProcess.LoopID(k + 1, info.pts.Count)]; float pcg = SWTextureProcess.PointOnSegPcgSign(uv, p1.uv, p2.uv); if (k == info.pts.Count - 1) { pcg = p1.pcg + (1 - p1.pcg) * pcg; } else { pcg = p1.pcg + (p2.pcg - p1.pcg) * pcg; } float innerDis = 0; bool seg = SWTextureProcess.Point2SegOnlyDisSign(uv, p1.after, p2.pre, ref innerDis); innerDis = -innerDis; if (seg && (Mathf.Abs(innerDis) <= size)) { float g = (innerDis / size + 1) * 0.5f; float b = (pcg > 0.995f || pcg < 0.005f)? 1:0; float a = GreenToAlpha(g); texColorBuffer [(texHeight - j - 1) * texWidth + i] = new Color(pcg, g, b, a); } } } }