การให้แสงเงา

การให้แสงเงา (shading) เป็นเทคนิคการแสดงแสงและเงาในสามมิติโดยการตัดแสงและความมืดในคอมพิวเตอร์กราฟิกส์สามมิติ หรือการวาดภาพประกอบ สำหรับในทางจิตรกรรม อาจเรียกอีกอย่างว่า การแรเงา (shadowing)
== เทคนิคการวาดภาพ ==

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

การให้แสงเงาในคอมพิวเตอร์กราฟิกส์สามมิติจะใช้แหล่งกำเนิดแสงชนิดต่าง ๆ กันไป เช่น:
แอมเบียนต์ไลต์ (ambient light) - เป็นแสงที่ให้แสงสว่างแก่วัตถุทั้งหมดในฉากอย่างเท่าเทียมกัน ไม่มีการให้แสงเงาเนื่องจากไม่ได้ระบุตำแหน่งของแหล่งกำเนิดแสงและความสว่างจะเท่ากันตลอด
ไดเรกชันนัลไลต์ (directional light) - เป็นการฉายลำแสงแบบขนานและสม่ำเสมอจากทิศทางที่กำหนด สมมติว่าเป็นแหล่งกำเนิดแสงที่อยู่ไกลมาก เช่น แสงแดด จะมีการให้แสงเงา แต่จะไม่เกิดการการลดทอนตามระยะทางขึ้น
พอยต์ไลต์ (point light) - เป็นแสงที่เกิดจากจุดเดียวและกระจายออกไปยังทุกทิศทาง
สปอตไลต์ (spot light) - เป็นแสงที่ถูกสร้างขึ้นจากจุดเดียวและกระจายออกไปยังมุมตันส่วนหนึ่งเป็นรูปกรวย
แอเรียไลต์ (area light) - เป็นแสงที่ออกจากระนาบหนึ่งและแผ่กระจายไปยังด้านหนึ่ง
วอลุมไลต์ (volume light) - เป็นแหล่งกำเนิดแสงที่ส่องสว่างแค่ภายในขอบเขตที่กำหนดเท่านั้น
การให้แสงเงาจะทำการประมาณในช่วงตามมุมของแหล่งกำเนิดแสงเหล่านี้และพื้นผิวของวัตถุ แน่นอนว่าโดยทั่วไปแล้วมักมีแหล่งกำเนิดแสงหลายแหล่งภายในฉากเดียว ตัวเรนเดอร์จะทำการประมาณค่าในช่วงจากองค์ประกอบของรังสีจากหลายแหล่งและสร้างภาพสองมิติตามที่ควรเป็น
=== การลดทอนตามระยะทาง ===
ตามทฤษฎีแล้ว เมื่อพิจารณาจากพื้นผิวสองด้านที่ขนานกัน ความส่องสว่างของแสงจากแหล่งกำเนิดแสงที่อยู่ไกลออกไป เช่น แสงอาทิตย์ จะเท่ากัน แม้ด้านใดด้านหนึ่งจะอยู่ไกลออกไป แต่ความสว่างก็จะเท่ากัน
ภาพด้านล่างแสดงการให้แสงเงาของทรงสี่เหลี่ยมสองลูกที่ส่องสว่างจากแหล่งกำเนิดแสงที่แตกต่างกัน ในภาพด้านซ้าย ทรงสี่เหลี่ยมทั้งสองมีสีในแต่ละด้านเหมือนกัน ในภาพด้านขวา ด้านหน้าของทรงสี่เหลี่ยมด้านหน้าจะสว่างกว่าเล็กน้อย ส่วนความสว่างบนพื้นนั้น ยิ่งใกล้มากเท่าไหร่ก็ยิ่งสว่างมากขึ้นเท่านั้น แหล่งกำเนิดแสงในภาพด้านขวาถูกตั้งค่าเพื่อให้ลำแสงอ่อนลงเมื่อระยะห่างจากแหล่งกำเนิดแสงเพิ่มขึ้น สิ่งนี้เรียกว่า "การลดทอนตามระยะทาง" (distance falloff หรือ distance attenuation) และส่งผลให้ได้ภาพที่สมจริงยิ่งขึ้นโดยไม่ต้องเพิ่มแหล่งกำเนิดแสง
{|
| style="padding:10px" valign="top" |
| style="padding:10px" valign="top" |
|}
มีหลายวิธีในการคำนวณการลดทอนของแสงตามระยะทาง
เชิงเส้น (กำลัง 1) - ลดปริมาณแสงที่ส่องไปยังแหล่งกำเนิดแสงตามสัดส่วนของ x โดยที่ x คือระยะทางไปยังแหล่งกำเนิดแสง
กำลัง 2 - ความสว่างจะแปรตาม 1/x2 ป็นรูปแบบที่ใกล้เคียงกับคุณสมบัติของแสงในโลกแห่งความเป็นจริง คือเมื่อระยะห่างจากแหล่งกำเนิดแสงเพิ่มขึ้นเป็นสองเท่า ปริมาณแสงที่ไปถึงก็จะลดลงเป็นสี่เท่า
กำลัง n - ความสว่างจะแปรตาม 1/xn
นอกจากนี้ยังสามารถใช้ฟังก์ชัน อื่น ๆ อีก
=== การให้แสงเงาแบบเรียบ ===

การให้แสงเงาแบบเรียบ (flat shading) เป็นเทคนิคการจัดแสงแบบหนึ่งในคอมพิวเตอร์กราฟิกส์สามมิติ การให้แสงเงาจะทำกับแต่ละพื้นผิวตามมุมระหว่างเวกเตอร์แนวฉากของโพลีกอนที่ประกอบกันเป็นวัตถุและทิศทางของแหล่งกำเนิดแสง และสีจะถูกกำหนดตามความเข้มของแสงที่ส่องสว่างพื้นผิวโพลีกอน วิธีนี้มักใช้เมื่อต้องการทำการเร็นเดอร์ด้วยความเร็วสูง เช่น ระบบประมวลผลแบบเรียลไทม์ ซึ่งไม่เหมาะจะใช้เทคนิคการให้แสงเงาขั้นสูงกว่านี้ อย่างไรก็ตาม เมื่อเทคโนโลยีหน่วยประมวลผลกราฟิกส์ได้พัฒนาขึ้น จึงสามารถทำการให้แสงเงาอย่างรวดเร็วและราบรื่นแม้ในผลิตภัณฑ์ระดับล่างและอุปกรณ์เคลื่อนที่ การนำเทคนิคให้แสงเงาแบบเรียบมาใช้เพื่อเหตุผลด้านประสิทธิภาพจึงลดน้อยลงไป
ข้อเสียของการให้แสงเงาแบบเรียบคือแม้ว่าจะต้องการแสดงพื้นผิวโค้งเรียบ แต่ก็อาจดูเหมือนระนาบเล็ก ๆ เรียงกัน แต่ในทางกลับกัน หากต้องการวาดวัตถุที่เป็นเหลี่ยม ๆ วิธีการนี้อาจใช้ได้ดี ในการสร้างงานแบบโซลิดโมเดลิง มักใช้การให้แสงเงาแบบเรียบเนื่องจากมองเห็นรูปร่างได้ง่าย เทคนิคการให้แสงเงาเหมือนจริงขั้นสูงกว่านั้น ได้แก่ การให้แสงเงาแบบกูโร และ การให้แสงเงาแบบฟ็อง เทคนิคการให้แสงเงาที่ไม่สมจริง ได้แก่ การให้แสงเงาแบบเซล เช่น เซลแอนิเมชัน ซึ่งการไล่ระดับสีจะเปลี่ยนไป
== ดูเพิ่ม ==
คอมพิวเตอร์กราฟิกส์สามมิติ
ตัวให้แสงเงา
ภาษาการให้แสงเงา
การสะท้อนแบบลัมแบร์ท
ความเป็นจริงเสมือน
คอมพิวเตอร์กราฟิกส์สามมิติ
คอมพิวเตอร์กราฟิกส์