Кіріспе

VirtualGL - бұл Unix және Linux OpenGL қолданбаларынан 3D-рендеринг командаларын арнайы сервердегі 3D-жеделдетуші аппараттық жабдыққа қайта бағыттайтын және рендерингті шығысты желіде басқа жерде орналасқан (сынық) клиентке жібереді. Сервер жағында VirtualGL қайта бағыттауды басқаратын кітапханадан және осы кітапхананы пайдалану үшін қосымшаларға нұсқау беретін орама бағдарламадан тұрады. Клиенттер серверге қашықтан X11 қосылымын немесе VNC сервері сияқты X11 прокси-серверін қолдана отырып қосыла алады. X11 қосылымы жағдайында рендерингті графикалық шығысты X11 ағынынан бөлек алу үшін кейбір клиенттік VirtualGL бағдарламалық жасақтамасы қажет. VNC қосылымы жағдайында VNC клиентіден басқа клиент жағындағы арнайы бағдарламалық қамтамасыз ету қажет емес.

Мәселе

OpenGL қолданбаларының өнімділігін графикалық процестерді әдетте GPU-да болатын арнайы аппараттық жеделдетушілерде көрсету арқылы айтарлықтай жақсартуға болады. GPU-лар өте кең тараған, сондықтан қолданбалар оларға қолайлы өнімділік үшін арқа сүйеуде. Бірақ VNC және Unix және Linux үшін басқа жұқа клиенттік орталарда сервер жағында мұндай аппараттық құралдарға қолжетімділік жоқ. Сондықтан олар OpenGL қолданбаларын мүлдем қолдамайды немесе клиентте немесе сервердегі бағдарламалық жасақтамада көрсету сияқты баяу әдістерге жүгінеді. 3D-қосымшаларды аппараттық жеделдету арқылы қашықтан көрсету дәстүрлі түрде "тұйық рендерингті" пайдалануды талап етеді. Бейнелі рендеринг X терезесі жүйесіне ("X11" немесе "X") OpenGL командаларын X11 протоколы ағынының ішінде капсулалау және оларды қолданбадан X дисплейіне жіберу үшін GLX кеңейтуін қолданады. Дәстүрлі түрде, қосымша қашықта орналасқан қосымша серверінде, ал X дисплейі пайдаланушының жұмыс үстеліне жүреді. Бұл сценарийде барлық OpenGL командалары пайдаланушының үстел машинасымен орындалады, сондықтан машинада жылдам 3D графикалық үдетуші болуы керек. Бұл осы әдісті қолдана отырып, 3D қосымшаны қашықтан көрсете алатын машинаның түрін шектейді. Жанама рендеринг егер желі жеткілікті жылдам болса (мысалы, Gigabit Ethernet), егер қолданба рендерингті объектінің геометриясын динамикалық түрде өзгертпесе, егер қолданба дисплей тізімдерін қолданса және егер қолданба текстуралық карталауды көп қолданбаса, жақсы жұмыс істей алады. Алайда көптеген OpenGL қолданбалары бұл критерийлерге сәйкес келмейді. Мәселелерді одан әрі күрделілендіру үшін кейбір OpenGL кеңейтулері жанама рендеринг ортасында жұмыс істемейді. Бұл кеңейтулердің кейбіреулері 3D графикалық жабдыққа тікелей қол жеткізуді талап етеді, сондықтан оларды ешқашан жанама түрде жұмыс істеуге болмайды. Басқа жағдайларда пайдаланушының X дисплейі қажетті OpenGL кеңейтуін нақты қолдамайды немесе кеңейту пайдаланушының үстел машинасында жоқ белгілі бір аппараттық конфигурацияға сүйенуі мүмкін. Қолданба серверінде OpenGL рендерингін орындау жанама рендерингпен енгізілген мәселелерді болдырмайды, өйткені қолданба енді 3D рендеринг аппараттарына жылдам және тікелей жолға ие. Егер 3D рендеринг қолданба серверінде болса, онда клиентке тек алынған 2D бейнелер жіберілуі керек. Суреттерді құру үшін пайдаланылған 3D деректердің көлеміне қарамастан, суреттерді бірдей кадр жылдамдығында жеткізуге болады, сондықтан қолданба серверінде 3D рендерингті орындау 3D орындау проблемасын 2D орындау проблемасына айналдырады. Бұл проблема 12 мегапиксельдік бейне деректерін интерактивті кадр жылдамдығында желі арқылы қалай тарату керектігіне айналады, бірақ тауарлық технологиялар (HDTV, атап айтқанда) бұл мәселені шешіп жатыр.

TurboVNC және TigerVNC

TurboVNC және TigerVNC - бұл TightVNC-нің бұтақтары, олар Tight және JPEG кодтамасын жеделдетеді, ішінара libjpeg turbo, libjpeg-дің SIMD жеделдетілген нұсқасын пайдаланады. Екі жобада да VNC серверлері мен клиент бағдарламалары бар. TurboVNC-ді VirtualGL-мен бірдей команда жасады. 100 мегабит Ethernet желілерінде ол 50 мегапикселден астам / секундты жоғалмайтын бейне сапасымен көрсете алады. TurboVNC қосымша оңтайландыруларды қамтиды, бұл 5 мегабиттік кең жолақты байланыста 1012 мегапиксел / секунд көрсетуге мүмкіндік береді, бірақ көрініс сапасы едәуір төмен, бірақ пайдалы. TurboVNC сонымен қатар TightVNC-ді клиенттік жағынан қос буферлеуді және 3D қосымшаларға бағытталған басқа да мүмкіндіктерді, мысалы, белсенділіксіз кезеңдерде экран кескінінің жоғалмайтын көшірмесін жіберу мүмкіндігін қамтиды. TurboVNC және VirtualGL Texas Advanced Computing Center at University of Texas at Austin арқылы TeraGrid пайдаланушыларына Stampede Visualization Cluster 3D рендерингтік мүмкіндіктеріне қашықтан қол жеткізуге мүмкіндік береді. TigerVNC - бұл TightVNC-нің жақында жасалған бұрылысы, ол көбінесе TurboVNC-ге ұқсас өнімділікті қамтамасыз етеді, бірақ жобаның мақсаттары мен ерекшеліктері әртүрлі.

VGL Transport компаниясы

VGL Transport қолданғанда, VirtualGL процесте рендерингтелген 3D бейнелерді TurboVNC қолданатын бірдей оңтайландырылған JPEG кодегін пайдалана отырып, сығымдайды. VirtualGL кейіннен ықшамдалған суреттерді арнайы TCP сокеті арқылы клиенттік машинада жұмыс істейтін VirtualGL Клиент қосымшасына жібереді. VirtualGL клиенті кескіндерді ықшамдаудан және пиксельдерді тиісті X терезесіне салудан жауапты. Бұл арада, қолданбаның дисплейінің OpenGL емес элементтері стандартты қашықтан X11 протоколын қолдана отырып, желі арқылы жіберіледі және клиент машинасында ұсынылады. Бұл тәсіл клиенттік машинада X дисплейін қажет етеді, ал 2D рендерингті орындау үшін қашықтан X11 протоколына сүйену көптеген қолданбалар VGL Transport-ті жоғары кеуделік желілерінде пайдаланғанда нашар жұмыс істейді дегенді білдіреді. Сонымен қатар, VGL Transport өздігінен ынтымақтастықты (бір сеансқа бірнеше клиент) қолдамайды, өйткені суреттер пайдаланушылардың машиналарына тартылмай, керісінше, түртіледі. Бірақ VGL Transport пайдалануы толыққанды бірқалыпты қолданба тәжірибесін қамтамасыз етеді, бұл ретте әрбір қолданба терезесі бір үстел терезесіне сәйкес келеді. VGL Transport сонымен қатар сервердің CPU жүктемесін азайтады, өйткені 2D рендеринг клиентте пайда болады, ал VGL Transport төрт бұрышты буферленген стерео сияқты озық OpenGL мүмкіндіктерін пайдалануға мүмкіндік береді. VirtualGL-ді әзірлеушілер VGL Transport-тың негізгі пайдаланушыларын 802.11g сымсыз немесе жылдам Ethernet қосылымы бар қолданба серверіне арналған ноутбук пайдаланушылары деп санайды.

VirtualGL-ті пайдаланатын коммерциялық өнімдер

VirtualGL және TurboVNC Sun Microsystems компаниясының Sun Visualization System өнімінің негізгі компоненттері болды, ол 2009 жылдың сәуірінде тоқтатылды. Екі ашық бастапқы кодты пакеттер VirtualGL-ді Sun Ray жұқа клиенттеріне сығылған суреттерді жіберуге мүмкіндік беретін жабық бастапқы кодты плагинмен және Sun Grid Engine-мен біріктірілген VirtualGL-ді қамтамасыз ететін басқа жабық бастапқы кодты пакетпен біріктірілді, бұл қашықтан 3D жұмыстарға ресурстарды басқару мен жоспарлауды қамтамасыз етеді. Бұл пакеттердің жиынтығы "Sun Shared Visualization" деп аталды және тегін жүктеуге болады. Күнді қолдау үшін төлейді. v4 саны. NoMachine-дің x. x-і пайдаланушыларға NoMachine үстел сессияларында 3D қолданбаларды орындауға мүмкіндік беру үшін VirtualGL-ді қолдайды. HP-дің масштабталатын визуализациялық массивінің v2.1 бағдарламалық жасақтамасына VirtualGL және TurboVNC-мен интеграцияланатын компоненттер кіреді, бұл 3D жұмыстардың визуализациялық кластерде жоспарлануына және қашықтан көрсетілуіне мүмкіндік береді. ThinLinc v3.0.0 VirtualGL-мен бірлесіп жұмыс істеуге арналған. EnginFrame Views 2010 нұсқасы қашықтан протоколдың бір нұсқасы ретінде VirtualGL-ді қолдайды. OpenText-тің Exceed onDemand және Exceed Freedom өнімдері VirtualGL-ден кодты сервер жағындағы рендерингті іске асыру үшін пайдаланады.