2D โปรไฟล์ผิวด้านบนของน้ำ


9

ฉันพยายามสร้างเอฟเฟกต์ของความหนาของผิวน้ำด้วย shader ที่ยอด

ฉันอยู่ในสภาพแวดล้อมของเกม 3 มิติ แต่มันเป็นมุมมองเลื่อนดังนั้นมุมมอง "2D" นี่คือบทแนะนำที่ดีเกี่ยวกับการสร้างเอฟเฟกต์ดังกล่าวใน 2D จริงโดยใช้ตัวแบ่งส่วน
แต่ฉันคิดว่ามันใช้ไม่ได้ในกรณีนี้ สำหรับช่วงเวลาที่ฉันมีเครื่องบินเพียงลำเดียวฉันก็ใช้การหักเหแสง

การหักเห

และฉันต้องการใช้เอฟเฟกต์ความหนาของน้ำ แต่ฉันไม่รู้จะทำยังไง
ฉันไม่ได้พยายามที่จะสร้างการเสียรูป / การเคลื่อนที่ของน้ำโดยใช้จุดยอดในขณะนี้นี่ไม่ใช่ประเด็น

ฉันไม่รู้ว่ามันเป็นไปได้หรือเปล่ากับ quad ที่เรียบง่ายบางทีฉันควรใช้วัตถุแบบนี้

ระบบ

นี่คือตัวอย่างบางส่วน.

1 2 4 Rayman

ฉันไม่มีความคิดเกี่ยวกับวิธีสร้างเอฟเฟกต์นี้

ขอบคุณมาก !

[ แก้ไข ] เพิ่มเอฟเฟกต์น้ำเรย์แมนเพื่อการอ้างอิงที่ดีขึ้นของเอฟเฟกต์


คุณกำลังทำเอฟเฟกต์น้ำอย่างไร? หากภาพหน้าจอแรกในโพสต์เป็นของคุณดูเหมือนว่าคุณกำลังวาดรูปสี่เหลี่ยมสองมิติบนฉากโดยมีส่วนที่บิดเบือน หากถูกต้องเหตุใดคุณจึงไม่สามารถทำตามคำแนะนำในการสอนซึ่งขึ้นอยู่กับการใช้พื้นผิว 2D ที่บิดเบี้ยว
นาธานรีด

ฉันมีรูปสี่เหลี่ยมสามมิติพร้อมตัวแบ่งจุดยอดที่ตัดฉากหลัง (พื้นหลังถูกจับโดยฟังก์ชัน Unity GrabPass) ฉันไม่คิดว่าการใช้พื้นผิว 2D เป็นความคิดที่ดีฉันกำลังคิดถึงบางสิ่งที่สามัญกว่าด้วยพารามิเตอร์ที่กำหนดเองได้ แต่ดูเหมือนว่าจะไม่มีวิธีอื่น ... และมันจะช้าลงไหม
MaT

คำตอบ:


1

มีค่าใน shader ที่ระบุความชื้นแฉะ เล็กกว่า 0 หมายถึงอากาศมากกว่า 1 หมายถึงน้ำและในระหว่างหมายถึงวงเดือน

นี่คือรหัสหลอกบางส่วน:

vec2 uv2 = bigWaves(uv); // modify the texture coords to create a wavy water effect
float wetness = (uv2.y - 0.1) * 100;

if( wetness<0.0 )
{
    gl_Fragment = texture2D(screen_texture,uv); // is air - no refraction or effect
}
else if( wetness>1.0 )
{
    vec2 uv3 = smallWaves(uv2); // modify the texture coords to create a ripply water effect
    gl_Fragment = texture2D(screen_texture,uv3); // is water - with refraction
}
else
{
    gl_Fragment = vec4(1,1,1,1); // solid white meniscus
}

นี่เป็นวิธีที่ง่ายที่สุดที่ฉันสามารถทำได้ ถ้าเป็นฉันฉันจะทำอะไรที่ซับซ้อนกว่านี้เพื่อต่อต้านวงเดือนและใช้การหักเหมากขึ้นที่นั่นหรือบางสิ่งบางอย่าง แต่ฉันไม่สามารถบอกคุณได้ว่าอะไรเพราะมันจะต้องใช้ความสวยงามซ้ำ นอกจากนี้ฉันจะย้อมสีและเบลอตัวอย่างน้ำ แต่ฉันจะทิ้งทุกอย่างตามที่คุณต้องการ


ใช่มันเป็นความคิดที่ดี! ฉันเห็นด้วยเกี่ยวกับความพร่ามัวและสีอ่อน ฉันกำลังเพิ่มการไล่ระดับความลึก (Y) การไล่ระดับสี (อาจเป็นระดับความลึกอื่น (Z) การไล่ระดับสี) ฉันควรเพิ่มเอฟเฟกต์การหักเหที่แตกต่างกันในแถบวงเดือนเช่นกัน แต่ในตอนนี้ฉันพยายามที่จะให้เอฟเฟกต์แบบระลอกคลื่นเหมือนใน Rayman แต่ฉันไม่รู้ บางทีฉันควรใช้พื้นผิวที่แตกต่างกันเพื่อให้วงเดือนมีเอฟเฟกต์ซ้ำซ้อนนี้ ฉันไม่รู้ถ้าคุณรู้ว่าฉันหมายถึงอะไร
MaT
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.