Голосование

Как вы относитесь к играм в жанре "симулятор колонии"?












Оформление



Пользователей
Сейчас на форуме
Пользователи: 4
Гостей: 597
Всего: 601

0 Пользователей и 1 Гость просматривают эту тему.

Тема: Шейдеры - HLSL  (Прочитано 42881 раз)

  • Сообщений: 2740
  • За создание крупных модов и других особо сложных проектов
    • Просмотр профиля
0
« : 20 Декабря, 2011, 12:38 »
Здравствуйте. Короче решил проконсультироваться (а вдруг есть те кто уже хоть немного разбирается.  =/).
Короче вопрос таков. Вот к примеру я добавляю нужный мне код с операциями как и Vertex shader  так и Pixel Shader.

float4x4 World;
float4x4 View;
float4x4 Projection;
float4x4 WorldInverseTranspose;
 
float4 TintColor = float4(1, 1, 1, 1);
float3 CameraPosition;
...
........................
Ну и так далее.

В конце естественно я добавляю technique.
technique reflection
{
    pass P0
    {
        VertexShader = compile vs_2_0 VertexShaderFunction();
        PixelShader = compile ps_2_0 PixelShaderFunction();
    }
}

Компиляция проходит успешно, но если я его не за декларирую то его естественно в опене не найдёт. Декларация должна проходить теоретически так:
DEFINE_TECHNIQUES(reflection, VertexShaderFunction, PixelShaderFunction)
Но при этом кидает Ошибки...


Может я что то пропустил или забыл? Код вроде как правильный я проверял.  =/

  • Ник в M&B: DRZ_Mark7
  • Фракция: Вегиры
  • Сообщений: 2740
  • За создание крупных модов и других особо сложных проектов
    • Просмотр профиля
0
« Ответ #1 : 21 Декабря, 2011, 18:18 »
Проблема решена! :)
 Тема пусть останется для тех кто интересуется шейдерами...

  • Ник в M&B: DRZ_Mark7
  • Фракция: Вегиры
  • Сообщений: 506
    • Просмотр профиля
0
« Ответ #2 : 16 Января, 2012, 20:59 »
Очевидно ты единственный продвинутый на наших широтах, мог бы поделиться опытом) В ролике с флагом меня смутил коммент автора относительно того что ничего стороннего не использовалось, что сбило с толку. Фишка с вертексными шейдерами мега крута, хотя наверное несёт последствия в виде доп.нагрузки на мибовский движок. Жду мода с "живой" травой или чем-то вроде, дабы глянуть как это в реале сказывается на производительности. В перспективе хочу капнуть тему глубже, но пока нет времени ограничился сбором информации по теме:

Общая информация

Тематические топики на forums.taleworlds.com:

[Tutorial]Basics of Materials for artists

Информативный пост mtarni о добавлении нового шейдера и т.п.

Руководства по созданию шейдеров:
Effects and HLSL Tutorials
Fur Effects - Teddys, Cats, Hair (шейдеры для волос, меха и т.п.)
Shader Tutorial - Make Your Own (MnB)

ЗЫ

Новые шейдеры создаются путём редактирования имеющихся в ресурсах. Исходники можно скачать с оффсайта по ссылке в посте mtarni. Очевидно что вертексные шейдеры на directx 7 работать не будут (не уверен в актуальности, но всё же). Посредством шейдеров можно сделать траву, флаги, узоры на поверхностях и т.д.

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

  • Сообщений: 2740
  • За создание крупных модов и других особо сложных проектов
    • Просмотр профиля
0
« Ответ #3 : 17 Января, 2012, 15:35 »
Spak, Насчёт шейдеров из ОИМ, кода я не видел но скорее всего они добавляют их как отдельные шейдеры но на базе уже созданных, а потом просто в БРФ обозначают объекты которые будет их использовать в том числе и растительность. Хотя без просмотра кода ничего нельзя сказать.
Насчёт нагрузки движка, это 100 пудов но не известно на сколько.

Хорошо что ты заинтересовался вопросом :) (теперь есть хоть ктото на ВК)
Полезная инфа ту что ты скинул.
Но нужно быть осторожным при создание шейдеров, ни все шейдеры HLSL совместимы с мибом.
Например, один из путей создания шейдеров для миба. Нам нужно брать уже сушествующие. Например:

VS_OUTPUT_FONT_X vs_main_no_shadow(float4 vPosition : POSITION, float3 vNormal : NORMAL, float2 tc : TEXCOORD0, float4 vColor : COLOR0, float4 vLightColor : COLOR1)
{
VS_OUTPUT_FONT_X Out;

Out.Pos = mul(matWorldViewProj, vPosition);

float4 vWorldPos = (float4)mul(matWorld,vPosition);
float3 vWorldN = normalize(mul((float3x3)matWorld, vNormal)); //normal in world space
float3 P = mul(matWorldView, vPosition); //position in view space

Out.Tex0 = tc;

float4 diffuse_light = vAmbientColor + vLightColor;
diffuse_light += saturate(dot(vWorldN, -vSkyLightDir)) * vSkyLightColor;
diffuse_light += saturate(dot(vWorldN, -vSunDir)) * vSunColor;
Out.Color = (vMaterialColor * vColor * diffuse_light);

//apply fog
float d = length(P);

Out.Fog = get_fog_amount_new(d, vWorldPos.z);

return Out;
}

PS_OUTPUT ps_main_no_shadow(VS_OUTPUT_FONT_X In)
{
PS_OUTPUT Output;
float4 tex_col = tex2D(MeshTextureSampler, In.Tex0);
INPUT_TEX_GAMMA(tex_col.rgb);
Output.RGBColor =  In.Color * tex_col;
OUTPUT_GAMMA(Output.RGBColor.rgb);
return Output;
}
technique diffuse_no_shadow
{
pass P0
{
VertexShader = compile vs_2_0 vs_main_no_shadow();
PixelShader = compile ps_2_0 ps_main_no_shadow();
}
}

И заменять названия на свои. И на базе его писать уже что то своё.
Вы также  можете использовать CubicTextureSampler как образец текстуры материала, cubemap.
float4 cubeColor = texCUBE(CubicTextureSampler, direction);

Второй путь это просто изменять параметры уже существующих.

Короче позже я напишу как правильно внедрять шейдер в игру. :)
В данный момент меня интересует Parallax Mapping. Добавить я его смог но чтото он у меня криво работает.

  • Ник в M&B: DRZ_Mark7
  • Фракция: Вегиры
  • Сообщений: 2740
  • За создание крупных модов и других особо сложных проектов
    • Просмотр профиля
0
« Ответ #4 : 21 Января, 2012, 16:36 »
Вот получилось, создать паралакс для миба... Вот как в игре.  :)

« Последнее редактирование: 21 Января, 2012, 17:30 от Mark7 »
  • Ник в M&B: DRZ_Mark7
  • Фракция: Вегиры
  • Сообщений: 3008
  • За регистрацию на форуме не позже декабря 2011 года и не менее 3000 постов
    • Просмотр профиля
0
« Ответ #5 : 21 Января, 2012, 17:21 »
Я так понял, что последний скрин без параллакса, а предпоследний с ним (2 и 3 без, 1 с ним).  Да?   

  • Сообщений: 2740
  • За создание крупных модов и других особо сложных проектов
    • Просмотр профиля
0
« Ответ #6 : 21 Января, 2012, 17:28 »
Первых четыре с параллаксом, просто на втором его не сильно заметно. =/
 А последний без.

  • Ник в M&B: DRZ_Mark7
  • Фракция: Вегиры
  • Сообщений: 2878
    • Просмотр профиля
0
« Ответ #7 : 21 Января, 2012, 18:05 »
http://forum.boolean.name/showthread.php?t=8564&page=4 - тут люди вроде как сделали учебник по шейдерам для начинающих. ссылка на этой странице.

Мечтаю о RPG, в которой смогу отыграть роль мага-дровосека, промышляющего разбоем.

Запомни, воин: если руки у тебя растут из жопы, имеет смысл повернуться к врагу спиной!

А вы никогда не задумывались, что вся херня в нашем мире происходит в том числе и потому, что живые перестали бояться мёртвых?
  • Сообщений: 2740
  • За создание крупных модов и других особо сложных проектов
    • Просмотр профиля
0
« Ответ #8 : 21 Января, 2012, 18:50 »
http://forum.boolean.name/showthread.php?t=8564&page=4 - тут люди вроде как сделали учебник по шейдерам для начинающих. ссылка на этой странице.


Это движок Xors3D, мм вроде как он на С++ пишется а не на HLSL. =/
 

Добавлено: 21 Января, 2012, 19:52

Увеличил эффект в двойне так что выпуклость увеличилась. А то мне показалось что маловато. =/

http://youtu.be/mjkpbBilgN8

« Последнее редактирование: 21 Января, 2012, 19:52 от Mark7 »
  • Ник в M&B: DRZ_Mark7
  • Фракция: Вегиры
  • Сообщений: 2878
    • Просмотр профиля
0
« Ответ #9 : 22 Января, 2012, 14:17 »
Это движок Xors3D, мм вроде как он на С++ пишется а не на HLSL.

с десятой страницы учебника:
Цитировать (выделенное)
Xors3D использует HLSL в качестве языка шейдеров. Выражаясь более точно –
используется  надстройка  над  стандартными  шейдерами,  позволяющая  создавать
файлы эффектов, комбинирующих множество вершинных и пиксельных шейдеров,
и  предоставляющих  на основе  них  ряд техник, с  которыми  может  быть  отрисован
объект. Так в одном файле может быть реализован bump-mapping для всех видов ис-
точников  света (направленных,  прожекторных,  точечных),  и  переключатся  в  игре
всего одним вызовом.
Дальше я не глядел... Тут сказано, что надстройка, но всё равно должны даваться примеры самостоятельного написания... Наверно =/

Мечтаю о RPG, в которой смогу отыграть роль мага-дровосека, промышляющего разбоем.

Запомни, воин: если руки у тебя растут из жопы, имеет смысл повернуться к врагу спиной!

А вы никогда не задумывались, что вся херня в нашем мире происходит в том числе и потому, что живые перестали бояться мёртвых?
  • Сообщений: 2740
  • За создание крупных модов и других особо сложных проектов
    • Просмотр профиля
0
« Ответ #10 : 22 Января, 2012, 14:30 »
Мм интересно, посмотрю что за чудо такое. Спасибо Ункловн. :)

  • Ник в M&B: DRZ_Mark7
  • Фракция: Вегиры
  • Сообщений: 2766
  • За создание крупных модов и других особо сложных проектов За регистрацию на форуме не позже декабря 2016 года и не менее 2500 постов Выдается модераторам, достигнувшим значимых успехов на своем посту
    • Просмотр профиля
0
« Ответ #11 : 01 Августа, 2012, 19:54 »
Сделал шейдер
при компиляции:

Microsoft (R) Direct3D Shader Compiler 9.27.952.3012
Copyright (C) Microsoft Corporation 2002-2009. All rights reserved.

F:\Module_Shaders\mb.fx(5429,11): error X4510: maximum ps_2_0 sampler register i
ndex (16) exceeded
F:\Module_Shaders\mb.fx(5541,23): ID3DXEffectCompiler::CompileEffect: There was
an error compiling expression
ID3DXEffectCompiler: Compilation failed

compilation failed; no code produced
Microsoft (R) Direct3D Shader Compiler 9.27.952.3012
Copyright (C) Microsoft Corporation 2002-2009. All rights reserved.

F:\Module_Shaders\mb.fx(5429,11): error X4510: maximum ps_2_0 sampler register i
ndex (16) exceeded
F:\Module_Shaders\mb.fx(5541,23): ID3DXEffectCompiler::CompileEffect: There was
an error compiling expression
ID3DXEffectCompiler: Compilation failed

compilation failed; no code produced
Script processing has ended.
Press any key to exit. . .

В чем и где ошибка и как её исправить??? :cry: :cry: :cry: :cry: :cry: :cry:

1 + 2 + 3 + 4 + ... = ζ(-1) = -0.08(3)
1 - 1 + 1 - 1 + 1 - ... = 0.5
1 - 2 + 3 - 4 + 5 - ... = 0.25

На вопросы в ПС не отвечаю! Спрашивать в темах!
  • Сообщений: 2740
  • За создание крупных модов и других особо сложных проектов
    • Просмотр профиля
0
« Ответ #12 : 09 Августа, 2012, 18:17 »
Janycz, просто копировать шейдеры из инета не пойдёт, в мнб используеться своя спецыфика которую ты должен вычислять смотря на уже созданные шейдеры... ;)

  • Ник в M&B: DRZ_Mark7
  • Фракция: Вегиры
  • Сообщений: 2740
  • За создание крупных модов и других особо сложных проектов
    • Просмотр профиля
0
« Ответ #13 : 15 Августа, 2012, 13:04 »
Баловался с водой, пока что не вышло то чего я ожидал но работаю над этим...  =/


  • Ник в M&B: DRZ_Mark7
  • Фракция: Вегиры
  • Сообщений: 7578
  • За наиболее важные для развития сайта идеи За особо выдающиеся авторские тексты За регистрацию на форуме не позже декабря 2011 года и не менее 3000 постов И создали они сайт... Призер конкурса Футболка по версии Всадников
    • Просмотр профиля
+1
« Ответ #14 : 27 Ноября, 2012, 09:39 »
Немного полезной инфы с TW:
 
'Ctrl+F' still reloads mb.fx and postfx.fx. I've been using it in the newest version.
Nice work, mate.
As I've told you, Rendermonkey is probably easier to translate from. Keep us informed about how it goes!


Yeah being the eediot I am I thought cg and hlsl were two different shader languages, turns out they are syntactically identical, (have avoided so many cg tutorials/resources lol).

Those links you sent me helped, namely this one, http://www.catalinzima.com/tutorials/crash-course-in-hlsl/
But I actually found nvidias cg tutorial  here http://http.developer.nvidia.com/CgTutorial/cg_tutorial_chapter02.html
And Cg Toolkit's manual downloadable here (mostly for explanation of syntax) super helpful https://developer.nvidia.com/cg-toolkit-download

Oh, and I gotta ask, is it normal that it takes about 1-2 minutes for the shaders to compile? running decent comp here x3370@3ghz
I made a modified hlsl language style for Notepad++ if anyone is interested
It should be pretty self-explanatory,
as I tried to add a specific style to each group of syntax, like all intrinsic HLSL and math functions show up in red
functions defined outside the shader show up in dark green
Anything with out. or in. prefix is light blue
samplers show up orange

linky https://www.dropbox.com/s/jxn9otv53jzkl3b/Warband_hlsl.xml

Also another resource explaining Coordinate Transforms http://www.yaldex.com/open-gl/ch01lev1sec9.html
И вообще в этой теме есть что почерпнуть по ним
А это ещё одно подсветка для синтаксиса

[вложение удалено Администратором]

[вложение удалено Администратором]

[вложение удалено Администратором]

Моя конфигурация:
Нормальная, мне хватает.
  • Сообщений: 2740
  • За создание крупных модов и других особо сложных проектов
    • Просмотр профиля
0
« Ответ #15 : 26 Апреля, 2013, 19:15 »
Мои первые попытки в создании HD воду...  :)

CWE - HD Water Bump + Water Shader (Test v.2)


Пока что присутствуют проблемы с отражением...

  • Ник в M&B: DRZ_Mark7
  • Фракция: Вегиры
  • Сообщений: 2766
  • За создание крупных модов и других особо сложных проектов За регистрацию на форуме не позже декабря 2016 года и не менее 2500 постов Выдается модераторам, достигнувшим значимых успехов на своем посту
    • Просмотр профиля
0
« Ответ #16 : 27 Апреля, 2013, 19:45 »
Janycz, в мнб используеться своя спецыфика

А в чем заключается данная специфика????  :-\

1 + 2 + 3 + 4 + ... = ζ(-1) = -0.08(3)
1 - 1 + 1 - 1 + 1 - ... = 0.5
1 - 2 + 3 - 4 + 5 - ... = 0.25

На вопросы в ПС не отвечаю! Спрашивать в темах!
  • Сообщений: 2740
  • За создание крупных модов и других особо сложных проектов
    • Просмотр профиля
0
« Ответ #17 : 27 Апреля, 2013, 20:53 »
Janycz, в мнб используеться своя спецыфика

А в чем заключается данная специфика????  :-\



В структуре. Если хотите разбираться то должны делать это сами на словах я мало что смогу вам объяснить... :)

  • Ник в M&B: DRZ_Mark7
  • Фракция: Вегиры
  • Сообщений: 2766
  • За создание крупных модов и других особо сложных проектов За регистрацию на форуме не позже декабря 2016 года и не менее 2500 постов Выдается модераторам, достигнувшим значимых успехов на своем посту
    • Просмотр профиля
0
« Ответ #18 : 28 Апреля, 2013, 21:27 »
Вот полазил по варбанду и нашел какието непонятные шейдеры :-\, ассемблерного вида :D  (bump_shader.pp, myshader.pp, faceshader.pp)

Пример (bump_shader.pp)
ps.1.1

tex t0
dp3 r1.rgb, t0, v0
tex t1
mul r0.rgb, t1, r1
mov r0.a, v0.a

Вопрос возник: что это за шейдеры и как их писать???

1 + 2 + 3 + 4 + ... = ζ(-1) = -0.08(3)
1 - 1 + 1 - 1 + 1 - ... = 0.5
1 - 2 + 3 - 4 + 5 - ... = 0.25

На вопросы в ПС не отвечаю! Спрашивать в темах!
  • Сообщений: 2740
  • За создание крупных модов и других особо сложных проектов
    • Просмотр профиля
0
« Ответ #19 : 28 Апреля, 2013, 23:48 »
Janycz, это шейдеры в отдельных файлах которые не нужно компилировать присутствующих в мибе я пока не разбирался как их писать. =/

  • Ник в M&B: DRZ_Mark7
  • Фракция: Вегиры
  • Сообщений: 2562
  • За регистрацию на форуме не позже декабря 2016 года и не менее 2500 постов
    • Просмотр профиля
    • Портфолио
0
« Ответ #20 : 29 Апреля, 2013, 10:37 »
Это для 7 директса кажись....

  • Сообщений: 7578
  • За наиболее важные для развития сайта идеи За особо выдающиеся авторские тексты За регистрацию на форуме не позже декабря 2011 года и не менее 3000 постов И создали они сайт... Призер конкурса Футболка по версии Всадников
    • Просмотр профиля
0
« Ответ #21 : 29 Апреля, 2013, 10:56 »
Это пиксельные шейдеры версии 1.1 для старых версий директа и видюх, по моему отвечают за весь бамп(когда на 7 ке), отвечает за все фейсы отвечают за, последний режим зеркальности, походу отражение (мой шейдер собственный сделанный шейдер\режим)

Моя конфигурация:
Нормальная, мне хватает.
  • Сообщений: 2766
  • За создание крупных модов и других особо сложных проектов За регистрацию на форуме не позже декабря 2016 года и не менее 2500 постов Выдается модераторам, достигнувшим значимых успехов на своем посту
    • Просмотр профиля
0
« Ответ #22 : 29 Апреля, 2013, 20:23 »
Я полазил в интернете и вот что нашел:

  1) Эти шейдеры написаны на AGAL
  2) Наверное, они фрагментные

1 + 2 + 3 + 4 + ... = ζ(-1) = -0.08(3)
1 - 1 + 1 - 1 + 1 - ... = 0.5
1 - 2 + 3 - 4 + 5 - ... = 0.25

На вопросы в ПС не отвечаю! Спрашивать в темах!
  • Сообщений: 2740
  • За создание крупных модов и других особо сложных проектов
    • Просмотр профиля
+2
« Ответ #23 : 18 Июня, 2013, 20:11 »
Вот моя последняя работа.
Усилитель резкости: добавляет резкость всем 3д моделям и 2д текстурам. А также световая коррекция.


CWE - Power Field Shader

  • Ник в M&B: DRZ_Mark7
  • Фракция: Вегиры
  • Сообщений: 749
    • Просмотр профиля
0
« Ответ #24 : 21 Июня, 2013, 14:49 »
Возник такой вопрос: возможно ли написание шейдеров для миба версии выше 2.0?

По теме: очень хорошая статья, обязательна к прочтению для начинающих - http://www.gotdotnet.ru/blogs/gsaf/6523/

« Последнее редактирование: 21 Июня, 2013, 20:44 от ValerBOSS »
  • Ник в M&B: ValerBOSS

СиЧЪ Total War СиЧЪ Total War
Сайт "Всадники Кальрадии" не является СМИ. Администрация не несет ответственность за высказывания и публикацию каких-либо материалов, сделанные любыми пользователями форума, в том числе посредством личных и публичных сообщений. Материалы, размещенные на ресурсе третьими лицами, могут содержать информацию, не предназначенную для лиц, не достигнувших совершеннолетия. При обнаружении на ресурсе материалов, нарушающих законодательство Российской Федерации, необходимо обращаться к администрации.
Сайт работает на быстром VPS/VDS хостинге от FASTVPS


Powered by SMF 2.0 | SMF © Simple Machines LLC