การสร้างเอฟเฟกต์สติกเกอร์ฟอยล์
(4rknova.com)- ซอร์สโค้ดเชดเดอร์สำหรับสร้าง เอฟเฟกต์สติกเกอร์ฟอยล์ ที่จำลองการสะท้อนและความแวววาวของพื้นผิวได้อย่างสมจริง
- สามารถปรับแต่งคุณสมบัติต่างๆ ได้อย่างละเอียด เช่น ความเป็นโลหะ, ความหยาบ, การสะท้อนแบบเหลือบรุ้ง
- หัวใจสำคัญคือการสร้างเอฟเฟกต์อนุภาคละเอียด (flake) บนพื้นผิวฟอยล์ และ สีเหลือบรุ้ง ที่เปลี่ยนไปตามมุมมอง
- ใช้ เทคนิคกราฟิกส์เชิงกายภาพ หลากหลายรูปแบบ เช่น การสุ่มตัวอย่าง environment map, เอฟเฟกต์ Fresnel, เงา AO และ alpha cutoff
- เป็นการทำเชดเดอร์ระดับสูงที่สามารถนำไปใช้กับ การเรนเดอร์สติกเกอร์ฟอยล์คุณภาพสูง ได้ทั้งในสภาพแวดล้อม 2D/3D จริง
ภาพรวม
เนื้อหานี้เป็นโค้ดเชดเดอร์ GLSL สำหรับ สร้างเอฟเฟกต์ภาพที่แวววาวแบบสติกเกอร์ฟอยล์ โดยมีเป้าหมายเพื่อสร้างพื้นผิวภาพคุณภาพสูงผ่านการผสานความเป็นโลหะ, ความเหลือบรุ้ง, เอฟเฟกต์อนุภาคละเอียดบนพื้นผิว และการสะท้อนจากสภาพแวดล้อม ใช้ทั้งเท็กซ์เจอร์ 2D, environment map และพารามิเตอร์ปรับแต่งหลากหลายเพื่อสร้างเอฟเฟกต์ฟอยล์ที่สมจริง
ตัวแปรและค่าคงที่หลัก
- ปรับแต่งเอฟเฟกต์ได้ผ่าน ตัวแปรยูนิฟอร์ม (uniform) หลายชนิด
- ตัวอย่างเช่น uFlakeSize (ขนาด flake), uRoughness (ความหยาบ), uMetalness (ความเป็นโลหะ), uIridescence (ความเหลือบรุ้ง) เป็นต้น
- รองรับเท็กซ์เจอร์, environment map และข้อมูลระบบพิกัดโลก
โครงสร้างฟังก์ชันหลัก
ฟังก์ชันแฮช (hash)
- ใช้สร้าง ค่าสุ่ม ที่จำเป็นสำหรับเอฟเฟกต์อนุภาคละเอียด (flake)
การแปลงพิกัด environment map (dirToEquirectUv), การสุ่มตัวอย่าง environment map (sampleEnvRough)
- รองรับการสุ่มตัวอย่างจาก environment map ตามทิศทาง
- ใช้ mip level ที่เหมาะสมตามค่า ความหยาบ (lod)
เอฟเฟกต์เหลือบรุ้ง (iridescenceColor)
- สร้างสีแบบไดนามิกตาม มุมและความหนาของพื้นผิว
- สีจะเปลี่ยนไปตามมุมมองเหมือนพื้นผิวฟอยล์จริง
ความสว่าง (luminance)
- คำนวณข้อมูลความสว่างของสีเพื่อนำไปใช้กับขั้นตอนหลังประมวลผลและส่วนอื่นๆ
ลอจิกหลักของเชดเดอร์
Alpha cutoff และการจัดการด้านหน้า/ด้านหลัง
- ใช้ ค่าอัลฟา ของ base texture เพื่อตัดสินว่าพิกเซลจะคงอยู่หรือไม่
- ปรับ ความเข้ม AO, การลอกออก (peeled) และสีตามด้านหน้า/ด้านหลัง
การจัดการการสะท้อน, flake, ความเหลือบรุ้ง, และความเป็นโลหะ
- คำนวณ normal ของพื้นผิว, เวกเตอร์มุมมอง, เวกเตอร์สะท้อน และการสะท้อนจากสภาพแวดล้อม
- ใช้ hash ตามตำแหน่งและ random offset ตามมุมสำหรับ เอฟเฟกต์ flake
- ควบคุม ความสว่าง, การมาสก์, การ boost ของ flake ได้อย่างละเอียด
- ใช้ perturbedNormal เพื่อสะท้อนการกระจัดของพื้นผิว flake
- ผสม flake และสีรอบข้างเข้ากับ สีเหลือบรุ้ง
การผสาน environment map และการคำนวณสีสุดท้าย
- เปลี่ยนค่าความหยาบแบบไดนามิกตามความเข้มของ flake
- เพิ่มความสมจริงด้วยการมาสก์ metal/normal/reflection และ การคำนวณ Fresnel
- ผสมองค์ประกอบ diffuse (การกระจายแสง) และ spec (การสะท้อน) เพื่อสร้างสีสุดท้าย
- ส่งออกเป็นสีสุดท้ายพร้อม base alpha
ประเด็นที่น่าสนใจ
เชดเดอร์นี้เหมาะสำหรับการสร้าง เอฟเฟกต์ภาพที่ซับซ้อนเฉพาะตัวของวัสดุฟอยล์ เช่น การสะท้อนแรง อนุภาคละเอียด และความเหลือบรุ้ง ให้ดูสมจริง สามารถควบคุมเอฟเฟกต์ได้อย่างแม่นยำผ่านพารามิเตอร์จำนวนมาก จึงรองรับการปรับแต่งได้ยืดหยุ่นและการเรนเดอร์สติกเกอร์ฟอยล์ที่เด่นชัดคุณภาพสูง เหมาะกับการใช้งานใน 3D, 2D บนเว็บ, เกม, interactive UI และอีกหลากหลายบริบท
ยังไม่มีความคิดเห็น