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