ARSA Framework เอนจิ้นคนไทยของเกม ซารอส เรียล แบทเทิล

ARSA Framework เอนจิ้นคนไทยของเกม ซารอส เรียล แบทเทิล

ARSA Framework เอนจิ้นคนไทยของเกม ซารอส เรียล แบทเทิล
แชร์เรื่องนี้
แชร์เรื่องนี้LineTwitterFacebook

ARSA Framework - ขุมพลังที่ขับเคลื่อนเกมซารอส เรียล แบทเทิล

ซารอส เรียล แบทเทิลซารอส เรียล แบทเทิล

Deferred Rendering 

อาษาเฟรมเวิร์คใช้ Deferred Rendering แบบ Quad Based หมายความว่าแสงทุกๆประเภทไม่ว่าจะเป็น Directional, Point หรือ Spot Light จะถูกเรนเดอร์โดยรูปสี่เหลี่ยมเท่านั้น

ตัวเฟรมเวิร์คจะมีหน้าที่จะคำนวณโวลุมของแสงที่เกิดขึ้น แล้วสร้างเป็นระนาบสี่เหลี่ยมที่ขนานกับจอภาพ จากนั้นจึงทำการคำนวณแสงและการสะท้อนให้ผู้เล่นได้เห็น ดร.อาษาได้บอกกับเราว่าวิธีการ Quad Based นั้นดีที่สุดแล้วสำหรับเกมในภาคเรียลนี้ เหตุผลก็มาจากการวิจัยของทีมงานที่ได้ทดลองใช้วิธีแบบ Tile Based แล้วพบว่ามีข้อจำกัดมากมายตั้งแต่เทคนิค Compute Shader ที่ต้องการ Shader Model 4  หรือ GLSL V. 4 ขึ้นไปเพื่อที่จะเรียกกับชุดคำสั่งที่เกี่ยวกับ memory barriers มีหน้าที่สั่งให้จีพียูจัดการกับข้อมูลของแสงที่ถูกแบ่งออกเป็นตารางย่อยๆ ยิ่งถ้ามีจำนวนแสงมากเท่าไหร่ก็จะทำให้การประมวลผลได้ดีขึ้น เสียค่าการประมวลผลในการประมวลผลคุ้มกับที่ต้องจ่าย ฟังไม่ผิดหรอกครับแสงยิ่งมากเท่าไหร่ยิ่งประมวลผลได้เร็วกว่าเทคนิคอื่นๆ แต่จะเห็นผลลัพธ์ที่แตกต่างกันอย่างจับต้องได้ก็ต้องมีแสงในฉากถึงในระดับร้อยดวงขึ้นไปเท่านั้น ทั้งหมดจึงเป็นเหตุผลที่ว่าทำไมจึงอาษาเฟรมเวิร์คจึงเลือกใช้วิธีดังกล่าวในการเรนเดอร์

ซารอส เรียล แบทเทิลซารอส เรียล แบทเทิล

ตัวอย่างงานวิจัยอธิบายการทำงานของอาษาเฟรมเวิร์ค

GBuffer 

     จุดเด่นอีกอย่างของอาษาเฟรมเวิร์คคือ G-Buffer ก่อนอื่นต้องขออธิบายบริบทของ  G-Buffer ในเอนจิ้นทั่วไปเสียก่อน ส่วนมากนั้นจะใช้ Render Texture เพื่อเก็บข้อมูลประมาณ 2 ถึง 3 ชิ้น ในชิ้นแรกเป็นค่า Albedo ชิ้นที่สองเป็นค่า Normal และชิ้นที่สามเป็นค่าพารามิเตอร์    แต่ถ้าเป็นอาษาเฟรมเวิร์คจะยุบ Render Texture เหลือชิ้นเดียวโดยจะทำการบีบอัดค่า Albedo และ Normal เข้าไว้ในชาแนล RGBA แบบ 8 Bit เพียงชิ้นเดียว ทำให้ลดหน่วยความจำในการใช้งานไปได้ประมาณหนึ่ง ส่วนค่า Depth ก็อ่านมาจาก Hardware Z Buffer โดยตรง จริงๆยังมีรายละเอียดเกี่ยวกับเทคนิคการสร้างอาษาเฟรมเวิร์คอีกมาก แต่ด้วยพื้นที่การนำเสนอมีจำกัดบวกกับบางส่วนเป็นข้อมูลในเชิงเทคนิคมากๆจึงอาจต้องยกยอดไปไว้โอกาสต่อไป แต่หากใจร้อนดร.อาษาได้บอกว่าลองไปนั่งเรียนที่มหาวิทยาลัยในรายวิชาที่ดร.อาษาสอนก่อนก็ได้

ซารอส เรียล แบทเทิลซารอส เรียล แบทเทิล

     ฉากสู้กลางทะเลทรายอันร้อนระอุ มีรถถังจอดทิ้งอยู่หลายคัน

ซารอส เรียล แบทเทิลซารอส เรียล แบทเทิล

   ฉากสถานีรถไฟฉากนี้ได้แรงบันดาลใจมาจากหัวลำโพงในบ้านเรานั่นเอง

 

Global Illumination

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

ซารอส เรียล แบทเทิลซารอส เรียล แบทเทิล

จอมมารเอ็กแซ็คกับ Scene ที่ใส่ Global Illumination

      Global Illumination คือเทคนิคทางคอมพิวเตอร์กราฟิกที่ช่วยปรับภาพในเกมทั้งหมดให้ดูมีมิติมากขึ้นยกตัวอย่างเช่นเทคนิค Horizontal Based Ambient Occlusion (HBAO)

HBAO

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

             

ซารอส เรียล แบทเทิลซารอส เรียล แบทเทิล

  การแสดงผลโดยใช้เทคนิค HBAO สังเกตุส่วนที่ทับซ้อนกันจะแรเงาสีดำลงไปเพื่อบอกความลึก

             

ซารอส เรียล แบทเทิลซารอส เรียล แบทเทิล

     จากนั้นนำมารวมกับภาพที่ให้แสงด้วยเทคนิค PBR จึงได้ผลลัพธ์ดังรูปด้านบน

 

โปรดติดตามความมันส์ได้ในครั้งต่อไป

ทีมซารอส

www.sarosworld.com

www.facebook.com/sarosworld

 www.twitter.com/_sarosworld

www.youtube.com/user/wing640

 

แชร์เรื่องนี้
แชร์เรื่องนี้LineTwitterFacebook