На відміну від процесора чи програмного забезпечення, я припускаю?
Як правило, не всі поточні візуалізації базуються на GPU, бачачи, як ви використовуєте OpenGL або Direct X?
Може хтось тут мені дасть трохи інформації, не можу знайти відповіді?
На відміну від процесора чи програмного забезпечення, я припускаю?
Як правило, не всі поточні візуалізації базуються на GPU, бачачи, як ви використовуєте OpenGL або Direct X?
Може хтось тут мені дасть трохи інформації, не можу знайти відповіді?
Відповіді:
Як ви вже чітко знаєте, що таке GPU-рендерінг, дозвольте мені відповісти, що ви, здається, запитуєте.
Традиційно апаратне відображення спричиняє стигму як дуже складну. Це значною мірою було зумовлено дизайном інтерфейсів прикладного програмування (API), які не були добре орієнтовані на приховування складності; тобто крива навчання була крутою. Частково це також пояснюється розумінням того, що запис 3D-додатків - для яких ці API орієнтовані - набагато складніше, ніж написання двовимірних. Щодо складності інтерфейсу, я маю на увазі такі інтерфейси, як OpenGL та DirectX. Щодо 3D vs 2D, я маю на увазі математику та геометрію, яка входить у побудову 3D-сцен, порівняно з простотою, з якою нетренований розум може наблизитись до 2D-задач.
Однак в останні роки не лише навчальні матеріали стали набагато доступнішими, але й багато бібліотек, які охоплюють основні складності цих інтерфейсів, стали доступними та знизили бар'єри для вступу. Все це повернулося до циклу посиленого інтересу, який вже був присутній через зростаючу важливість візуалізації, гладких користувацьких інтерфейсів та продуктивності на малопотужних пристроях.
Отже візуалізація програмного забезпечення та 2D-рендерінг були хорошими точками входу та фокусом для тих, хто був новаком у графіці та / або хотів створити продукт, де візуалізація не забирала занадто багато часу, доступного для проекту. Принаймні, що стосується 2D, це все ще стосується; Технологія значною мірою подолала розрив у залученні 2D-рендерінгу до GPU.
Тут є кілька справді хороших відповідей, тому просто доповнити їх.
Основною рушійною силою для надання програмного забезпечення є здатність. Це торкнулося в одній з відповідей, але я хочу зробити протилежний момент: рендеринг програмного забезпечення насправді може бути більш здатним, ніж апаратне відображення, не менше.
Що стосується обладнання, ви, як правило, обмежені можливостями самого обладнання, хоча OpenGL для одного здатний програмувати емуляцію багатьох речей, які можуть не існувати в апаратному забезпеченні. Це означає, що якщо ви спробуєте використовувати Feature X, але апаратне забезпечення його не підтримує, відбудеться одне з двох: або ви перейдете до емуляції програмного забезпечення (типовий сценарій OpenGL), або не отримаєте використовувати його взагалі (типовий сценарій D3D).
Завдяки візуалізації програмного забезпечення ви можете самостійно написати код. Ви можете маніпулювати речами і мати повний контроль над тим, що відбувається до рівня пікселів. Щоб навести приклад вибуху з минулого, Quake мав піксельні шейдери, впроваджені в програмне забезпечення ще в 1996 році, в той час, коли 3D-карти (тоді їх ще не називали "GPU") ледве розсипали кілька десятків текстурованих трикутників.
Це більше стосується і поточних графічних процесорів, але все ж є значні частини графічного конвеєра, які піддаються фіксованому функціоналу (або взагалі не піддаються впливу).
Візуалізація програмного забезпечення може краще масштабуватися. Лише порівняно недавно ми побачили, як налаштування багатопроцесорних процесорів стають дійсно життєздатними, але програмне забезпечення може масштабуватися на багатьох ядрах процесора на багатьох багатьох серверах. Ви можете присвятити цьому цілі ферми серверів, і професійні ферми візуалізації все ще використовуватимуть рендеринг програмного забезпечення.
Програмне забезпечення може виставляти різні парадигми візуалізації. Поточна апаратура дуже зосереджена навколо парадигми трикутника / вершини / фрагмента / растерізації; це справа вибору однієї речі та оптимізації її, поки вона не кричить на милість. Графічні процесори все ще є поганим вибором, наприклад, для відстеження променів, що частіше реалізується в програмному забезпеченні.
Звичайно, якщо мова йде про пряме порівняння яблук-яблук, то графічний процесор обіграє програмне забезпечення в будь-який день тижня - за умови, що ми порівнюємо області, де графічніші процесори сильніші. Але це не означає, що вони сильніші в кожній області. Незважаючи на це, і для цілей цього веб-сайту, використання апаратного забезпечення - це звичайно шлях, але просто пам’ятайте, що там є випадки використання, де програмне забезпечення також є життєздатним.
Візуалізація апаратного чи графічного процесора - це, як ви здогадалися, використовуючи блок графічної обробки (він же відеокарта) для зображення. Навпаки - це програмне забезпечення, де використовується процесор.
Візуалізація програмного забезпечення зазвичай використовується як резервна копія, коли немає (відповідного) GPU. Однак оскільки графічний процесор на порядок швидше, рендери програмного забезпечення майже ніколи не є корисними, оскільки процесор зазвичай не зможе візуалізувати зображення в режимі реального часу. Програмна візуалізація корисна, коли потрібна висока точність, якщо для візуалізації зображення потрібні надзвичайно складні формули. Оскільки процесори мають загальне призначення, то GPU і, таким чином, мають більше можливостей. Однак цей аргумент стає все менш валідним, оскільки сьогодні графічні процесори можуть вирішувати більш складні завдання і більше не обмежуються лише 32-бітовими плавцями для представлення чисел.
Я думаю, це справді гарне питання.
Що я можу собі уявити:
VRAM обмежений, ніж загальна оперативна пам'ять. У випадку надання GPU - кожна текстура є більшою проблемою. Ви можете зберігати в середньому приблизно 4 - 8 разів більше даних в оперативній пам'яті, ніж VRAM. Звичайно, цей сценарій передбачає, що не існує системи, яка б відповідала за звільнення / виштовхування невикористаних / необхідних текстур з / до оперативної пам’яті / VRAM
З точки зору багатопотоковості, це набагато простіше, коли ви працюєте з візуалізацією програмного забезпечення - не потрібно ділитися контекстами
Якщо ви робите двовимірну графіку - зазвичай більшість фреймворків продовжують реалізовувати оцінку брудних прямокутників - це вирішує багато проблем з продуктивністю.
Однак рендерінг за допомогою OGL / D3D дає набагато більше продуктивності та можливостей. Шейдери можуть робити справді дивовижні речі, що майже неможливо за допомогою рендерінгу програмного забезпечення.
Але такі методики, як блимати, використовуючи кольорові клавіші, мають своє власне відчуття, ніби ви знаходитесь на базовому рівні, походження світу комп'ютерної графіки.
Я думаю, що хоча б добре знати про візуалізацію програмного забезпечення. Це дійсно дуже хвилюючий світ, не кажучи вже про те, що він є коренем усього, що ми бачимо сьогодні.