В последних играх я заметил что-то, называемое тесселяцией. Включение этой вещи разрушает мою частоту кадров.
Я заметил, что при включении он выглядит как сглаживание.
Может кто-нибудь дать мне дополнительную информацию о том, что именно делает GPU.
pixel-graphics
Anarach
источник
источник
Ответы:
Тесселяция - это техника, которая позволяет генерировать примитивы (треугольники, линии, точки и т. Д.) На видеокарте. В частности, он позволяет вам многократно разделять текущую геометрию на более мелкую сетку.
Это позволяет вам загружать относительно грубую сетку на видеокарту, динамически генерировать больше вершин и треугольников, а затем создавать сетку на экране, которая выглядит намного более гладкой.
Большую часть времени это тесселяция выполняется заново в каждом отдельном кадре, и это может быть причиной того, что ваша частота кадров падает, когда вы включаете это.
Тесселяция выполняется в несколько этапов и ПОСЛЕ вершинного шейдера.
Условия для каждого этапа варьируются в зависимости от API. В DirectX это шейдер корпуса, аппаратная тесселяция и доменный шейдер. В OpenGL они называются шейдером управления тесселяцией, генерацией примитивов тесселяции и шейдером оценки тесселяции.
Первый и последний этап являются программируемыми, фактическое тесселяция выполняется аппаратными средствами на этапе фиксированной функции.
В шейдере Tesselation Control вы устанавливаете тип и количество подразделений.
Затем аппаратный тесселятор делит геометрию в соответствии с управляющим шейдером.
Наконец, шейдер оценки тесселяции вызывается для каждой вновь созданной вершины. В этом шейдере вы устанавливаете тип примитива, который вы хотите сгенерировать, и как расставляются вершины, и многое другое. Этот шейдер также может использоваться для выполнения всех видов вычислений на каждую вершину, как и вершинный шейдер. Он гарантированно вызывается хотя бы один раз для каждой сгенерированной вершины.
Если вы хотите продолжить работу с примитивами, вы можете добавить шейдер Geometry.
источник
Он активирует 3 этапа в конвейере.
Первый - это шейдер управления тесселяцией (шейдер корпуса в D3D), который смотрит на набор вершин, а затем выводит, как его следует разделить на отдельные треугольники.
Второй этап - фиксированная функция, которая генерирует запрошенные треугольники.
Третий этап - шейдер оценки тесселяции (доменный шейдер в D3D), который запускается для каждой сгенерированной вершины и помещает ее в правильное место на основе барицентрических координат сгенерированной вершины.
Это используется для уровня детализации, чтобы генерировать больше треугольников, когда сетка ближе к камере.
источник