อ่าน 5 นาที
เวอร์ชวลจีแอล
VirtualGL ( VGL ) เป็น แพ็กเกจซอฟต์แวร์ โอเพนซอร์ส ที่เปลี่ยนเส้นทางการสั่งการเรนเดอร์ 3 มิติจาก แอปพลิเคชัน OpenGL ของ Unix และ Linux ไปยัง ฮาร์ดแวร์ เร่งความเร็ว 3 มิติ...
เวอร์ชวลจีแอล
| เวอร์ชวลจีแอล | |
|---|---|
| เวอร์ชันเสถียร | 3.1.4 / 8 ตุลาคม 2568 |
| รุ่นทดลองใช้งาน | 3.1.4 / 8 ตุลาคม 2568 |
| เขียนเป็น | C , C++ , เชลล์ยูนิกซ์ |
| ใบอนุญาต | ใบอนุญาตสาธารณะทั่วไปของ GNU (GPL), ใบอนุญาตไลบรารี wxWindows |
| เว็บไซต์ | www.virtualgl.org |
VirtualGL ( VGL ) เป็น แพ็กเกจซอฟต์แวร์ โอเพนซอร์สที่เปลี่ยนเส้นทางการสั่งการเรนเดอร์ 3 มิติจาก แอปพลิเคชัน OpenGL ของ UnixและLinux ไปยัง ฮาร์ดแวร์ เร่งความเร็ว 3 มิติในเซิร์ฟเวอร์เฉพาะ และส่งเอาต์พุตที่เรนเดอร์แล้วไปยังไคลเอ็นต์ ( แบบบาง ) ที่ตั้งอยู่ในเครือข่ายอื่น[ 1 ]ในฝั่งเซิร์ฟเวอร์ VirtualGL ประกอบด้วยไลบรารีที่จัดการการเปลี่ยนเส้นทางและโปรแกรมห่อหุ้มที่สั่งให้แอปพลิเคชันใช้ไลบรารีนี้ ไคลเอ็นต์สามารถเชื่อมต่อกับเซิร์ฟเวอร์ได้โดยใช้การเชื่อมต่อ X11 ระยะไกลหรือใช้พร็อกซี X11 เช่น เซิร์ฟเวอร์ Virtual Network Computing (VNC) ในกรณีของการเชื่อมต่อ X11 จำเป็นต้องมีซอฟต์แวร์ VirtualGL ฝั่งไคลเอ็นต์บางส่วนเพื่อรับเอาต์พุตกราฟิกที่เรนเดอร์แยกต่างหากจากสตรีม X11 ในกรณีของการเชื่อมต่อ VNC ไม่จำเป็นต้องมีซอฟต์แวร์ฝั่งไคลเอ็นต์เฉพาะใด ๆ นอกเหนือจากไคลเอ็นต์ VNC เอง
ปัญหา
ประสิทธิภาพของแอปพลิเคชัน OpenGL สามารถปรับปรุงได้อย่างมากโดยการเรนเดอร์กราฟิกบนตัวเร่งฮาร์ดแวร์เฉพาะ ซึ่งโดยทั่วไปจะอยู่ในGPU GPU กลายเป็นเรื่องธรรมดาไปแล้ว ทำให้แอปพลิเคชันต่างๆ ต้องพึ่งพา GPU เพื่อให้ได้ประสิทธิภาพที่ยอมรับได้ แต่VNCและสภาพแวดล้อมไคลเอ็นต์แบบบางอื่นๆ สำหรับ Unix และ Linux ไม่สามารถเข้าถึงฮาร์ดแวร์ดังกล่าวในฝั่งเซิร์ฟเวอร์ได้ ดังนั้นจึงไม่รองรับ แอปพลิเคชัน OpenGLเลย หรือต้องใช้วิธีที่ช้ากว่า เช่น การเรนเดอร์บนไคลเอ็นต์หรือในซอฟต์แวร์บนเซิร์ฟเวอร์
การแสดงผลแอปพลิเคชัน 3 มิติจากระยะไกลด้วยการเร่งความเร็วฮาร์ดแวร์นั้น โดยทั่วไปแล้วจำเป็นต้องใช้ "การเรนเดอร์ทางอ้อม" การเรนเดอร์ทางอ้อมใช้ ส่วนขยาย GLXของระบบหน้าต่าง X ("X11" หรือ "X") เพื่อห่อหุ้มคำสั่ง OpenGL ไว้ภายในสตรีมโปรโตคอล X11และส่งจากแอปพลิเคชันไปยังจอแสดงผล X โดยปกติแล้ว แอปพลิเคชันจะทำงานบนเซิร์ฟเวอร์แอปพลิเคชันที่อยู่ห่างไกล และจอแสดงผล X จะทำงานบนเดสก์ท็อปของผู้ใช้ ในสถานการณ์นี้ คำสั่ง OpenGL ทั้งหมดจะถูกดำเนินการโดยเครื่องเดสก์ท็อปของผู้ใช้ ดังนั้นเครื่องนั้นจึงต้องมีตัวเร่งกราฟิก 3 มิติที่เร็ว ซึ่งจำกัดประเภทของเครื่องที่สามารถแสดงผลแอปพลิเคชัน 3 มิติจากระยะไกลโดยใช้วิธีนี้ได้
การเรนเดอร์แบบทางอ้อมสามารถทำงานได้ดีหากเครือข่ายมีความเร็วเพียงพอ ( เช่นGigabit Ethernet ) หากแอปพลิเคชันไม่แก้ไขรูปทรงเรขาคณิตของวัตถุที่กำลังเรนเดอร์แบบไดนามิก หากแอปพลิเคชันใช้ รายการแสดงผลและหากแอปพลิเคชันไม่ใช้การแมปพื้นผิว จำนวนมาก อย่างไรก็ตาม แอปพลิเคชัน OpenGL จำนวนมากไม่ตรงตามเกณฑ์เหล่านี้ ยิ่งไปกว่านั้น ส่วนขยาย OpenGL บางตัวไม่ทำงานในสภาพแวดล้อมการเรนเดอร์แบบทางอ้อม ส่วนขยายเหล่านี้บางตัวต้องการความสามารถในการเข้าถึงฮาร์ดแวร์กราฟิก 3 มิติโดยตรง ดังนั้นจึงไม่สามารถทำให้ทำงานแบบทางอ้อมได้ ในกรณีอื่นๆ จอแสดงผล X ของผู้ใช้อาจไม่ให้การสนับสนุนอย่างชัดเจนสำหรับส่วนขยาย OpenGL ที่จำเป็น หรือส่วนขยายอาจขึ้นอยู่กับการกำหนดค่าฮาร์ดแวร์เฉพาะที่ไม่มีอยู่ในเครื่องเดสก์ท็อปของผู้ใช้
การเรนเดอร์ภาพ 3 มิติด้วย OpenGL บนเซิร์ฟเวอร์แอปพลิเคชันช่วยแก้ปัญหาที่เกิดจากการเรนเดอร์แบบทางอ้อม เนื่องจากแอปพลิเคชันมีเส้นทางที่รวดเร็วและตรงไปยังฮาร์ดแวร์การเรนเดอร์ 3 มิติแล้ว หากการเรนเดอร์ 3 มิติเกิดขึ้นบนเซิร์ฟเวอร์แอปพลิเคชัน ก็จะต้องส่งเฉพาะภาพ 2 มิติที่ได้ไปยังไคลเอ็นต์เท่านั้น ภาพสามารถส่งได้ในอัตราเฟรมเดียวกันโดยไม่คำนึงถึงขนาดของข้อมูล 3 มิติที่ใช้ในการสร้าง ดังนั้นการเรนเดอร์ 3 มิติบนเซิร์ฟเวอร์แอปพลิเคชันจึงเปลี่ยนปัญหาประสิทธิภาพของ 3 มิติให้เป็นปัญหาประสิทธิภาพของ 2 มิติได้อย่างมีประสิทธิภาพ ปัญหาต่อมาคือวิธีการสตรีมข้อมูลภาพ ขนาด 1-2 เมกะพิกเซล ผ่านเครือข่ายในอัตราเฟรมแบบโต้ตอบ แต่เทคโนโลยีทั่วไป ( เช่น HDTV ) ได้แก้ไขปัญหานี้แล้ว
โซลูชันของ VirtualGL
VirtualGL ใช้ "การแยกกระบวนการ GLX" เพื่อทำการเรนเดอร์ OpenGL บนเซิร์ฟเวอร์แอปพลิเคชัน แอปพลิเคชัน OpenGL บน Unix และ Linux โดยปกติจะส่งทั้งคำสั่ง GLX และคำสั่ง X11 ทั่วไปไปยังจอแสดงผล X เดียวกัน คำสั่ง GLX ใช้เพื่อผูกบริบทการเรนเดอร์ OpenGL กับหน้าต่าง X เฉพาะ รับรายการรูปแบบพิกเซลที่จอแสดงผล X รองรับ ฯลฯ VirtualGL ใช้ประโยชน์จากคุณสมบัติใน Unix และ Linux ที่อนุญาตให้ "โหลดล่วงหน้า" ไลบรารีลงในแอปพลิเคชัน ซึ่งเป็นการดักจับ (หรือ "แทรกแซง") การเรียกใช้ฟังก์ชันบางอย่างที่แอปพลิเคชันจะเรียกใช้กับไลบรารีที่ใช้ร่วมกันซึ่งเชื่อมโยงอยู่ เมื่อ VirtualGL ถูกโหลดล่วงหน้าลงในแอปพลิเคชัน OpenGL บน Unix หรือ Linux แล้ว มันจะดักจับการเรียกใช้ฟังก์ชัน GLX จากแอปพลิเคชันและเขียนใหม่เพื่อให้คำสั่ง GLX ที่เกี่ยวข้องถูกส่งไปยังจอแสดงผล X ของเซิร์ฟเวอร์แอปพลิเคชัน ("เซิร์ฟเวอร์ X 3 มิติ") ซึ่งคาดว่าจะมีตัวเร่งฮาร์ดแวร์ 3 มิติติดตั้งอยู่ ดังนั้น VirtualGL จึงป้องกันไม่ให้คำสั่ง GLX ถูกส่งผ่านเครือข่ายไปยังจอแสดงผล X ของผู้ใช้ หรือไปยังจอแสดงผล X เสมือน ("X proxy") เช่น VNC ที่ไม่รองรับ GLX ในกระบวนการเขียนคำสั่ง GLX ใหม่ VirtualGL ยังเปลี่ยนเส้นทางการเรนเดอร์ OpenGL ไปยังบัฟเฟอร์พิกเซลนอกหน้าจอ ("Pbuffers") ในขณะเดียวกัน ฟังก์ชันการเรียกใช้ที่เหลือจากแอปพลิเคชัน รวมถึงคำสั่ง X11 ทั่วไปที่ใช้ในการวาดส่วนติดต่อผู้ใช้ของแอปพลิเคชัน จะได้รับอนุญาตให้ผ่าน VirtualGL โดยไม่มีการแก้ไข
ภายในแล้ว กลไกตัวกลางของ VirtualGL ยังรักษาแผนที่ของหน้าต่างไปยัง Pbuffer จับคู่คุณลักษณะทางภาพระหว่างจอแสดงผล X ปลายทาง ("เซิร์ฟเวอร์ X 2 มิติ") และเซิร์ฟเวอร์ X 3 มิติ และดำเนินการฟังก์ชันแฮชอื่นๆ อีกมากมายเพื่อให้แน่ใจว่าการเปลี่ยนเส้นทาง GLX เป็นไปอย่างราบรื่น แต่โดยพื้นฐานแล้ว เมื่อบริบท OpenGL ถูกสร้างขึ้นบนจอแสดงผล X ของเซิร์ฟเวอร์แอปพลิเคชันแล้ว VirtualGL จะไม่ขัดขวางและอนุญาตให้คำสั่ง OpenGL ที่ตามมาทั้งหมดส่งผ่านไปยังฮาร์ดแวร์ 3 มิติของเซิร์ฟเวอร์แอปพลิเคชันได้อย่างไม่ติดขัด ดังนั้น แอปพลิเคชันจึงสามารถใช้คุณสมบัติและส่วนขยาย OpenGL ใดๆ ก็ตามที่ฮาร์ดแวร์และไดรเวอร์ของเซิร์ฟเวอร์แอปพลิเคชันมีให้โดยอัตโนมัติ
นอกจากการจัดเรียงคำสั่ง GLX และจัดการ Pbuffer แล้ว VirtualGL ยังอ่านค่าพิกเซลที่แสดงผลแล้วกลับมาในเวลาที่เหมาะสม (โดยปกติโดยการตรวจสอบglXSwapBuffers()หรือglFinish()) จากนั้นวาดพิกเซลเหล่านั้นลงในหน้าต่าง X ของแอปพลิเคชันโดยใช้คำสั่งวาดภาพ X มาตรฐาน เนื่องจาก VirtualGL เปลี่ยนเส้นทางคำสั่ง GLX ออกจาก X Server แบบ 2 มิติ จึงสามารถใช้เพื่อเพิ่มการรองรับ 3 มิติแบบเร่งความเร็วให้กับพร็อกซี X (เช่น VNC) รวมถึงป้องกันการเรนเดอร์ OpenGL ทางอ้อมที่เกิดขึ้นเมื่อใช้จอแสดงผล X ระยะไกลได้

การใช้ VirtualGL ร่วมกับ VNC หรือพร็อกซี X อื่นๆ ช่วยให้ผู้ใช้หลายคนสามารถเรียกใช้แอปพลิเคชัน 3 มิติพร้อมกันบนเซิร์ฟเวอร์แอปพลิเคชันเดียว และไคลเอนต์หลายรายสามารถใช้เซสชันเดียวกันได้ อย่างไรก็ตาม VNC และโปรแกรมที่คล้ายกันนั้นถูกปรับแต่งมาเพื่อจัดการกับแอปพลิเคชัน 2 มิติที่มีพื้นที่สีทึบขนาดใหญ่ สีจำนวนน้อย และความแตกต่างระหว่างเฟรมน้อย ในขณะที่แอปพลิเคชัน 3 มิติสร้างภาพที่มีรูปแบบสีที่ซับซ้อนและละเอียด และมีความสัมพันธ์ระหว่างเฟรมที่ต่อเนื่องกันน้อยกว่ามาก ภาระงานที่เกิดจากการวาดภาพที่เรนเดอร์จากแอปพลิเคชัน OpenGL ลงในหน้าต่าง X นั้นโดยพื้นฐานแล้วเป็นภาระงานเดียวกับโปรแกรมเล่นวิดีโอ และซอฟต์แวร์ไคลเอนต์แบบบางทั่วไปมักขาดตัวแปลงสัญญาณ ภาพที่เร็วพอ ที่จะจัดการกับภาระงานนี้ด้วยอัตราเฟรมแบบโต้ตอบได้
VirtualGL แก้ปัญหาดังกล่าวด้วยสองวิธี:
- เทอร์โบวีเอ็นซี
- การขนส่ง VGL
TurboVNC และ TigerVNC
TurboVNC และTigerVNCเป็นโปรแกรมที่แตกแขนงมาจากTightVNCซึ่งช่วยเร่งความเร็วในการเข้ารหัส Tight และ JPEG โดยใช้ส่วนหนึ่งจากการใช้ libjpeg-turbo ซึ่งเป็นเวอร์ชันของlibjpeg ที่ใช้การเร่งความเร็ว SIMDทั้งสองโปรเจกต์นี้มีทั้งเซิร์ฟเวอร์ VNC และแอปพลิเคชันไคลเอ็นต์
TurboVNC ได้รับการพัฒนาโดยทีมเดียวกับ VirtualGL บน เครือข่าย อีเธอร์เน็ต 100 เมกะบิตสามารถแสดงผลได้มากกว่า 50 เมกะพิกเซลต่อวินาที ด้วยคุณภาพของภาพที่ไม่ลดลงอย่างเห็นได้ชัด TurboVNC ยังมีการปรับปรุงเพิ่มเติมที่ช่วยให้สามารถแสดงผลได้ 10–12 เมกะพิกเซลต่อวินาที ผ่านลิงก์บรอดแบนด์ 5 เมกะบิต โดยมีคุณภาพของภาพที่ลดลงอย่างเห็นได้ชัด แต่ก็ยังใช้งานได้ TurboVNC ยังขยาย TightVNC เพื่อรวมการบัฟเฟอร์คู่ ฝั่งไคลเอ็นต์ และคุณสมบัติอื่นๆ ที่มุ่งเป้าไปที่แอปพลิเคชัน 3 มิติ เช่น ความสามารถในการส่งสำเนาภาพหน้าจอที่ไม่สูญเสียคุณภาพในช่วงเวลาที่ไม่มีการใช้งาน[ 2 ] TurboVNC และ VirtualGL ถูกใช้โดยศูนย์คอมพิวเตอร์ขั้นสูงแห่งรัฐเท็กซัสที่มหาวิทยาลัยเท็กซัสที่ออสตินเพื่อให้ผู้ใช้TeraGrid สามารถเข้าถึงความสามารถในการเรนเดอร์ 3 มิติของ คลัสเตอร์การแสดงภาพ Stampede [ 3 ] จากระยะไกลได้
TigerVNC เป็นเวอร์ชันที่พัฒนาต่อยอดมาจาก TightVNC ซึ่งมีประสิทธิภาพใกล้เคียงกับ TurboVNC ในกรณีส่วนใหญ่ แต่มีเป้าหมายและคุณสมบัติของโครงการที่แตกต่างกัน[ 4 ] [ 5 ]
การขนส่ง VGL

เมื่อใช้ VGL Transport นั้น VirtualGL จะบีบอัดภาพ 3 มิติที่แสดงผลในระหว่างกระบวนการโดยใช้ตัวแปลงสัญญาณ JPEG ที่ปรับให้เหมาะสมแล้วเช่นเดียวกับที่ TurboVNC ใช้ จากนั้น VirtualGL จะส่งภาพที่บีบอัดแล้วผ่านซ็อกเก็ต TCP เฉพาะไปยังแอปพลิเคชัน VirtualGL Client ที่ทำงานอยู่บนเครื่องไคลเอ็นต์ แอปพลิเคชัน VirtualGL Client มีหน้าที่ในการคลายการบีบอัดภาพและวาดพิกเซลลงในหน้าต่าง X ที่เหมาะสม ในขณะเดียวกัน องค์ประกอบที่ไม่ใช่ OpenGL ของการแสดงผลของแอปพลิเคชันจะถูกส่งผ่านเครือข่ายโดยใช้โปรโตคอล X11 ระยะไกลมาตรฐานและแสดงผลบนเครื่องไคลเอ็นต์
วิธีการนี้จำเป็นต้องมีจอแสดงผล X บนเครื่องไคลเอ็นต์ และการพึ่งพาโปรโตคอล X11 ระยะไกลสำหรับการเรนเดอร์ 2 มิติ หมายความว่าแอปพลิเคชันจำนวนมากจะทำงานได้ไม่ดีเมื่อใช้ VGL Transport บนเครือข่ายที่มีความหน่วงสูง นอกจากนี้ VGL Transport ไม่รองรับการทำงานร่วมกัน (ไคลเอ็นต์หลายรายต่อเซสชัน) โดยธรรมชาติ เนื่องจากภาพถูกส่งไปยังเครื่องของผู้ใช้แทนที่จะถูกดึงมา แต่การใช้ VGL Transport จะมอบประสบการณ์การใช้งานแอปพลิเคชันที่ราบรื่นอย่างสมบูรณ์ โดยที่หน้าต่างแอปพลิเคชันแต่ละหน้าต่างจะสอดคล้องกับหน้าต่างเดสก์ท็อปเพียงหน้าต่างเดียว VGL Transport ยังช่วยลด ภาระ CPU ของเซิร์ฟเวอร์ เนื่องจาก1การเรนเดอร์ 2 มิติเกิดขึ้นบนไคลเอ็นต์ และ VGL Transport ช่วยให้ สามารถใช้ คุณสมบัติ OpenGL ขั้นสูง เช่นสเตอริโอแบบบัฟเฟอร์สี่ตัว ได้
ผู้พัฒนา VirtualGL คาดการณ์ว่าผู้ใช้งานหลักของ VGL Transport จะเป็นผู้ใช้แล็ปท็อปที่มีการ เชื่อมต่อไร้สาย 802.11gหรือการเชื่อมต่ออีเธอร์เน็ตความเร็วสูงกับเซิร์ฟเวอร์แอปพลิเคชัน
ผลิตภัณฑ์เชิงพาณิชย์ที่ใช้ VirtualGL
VirtualGL และ TurboVNC เป็นส่วนประกอบหลักของ ผลิตภัณฑ์ Sun Visualization SystemจากSun Microsystemsซึ่งถูกยกเลิกการผลิตในเดือนเมษายน 2552 แพ็กเกจโอเพนซอร์สทั้งสองนี้ถูกรวมเข้ากับ ปลั๊กอิน แบบปิดแหล่งที่มาซึ่งช่วยให้ VirtualGL สามารถส่งภาพที่บีบอัดไปยัง ไคลเอนต์แบบบาง ของ Sun Rayและแพ็กเกจแบบปิดแหล่งที่มาอีกตัวหนึ่งที่ผสานรวม VirtualGL กับSun Grid Engineโดยให้การจัดการทรัพยากรและการจัดตารางเวลาสำหรับงาน 3 มิติระยะไกล การรวมกันของแพ็กเกจเหล่านี้ ซึ่งเรียกว่า "Sun Shared Visualization" สามารถดาวน์โหลดได้ฟรี แต่ Sun คิดค่าบริการสำหรับการสนับสนุน
NoMachine เวอร์ชัน 4.xx รองรับ VirtualGL เพื่อให้ผู้ใช้สามารถเรียกใช้แอปพลิเคชัน 3 มิติในเซสชันเดสก์ท็อปของ NoMachine ได้[ 6 ]
ซอฟต์แวร์ Scalable Visualization Array เวอร์ชัน 2.1 จากHPประกอบด้วยส่วนประกอบที่ผสานรวมกับ VirtualGL และ TurboVNC ทำให้สามารถกำหนดเวลางาน 3 มิติและแสดงผลจากระยะไกลจากคลัสเตอร์การแสดงภาพได้[ 7 ]
ThinLincเวอร์ชัน 3.0.0 ออกแบบมาให้ทำงานร่วมกับ VirtualGL [ 8 ]
EnginFrame Views เวอร์ชัน 2010 รองรับ VirtualGL เป็นหนึ่งในตัวเลือกโปรโตคอลระยะไกล[ 9 ]
ผลิตภัณฑ์ Exceed onDemand และ Exceed Freedom จากOpenTextใช้โค้ดจาก VirtualGL เพื่อใช้งานการเรนเดอร์ฝั่งเซิร์ฟเวอร์[ 10 ]
ดูเพิ่มเติม
ลิงก์ภายนอก
- เว็บไซต์อย่างเป็นทางการ

- VirtualGLบนSourceForge
- VirtualGLบนGitHub
- เว็บไซต์อย่างเป็นทางการของ TurboVNC
- TurboVNCบนSourceForge
- TurboVNCบนGitHub
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ เวอร์ชวลจีแอล
VirtualGL ( VGL ) เป็น แพ็กเกจซอฟต์แวร์ โอเพนซอร์ส ที่เปลี่ยนเส้นทางการสั่งการเรนเดอร์ 3 มิติจาก แอปพลิเคชัน OpenGL ของ Unix และ Linux ไปยัง ฮาร์ดแวร์ เร่งความเร็ว 3 มิติ...
ปัญหา
ประสิทธิภาพของแอปพลิเคชัน OpenGL สามารถปรับปรุงได้อย่างมากโดยการเรนเดอร์กราฟิกบนตัวเร่งฮาร์ดแวร์เฉพาะ ซึ่งโดยทั่วไปจะอยู่ใน GPU GPU กลายเป็นเรื่องธรรมดาไปแล้ว ทำให้แอปพลิเคชันต่างๆ ต้องพึ่งพา GPU เพื่อให้ได้ประสิทธิภาพที่ยอมรับได้ แต่ VNC...
โซลูชันของ VirtualGL
VirtualGL ใช้ "การแยกกระบวนการ GLX" เพื่อทำการเรนเดอร์ OpenGL บนเซิร์ฟเวอร์แอปพลิเคชัน แอปพลิเคชัน OpenGL บน Unix และ Linux โดยปกติจะส่งทั้งคำสั่ง GLX และคำสั่ง X11 ทั่วไปไปยังจอแสดงผล X เดียวกัน คำสั่ง GLX ใช้เพื่อผูกบริบทการเรนเดอร์ OpenGL กับหน้าต่าง X...
TurboVNC และ TigerVNC
TurboVNC และ TigerVNC เป็นโปรแกรมที่แตกแขนงมาจาก TightVNC ซึ่งช่วยเร่งความเร็วในการเข้ารหัส Tight และ JPEG โดยใช้ส่วนหนึ่งจากการใช้ libjpeg-turbo ซึ่งเป็นเวอร์ชันของ libjpeg ที่ใช้การเร่งความเร็ว SIMD ทั้งสองโปรเจกต์นี้มีทั้งเซิร์ฟเวอร์ VNC...