Модераторы: Rickert

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ответы на вопросы по шейдерам, вдогонку статье 
:(
    Опции темы
mr.DUDA
Дата 11.12.2005, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 7
Всего: 232



Может, ему именно такой DX нужен, какой установлен у меня... Или SDK надо всё-таки поставить... smile


--------------------
user posted image
PM MAIL WWW   Вверх
empter
Дата 11.12.2005, 23:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фанат
*


Профиль
Группа: Участник
Сообщений: 224
Регистрация: 20.5.2005

Репутация: 1
Всего: 4



Цитата(mr @ 11.12.2005, 14:57)
Может, ему именно такой DX нужен, какой установлен у меня... Или SDK надо всё-таки поставить... smile

У меня SDK стоит и точно такая же проблема, то есть dll он находит а на цветовой режим все равно ругается smile
Змий
Можно использовать плагин к Фотошопу
Посмотри в поисковике NVidia DDS Plugin to Photoshop
PM MAIL MSN   Вверх
Змий
Дата 12.12.2005, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 6.12.2005

Репутация: нет
Всего: нет



empter спасибо, попробую. smile

mr.DUDA, не могли бы вы сказать, по каким принципам строятся distortion текстуры? Это примерно как с бамп картами или тут необходима какая то другая техника?
PM MAIL   Вверх
mr.DUDA
Дата 14.12.2005, 09:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 7
Всего: 232



Цитата
Это примерно как с бамп картами или тут необходима какая то другая техника?

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

Если искажающая текстура - статичная (пример: неровное стекло), достаточно 2D-текстуры, если динамичная - нужно делать многослойную aka 3D-текстуру. Многослойная отличается тем, что в ней имеется 2^N двумерных текстур одного размера, каждой присвоен номер. Обычное количество - от 2 до 16. В шейдер такая текстура попадает через обыкновенный сэмплер. Выборка пиксела происходит так: передаём в tex3D трёхмерный вектор, в котором x и y - обычные координаты в 2D, z - идентифицирует слой. Координата z изменяется от 0 до 1; если z "не попадает" точно в один из слоёв, то берутся 2 слоя "до" и "после" z, и смешиваются в зависимости от "расстояния" до воображаемого слоя z.

Искажение на основе такой текстуры производится следующим образом: пиксельный шейдер получает реальные текстурные координаты, и вместо того чтобы взять по ним пиксел из "обычной" текстуры, берёт пиксел из искажающей текстуры. Полученный пиксел рассматривается как смещение от реальных текстурных координат. Есть несколько способов закодировать смещение в искажающей текстуре, самый простой и очевидный - брать r и g компоненту искажающей текстуры как смещение. Получив смещение, шейдер прибавляет его к реальным текстурным координатам и выбирает точку из "обычной" текстуры. Вроде бы всё понятно.

Теперь по технике собственно создания искажающей текстуры. Самый простой способ - создать монохромную текстуру, в которой яркость пиксела определяет смещение (искажение). Например, если сделать концентрические окружности, залитые плавным градиентом от центра к краям, то получим простой статичный эффект волны. Если теперь сделать несколько слоёв, в каждом последующем смещая все окружности от центра к краям текстуры, и "слепить" 3D-текстуру из таких слоёв, получим анимированный эффект волны. Шейдер может использовать переменную "время" как переключатель между слоями (время должно изменяться плавно от 0 до 1 и далее). Если наложить такой эффект на весь экран в определённой точке, получится что-то подобное "Матрице".


--------------------
user posted image
PM MAIL WWW   Вверх
Sardar
Дата 14.12.2005, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: нет
Всего: 317



Цитата(mr @ 14.12.2005, 08:10)
Теперь по технике собственно создания искажающей текстуры. Самый простой способ - создать монохромную текстуру, в которой яркость пиксела определяет смещение (искажение)

Какого размера должна быть такая текстура для всего экрана? Просто представляю что это 1024х768 байт (монохромная 0-255) искажающая текстура с 9 слоями это 6Мб, среднее видео 128Мб, уже забито сценой...

Что то меня на экономию пробило, сейчас работаю над проектом, где памайти всег в 512кб, а задача строить динамические вебстраницы на многопоточном http сервере, да ещё в своём скриптовом языке smile


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
mr.DUDA
Дата 15.12.2005, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 7
Всего: 232



Цитата(Sardar @ 14.12.2005, 19:35)
Какого размера должна быть такая текстура для всего экрана? Просто представляю что это 1024х768 байт (монохромная 0-255) искажающая текстура с 9 слоями это 6Мб, среднее видео 128Мб, уже забито сценой...

Дело в том, что "текстура для всего экрана" и так создаётся автоматически для любого 3D-приложения - в неё всё рендерится, затем её содержимое выводится в буфер экрана. Для 1024x768x32bit получается 3Мб. Искажающая текстура не обязана быть с таким же разрешением, т.к. сэмплеру всё равно с какой текстурой он работает - текстурные координаты всегда от 0 до 1, пофигу какая текстура, хоть 1х1.

Цитата(Sardar @ 14.12.2005, 19:35)
Что то меня на экономию пробило, сейчас работаю над проектом, где памайти всег в 512кб, а задача строить динамические вебстраницы на многопоточном http сервере, да ещё в своём скриптовом языке 

smile


--------------------
user posted image
PM MAIL WWW   Вверх
Змий
Дата 31.12.2005, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 6.12.2005

Репутация: нет
Всего: нет



Спасибо.
А анимированной эту текстуру сделать можно? smile
Чтобы волны ещё и расходились. smile

PS С новым годом!
PM MAIL   Вверх
mr.DUDA
Дата 31.12.2005, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 7
Всего: 232



Цитата
А анимированной эту текстуру сделать можно? 
Чтобы волны ещё и расходились.

Можно, см. моё сообщение выше:

Цитата
Если теперь сделать несколько слоёв, в каждом последующем смещая все окружности от центра к краям текстуры, и "слепить" 3D-текстуру из таких слоёв, получим анимированный эффект волны.


Цитата
PS С новым годом!

Спасибо, тебя также! Успехов, здоровья и счастья в новом году!


--------------------
user posted image
PM MAIL WWW   Вверх
Змий
Дата 31.12.2005, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 6.12.2005

Репутация: нет
Всего: нет



Извиняюсь, не прочитал smile
Слои строятся по принципу каналов или необходима Dxtexture или плюгин dds? smile
PM MAIL   Вверх
mr.DUDA
Дата 31.12.2005, 22:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 7
Всего: 232



Цитата
Слои строятся по принципу каналов или необходима Dxtexture или плюгин dds?

Насколько мне известно, dds и только dds. Принцип такой: в одном файле хранится несколько битмапов одного размера, пронумерованных от нуля до 2^N, т.е. количество битмапов равно целой степени двойки. Ну а в шейдере вводится понятие "слой", подразумевающее работу уже не с набором отдельных битмапов, а как бы с непрерывным "слоёным пирогом", в котором номер слоя - произвольное число от 0 до 1 включительно. Выбирая, к примеру, слой 0.125 из 3D-текстуры с четырьмя битмапами, мы получим "срез" ровно посередине между нулевым и первым битмапом - плавный, интерполированный переходной слой.


--------------------
user posted image
PM MAIL WWW   Вверх
Ch0bits
Дата 14.1.2006, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Python Dev.
****


Профиль
Группа: Завсегдатай
Сообщений: 2124
Регистрация: 21.2.2005
Где: Казань

Репутация: 2
Всего: 62



Вот интересная, наглядно показывающая возможности шейдеров статейка
http://www.thg.ru/graphic/20060114/index.html
PM WWW   Вверх
mr.DUDA
Дата 14.1.2006, 23:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 7
Всего: 232



Цитата(Ch0bits @ 14.1.2006, 12:40 Найти цитируемый пост)
Вот интересная, наглядно показывающая возможности шейдеров статейка
http://www.thg.ru/graphic/20060114/index.html

Большинство комментариев в статье сводится к "свет более яркий в шейдерах 3.0" или "стена выглядит интереснее в шейдерах 2.1". Самые интересные скрины взяты из B&W2 и Age of Empires 2, но нет никаких комментариев, почему именно волны отображаются с пеной от прибоя в 3.0, а в 2.0 - нет; и почему отражения на волнах более реалистичны. Мотивация к покупке более новой видеокарты в этой статье не раскрыта smile.


--------------------
user posted image
PM MAIL WWW   Вверх
Lеstat
Дата 30.12.2006, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 28.12.2005
Где: Москва

Репутация: нет
Всего: нет



вот у меня еще вопрос есть!
Хочу сделать освещение из фонарика...
Я думаю в шейдер нужно передать координаты фонаря и точку в которую он светит. Ну или вектор куда он светит, так что возник вопрос как грамотно передать в шейдер информацию о положении фонаря?
потом я еще передаю угол на который светит фонарь (по аналогии с камерами - FOV)...
Дальше я думаю нужно спроектировать на поверхность на которую падает свет круг такой от фонаря и там где у нас поверхность попадает в проекцию сделать цвет белым, там где нет ничего не менять.
Никак не могу врубиться в математику... не могу получить проекцию
я так понимаю получать проекцию нужно в вершинном шейдере, а раскрашивать это уже в пиксельном.

PS: огромное спасибо за статью!! очень помогла врубиться в основы написания шейдеров!

Это сообщение отредактировал(а) Lеstat - 30.12.2006, 11:37
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование игр, графики и искуственного интеллекта"
Rickert

НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание что новые темы касающиеся новых вопросов создаются кнопкой "Новая тема" а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих тематических темах будут удалены а их авторы, при рецедиве, забанены.

  • Литературу, связанную с программированием графики, обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы связанные с программированием графики и мультимедии на языках С++ и Delphi
  • Вопросы по реализации алгоритмов рассматриваются здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование игр, графики и искусственного интеллекта | Следующая тема »


 




[ Время генерации скрипта: 0.0631 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.