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

[РЕШЕНО]Верно ли то, что в Urho SDK нет ни одного примера с шейдерами? (2 стр)

Страницы: 1 2
#15
(Правка: 15:21) 15:20, 5 дек 2021

xlat-code
> Анимация процедурной текстуры на поверхности модели Plane.
могу отдать свой вариант

Запустить видео по клику - Как делать игрыЗапустить видео по клику - Как делать игры


> 1. Сам шейдер(нужен будет только пиксельный) взять отсюда https://www.shadertoy.com
есть
> 2. В Урхе в рендерпас добавить пас P.
лишнее
> 3. В технику Т добавить пас P.
лишнее
> 4. В общий шейдер добавить дефайн для паса P.
лишнее
> 5. В материал добавить технику Т.
угу
>6. В апдейт-ивенте в материал не забыть передать текущее время(float).
угу

Итог: 1, 5, 6 только нужны

#16
(Правка: 15:37) 15:29, 5 дек 2021

Salamandr
> могу отдать свой вариант
ок,
давайте код, я переделаю на AS + какой-нить шейдер с шадертоя.

будет здорово если код такой же по объёму малый, как оно на ролике.

xlat-code
> Например, элементарная задача
я поверял shadertoy.com шейдеры на SFML,
чтобы адаптировать там у меня ушло всего 5 минут на разобраться,
блин, это было просто бомба, ибо я даже так и неожидал.
удивительно то, что они отлично работают на моём тестовом ноуте 2011 года с ogl 2.1

Salamandr
> > 4. В общий шейдер добавить дефайн для паса P.
> лишнее
а чтобы управлять на вкл\выкл нужно добавлять параметр bool в материал?

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

ок, короче, ушёл читать Ёж'а и смотреть ссылки ...

#17
(Правка: 15:59) 15:54, 5 дек 2021

HLSL

в Diffuse идёт смешанная текстура, 1 канал (шум) основная, 2ой канал маска
то есть текстура в R-канале, G-для маски, B-свободный (RGB)

cMatDiffColor представляет Materials\M_MyParticle.xml

+ Показать

Techiques\T_MyParticleEffect.xml

+ Показать


перед VS и PS

#ifdef COMPILEPS
    uniform float cTime;
    uniform float cZoom;
#endif

в VS ничего не меняем
в PS

#ifdef DIFFMAP
        float2 coord1 = float2( (iTexCoord.x - cTime) * cZoom, (iTexCoord.y - cTime) * cZoom);
        float2 coord2 = float2( (iTexCoord.x + cTime) * cZoom, (iTexCoord.y - cTime) * cZoom);
        float4 color1 = Sample2D(DiffMap, coord1);
        float4 color2 = Sample2D(DiffMap, coord2);
        float4 diffMask = Sample2D(DiffMap, iTexCoord);
        //float4 diffInput = float4(color1.r, color1.r, color1.r, color1.r * color2.r);
        float rgb = (color1.r*color2.r)-(diffMask.g*2);
        float4 diffInput = cMatDiffColor * rgb;
        //diffInput.a = diffInput.r - diffMask.g;
        #ifdef ALPHAMASK
            if (diffInput.a < 0.5)
                discard;
        #endif
        float4 diffColor = diffInput;
    #else
        float4 diffColor = cMatDiffColor;
    #endif


текстура Textures\voronoi.png
Voronoi+mask | [РЕШЕНО]Верно ли то, что в Urho SDK нет ни одного примера с шейдерами?

в приложении Create где нить

Node box = Scene.CreateChild("Box");
            box.Position = new Vector3(0,3,0);
            box.SetScale(1);
            var boxModel = box.CreateChild("Model").CreateComponent<StaticModel>();
            boxModel.SetModel(cache.GetResource<Model>("Models/Box.mdl"));
            boxMaterial = cache.GetResource<Material>("Materials/M_MyParticle.xml");
            boxModel.SetMaterial(boxMaterial);

в методе Update:

if (timer < 4f)
            {
                timer += deltaTime/10f;
                boxMaterial.SetShaderParameter("Time", timer);
            }
            else
            {
                timer = 0f;
            }

float timer ..

если где то заблудишься то пиши, а это полные файлы (я так то всё описал, кроме исходника шейдера, вот он там)
rbfx vfx

#18
(Правка: 16:15) 16:15, 5 дек 2021

Salamandr
> HLSL
интересно на андроиде они работают?
я так понимаю, раз Урха это кросс, то надо юзать ОГЛ с GLSL,
или, неужто, разницы нет?

#19
(Правка: 16:23) 16:21, 5 дек 2021

xlat-code
> ОГЛ с GLSL
скорее всего, но думаю переделать проще всего именно с рабочего и готового варианта.
нет опыта с Android на Urho3d, так, только демки запускал.

Не знаю как дела сейчас в Urho3D, а в её форке rbfx, теперь есть универсальные шейдеры именно на GLSL. То есть пишешь в v2, а он его транслирует куда надо (хоть в HLSL, хоть в GLSL)

#20
16:47, 5 дек 2021

Salamandr
> rbfx vfx
архив приятно выглядит: с чистым содержанием - внутри ничего лишнего)

#21
(Правка: 0:07) 0:07, 6 дек 2021

ёж
Salamandr
большое спасибо, ваша помощь не оценима)

по урхошейдерам лёд тронулся,
> Анимация процедурной текстуры на поверхности модели Plane:

Запустить видео по клику - Как делать игрыЗапустить видео по клику - Как делать игры

с шадертоя я взял ранее написанный свой шейдер:
https://www.shadertoy.com/view/7sy3zW
но пойдёт любой.

я так напряжённо думал, как сделать демку с МИНИМУМ УСИЛИЙ, что аж вспотел)))

Работает даже с такими вводными:

<material>
    <technique name="Salamandr/Techniques/ttest.xml"/>
    <texture   name="Salamandr/Textures/123.dds"/>
</material>

<technique vs="LitParticle_my" ps="LitParticle_my" psdefines="DIFFMAP">
    <pass name="litbase"    psdefines="MYTESTPASS" />
</technique>

В файл LitParticle_my.glsl добавил сам код шейдера обрамлённый MYTESTPASS
#22
(Правка: 19:56) 19:55, 6 дек 2021

любопытно.. кажется я увидел тот самый недостающий пазл. попробую как появится возможность.

Страницы: 1 2
Urho3DФорумЗАДАВАЙТЕ ВОПРОСЫ