AlexS32
а ты пробовал как GLoom посоветовал заюзать unlit шейдер для screen техники, у тебя же насколько я понял, screen для видео потока с камеры? модификация скрина светом там не нужна по идее(?)
<technique vs="Unlit" ps="Unlit" psdefines="DIFFMAP"> <pass name="screen" depthwrite="false" depthtest="always" blend="alpha" /> </technique>
У урхи есть такая особеность - игнорировать отсутсвующие ресурсы. Например если нужна текстура а её нет то будет использоваться последняя текстура которая была задействована для семплера. Если нет данных в модели о цветах вершин а шейдер их требудет - то он молча продолжит работать. Из за этого бывают визуальные глюки из разряда "хрен поймёшь почему так". В твоём случае вроде бы всё проще должно быть. Но имей в виду на всякий случай.
В варианте с unlit все работает. Видимо на этом варианте пока и остановлюсь. Спасибо.
Хотя все же очень хочется понять такое странное поведение.
А так же не до конца понятна возможность использования такого экрана в будущем в задаче с обрезкой фона по человеческой фигуре. В этой задаче необходимо, чтобы все, что не соответствует маске было прозрачным и пользователь видел фон.
Но это можно проверить не сложным экспериментом.
Кстати, несколько не в тему, но если интересно посмотреть наш первый "публичный" образец использования Урхи под Android, выложили такую прогу: "Ommy - Animated Emoji"
AlexS32
>Хотя все же очень хочется понять такое странное поведение.
Я могу лишь предположить что:
У тебя в RenderPath'e не было пасса для
<command type="forwardlights" pass="light" />
<pass name="base" /> - нарисовать дифуз/альбедо с учетом амбиентлайта из Zone, Fog'a...
<pass name="litbase" psdefines="AMBIENT" /> - оптимизационный пасс, исполняется вместо base(если я ничего не путаю), делает все тоже самое что и base + еще один источник света берется для просчетов картинки, наверное ближайший поинтлайт или директлайт
<pass name="light" depthtest="equal" depthwrite="false" blend="add" /> - лайт-пасс по кол-ву влияющих лампочек, аддитивно пишется поверх того что было нарисовано в base или litbase
как-то так вроде, но это не точно )
+ еще должны быть источники света в сцене, которые как-то светят на плоскость экрана(screen)
codingmonkey
К сожалению предположение неправильно. Я проводил эксперименты и с пассом "light". От его наличия или отсутствия я эффекта не ощутил, хотя на сцене 3 источника света. Более того, если в моих техниках заменить пасы на "alpha" и "litalpha", а в рендерпасе оставить только один пасс "alpha" то все будет отображаться нормально.
Фактически, на мой взгляд, речь идет о том, что почему-то нельзя сделать кастомный пасс аналогичный alpha. Хотя такая возможность в доке подразумевается. Либо невозможно использовать два "alpha" пасса.
>Я проводил эксперименты и с пассом "light"
ну вот, значит я уже забыл что там и как в урхе(
>нельзя сделать кастомный пасс аналогичный alpha.
Странно, попробовал у меня работает. Кастомный альфа пасс с альфой и лампочками.
Рендерпатч.
Техника.
<technique vs="LitSolid" ps="LitSolid" psdefines="DIFFMAP"> <pass name="myCustomAlpha" depthwrite="false" blend="alpha" /> <pass name="litmyCustomAlpha" psdefines="PERPIXEL" depthwrite="false" blend="addalpha" /> <pass name="shadow" vs="Shadow" ps="Shadow" /> </technique>
Очень это все странно. Значит надо будет еще поэкспериментировать.
AlexS32
> "Ommy - Animated Emoji"
не поддерживается( note 3 - android 5.0
Zamir к сожалению пришлось задрать требования к системе - реализация записи видео требует Android 7.0
Тема в архиве.