ตรงข้ามกับการแสดงผล CPU หรือซอฟต์แวร์ฉันถือว่า?
โดยทั่วไปแล้วการแสดงผลในปัจจุบันทั้งหมดจะเป็นไปตาม GPU ใช่ไหมว่าคุณจะใช้ OpenGL หรือ Direct X
มีคนให้ข้อมูลฉันที่นี่ไม่พบคำตอบที่เหมาะสมหรือไม่
ตรงข้ามกับการแสดงผล CPU หรือซอฟต์แวร์ฉันถือว่า?
โดยทั่วไปแล้วการแสดงผลในปัจจุบันทั้งหมดจะเป็นไปตาม GPU ใช่ไหมว่าคุณจะใช้ OpenGL หรือ Direct X
มีคนให้ข้อมูลฉันที่นี่ไม่พบคำตอบที่เหมาะสมหรือไม่
คำตอบ:
อย่างที่คุณทราบอยู่แล้วว่าการเรนเดอร์ GPU คืออะไร ... ให้ฉันตอบสิ่งที่คุณถาม
ตามเนื้อผ้าการแสดงผลฮาร์ดแวร์ได้ดำเนินการมลทินของความซับซ้อนมาก สิ่งนี้มีสาเหตุส่วนใหญ่มาจากการออกแบบแอพพลิเคชั่นการเขียนโปรแกรมประยุกต์ (APIs) ซึ่งไม่ได้รับการปรับให้เหมาะสมเพื่อปกปิดความซับซ้อน; นั่นคือช่วงการเรียนรู้สูงชัน ส่วนหนึ่งก็เนื่องมาจากความเข้าใจว่าการเขียนแอปพลิเคชันสามมิติซึ่ง API เหล่านี้มีความสำคัญมากนั้นซับซ้อนกว่าการเขียนแบบสองมิติ ความซับซ้อนของส่วนต่อประสานฉันหมายถึงส่วนต่อประสานเช่น OpenGL และ DirectX Re 3D vs 2D ฉันหมายถึงคณิตศาสตร์และรูปทรงเรขาคณิตซึ่งจะสร้างฉาก 3 มิติเทียบกับความเรียบง่ายที่จิตใจที่ไม่ผ่านการฝึกอบรมสามารถแก้ไขปัญหา 2 มิติได้
อย่างไรก็ตามในช่วงไม่กี่ปีที่ผ่านมาไม่เพียง แต่จะมีสื่อการเรียนรู้ให้ใช้มากขึ้นเท่านั้น แต่ยังมีห้องสมุดหลายแห่งที่ห่อหุ้มความซับซ้อนพื้นฐานของอินเทอร์เฟซเหล่านี้ไว้ให้พร้อมใช้งานและลดอุปสรรคในการเข้า ทั้งหมดนี้ได้ถูกป้อนกลับเข้าสู่วัฏจักรของความสนใจที่เพิ่มขึ้นซึ่งมีอยู่แล้วเนื่องจากความสำคัญของการสร้างภาพข้อมูลส่วนติดต่อผู้ใช้ที่ลื่นไหลและประสิทธิภาพของอุปกรณ์ที่ใช้พลังงานต่ำ
ดังนั้นการเรนเดอร์ซอฟต์แวร์และการเรนเดอร์ 2D จึงเป็นจุดเริ่มต้นที่ดีและเป็นจุดสนใจสำหรับผู้ที่เพิ่งเริ่มใช้กราฟิกและ / หรือต้องการสร้างผลิตภัณฑ์ที่การเรนเดอร์ไม่ใช้เวลามากเกินไปในโครงการ อย่างน้อยเกี่ยวกับ 2D สิ่งนี้ยังคงใช้อยู่ เทคโนโลยีครอบคลุมส่วนใหญ่ในการนำการเรนเดอร์ 2D ไปยัง GPU
มีคำตอบที่ดีจริงๆที่นี่ดังนั้นเพียงแค่เสริมพวกเขา
แรงผลักดันสำคัญที่อยู่เบื้องหลังการเรนเดอร์ซอฟต์แวร์คือความสามารถ นี้ได้รับการสัมผัสในหนึ่งในคำตอบ แต่ฉันจะทำให้จุดตรงข้าม: การแสดงผลซอฟต์แวร์สามารถจริงจะเพิ่มเติมความสามารถในการแสดงผลกว่าฮาร์ดแวร์ไม่น้อย
ด้วยฮาร์ดแวร์คุณมักจำกัดความสามารถของฮาร์ดแวร์เองแม้ว่า OpenGL สำหรับหนึ่ง ๆ จะสามารถจำลองซอฟต์แวร์ได้หลายอย่างที่อาจไม่มีอยู่ในฮาร์ดแวร์ หมายความว่าถ้าคุณพยายามใช้ Feature X แต่ฮาร์ดแวร์ไม่รองรับสิ่งหนึ่งในสองสิ่งจะเกิดขึ้น: คุณจะกลับไปใช้ซอฟต์แวร์จำลอง (สถานการณ์ OpenGL ทั่วไป) หรือคุณไม่ได้รับ ใช้งานได้เลย (สถานการณ์ D3D ทั่วไป)
ด้วยซอฟต์แวร์เรนเดอร์คุณจะต้องเขียนโค้ดด้วยตัวเอง คุณต้องจัดการสิ่งต่างๆและควบคุมสิ่งที่เกิดขึ้นให้อยู่ในระดับพิกเซลอย่างสมบูรณ์ เพื่อยกตัวอย่างของการระเบิดจากอดีต Quake มี pixel shaders นำมาใช้ในซอฟต์แวร์ย้อนกลับไปในปี 1996 ในเวลาที่การ์ด 3 มิติ (พวกเขาไม่ได้เรียกว่า "GPUs" แล้ว) สามารถ rasterize สามเหลี่ยมพื้นผิวที่มีพื้นผิวไม่กี่โหล
นี่เป็นอีกกรณีที่มี GPU ในปัจจุบันเช่นกัน แต่ยังมีส่วนสำคัญของไปป์ไลน์กราฟิคที่เปิดรับฟังก์ชั่นคงที่ (หรือแม้แต่ไม่ได้สัมผัสเลย)
การแสดงผลซอฟต์แวร์สามารถขยายขนาดได้ดีขึ้น เมื่อไม่นานมานี้เองที่เราได้เห็นการตั้งค่า multi-GPU เป็นไปได้จริง ๆ แต่ซอฟแวร์สามารถขยายไปตามคอร์ CPU หลาย ๆ ตัวในเซิร์ฟเวอร์จำนวนมาก คุณสามารถมีเซิร์ฟเวอร์ฟาร์มทั้งหมดได้โดยเฉพาะและฟาร์มการเรนเดอร์มืออาชีพจะยังคงใช้การเรนเดอร์ซอฟต์แวร์
ซอฟต์แวร์สามารถแสดงกระบวนทัศน์การแสดงผลที่แตกต่างกัน ฮาร์ดแวร์ปัจจุบันเพ่งความสนใจไปรอบ ๆ กระบวนทัศน์รูปสามเหลี่ยม / จุดยอด / ชิ้นส่วน / rasterization เป็นกรณีของการเลือกสิ่งหนึ่งและปรับให้เหมาะสมจนกว่ามันจะกรีดร้องเพื่อความเมตตา GPUs ยังคงเป็นตัวเลือกที่แย่สำหรับการติดตาม ray ซึ่งถูกนำไปใช้ในซอฟต์แวร์มากกว่าปกติ
แน่นอนเมื่อพูดถึงการเปรียบเทียบแอปเปิ้ลกับแอปเปิ้ลโดยตรง GPU จะเอาชนะซอฟต์แวร์ได้ทุกวัน - หากเราเปรียบเทียบพื้นที่ที่ GPU แข็งแกร่ง แต่นั่นไม่ใช่การบอกว่าพวกเขาแข็งแกร่งขึ้นในทุกพื้นที่ แม้จะเป็นเช่นนั้นและเพื่อจุดประสงค์ของไซต์ SE นี้การใช้ฮาร์ดแวร์โดยทั่วไปนั้นเป็นวิธีที่จะไป แต่เพิ่งทราบว่ามีกรณีการใช้งานอยู่ที่นั่นซึ่งซอฟต์แวร์สามารถทำงานได้เช่นกัน
ฮาร์ดแวร์หรือการเรนเดอร์ GPUเป็นสิ่งที่คุณเดาได้ว่าใช้หน่วยประมวลผลกราฟิก (หรือที่รู้จักกันในนามการ์ดวิดีโอ) เพื่อแสดงภาพ ตรงกันข้ามคือการแสดงผลซอฟต์แวร์ที่ใช้ CPU
การเรนเดอร์ซอฟต์แวร์มักใช้เป็นทางเลือกเมื่อไม่มี GPU (ที่เหมาะสม) อย่างไรก็ตามเนื่องจาก GPU เป็นคำสั่งที่มีขนาดใหญ่กว่าซอฟต์แวร์ที่แสดงผลเร็วจะแทบไม่เคยใช้งานได้เต็มที่เพราะโดยปกติแล้วซีพียูจะไม่สามารถแสดงภาพแบบเรียลไทม์ได้ การเรนเดอร์ซอฟต์แวร์มีประโยชน์เมื่อต้องการความแม่นยำสูงหากต้องการสูตรที่ซับซ้อนอย่างยิ่งในการแสดงภาพ เนื่องจาก CPU นั้นมีวัตถุประสงค์ทั่วไปมากกว่าดังนั้น GPU จึงมีความสามารถมากกว่า อย่างไรก็ตามอาร์กิวเมนต์นี้เริ่มมีน้อยลงเรื่อย ๆ เนื่องจาก GPUs ในปัจจุบันสามารถจัดการกับงานที่ซับซ้อนมากขึ้นและไม่ จำกัด เพียงแค่ 32 บิตลอยเพื่อแสดงตัวเลข
ฉันคิดว่านี่เป็นคำถามที่ดีจริงๆ
สิ่งที่ฉันจินตนาการได้คือ:
VRAM มีข้อ จำกัด มากกว่าหน่วยความจำแรมทั่วไป ในกรณีของการเรนเดอร์ GPU - ทุกพื้นผิวมีปัญหามากกว่า คุณสามารถจัดเก็บข้อมูลโดยเฉลี่ยประมาณ 4 ถึง 8 เท่าใน RAM มากกว่า VRAM แน่นอนว่าสถานการณ์นี้สมมติว่าไม่มีระบบที่รับผิดชอบในการเพิ่ม / ดันพื้นผิวที่ไม่ได้ใช้ / ต้องการจาก / ถึง RAM / VRAM
ในแง่ของการมัลติเธรดมันง่ายกว่ามากเมื่อคุณทำงานกับการเรนเดอร์ซอฟต์แวร์ - ไม่จำเป็นต้องแชร์บริบท
หากคุณกำลังทำกราฟิก 2D - โดยทั่วไปแล้วเฟรมเวิร์กส่วนใหญ่จะดำเนินการเกี่ยวกับความไม่เหมาะสมของการประเมินรูปสี่เหลี่ยมสกปรก - สิ่งที่แก้ปัญหาการออกประสิทธิภาพจำนวนมาก
ยังคงการแสดงผลโดยใช้ OGL / D3D ให้ประสิทธิภาพและความเป็นไปได้มากขึ้น Shaders สามารถทำสิ่งที่น่าอัศจรรย์จริงๆซึ่งแทบเป็นไปไม่ได้เลยที่จะมีการแสดงผลซอฟต์แวร์
แต่ทว่าเทคโนโลยีเช่นการตัดโดยใช้ colorkeys มีความรู้สึกเป็นของตัวเองราวกับว่าคุณอยู่ในระดับฐานกำเนิดของโลกคอมพิวเตอร์กราฟิก
ฉันคิดว่าอย่างน้อยก็ควรรู้เกี่ยวกับการแสดงผลซอฟต์แวร์ มันเป็นโลกที่น่าตื่นเต้นมาก ๆ ไม่ได้พูดถึงว่ามันเป็นรากฐานของทุกสิ่งที่เราเห็นในวันนี้