Плохое качество текстуры stage3D

Я рисую простой квадрат в stage3D, но качество цифр и граней на картинке не такое высокое, как должно быть:

Квадрат

Вот пример с (маленьким) исходным кодом, большую часть которого я поместил в один файл. http://users.telenet.be/fusion/SquareQuality/
http://users.telenet.be/fusion/SquareQuality/srcview/

Я использую mipmapping, в шейдере использую "‹2d, miplinear, repeat>", текстура 256x256 jpg (больше, чем на картинке), также пробовал png, пробовал "mipnearest" и пробовал без mipmapping. Anti-alias 4, но 10 и больше не помогает...

Есть идеи? Привет, Томас


person Thomas Blommaert    schedule 07.12.2012    source источник


Ответы (3)


Используете ли вы сглаживание для backBuffer?

// Listen for when the Context3D is created for it
stage3D.addEventListener(Event.CONTEXT3D_CREATE, onContext3DCreated);

function onContext3DCreated(ev:Event): void
{
    var context3D:Context3D = stage3D.context3D;

    // Setup the back buffer for the context
    context3D.configureBackBuffer(stage.stageWidth, stage.stageHeight,
                                  0, // no antialiasing (values 2-16 for antialiasing)
                                  true);
}
person DigitalD    schedule 07.12.2012
comment
Да, я... Я даже пробовал 16 и bestResolution=true. Я поставлю ссылку на пример в своем вопросе. - person Thomas Blommaert; 08.12.2012

Я думаю, что размер вашей текстуры ресурса слишком велик. GPU визуализирует вашу сцену пиксель за пикселем во фрагментном шейдере. Когда он визуализирует пиксель вашей текстуры, фрагментный шейдер получает переменную, которая представляет текстуру UV. Графический процессор просто берет цвет пикселя в этой UV-координате вашей текстуры.

Теперь, когда размер вашей текстуры слишком велик, вы потеряете информацию, потому что два соседних пикселя на экране будут соответствовать несмежным пикселям в ресурсе текстуры. Например: если вы нарисуете текстуру в 10 раз меньше ресурса, вы получите что-то вроде этого (если бы каждый символ соответствовал пикселю, в одном измерении):

Texture:  0123456789ABCDEFGHIJKLM
Screen:   0AK
person Martijn Courteaux    schedule 07.12.2012
comment
Я пробовал с меньшей текстурой, но это не помогло. И не должно, потому что я использую mipmapping... - person Thomas Blommaert; 07.12.2012

Я НАШЕЛ!!!

Я зашел на форум Старлинга и нашел ответ Даниэля из Старлинга:

"Если вы используете TRILINEAR, вы уже используете наилучшее доступное качество. Еще одна вещь, которую вы можете попробовать, — установить высокое значение "сглаживания" для Starling, например 16, и посмотреть, поможет ли это. ."

Итак, я наткнулся на эту статью, в которой говорилось, что трехлинейность используется только тогда, когда вы ставите аргумент «линейный» в вашем фрагментном шейдере в моей примерной программе:

"tex ft0, v0, fs0 ‹2d, линейный, миплинейный, повтор>".

Приветствую,
Томас

person Thomas Blommaert    schedule 07.12.2012