ฉันต้องการที่จะบรรลุในเอกภาพเห็นผ่านผลเหมือนในตัวอย่างเหล่านี้:
ในสถานการณ์เฉพาะของฉันมีข้อกำหนดสองสามข้อ:
- สไปรท์กำลังใช้การผสมแอลฟาและสไปรท์มีพื้นที่โปร่งใส
- มีองค์ประกอบ 2 ชนิดที่ปิดอักขระ หนึ่งควรสร้างเอฟเฟกต์ภาพเงาและอีกภาพหนึ่งควรทำงานเหมือนปกติ
สำหรับการปิดองค์ประกอบที่สร้างภาพเงาฉันเปิดใช้งาน ZWrite และปิดการใช้งานองค์ประกอบที่ไม่มี
สำหรับตัวละครฉันพยายามตั้งค่าคิวของ shader เป็น transparent + 1 และเพิ่มรหัสผ่านนี้:
Pass
{
ZTest Greater
Lighting Off
Color [_Color]
}
และผลงานบางส่วน:
ภาพเงาถูกดึงดูดไปทั่วตัวละครแม้กระทั่งส่วนที่โปร่งใส ส่วนที่โปร่งใสไม่ควรสร้างภาพเงา
ภาพเงาถูกสร้างขึ้นเมื่อตัวละครอยู่ด้านหลังเทพดาแม้ว่าส่วนหนึ่งของผีสางนั้นจะโปร่งใส การอยู่ด้านหลังของสไปรต์ไม่ควรสร้างภาพเงา
ตัวละครจะปรากฏต่อหน้าองค์ประกอบที่เหลือแม้ว่ามันจะอยู่ข้างหลังก็ตาม ฉันเดาว่าเป็นเพราะการตั้งค่าคิวเป็น Transparent + 1 แต่ถ้าฉันปล่อยให้มันเป็นแบบโปร่งใสตัวละครจะถูกวาดตามลำดับที่ถูกต้อง แต่ภาพเงานั้นไม่เคยเห็น
ฉันพยายามปฏิบัติตามคำแนะนำเหล่านี้ที่มีคนให้ แต่ฉันไม่สามารถใช้งานได้:
1) ออกบัตรผ่านที่แสดงผลสไปรต์ตามที่เป็นอยู่
2) เพิ่มรหัสผ่านที่เขียนไปยังบัฟเฟอร์ z แต่มี shader ที่ใช้คลิป () เพื่อทิ้งพิกเซลตามอัลฟา คุณไม่สามารถใช้ z-buffer เพื่อทำการทดสอบ z-soft โดยไม่ต้องใช้ MSAA และครอบคลุม alpha-to คุณภาพของมันจะไม่ยอดเยี่ยม แต่มันเป็นสิ่งที่ดีที่สุดที่คุณสามารถทำได้ ทางเลือกที่เร็วกว่านั้นคือลวดลายหรือเสียงรบกวนหรือเป็นจุดเริ่มต้นที่ดีหากสไปรต์ของคุณมีขอบที่ค่อนข้างคม
3) เพิ่มรอบที่สามไปยังวัตถุที่สามารถแยกได้ซึ่งดึงสีการบดเคี้ยวโดยใช้การทดสอบ z และตรวจสอบให้แน่ใจว่ามันถูกวาดเป็นรอบสุดท้าย
ฉันเป็นคนใหม่สำหรับผู้ที่มีผิวสีโดยเฉพาะอย่างยิ่งใน Unity และฉันก็ไม่สามารถหาวิธีที่จะทำให้มันทำงานได้อย่างถูกต้อง