Я наткнулся на Phong Shading, глядя на Source Engine. Описание очень похоже на тесселяцию. Но когда я искал его, я действительно не нашел ничего, что бы напрямую сравнивало их. Теперь в DirectX тесселяция не используется, как Phong Shading в HLSL. Какая разница? И какой из них я должен использовать?
Затенение Фонга против тесселяции
Ответы (2)
Затенение Фонга не имеет прямого отношения к тесселяции DX11, но поскольку они оба могут сглаживать детали освещения, я понимаю, как вы можете быть сбиты с толку.
Тесселяция динамически увеличивает геометрическую детализацию на основе некоторых параметров (часто расстояния до камеры). Это может улучшить качество освещения (может быть, это связь с фонгом?), а также детализацию силуэта. Преимущества затенения (не детализация силуэта) на самом деле могут быть полностью смоделированы в пиксельных шейдерах без тесселяции.
Затенение Фонга — это метод затенения пикселей. Это не влияет на геометрическую детализацию. Это похоже на стандартное OpenGL затенение Гуро, за исключением того, что вместо интерполяции значения освещения по пикселям изображения поверхность, нормаль интерполируется по всей поверхности и перенормируется в каждом пикселе. Это дает более точные результаты освещения, которые часто называют «освещением на пиксель», а не «освещением на вершину».
Вы могли бы разумно (и, вероятно, часто) использовать оба эффекта одновременно в разных частях конвейера.
Как упомянул Джастин, Phong Shading — это процедура затенения, используемая для более точного освещения каждого пикселя. Тесселяция используется для изменения геометрических деталей в сетке путем динамического создания большего количества треугольников для достижения более высокой детализации поверхности и более гладкого результата. Его можно успешно использовать для динамического уровня детализации в зависимости от расстояния до камеры или размера экрана.
Чтобы добавить к этой теме, я подумал, что должен упомянуть, что существует алгоритм тесселяции под названием Phong Tessellation, который черпает вдохновение из Phong Shading и применяет этот алгоритм к тесселяции. Это означает, что вершины модифицируются с помощью аналогичной интерполяции нормалей и достигают высокой детализации силуэтов, а также лучшей детализации поверхностей. Тесселяция Фонга имеет более простой шейдер, чем обычный другой алгоритм локальной тесселяции PN-Triangles, и я использовал его для достижения более высокой детализации голов в одной из игр, над которыми я работал.