ทำไมคุณถึงใช้การเรนเดอร์ซอฟต์แวร์ผ่านการเรนเดอร์ฮาร์ดแวร์ในวันนี้


13

ตรงข้ามกับการแสดงผล CPU หรือซอฟต์แวร์ฉันถือว่า?

โดยทั่วไปแล้วการแสดงผลในปัจจุบันทั้งหมดจะเป็นไปตาม GPU ใช่ไหมว่าคุณจะใช้ OpenGL หรือ Direct X

มีคนให้ข้อมูลฉันที่นี่ไม่พบคำตอบที่เหมาะสมหรือไม่

คำตอบ:


7

อย่างที่คุณทราบอยู่แล้วว่าการเรนเดอร์ GPU คืออะไร ... ให้ฉันตอบสิ่งที่คุณถาม

ตามเนื้อผ้าการแสดงผลฮาร์ดแวร์ได้ดำเนินการมลทินของความซับซ้อนมาก สิ่งนี้มีสาเหตุส่วนใหญ่มาจากการออกแบบแอพพลิเคชั่นการเขียนโปรแกรมประยุกต์ (APIs) ซึ่งไม่ได้รับการปรับให้เหมาะสมเพื่อปกปิดความซับซ้อน; นั่นคือช่วงการเรียนรู้สูงชัน ส่วนหนึ่งก็เนื่องมาจากความเข้าใจว่าการเขียนแอปพลิเคชันสามมิติซึ่ง API เหล่านี้มีความสำคัญมากนั้นซับซ้อนกว่าการเขียนแบบสองมิติ ความซับซ้อนของส่วนต่อประสานฉันหมายถึงส่วนต่อประสานเช่น OpenGL และ DirectX Re 3D vs 2D ฉันหมายถึงคณิตศาสตร์และรูปทรงเรขาคณิตซึ่งจะสร้างฉาก 3 มิติเทียบกับความเรียบง่ายที่จิตใจที่ไม่ผ่านการฝึกอบรมสามารถแก้ไขปัญหา 2 มิติได้

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

ดังนั้นการเรนเดอร์ซอฟต์แวร์และการเรนเดอร์ 2D จึงเป็นจุดเริ่มต้นที่ดีและเป็นจุดสนใจสำหรับผู้ที่เพิ่งเริ่มใช้กราฟิกและ / หรือต้องการสร้างผลิตภัณฑ์ที่การเรนเดอร์ไม่ใช้เวลามากเกินไปในโครงการ อย่างน้อยเกี่ยวกับ 2D สิ่งนี้ยังคงใช้อยู่ เทคโนโลยีครอบคลุมส่วนใหญ่ในการนำการเรนเดอร์ 2D ไปยัง GPU


20

มีคำตอบที่ดีจริงๆที่นี่ดังนั้นเพียงแค่เสริมพวกเขา

แรงผลักดันสำคัญที่อยู่เบื้องหลังการเรนเดอร์ซอฟต์แวร์คือความสามารถ นี้ได้รับการสัมผัสในหนึ่งในคำตอบ แต่ฉันจะทำให้จุดตรงข้าม: การแสดงผลซอฟต์แวร์สามารถจริงจะเพิ่มเติมความสามารถในการแสดงผลกว่าฮาร์ดแวร์ไม่น้อย

ด้วยฮาร์ดแวร์คุณมักจำกัดความสามารถของฮาร์ดแวร์เองแม้ว่า OpenGL สำหรับหนึ่ง ๆ จะสามารถจำลองซอฟต์แวร์ได้หลายอย่างที่อาจไม่มีอยู่ในฮาร์ดแวร์ หมายความว่าถ้าคุณพยายามใช้ Feature X แต่ฮาร์ดแวร์ไม่รองรับสิ่งหนึ่งในสองสิ่งจะเกิดขึ้น: คุณจะกลับไปใช้ซอฟต์แวร์จำลอง (สถานการณ์ OpenGL ทั่วไป) หรือคุณไม่ได้รับ ใช้งานได้เลย (สถานการณ์ D3D ทั่วไป)

ด้วยซอฟต์แวร์เรนเดอร์คุณจะต้องเขียนโค้ดด้วยตัวเอง คุณต้องจัดการสิ่งต่างๆและควบคุมสิ่งที่เกิดขึ้นให้อยู่ในระดับพิกเซลอย่างสมบูรณ์ เพื่อยกตัวอย่างของการระเบิดจากอดีต Quake มี pixel shaders นำมาใช้ในซอฟต์แวร์ย้อนกลับไปในปี 1996 ในเวลาที่การ์ด 3 มิติ (พวกเขาไม่ได้เรียกว่า "GPUs" แล้ว) สามารถ rasterize สามเหลี่ยมพื้นผิวที่มีพื้นผิวไม่กี่โหล

นี่เป็นอีกกรณีที่มี GPU ในปัจจุบันเช่นกัน แต่ยังมีส่วนสำคัญของไปป์ไลน์กราฟิคที่เปิดรับฟังก์ชั่นคงที่ (หรือแม้แต่ไม่ได้สัมผัสเลย)

การแสดงผลซอฟต์แวร์สามารถขยายขนาดได้ดีขึ้น เมื่อไม่นานมานี้เองที่เราได้เห็นการตั้งค่า multi-GPU เป็นไปได้จริง ๆ แต่ซอฟแวร์สามารถขยายไปตามคอร์ CPU หลาย ๆ ตัวในเซิร์ฟเวอร์จำนวนมาก คุณสามารถมีเซิร์ฟเวอร์ฟาร์มทั้งหมดได้โดยเฉพาะและฟาร์มการเรนเดอร์มืออาชีพจะยังคงใช้การเรนเดอร์ซอฟต์แวร์

ซอฟต์แวร์สามารถแสดงกระบวนทัศน์การแสดงผลที่แตกต่างกัน ฮาร์ดแวร์ปัจจุบันเพ่งความสนใจไปรอบ ๆ กระบวนทัศน์รูปสามเหลี่ยม / จุดยอด / ชิ้นส่วน / rasterization เป็นกรณีของการเลือกสิ่งหนึ่งและปรับให้เหมาะสมจนกว่ามันจะกรีดร้องเพื่อความเมตตา GPUs ยังคงเป็นตัวเลือกที่แย่สำหรับการติดตาม ray ซึ่งถูกนำไปใช้ในซอฟต์แวร์มากกว่าปกติ

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


8
+1 สำหรับ "การแสดงผลซอฟต์แวร์จริง ๆ แล้วสามารถมีความสามารถมากกว่าการแสดงผลฮาร์ดแวร์ไม่น้อย"
concept3d

10

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

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


2

ฉันคิดว่านี่เป็นคำถามที่ดีจริงๆ

สิ่งที่ฉันจินตนาการได้คือ:

  • VRAM มีข้อ จำกัด มากกว่าหน่วยความจำแรมทั่วไป ในกรณีของการเรนเดอร์ GPU - ทุกพื้นผิวมีปัญหามากกว่า คุณสามารถจัดเก็บข้อมูลโดยเฉลี่ยประมาณ 4 ถึง 8 เท่าใน RAM มากกว่า VRAM แน่นอนว่าสถานการณ์นี้สมมติว่าไม่มีระบบที่รับผิดชอบในการเพิ่ม / ดันพื้นผิวที่ไม่ได้ใช้ / ต้องการจาก / ถึง RAM / VRAM

  • ในแง่ของการมัลติเธรดมันง่ายกว่ามากเมื่อคุณทำงานกับการเรนเดอร์ซอฟต์แวร์ - ไม่จำเป็นต้องแชร์บริบท

  • หากคุณกำลังทำกราฟิก 2D - โดยทั่วไปแล้วเฟรมเวิร์กส่วนใหญ่จะดำเนินการเกี่ยวกับความไม่เหมาะสมของการประเมินรูปสี่เหลี่ยมสกปรก - สิ่งที่แก้ปัญหาการออกประสิทธิภาพจำนวนมาก

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

แต่ทว่าเทคโนโลยีเช่นการตัดโดยใช้ colorkeys มีความรู้สึกเป็นของตัวเองราวกับว่าคุณอยู่ในระดับฐานกำเนิดของโลกคอมพิวเตอร์กราฟิก

ฉันคิดว่าอย่างน้อยก็ควรรู้เกี่ยวกับการแสดงผลซอฟต์แวร์ มันเป็นโลกที่น่าตื่นเต้นมาก ๆ ไม่ได้พูดถึงว่ามันเป็นรากฐานของทุกสิ่งที่เราเห็นในวันนี้


1
คุณไม่จำเป็นต้องใช้การเร่งความเร็วของฮาร์ดแวร์เพื่อเรียกใช้ตัวแปลงแสง OS X 10.9 มาพร้อมกับคุณสมบัติการติดตั้งซอฟต์แวร์ที่สมบูรณ์ของ GL4 ประสิทธิภาพนั้นดีมากสำหรับการเรนเดอร์ซอฟต์แวร์ มันไม่ได้มาถึงจุดที่แนบเนียนสามารถเล่นเกมที่มีความซับซ้อน (เป็นธรรมไม่เป็นเรือ GPUs แอปเปิ้ลผลิตภัณฑ์ของตนด้วย) แต่ก็ไกลการปฏิบัติมากขึ้นกว่าการใช้สิ่งที่ต้องการ rasterizer อ้างอิง Direct3D จริงๆแล้วมันเป็นสิ่งที่คุณสามารถจัดส่งซอฟต์แวร์ที่ใช้งานได้
Andon M. Coleman

@ AndonM.Coleman ไม่ใช่ทุกคนที่ใช้ Apple และฉันไม่รู้จักตัวแปลซอฟต์แวร์ที่รองรับ shaders บน Linux และ Windows
ลุค 1985

1
นั่นไม่ใช่ประเด็นของฉัน มีการใช้งานของ OpenGL ที่ผู้ใช้งานอย่างสมบูรณ์สามารถทำงานได้อย่างสมบูรณ์บน CPU ความจริงที่ว่า Apple เป็นผู้พัฒนาไม่เกี่ยวข้องส่วนใหญ่ คำตอบของคุณให้ความประทับใจที่คุณคิดว่าคุณต้องมี GPU เพื่อใช้งานเฉดทันสมัยใน OpenGL
Andon M. Coleman

@ AndonM.Coleman และเกือบจะถูกต้องเพราะใน 80% ของคดีที่คุณต้องทำ
ลุค 1985

2
Shaders สามารถนำไปใช้งานได้อย่างง่ายดายผ่านการเรนเดอร์ซอฟต์แวร์แม้กระทั่ง Tomb Raider 1 และ Quake 1 ก็มี pixel shaders มันเป็นสิ่งที่ตรงกันข้ามอย่างแน่นอนซีพียูช่วยให้คุณควบคุมได้มากขึ้นแล้ว จำกัด จุดสูงสุด / ส่วนย่อยของ GPU ปัจจุบัน
lama12345
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.