Войти
ПрограммированиеФорумГрафика

Texture Scaling quality

Страницы: 1 2 Следующая »
#0
20:38, 12 янв 2016

Я хочу скалировать изоброжение на GPU с помощю шейдера(DirectX,  HLSL 4.0) и для этого использую Filters: linear, trilinear , anisotropic.

в шейдере у меня есть три SamplerState

SamplerState  samplerPoint
{
  Filter     = MIN_MAG_MIP_POINT;
  AddressU      = Mirror;
  AddressV      = Mirror;
};

SamplerState  samplerLinear
{
  Filter     = MIN_MAG_MIP_LINEAR;
  AddressU      = Mirror;
  AddressV      = Mirror;
};

SamplerState  samplerAniso
{
  Filter     = Anisotropic;
  AddressU      = Mirror;
  AddressV      = Mirror;
  MaxAnisotropy = 16;
  MaximumLod = 8;
};


и в пиксельном шейдере использую по желанию samplerPoint или samplerLinear или samplerAniso.

texture.Sample(samplerPoint, Input.Texcoord);

или

texture.Sample(samplerLinear, Input.Texcoord);

или

texture.Sample(samplerAniso, Input.Texcoord);

Больше ничего особенного задаю пиксельный шеидер одну текстуру и рисую на Fullscreen Quad в окне и сжимаю окно но результат один и тот же.

#1
21:01, 12 янв 2016

Georg_GPU
> Больше ничего особенного задаю пиксельный шеидер одну текстуру и рисую на
> Fullscreen Quad в окне и сжимаю окно но результат один и тот же.
А в чем должна проявляться разница?..

#2
21:21, 12 янв 2016

Может нужен bilteral filter?

#3
21:38, 12 янв 2016

-Eugene-
разница должна быть в качестве сжатой текстуры

#4
21:43, 12 янв 2016

Georg_GPU
> разница должна быть в качестве сжатой текстуры
Фильтрация имеет мало отношения к сжатию.
Возможно вопрос глупый, но у текстуры есть mip-уровни для корректной трилинейной фильтрации?

#5
21:46, 12 янв 2016

Georg_GPU
> и сжимаю окно
если ты уменьшаешь текстуру, при этом мипмапов для неё не сгенерено, то ничего хорошего не выйдет, будет шуметь.
попробуй ID3D11DeviceContext::GenerateMips, либо даунсемпли как надо шейдером.

#6
21:46, 12 янв 2016

-Eugene-

Нет не глупый . у меня нету mip-уровни для корректной трилинейной фильтрации.

#7
22:04, 12 янв 2016

Mr F
я нашол https://msdn.microsoft.com/en-us/library/windows/desktop/bb173569(v=vs.85).aspx
то есть просто задаешь ID3D10ShaderResourceView resource для GenerateMips  и потом эту resource в PSSetShaderResources, да?

#8
22:43, 12 янв 2016

Georg_GPU
> Нет не глупый . у меня нету mip-уровни для корректной трилинейной фильтрации.
В таком случае разницы и не будет. Без мип-уровней уменьшение размера работает одинаково плохо для любой фильтрации.

#9
4:13, 13 янв 2016

-Eugene-
> Без мип-уровней уменьшение размера работает одинаково плохо для любой фильтрации.
А ведь не должно по идеи. Тот же анизатропик может делать до 128 выборок. Даже если предположить 64 выборки, это квадрат 8х8, а не 2х2 как у билинейной. Т.е. если билинейка нормально держит уменьшение до 2-х раз, то анизатропик должен до 8-ми (пусть и ценой завала производительности).

#10
9:24, 13 янв 2016

Bishop
Возможно это сделано специально, чтобы не усложнять логику анизотропной фильтрации. Потому что анизотропная фильтрация создавалась для других задач и ей этот юзкейс просто не нужен. К тому же, это будет отдельный алгоритм, потому что анизотропик сэмплит пиксели на линии, а тут надо на кваде.

#11
11:35, 13 янв 2016

Я бы не советовал использовать встроенные методы генерации мипов, если нужно обеспечить хорошее качество при уменьшении текстуры.
В принципе - уменьшить картинку намного сложнее чем увеличить. Идеальный вариант - предварительно создать пару "опорных" мип-уровней руками (в фотошопе), с сохранением тех деталей, которые особо нужны.

#12
12:04, 13 янв 2016

Kashey
Идеальный вариант - предварительно создать пару "опорных" мип-уровней руками (в фотошопе)

Не получиться потому что кадры изменяються в Realtime.

#13
12:30, 13 янв 2016

Anisotropic тут вообще не к месту. Он нужен когда ты на текстуру смотришь под углом, иначе разницы с трилинейной фильтрацией быть не должно.
Используй шейдер и в нём фильтруй сам как надо.

#14
13:37, 13 янв 2016

gammaker
> Используй шейдер и в нём фильтруй сам как надо

Можеь чуть подробнее обяснить?

Страницы: 1 2 Следующая »
ПрограммированиеФорумГрафика

Тема в архиве.