Что такое синтаксис agal tex?

Вот синтаксис, который я прочитал

вкладка tex - Образцы текстуры в b (который должен быть одним из регистров fs) по координатам в a, помещая полученный цвет в t.

но в каком-то коде проекта с открытым исходным кодом я обнаружил, что кто-то написал tex так:

tex ft0.xyzw vi0.xyzw fs0 <fLinear,mLinear,clamp,2d,rgba,b:45>//what's the bias:45?

и это

tex ft3, v3, fs0<2d, linear, miplinear,dxt1>//what is dxt1, are there any like this?

что действительно смущает меня о том, что я могу положить в <>, кажется, нет требования порядка

спасибо за любые подсказки

1 ответ

Решение

Я могу только догадываться о значениях этих других флагов - их нет ни в одной документации, которую я видел, и определенно нет в стандартной версии AGALMiniAssembler. Мне кажется, что они используются расширенной версией AGALMiniAssembler, созданной для использования с определенным пакетом Flash (например, Starling или Away3D). Я бы придерживался хорошо документированных текстурных флагов - см. Ссылку на PDF в конце моего поста.

Что касается порядка, вы правы - порядок не имеет значения при передаче тегов в функцию tex, если вы используете базовую версию AGALMiniAssembler, предоставленную Adobe.

Причина этого относительно проста: каждый тег, используемый одной операцией 'tex', представлен одним 64-битным полем, когда операция преобразуется в байт-код. Порядок не имеет значения, так как разные теги будут занимать разные биты в поле. Вы по-прежнему будете испытывать проблемы, когда два тега, которые занимают одну и ту же часть поля, используются одновременно - например, "ближайший" и "линейный", или "mipnearest" и "nomip" (обратите внимание на противоречивое поведение между этими инструкциями!).

Посмотрите этот PDF-файл, если вы хотите увидеть операции, которые реализованы в текущих, не бета-версиях Flash, или если вы хотите узнать подробнее о том, как байт-код собирается перед передачей в шейдеры.

Другие вопросы по тегам