เอฟเฟกต์เบลอสำหรับ UGUI นั้นมีประสิทธิภาพสำหรับภาพ Atlas ด้วยแบบอักษรแบบไดนามิก
เอฟเฟกต์เบลอสำหรับ UGUI ที่มีประสิทธิภาพแม้สำหรับภาพ Atlas รวมถึงแบบอักษรแบบไดนามิก
<< คำอธิบาย | การสาธิต WebGL ดาวน์โหลด | การใช้งาน หมายเหตุการพัฒนา >>

ปลั๊กอินนี้จะช่วยลดสิ่งประดิษฐ์ทั่วไป (= ผลพลอยได้เสียงรบกวน) ที่สามารถเกิดขึ้นได้ในเอฟเฟกต์เบลอสำหรับ UGUI
เราจะแก้ปัญหาสองสิ่งต่อไปนี้:
หมายเหตุ: ชื่อสิ่งประดิษฐ์มีความเหมาะสม
ปลั๊กอินนี้ช่วยลดสิ่งประดิษฐ์ทั่วไปในเอฟเฟกต์เบลอสำหรับ UGUI
ปลั๊กอินนี้แก้ปัญหาสองสิ่งต่อไปนี้
หมายเหตุ: ฉันไม่ทราบว่าชื่อของสิ่งประดิษฐ์เป็นชื่อที่แน่นอนหรือไม่;)

เอฟเฟกต์เบลอรวม Texels หลายรายการเข้ากับ shader ชิ้นส่วนตามเคอร์เนล
สิ่งประดิษฐ์จะเกิดขึ้นเมื่ออ้างอิงรังสียูวีในสไปรต์ที่อยู่ติดกันเนื่องจากขนาดเคอร์เนลขนาดใหญ่หรือช่องว่างขนาดเล็กในแผนที่
เอฟเฟกต์เบลอผสมผสานหลายเทคเซิลตามขนาดเคอร์เนลในชิ้นส่วน shader
สิ่งประดิษฐ์จะเกิดขึ้นเมื่ออ้างอิง UVs ของสไปรต์ที่อยู่ติดกันเช่นเนื่องจากขนาดเคอร์เนลมีขนาดใหญ่หรือขนาดช่องว่างภายในของแผนที่มีขนาดเล็ก

มาสก์ UVs ที่สามารถอ้างอิงได้สำหรับแต่ละจุดสุดยอด
สำหรับ UI มันตรงกับช่วง UV ของสไปรต์และตัวละคร
หากคุณอ้างถึง UV ที่เปิดโปง (= ถ้าคุณอ้างถึง UV นอกช่วง) Texel จะถูกพิจารณาว่าจะคืนสี (0,0,0,0) ของสี
สำหรับแต่ละจุดสุดยอดหน้ากาก UVs ที่จุดยอดสามารถอ้างอิงได้
ในกรณีขององค์ประกอบ UI มันจะตรงกับช่วง UV ของสไปรต์หรือตัวละคร
เมื่ออ้างถึง UV ที่ยังไม่ได้รับการเปิดโปง Texel จะส่งคืนสี (0,0,0,0)
float4 mask; // xy: minimum uv, zw: maximum uv.
float2 uv;
float4 color = tex2D(_MainTex, uv)
* step(mask.x, uv.x)
* step(mask.y, uv.y)
* step(uv.x, mask.z)
* step(uv.y, mask.w);

พิกเซลที่สามารถวาดได้ด้วยชิ้นส่วน shader นั้นถูกสร้างขึ้นโดยการแรสเตอร์
โดยทั่วไปแล้ว UI Shader ไม่ได้วาดพื้นที่นอกตาข่ายที่กำหนด
เมื่อขนาดเคอร์เนลมีขนาดใหญ่หรือระยะขอบของสไปรต์มีขนาดเล็ก "สิ่งประดิษฐ์ที่ดูเหมือนจะถูกตัดในตาข่าย" จะเกิดขึ้น
พิกเซลที่สามารถแสดงผลได้ด้วยเศษชิ้นส่วนจะถูกสร้างขึ้นโดยการแรสเตอร์
ในกรณีส่วนใหญ่ UI Shader ไม่ได้วาดพื้นที่นอกตาข่ายที่กำหนด
เมื่อขนาดเคอร์เนลมีขนาดใหญ่หรือระยะขอบของสไปรต์มีขนาดเล็ก "สิ่งประดิษฐ์ที่ดูเหมือนว่าจะถูกตัดด้วยตาข่าย" จะเกิดขึ้น

จุดยอดบนรอบนอก จะขยายออกไปข้างนอกด้วย UVS ขยายพื้นที่วาดภาพ
โซลูชันนี้ไม่เพิ่มจำนวนจุดยอด นอกจากนี้ยังมีประสิทธิภาพสำหรับ "9 sliced" และ "กระเบื้อง"
ขยายพื้นที่วาดภาพโดยการขยายพิกัดและ UV ของ จุดยอดที่ด้านนอก
โซลูชันนี้ไม่เพิ่มจำนวนจุดยอด นอกจากนี้ยังมีให้สำหรับ "9-slice" และ "กระเบื้อง"
การสาธิต webgl
Import Package > Custom Package จากเมนู AssetsTexCoord1 ของ Canvas ดูเพิ่มเติมที่บันทึกการพัฒนาUIBlurringAtlas ลงในองค์ประกอบ UI (ภาพ, rawimage, ข้อความ, ฯลฯ ... ) จาก Add Component ในผู้ตรวจสอบ ใน Unity 5.6+ ผ้าใบรองรับ ช่อง shader เพิ่มเติม
โปรดเปิดใช้งาน TexCoord1 เพื่อใช้ปลั๊กอินนี้ 
ดู Uieffect
ปลั๊กอินนี้ใช้ 12 บิต (4096 ขั้นตอน) สำหรับแต่ละองค์ประกอบของช่วง UV (uMin, vMin, uMax, vMax) และกำหนดให้กับจุดสุดยอด UV1 (นี่คือเหตุผลที่ช่อง TexCoord1 ควรเปิดใช้งานใน Unity 5.6+)
ปลั๊กอินนี้ใช้ 12 บิต (4096 ขั้นตอน) สำหรับแต่ละองค์ประกอบของช่วง UV (uMin, vMin, uMax, vMax) และกำหนดให้กับจุดสุดยอด UV1 (ใน Unity 5.6+ เป็นเหตุผลในการเปิดใช้งานช่อง TexCoord 1 )
uiVertex.uv1 = new Vector2( Packer.ToFloat(uMin, vMin), Packer.ToFloat(uMax, vMax) );
ด้วยการใช้เทคนิคนี้การแสดงออกโดยใช้การเลื่อน UV (เอฟเฟกต์เรืองแสง, เงาที่อ่อนนุ่ม ฯลฯ ) ยังสามารถใช้สำหรับองค์ประกอบ UGUI เพียงอย่างเดียว
เราจะปล่อยเอฟเฟกต์เรืองแสงในภายหลัง
ด้วยการใช้เทคนิคนี้เอฟเฟกต์โดยใช้ UV Shift (เช่น Glow Effect หรือ Soft Shadow) สามารถใช้สำหรับองค์ประกอบ UGUI เดียว
ฉันจะปล่อยเอฟเฟกต์เรืองแสงในภายหลัง
(WIP) 
ม็อบซาไก