การเร็นเดอร์

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

## หลักการทำงาน
ในการเร็นเดอร์จะทำการคำนวณค่าสีและความสว่าง ณ ตำแหน่งต่าง ๆ บนแบบจำลอง โดยใช้หลักการคำนวณหาจุดตกกระทบของแสงจากแหล่งกำเนิด หลังจากนั้นจึงเข้าสู่กระบวนการสร้างให้เป็นจุดภาพ (rasterization) ซึ่งจะเป็นการฉาย (project) แบบจำลองลงบนระนาบสองมิติ ก่อนส่งค่าไปแสดงบนจอภาพ กระบวนการนี้เป็นขั้นตอนสุดท้ายในสายท่อกราฟิกส์ (graphics pipeline) โดยจะให้ผลลัพธ์เป็นการแสดงรูปหรือการเคลื่อนไหวที่สร้างขึ้น

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

กรณีของกราฟิกสามมิติ การสร้างภาพจากแบบจำลองนั้นเป็นกระบวนการที่ทำได้ช้า และกินเวลาในการคำนวณมาก (เช่นขั้นตอนการสร้างภาพยนตร์) ซึ่งสามารถใช้กราฟิกฮาร์ดแวร์เร่งความเร็วการประมวลผลสามมิติแบบทันกาลเข้าช่วยได้ (เช่นการเพิ่มความเร็วของเกม) ซึ่งคำภาษาอังกฤษว่า "เร็นเดอร์" ได้มาจากศัพท์ที่หมายถึงขั้นตอนการลงแสงและเงาภาพทางศิลปะ (artistic rendering) แต่ในทางคอมพิวเตอร์กราฟิกขั้นตอนนี้กินความกว้างกว่าดังที่ได้อธิบายไว้

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

## เร็นเดอร์ฟาร์ม
การเร็นเดอร์ภาพที่ซับซ้อนมาก ๆ หรือภาพเคลื่อนไหวจะกินเวลานานกว่าภาพที่มีองค์ประกอบง่าย ๆ หรือภาพเดี่ยว ๆ ซอฟต์แวร์ที่ใช้ในการเร็นเดอร์จึงอาจได้รับการออกแบบเพิ่มเติมมาเพื่อให้สามารถแบ่งงานให้กับคอมพิวเตอร์หลายเครื่องหรือเครื่องเดียวแต่หลายหน่วยประมวลผลกลาง (CPU) ช่วยกันเร็นเดอร์เพื่อให้งานเสร็จเร็วยิ่งขึ้น การแบ่งงานนี้อาจเป็นการแบ่งภาพเดียวออกเป็นภาพเล็ก ๆ แล้วกระจายงานให้แต่ละหน่วยประมวลผลซึ่งเหมาะกับการเร็นเดอร์ภาพนิ่ง หรืออาจแบ่งออกเป็นช่วงเวลาหรือเฟรมสำหรับงานแอนิเมชัน มักเรียกกลุ่มของคอมพิวเตอร์หลาย ๆ เครื่องที่ช่วยกันเร็นเดอร์ภาพว่าเร็นเดอร์ฟาร์ม (render farm)

## rendering equation
right|thumb|150px|rendering equation อธิบายถึงจำนวนของแสงที่ออกจากจุด '''x''' ไปยังมุมมองหนึ่ง ๆ

: L_o(x, \vec w) = L_e(x, \vec w) + \int_\Omega f_r(x, \vec w', \vec w) L_i(x, \vec w') (\vec w' \cdot \vec n) d\vec w'

ในตำแหน่งและทิศทางหนึ่ง ๆ แสงขาออก หรือ outgoing light (Lo) จะเท่ากับผลรวมของแสงที่ถูกปล่อย หรือ emit (Le) กับที่ถูกสะท้อนออกมา โดยแสงที่ถูกสะท้อนออกมาคือผลรวมของผลคูณแสงขาเข้า หรือ incoming light (Li) จากทุกทิศทางกับการสะท้อนของพื้นผิว (bidirectional reflectance distribution function) และมุมขาเข้า

## ดูเพิ่ม
* โกลบอลอิลลูมิเนชัน
* การสะท้อนแสงพร่า
* การสะท้อนแบบกระจกเงา

## อ้างอิง

หมวดหมู่:คอมพิวเตอร์กราฟิกส์สามมิติ