Расскажите о шейдерах
|
|
Нохчи | Дата: Четверг, 21 Июня 2012, 19:34 | Сообщение # 21 |
заслуженный участник
Сейчас нет на сайте
| Ни одного нормального ответа, ЛОЛ.
Многие вопросы по Windows отпадут, если посмотреть тут
|
|
| |
Figure09 | Дата: Четверг, 21 Июня 2012, 19:34 | Сообщение # 22 |
постоянный участник
Сейчас нет на сайте
| Quote (mobipak) Кстати, есть ещё и вычислительные шейдеры - основная фишка 11 директора.
Безумие сделает жизнь веселей.
|
|
| |
romgerman | Дата: Четверг, 21 Июня 2012, 19:53 | Сообщение # 23 |
старожил
Сейчас нет на сайте
| Нохчи, почему. Были нормальные ответы, хотя все говорили в общих чертах.
|
|
| |
Левша | Дата: Пятница, 22 Июня 2012, 14:24 | Сообщение # 24 |
почти ветеран
Сейчас нет на сайте
| Перевод оф. мануала по шейдерам на русский язык. Там еще по мультиплееру есть переводы.
X.cor.R (Prologue)
Сообщение отредактировал Левша - Пятница, 22 Июня 2012, 14:33 |
|
| |
karuy | Дата: Пятница, 22 Июня 2012, 14:50 | Сообщение # 25 |
заслуженный участник
Сейчас нет на сайте
| Quote (Нохчи) Ни одного нормального ответа, ЛОЛ. Наверное потому, что ни один из тех кто отвечал скорее всего не написал ни одного шейдера.
|
|
| |
iNikit | Дата: Пятница, 22 Июня 2012, 15:39 | Сообщение # 26 |
участник
Сейчас нет на сайте
| Педевикия: Quote Ше́йдер — это программа для одной из ступеней графического конвейера, используемая в трёхмерной графике для определения окончательных параметров объекта или изображения. Она может включать в себя произвольной сложности описание поглощения и рассеяния света, наложения текстуры, отражение и преломление, затенение, смещение поверхности и эффекты пост-обработки. Что не понятно? Всё что нужно читать я выделил.
Самый лучший юзер GCUP :3
|
|
| |
romgerman | Дата: Пятница, 22 Июня 2012, 16:19 | Сообщение # 27 |
старожил
Сейчас нет на сайте
| iNikit, кэээээээп. Уже википедию видели тыщу раз.
|
|
| |
iNikit | Дата: Пятница, 22 Июня 2012, 19:20 | Сообщение # 28 |
участник
Сейчас нет на сайте
| romgerman, Quote (romgerman) Уже википедию видели тыщу раз. Я етебе не отвечал на твой вопрос. Я задал тебе вопрос: Quote (iNikit) Что не понятно? Причём тут кэп?
Самый лучший юзер GCUP :3
|
|
| |
romgerman | Дата: Пятница, 22 Июня 2012, 19:24 | Сообщение # 29 |
старожил
Сейчас нет на сайте
| iNikit, мне всё уже объяснили, так что ничего. Эта тема уже давнишняя.
|
|
| |
NOVA | Дата: Понедельник, 02 Июля 2012, 06:46 | Сообщение # 30 |
почетный гость
Сейчас нет на сайте
| Quote (Нохчи) Ни одного нормального ответа, ЛОЛ. )))
Для получения более реалистичной картинки чем в doom 2 обычно используют шейдеры. Для изображения материалов на уровне, достойном 21 века на каждый объект как минимум нужны: diffuse map (colormap) - текстура цвета. Самая важная текстура. normal map - текстура псевдообъёма, активно используется в лоуполи ретопологии. Создаёт рельеф на поверхности треугольника (полигона) specular map - карта отражения (не отражения) света или cubemap. Используется для создания сколов и потёртостей краски на металле. В стандартных шейдерах обычно ставится на альфаканал диффузы. Cutout - обрезание ненужной части модели по альфаканалу. Transparent - прозрачность и полупрозрачность по альфаканалу. Очень хорошо выглядят загрязнённые стёкла. Reflective - нанесение отражения cubemap на текстуру. (псевдоотражение) Lightmapped - Карта освещения объекта во втором канале развёртки. В стандартных шейдерах бамп не глянцует
Сам пользую почти универсальный шейдер для металла. Содержащий диффузу, нормалмап + спекуляр по альфа каналу, + кубмапа + лайтмапа. С крутилками на каждое воздействие. Все шейдеры, написанные программистами без участия художников обычно чутьменее чем полностью сомнительны, разве что зеркала, их принцип действия прост как мир.
Сообщение отредактировал NOVA - Понедельник, 02 Июля 2012, 06:49 |
|
| |
Нохчи | Дата: Понедельник, 02 Июля 2012, 10:01 | Сообщение # 31 |
заслуженный участник
Сейчас нет на сайте
| NOVA, спасибо за интересный пост, про cutout не знал. Разве что не понятно зачем нужен художник при написании шейдеров, сейчас мучаю bump/parallax/parallax occlusion mapping, они написаны уже 100500 раз и там сейчас сплошная копипаста идет.
C пиксельными шейдерами закончили ^__^
Многие вопросы по Windows отпадут, если посмотреть тут
Сообщение отредактировал Нохчи - Понедельник, 02 Июля 2012, 10:16 |
|
| |
NOVA | Дата: Понедельник, 02 Июля 2012, 22:54 | Сообщение # 32 |
почетный гость
Сейчас нет на сайте
| Quote (Figure09) Жжош. про 2.5D текстуру особенно понравилось. Пиши еще Неведение благо))) Добро пожаловать в 3d engine. В частности можно почитать про normalmap и parallax map где нибудь на офсайте, гражданин висёлые кортинки).
Сообщение отредактировал NOVA - Понедельник, 02 Июля 2012, 23:16 |
|
| |
Figure09 | Дата: Понедельник, 02 Июля 2012, 23:22 | Сообщение # 33 |
постоянный участник
Сейчас нет на сайте
| NOVA, О! Ну разумеется. Вы просто открыли мне глаза, гражданин крутой шейдерописец)) Добавлено (02.07.2012, 23:22) ---------------------------------------------
Quote (NOVA) Все шейдеры, написанные программистами без участия художников обычно чутьменее чем полностью сомнительны lolwut?
Безумие сделает жизнь веселей.
|
|
| |
NOVA | Дата: Вторник, 03 Июля 2012, 00:15 | Сообщение # 34 |
почетный гость
Сейчас нет на сайте
| LolSuck)
|
|
| |
Figure09 | Дата: Вторник, 03 Июля 2012, 00:18 | Сообщение # 35 |
постоянный участник
Сейчас нет на сайте
| Конструктивно.
Безумие сделает жизнь веселей.
|
|
| |
Aikidos | Дата: Вторник, 03 Июля 2012, 01:39 | Сообщение # 36 |
постоянный участник
Сейчас нет на сайте
| Простой post process grayscale шейдер, написанный мной с целью изучения работы Cg шейдеров:
Вершинный шейдер: Code struct VS_OUTPUT { float4 VertexPosition : POSITION; float2 VertexTexCoord : TEXCOORD0; }; VS_OUTPUT main( float3 VertexPosition : POSITION, float2 VertexTexCoord : TEXCOORD0) { VS_OUTPUT Out; Out.VertexPosition = float4(VertexPosition, 1); Out.VertexTexCoord = VertexTexCoord; return Out; }
Фрагментный шейдер: Code struct VS_OUTPUT { float4 VertexPosition : POSITION; float2 VertexTexCoord : TEXCOORD0; }; struct FS_OUTPUT { float4 Color0 : COLOR0; }; FS_OUTPUT main( VS_OUTPUT In, uniform sampler2D TextureMap) { FS_OUTPUT Out; float4 CurrentColor = tex2D(TextureMap, In.VertexTexCoord); float MaxColor = max(max(CurrentColor.r, CurrentColor.g), CurrentColor.b); Out.Color0 = float4(MaxColor, MaxColor, MaxColor, 1); return Out; }
Шейдер - просто программа. Компилируется и исполняется видюхой. В том же Unity3D есть, что-то типа, плагина для собирания шейдеров без написания единой строчки кода. Название забыл. Обычно люди понатыкают там чего-нить и уже кричат что знают всё о шейдерах Не суть правда. Написание шейдера вручную мне кажется делом более симпатичным Добавлено (03.07.2012, 01:39) --------------------------------------------- Есть, кстати, 3 вида шейдеров: 1. Вершинный - исполняется для каждой вершины объекта; 2. Фрагментный - исполняется для каждого пикселя (не совсем так, но так проще понять ); 3. Геометрический - работает с геометрией объекта.
При помощи шейдеров можно сделать всё что угодно.
Post-Process эффекты делают, обычно, следующим образом: 1. Создают FSQ (full screen quad). Он представляет собой квадрат (в OGL может быть равен 0;0;1;1), который "заполоняет" весь видимый обзор камеры; 2. При помощи шейдера рисуют его. В сам шейдер передают что угодно (мой пример шейдера, как раз, может послужить примером);
Таким образом мы видим квадрат, на котором изображено изображение, которое нам нарисовал фрагментный шейдер...блин...думаю вы меня поняли, а то чет 2 часа ночи и я уже туго соображаю
Другие шейдеры работают точно так же, но они рисуют уже не на нашем "квадрате", а на самой модели. Там и освещение, и тени, и многое-многое другое.
Ты вышел в поле. Ты куришь гашиш. Ты видишь машину. Ты медведь. Ты горишь.
|
|
| |
Georgiy0912 | Дата: Среда, 04 Июля 2012, 13:59 | Сообщение # 37 |
почетный гость
Сейчас нет на сайте
| Вот тут все все все написано: http://unity3d.ru/distribution/viewtopic.php?f=96&t=1642 P.S Незачто
|
|
| |