Я занимаюсь рисованием бильярдных шаров в XNA/D3D (DX11). Я написал шейдер Blinn-Phone, который использует SamplerState в HLSL для сопоставления моих бильярдных текстур с сферическим FBX, который я сгенерировал в VisualStudio2012.Сфера показывает многоугольники при визуализации с текстурой
Есть две проблемы, которые у меня есть, как наиболее заметные на самом правом шаре на рисунке ниже.
1) Вы можете видеть, что текстура показывает, где лежат основные полигоны сферы.
2) На нижнем краю третьей линии, где чуть ниже белой видимости ниже полосы, она выглядит очень сглаженной или неровной.
Приложение текстуры, по-видимому, в значительной степени находится вне моего контроля, поскольку интерполяция между нормалями вершин выполняется внутри конвейера, а не мной.
Итак, как я мог улучшить это? Создать новую сферу с большим количеством полигонов?
Я сделал следующее за сглаживание, но, честно говоря, казалось, сделать очень мало, если что-нибудь:
graphics.PreferMultiSampling = true;
graphics.ApplyChanges();
GraphicsDevice.PresentationParameters.MultiSampleCount = 4;
Вот моя карта текстуры состояния, для чего его ценности. Любые идеи очень приветствуются. Если вам нужна дополнительная информация, дайте мне знать!
sampler2D ColorSampler = sampler_state {
Texture = <ColorTexture>;
FILTER = MIN_MAG_MIP_LINEAR;
AddressU = Wrap;
AddressV = Wrap;
};
Если у вас есть образец фрагмента, который выполняет эту ручную интерполяцию, было бы удобно иметь в этой теме. – Dave
нет фрагмента под рукой, но я обновил ответ с псевдокодом. Это также зависит от того, как была создана ваша текстура (координаты uv должны совпадать: если вы использовали проекцию меркатора для генерации текстуры, тогда вы должны использовать проекцию меркатора вместо формулы выше!). – WhitAngl