В останніх іграх я помітив щось, що називається Tessellation, Включення речі ON руйнує мою частоту кадрів.
Я помітив, що це при вмиканні виглядає як Anti-Aliasing.
Хтось може дати мені додаткову інформацію про те, що саме робить GPU.
В останніх іграх я помітив щось, що називається Tessellation, Включення речі ON руйнує мою частоту кадрів.
Я помітив, що це при вмиканні виглядає як Anti-Aliasing.
Хтось може дати мені додаткову інформацію про те, що саме робить GPU.
Відповіді:
Тесселяція - це техніка, яка дозволяє генерувати примітиви (трикутники, лінії, точки тощо) на графічній карті. Зокрема, вона дозволяє вам неодноразово підрозділяти поточну геометрію на більш тонку сітку.
Це дозволяє завантажувати порівняно грубу сітку на відеокарту, динамічно генерувати більше вершин і трикутників, а потім мати сітку на екрані, яка виглядає набагато плавніше.
Більшу частину часу ця теселяція проводиться заново у кожному окремому кадрі, і це може бути причиною того, що частота кадрів падає, коли ви це вмикаєте.
Тесселяція проводиться в кілька етапів, і це відбувається ПІСЛЯ вершинного шейдера.
Терміни для кожного етапу залежать від API. У DirectX - це шейдер Hull, Tesselsel Tessellation та Shader Domain. У OpenGL вони називаються шейдером управління Tessellation, Tesselation Primitive Generation і Tesderlation Eder Shader.
Перший і останній етап є програмованим, власне тесселяція проводиться обладнанням на стадії фіксованої функції.
У шейдері управління Tesselation Control ви встановлюєте тип та кількість підрозділів.
Потім апаратний tessellator ділить геометрію згідно з шейдером управління.
Нарешті, шейдер оцінювання Тесселяції викликається для кожної щойно створеної вершини. У цьому шейдері ви встановлюєте тип примітиву, який ви бажаєте створити, і як розташовані вершини та багато інших речей. Цей шейдер також може бути використаний для виконання всіляких обчислень між вершинами, подібно до вершинного шейдера. Гарантовано, що він буде викликаний хоча б один раз для кожної створеної вершини.
Якщо ви хочете зробити будь-яку подальшу роботу над примітивами, ви можете додати шейдер Geometry.
Він активує 3 стадії в трубопроводі.
Перший - це шейдер управління тесселяцією (шейдер корпусу в D3D), який розглядає набір вершин, а потім виводить, як його слід розділити на окремі трикутники.
Другий - це фіксований функціональний етап, який генерує запитувані трикутники.
На третьому етапі шейдер оцінювання тесселяції (доменний шейдер у D3D), який запускається за генерованою вершиною та поставить його в правильне місце на основі барицентричних координат генерованої вершини.
Це використовується для рівня деталізації, щоб генерувати більше трикутників, коли сітка знаходиться ближче до камери.