ขณะนี้ฉันกำลังทำงานกับโคลน "Worms" 2D ใน XNA และหนึ่งในคุณสมบัติคือภูมิประเทศ "deformable" (เช่นเมื่อจรวดชนกับภูมิประเทศมีการระเบิดและก้อนภูมิประเทศหายไป)
ขณะนี้ฉันกำลังทำสิ่งนี้อยู่โดยใช้พื้นผิวที่มีค่าสีแดงสูงขึ้นอย่างต่อเนื่องเมื่อใกล้ถึงจุดศูนย์กลาง ฉันวนรอบทุกพิกเซลของพื้นผิว "เปลี่ยนรูป" และหากพิกเซลปัจจุบันทับซ้อนพิกเซลภูมิประเทศและมีค่าสีแดงสูงพอฉันจะปรับเปลี่ยนอาร์เรย์สีที่แสดงภูมิประเทศเป็นโปร่งใส หากพิกเซลปัจจุบันมีค่าสีแดงไม่สูงพอฉันจะทำให้ภูมิประเทศเป็นสีดำ (ยิ่งมืดลงยิ่งค่าสีแดงใกล้ถึงขีด จำกัด มากขึ้น) ในตอนท้ายของการดำเนินการนี้ฉันใช้ SetData เพื่ออัปเดตพื้นผิวภูมิประเทศของฉัน
ฉันรู้ว่านี่ไม่ใช่วิธีที่ดีที่จะทำไม่ใช่เพียงเพราะฉันได้อ่านเกี่ยวกับแผงลอยไปป์ไลน์และเช่นนั้น แต่ยังเพราะมันอาจกลายเป็นเรื่องที่ค่อนข้างล้าหลังหากมีการเพิ่มหลุมอุกกาบาตจำนวนมากในเวลาเดียวกัน ฉันต้องการสร้าง Crater Generation ของฉันใหม่บน GPU แทนที่จะใช้ Render Targets "ping-ponging" ระหว่างการเป็นเป้าหมายและพื้นผิวเพื่อปรับเปลี่ยน นั่นไม่ใช่ปัญหาฉันรู้วิธีการทำ ปัญหาคือฉันไม่รู้วิธีเก็บเบิร์นเอฟเฟกต์ด้วยวิธีนี้
นี่คือลักษณะการเบิร์นของผลตอนนี้:
ไม่มีใครมีความคิดว่าฉันจะสร้างเอฟเฟกต์การเผาไหม้ที่คล้ายกันได้อย่างไร (ทำให้ขอบรอบปล่องที่เกิดขึ้นมืดลง)? ฉันไม่คุ้นเคยกับ Shaders อย่างสมบูรณ์ แต่ถ้าจำเป็นต้องใช้ฉันจะขอบคุณจริง ๆ ถ้ามีคนแนะนำฉันเกี่ยวกับวิธีการทำ หากมีวิธีอื่นใดที่จะดีเช่นกัน