Войти
Urho3DФорумЗАДАВАЙТЕ ВОПРОСЫ

[АРХИВ] Шейдеры, техники, rendering path'ы (2 стр)

Страницы: 1 2 3 424 Следующая »
#15
10:33, 1 дек. 2015

В технике походу так. Оттуда походу выдергивается необходимый пасс на RenderPath пасс.

>Как минимум забавная возможность.
Мне кажется я как-то смотрел на этот выхлопъ там - адъиизраиль.


#16
10:43, 1 дек. 2015

Красивую систему нарушают пассы типа shadow litbase и т.д., которые срабатывают, даже если в рендерпасе не прописаны. И надо перелопатить кучу кода, чтобы понять что к чему. Причем справка нифига в этом не помогает. К примеру depth обычный кастомный пасс походу, хотя тут http://urho3d.github.io/documentation/HEAD/_materials.html сильно намекается, что встроенный. Хотя встроенный тоже не означает, что его не нужно прописывать в рендерпас. Короче голову сломать можно.

#17
11:54, 1 дек. 2015

>нарушают пассы типа shadow
разве?
вот если в этой технике удалить пасс Shadow то тени не будут рисоваться, несмотря на то что у объекта стоит галочка "тени"

<technique vs="Unlit" ps="Unlit" vsdefines="VERTEXCOLOR NOUV" psdefines="VERTEXCOLOR">
    <pass name="alpha" depthwrite="false" blend="alpha" />
    <pass name="shadow" vs="Shadow" ps="Shadow" />
</technique>

>К примеру depth обычный кастомный пасс походу
Ты про это?

•depth: Renders linear depth to a rendertarget for post-processing effects.

Это вроде для материалов, хз для какой надобности материалу спец. проход в буфер глубины когда он и в остальных проходах настраивается, ты видел хоть одну технику где используется этот проход?
И походу этот проход будет работать только в соответствующем RenderPath'e который будет иметь как раз такой особый буфер глубины - "linear depth"
к примеру тут: ForwardDepth.xml  (<command type="scenepass" pass="depth" output="depth" />)
<renderpath>
    <rendertarget name="depth" sizedivisor="1 1" format="lineardepth" />
    <command type="clear" color="1 1 1 1" depth="1.0" stencil="0" output="depth" />
    <command type="scenepass" pass="depth" output="depth" />
    <command type="clear" color="fog" />
    <command type="scenepass" pass="base" vertexlights="true" metadata="base" />
    <command type="forwardlights" pass="light" />
    <command type="scenepass" pass="postopaque" />
    <command type="scenepass" pass="refract">
        <texture unit="environment" name="viewport" />
    </command>
    <command type="scenepass" pass="alpha" vertexlights="true" sort="backtofront" metadata="alpha" />
    <command type="scenepass" pass="postalpha" sort="backtofront" />
</renderpath>

#18
12:04, 1 дек. 2015

> вот если в этой технике удалить пасс Shadow то тени не будут рисоваться, несмотря на то что у объекта стоит галочка "тени"
я про то что этот пасс в RenderPath отсутствует, то есть существуют пассы типа shadow, litbase, litalpha, которые можно в материал тыкать, и которые непонятно откуда берутся и чем отличаются от других пассов, по крайней мере общая логика теряется и новички (я) путаются

>хз для какой
вот у меня только такие и мысли, когда я пытаюсь разобраться)) вот скажи, накой к базовому проходу дополнительно добавлять метадата="base" когда у него имя сменить нельзя, ибо не будет работать

#19
13:05, 1 дек. 2015

>по крайней мере общая логика теряется и новички (я) путаются
новичкам просто нечего делать в RenderPath'e и ковыряться в кастомизации техник прорисовки, если ты там начал ковыряется ты заведомо не новичок :)

Shadow пасс вроде тут происходит

<command type="forwardlights" pass="light" />


>накой к базовому проходу дополнительно добавлять метадата="base"
Я нашел лишь одно упоминание об этом: http://urho3d.github.io/documentation/HEAD/_render_paths.html

•The opaque base pass must be tagged with metadata "base". When forward lighting logic does the lit base pass optimization, it will search for a pass with the word "lit" prepended, ie. if your custom opaque base pass is called "custombase", the corresponding lit base pass would be "litcustombase".


#20
14:52, 1 дек. 2015

> Shadow пасс вроде тут происходит

Мне кажется он отдельный, сам по себе, потому что forwardlights не задействован при Deferred рендеринге, а наличие <pass name="shadow" vs="Shadow" ps="Shadow" /> в технике все так же влияет на наличие теней

#21
15:05, 1 дек. 2015

>потому что forwardlights не задействован при Deferred рендеринге
в Deferred  - Shadow пасс идет в другом RenderPath' пассе (CMD_LIGHTVOLUMES)

    <command type="lightvolumes" vs="DeferredLight" ps="DeferredLight">
        <texture unit="albedo" name="albedo" />
        <texture unit="normal" name="normal" />
        <texture unit="depth" name="depth" />
    </command>
а в Forward'e в <command type="forwardlights" pass="light" />

Я это предполагаю по двум комментам из кода: void View::ExecuteRenderPathCommands()

            case CMD_FORWARDLIGHTS:
                // Render shadow maps + opaque objects' additive lighting
                if (!actualView->lightQueues_.Empty())
                {

            case CMD_LIGHTVOLUMES:
                // Render shadow maps + light volumes
                if (!actualView->lightQueues_.Empty())
                {

ps. Хотя сейчас попробовал убрать forwardlights in Forward.xml - тени все так же рисуются.
ps2. закомментировал весь блок с - case CMD_FORWARDLIGHTS: в ExecuteRenderPathCommands() - теперь нифига кроме гуя не видно :)
убрал опять forwardlights - еле видно геометрию, она освещается похоже только амбиентом, добавил Zone покрутил ее амбиент - реагирует.
Вывод. FORWARDLIGHTS вызывается для прорисовки теней и лампочек даже если ее нет в Forward.xml

#22
15:27, 1 дек. 2015

Формируются теневые батчи в void View::GetLightBatches()
который вызывается в void View::GetBatches()
который вызывается в void View::Update(const FrameInfo& frame)
А в void View::ExecuteRenderPathCommands() я так понимаю уже подготовленные батчи рендерятся

#23
15:29, 1 дек. 2015

> добавил Zone покрутил ее амбиент - реагирует
фоновое освещение в проходе base и litbase создается, оба убираешь и не будет его
а forwardlights только попиксельное освещение от источников

#24
15:31, 1 дек. 2015

>А в void View::ExecuteRenderPathCommands() я так понимаю уже подготовленные батчи рендерятся
да там несколько основных команд

enum RenderCommandType
{
    CMD_NONE = 0,
    CMD_CLEAR,
    CMD_SCENEPASS,
    CMD_QUAD,
    CMD_FORWARDLIGHTS,
    CMD_LIGHTVOLUMES,
    CMD_RENDERUI
};
и все происходит там.

#25
15:33, 1 дек. 2015

> и все происходит там
все кроме формирования теневых батчей, которые создаются в апдейте)

EDIT: а рендерятся они в самом начале void View::ExecuteRenderPathCommands() еще перед разбором команд рендерпаса

EDIT2: а в CMD_FORWARDLIGHTS тени рендерятся только если включена опция if (renderer_->GetReuseShadowMaps()

#26
16:17, 1 дек. 2015

>только если включена опция if (renderer_->GetReuseShadowMaps()

И по-умолчанию опция включена, а если вырубить работает затенения прозрачных

SetReuseShadowMaps (bool enable)
Set reuse of shadow maps. Default is true. If disabled, also transparent geometry can be shadowed. 

#27
22:02, 1 дек. 2015

Это что-то типа ShaderForge для юнити? Пользователь, который не разбирается в шейдерах просто распологает ноды, а на выходе получает исходник шейдера.

EDIT: в принципе это внешняя программа и прямого отношения к движку не имеет, чисто теоретически для урхо тоже такую можно сделать, вот только пока что я в графической подсистеме урхи чувствую себя как слепой котенок )

#28
23:15, 1 дек. 2015

>Source Shader Editor

Порой эти разрисованные ноды выглядят страшней самого шейдера :)

+ Показать

edit: fix alpha out in shader
Изображение

#29
23:30, 1 дек. 2015

Вау

EDIT: может как пулреквест в движок отправить?

Страницы: 1 2 3 424 Следующая »
Urho3DФорумЗАДАВАЙТЕ ВОПРОСЫ

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