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

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

Страницы: 119 20 21 22 23 24 Следующая »
#315
14:10, 26 фев. 2016

Насчет deferred рендеринга. Он же только само освещение оптимизирует? А тени от источников света одинаково рендерятся при любом способе рендеринга?


#316
15:44, 26 фев. 2016

мы же как-то смотрели что тени вроде как впереди всего рисуются в ExecuteRenderPath или что-то подобное... следовательно принципиальных различий особых нет.

выборка по разному идет когда шейдинг объекта идет:

тени в perpixel forward (LitSolid.glsl)

        #ifdef SHADOW
            diff *= GetShadow(vShadowPos, vWorldPos.w);
        #endif

тени в deferred (<command type="lightvolumes" vs="DeferredLight" = DeferredLight.glsl)

    #ifdef SHADOW
        diff *= GetShadowDeferred(projWorldPos, depth);
    #endif

>Он же только само освещение оптимизирует?
насколько я знаю да, это его основное достижение и для этого его используют, когда в сцене нужно рендерить много динамических источников света.

#317
15:58, 26 фев. 2016

Ну мы то смотрели, может это неканоническая реализация ) Я вот думаю, толку с этого deffered рендеринга, с прозрачностями не работает, с тенями не работает ) А алгоритм между тем сильно усложняется)

> когда в сцене нужно рендерить много динамических источников света

без теней ))

#318
20:50, 26 фев. 2016

Вот что получается если вяло рендерить скайбокс и устанавить его для Zone как текстуру окружения.
пришлось еще правда дописать шейдер litSolid.glsl, семплер был, но нигде он до сих пор не использовался.
изменения: https://github.com/MonkeyFirst/Urho3D/commit/3555b0481cd4f76c03fd… b2f6d5afff15e

#319
21:21, 26 фев. 2016

Я тоже игрался с EnvCube техникой. Только я не в зону записывал, а прямо в материал. Если дополнительно передавать маску отражений, то получается почти PBR рендеринг. Правда чтобы матовые отражения сделать, нужно передавать размытую текстуру. Но это гораздо быстрее, чем размывать текстуру на лету в шейдере. Например в Фолауте 4 для карты отражений используется одна текстура. Одна на всю игру (там текстура с полем и небом) и нормально выглядит даже в помещениях. Нужно просто набор текстур с разной степенью размытости иметь и передавать нужную в материал в зависимости от необходимой матовости отражений.

#320
21:32, 26 фев. 2016

Изображение

здесь отражается стандартый скайбокс из урхо, только цвет отражения я не доделал, отражает текстуру как есть, металлы обычно задают отражению окраску, поэтому больше на пластик похоже

#321
21:43, 26 фев. 2016

>Если дополнительно передавать маску отражений
Есть же Spec map'a у моделей для этого разве нет? ZoneEnvCubemapColor умножить на значение из нее и должно получиться что зеркальные части будут "зеркалить" в соответствии с величиной которую нарисовал артист.

>получается почти PBR рендеринг
IBL больше подходит

>Правда чтобы матовые отражения сделать, нужно передавать размытую текстуру
а если из мип уровней мелких выбирать ? (надо будет глянуть на рез-тат)

>передавать нужную в материал в зависимости от необходимой матовости отражений.
я думаю это не правильно, менять в материале карту окружения(а если объектов много? заколеблешься им менять и подставлять нужные кубе мапы), по идее лучше когда ее пропихивает двиг за нас, и одна карта окружения в шейдере(Zone) это наверное очень мало, даже если их по уровню как-то линковать в цепочку (если уровень линейны) то в шейдер нужно передавать хотя бы две карты окружения(Zone) и веса(или просто их ворд позиции). 

#322
21:54, 26 фев. 2016

Я хз, и не помню уже по какой причине я новую текстуру добавлял в шейдер, давно эт было ) но что-то там меня смущало

Вот что я менял в шейдере Litsolid

        #ifdef SPECULAR
            float spec = GetSpecular(normal, cCameraPosPS - vWorldPos.xyz, lightDir, cMatSpecColor.a);
            finalColor = diff * lightColor * (diffColor.rgb + spec * specColor * cLightColor.a);
        #else

поменял на

        #ifdef SPECULAR
            float spec = GetSpecular(normal, cCameraPosPS - vWorldPos.xyz, lightDir, cMatSpecColor.a);
            //specColor = cMatSpecColor.rgb * texture2D(sSpecMap, vTexCoord.xy).rgb;
            vec3 envColor = cMatEnvMapColor * textureCube(sEnvCubeMap, reflect(vReflectionVec, normal)).rgb;
            finalColor = diff * diffColor.rgb + envColor * spec ;// * envColor * (diffColor.rgb + spec * specColor * cLightColor.a);
        #else

> я думаю это не правильно, менять в материале карту окружения

ну мне кажется это нормально, художник создает материал для объекта и сразу же выбирает для нее текстуру отражения, в зависимости от матовости материала наряду с картами нормалей, дифузной картой и т.д )

#323
21:56, 26 фев. 2016

Чет я гоню, у меняж как раз спекулар и используется))

<?xml version="1.0"?>
<material>
  <technique name="Techniques/DiffNormalSpec.xml" />
  <texture unit="diffuse" name="Textures/Cerberus_A.tga" />
  <texture unit="normal" name="Textures/Cerberus_N.tga" />
  <texture unit="environment" name="Textures/Skybox.xml" />
  <texture unit="specular" name="Textures/Cerberus_M.tga" />
  <parameter name="MatDiffColor" value="0.588235 0.588235 0.588235 1" />
  <parameter name="MatSpecColor" value="1 1 1 100" />
  <parameter name="MatEmissiveColor" value="0 0 0 1" />
</material> 
#324
22:06, 26 фев. 2016

> я думаю это не правильно, менять в материале карту окружения

так идея в том, чтоб не менять, я пример выше привел, что в фолауте 4 одна текстура на всю игру) а они ведь хватстаются PBR почему то)

#325
22:12, 26 фев. 2016

https://www.youtube.com/watch?v=1OsTtA0Gi5I&t=356 вот смотри отражения на пушке

#326
22:44, 26 фев. 2016

Вообще я щас мотрю, какую же фигню я тогда накатал. У меня вместо блика спекуляра текстура окружения подставляется, это совсем не то, как должно работать отражение, там весь материал должен отражать, а не только в области блика )

#327
22:44, 26 фев. 2016

>вот смотри отражения на пушке
У чувака фпс просел до 30-ти наверное как-раз из-за них )

они их периодически с окружения наверное рендерят, поэтому и одна текстура, мб это лайтпроба я не знаю механизма их работы, но мб это как раз типо нее что-то.

Кстати, а если юзать обычную ENVCUBEMAP в материале, она тоже убивает тени от объектов если в карте окружения слишком много белого?

#328
22:48, 26 фев. 2016

> они их периодически с окружения наверное рендерят, поэтому и одна текстура, мб это лайтпроба я не знаю механизма их работы, но мб это как раз типо нее что-то.

не не не, там та же текстура даже в помещении, на протяжении всей игры)

> Кстати, а если юзать обычную ENVCUBEMAP в материале, она тоже убивает тени от объектов если в карте окружения слишком много белого?

тень от объекта с этим материалом или тени на объект с этим материалом?

#329
22:53, 26 фев. 2016

Вообще стандартный ENVMAP там все убивает, источник света не него не действует и объект с таким материалом видно даже в полной темноте, источник света может только блик наложить на такой материал, ну и тени он не получает, другой объект может только блик перекрыть

Страницы: 119 20 21 22 23 24 Следующая »
Urho3DФорумЗАДАВАЙТЕ ВОПРОСЫ

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