Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Pixel Bender/AGAL (http://www.flasher.ru/forum/forumdisplay.php?f=100)
-   -   Как дебажить AGAL (http://www.flasher.ru/forum/showthread.php?t=196034)

Tails 18.03.2013 12:33

Как дебажить AGAL
 
Вот произвел ты какие-то действия, например, в вершинной программе:
Код AS3:

"mov vt5.zw, vc0.zw\n" +
"mul vt0.xy, vt5.zw, vc0.zw\n" +
"add vt0.w, vt0.x, vt0.y\n" +
"sqt vt0.w, vt0.w\n" +
"div vt0.xy, vc0.zw, vt0.ww\n" +

А что там, в регистре vt0 в итоге получилось - одному ктулху gpu известно.

Может кто знает какие-то ide или способы для дебага шейдерных программ, их же не возможно писать, не зная что там в итоге получается.

СлаваRa 18.03.2013 13:40

скаут

Tails 18.03.2013 14:58

Цитата:

Unfortunately no we will not support running Scout on 32-bit machines, nor on old operating systems such as XP. You can still profile content running on those machines, but Scout itself must be run on 64-bit machines. Sorry, but we decided to focus our efforts on new exciting features rather than supporting old systems.
Из операционных систем пк, он только на windows 7 работает? Может, какая кустарная сборка есть..

Sintesis 18.03.2013 15:25

Дебажить шейдеры невозможно никакие ни агал ни другие, если ты имеешь в виду трассировку. В скауте можно вроде только посмотреть результат работы.
Ошибки можно вывести в оутпут:
context3D.enableErrorChecking = true;.

Tails 18.03.2013 17:55

Вложений: 1
И все же, трассировать шейдеры возможно.

Утилита PIX из Microsoft DirectX SDK для Windows. В ней можно сделать захват программы и затем детально рассмотреть лог её выполнения, вместе со всеми шейдерными вычислениями.
Вот посмотрите, как на каждой строчке выполнения флешовой вершинной программы, можно посмотреть все текущие значения в регистрах:

Вложение 29294

Просто невероятно, то что надо!
Раздизассемблированный код шейдера немного отличается от первоначального вида, но разобраться можно.

Вот вводная статья по PIX
Тулзу качать здесь.

После установки, она появиться в папке utils с именем PIX for Windows.exe

СлаваRa,
В скауте можно так-же дебажить шейдеры?

Sintesis 18.03.2013 19:00

Цитата:

Сообщение от Tails (Сообщение 1125741)
И все же, трассировать шейдеры возможно.

О круто, а мне доказывали, что нельзя(. Хотя полезно-ли такое дело, ну может быть в какой-то мере да... Шейдер повторяется для каждой вершины, действует очень быстро, у каждой вершины будет свой результат и это всё за доли секунды, и что там можно будет увидеть в миллионах векторов...

Добавлено через 12 минут
лучше не заморачивайся, пиши шейдеры в RenderMonkey на HLSL(или просто найди любой шейдер в нете и открой в рендерманки), тамже превращай их в D3DAssembler(это делается одной кнопкой), выучи этот ассемблер на сайте майкрасофта про него всё есть и переписывай его в AGAL, это не сложно, AGAL и D3DAssembler очень похожи. То, что сверху в твоём скрине и есть d3dAssembler. Отличается от AGAL не сильно: ввод и вывод параматров немного по другому, буквы переменных, констант и остального - другие, например "r" в d3d это "v" в агале. Больше нет отличий серьёзных. Только в d3d есть циклы в агале нет( и ещё в d3d есть по моему 3 инструкции которых нет в agal, но их можно имитировать, они всего лишь совокупность нескольких инструкций в одной.
Отлично то, что для d3dassembler есть программы в которых удобно разрабатывать шейдеры, в рендерманки есть даже режим художника в котором не нужно знать языки шейдеров, чтоб сделать шейдер.

Tails 18.03.2013 19:22

В программе сохраняется лог для каждого кадра. Можно спокойно и не спеша, поэтапно проанализировать рендер любого кадра, любого меша, любого пиксела.

Sintesis,
Спасибо, наверное, я так и сделаю.

Sintesis 18.03.2013 19:43

Цитата:

Сообщение от Tails (Сообщение 1125765)
В программе сохраняется лог для каждого кадра. Можно спокойно и не спеша, поэтапно проанализировать рендер любого кадра, любого меша, любого пиксела.

Капец, если такой трейс сделать для пиксельного шейдера, то этот шейдер повторится 60 раз в секунду для каждого пикселя, а пикселов миллионы, в секунду будут миллионы записей в лог, миллионы векторов, за несколько секунд такой лог будет размером несколько гигабайт.

Tails 20.03.2013 16:27

Sintesis,
Воспользовался твоим советом, скачал RenderMonkey, писать на высокоуровневом HLSL в 500 раз удобнее. И уроков полно, всё не нарадуюсь. Программа невероятно классная, ещё бы компилятор, чтоб прямиком в AGAL и совсем бы как в сказке было :)


Часовой пояс GMT +4, время: 12:59.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.