• ซอร์สโค้ดเชดเดอร์สำหรับสร้าง เอฟเฟกต์สติกเกอร์ฟอยล์ ที่จำลองการสะท้อนและความแวววาวของพื้นผิวได้อย่างสมจริง
  • สามารถปรับแต่งคุณสมบัติต่างๆ ได้อย่างละเอียด เช่น ความเป็นโลหะ, ความหยาบ, การสะท้อนแบบเหลือบรุ้ง
  • หัวใจสำคัญคือการสร้างเอฟเฟกต์อนุภาคละเอียด (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 และอีกหลากหลายบริบท

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น