![]() |
|
Модераторы: Rickert |
![]()
|
|
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 7 Всего: 232 |
Может, ему именно такой DX нужен, какой установлен у меня... Или SDK надо всё-таки поставить...
-------------------- ![]() |
|||
|
||||
| empter |
|
|||
![]() Фанат ![]() Профиль Группа: Участник Сообщений: 224 Регистрация: 20.5.2005 Репутация: 1 Всего: 4 |
У меня SDK стоит и точно такая же проблема, то есть dll он находит а на цветовой режим все равно ругается Змий Можно использовать плагин к Фотошопу Посмотри в поисковике NVidia DDS Plugin to Photoshop |
|||
|
||||
| Змий |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 6.12.2005 Репутация: нет Всего: нет |
empter спасибо, попробую.
mr.DUDA, не могли бы вы сказать, по каким принципам строятся distortion текстуры? Это примерно как с бамп картами или тут необходима какая то другая техника? |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 7 Всего: 232 |
Всё зависит от того, как планируешь их использовать. У меня всё руки не дойдут дописать статью, там всё будет Если искажающая текстура - статичная (пример: неровное стекло), достаточно 2D-текстуры, если динамичная - нужно делать многослойную aka 3D-текстуру. Многослойная отличается тем, что в ней имеется 2^N двумерных текстур одного размера, каждой присвоен номер. Обычное количество - от 2 до 16. В шейдер такая текстура попадает через обыкновенный сэмплер. Выборка пиксела происходит так: передаём в tex3D трёхмерный вектор, в котором x и y - обычные координаты в 2D, z - идентифицирует слой. Координата z изменяется от 0 до 1; если z "не попадает" точно в один из слоёв, то берутся 2 слоя "до" и "после" z, и смешиваются в зависимости от "расстояния" до воображаемого слоя z. Искажение на основе такой текстуры производится следующим образом: пиксельный шейдер получает реальные текстурные координаты, и вместо того чтобы взять по ним пиксел из "обычной" текстуры, берёт пиксел из искажающей текстуры. Полученный пиксел рассматривается как смещение от реальных текстурных координат. Есть несколько способов закодировать смещение в искажающей текстуре, самый простой и очевидный - брать r и g компоненту искажающей текстуры как смещение. Получив смещение, шейдер прибавляет его к реальным текстурным координатам и выбирает точку из "обычной" текстуры. Вроде бы всё понятно. Теперь по технике собственно создания искажающей текстуры. Самый простой способ - создать монохромную текстуру, в которой яркость пиксела определяет смещение (искажение). Например, если сделать концентрические окружности, залитые плавным градиентом от центра к краям, то получим простой статичный эффект волны. Если теперь сделать несколько слоёв, в каждом последующем смещая все окружности от центра к краям текстуры, и "слепить" 3D-текстуру из таких слоёв, получим анимированный эффект волны. Шейдер может использовать переменную "время" как переключатель между слоями (время должно изменяться плавно от 0 до 1 и далее). Если наложить такой эффект на весь экран в определённой точке, получится что-то подобное "Матрице". -------------------- ![]() |
|||
|
||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: нет Всего: 317 |
Какого размера должна быть такая текстура для всего экрана? Просто представляю что это 1024х768 байт (монохромная 0-255) искажающая текстура с 9 слоями это 6Мб, среднее видео 128Мб, уже забито сценой... Что то меня на экономию пробило, сейчас работаю над проектом, где памайти всег в 512кб, а задача строить динамические вебстраницы на многопоточном http сервере, да ещё в своём скриптовом языке -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| mr.DUDA |
|
||||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 7 Всего: 232 |
Дело в том, что "текстура для всего экрана" и так создаётся автоматически для любого 3D-приложения - в неё всё рендерится, затем её содержимое выводится в буфер экрана. Для 1024x768x32bit получается 3Мб. Искажающая текстура не обязана быть с таким же разрешением, т.к. сэмплеру всё равно с какой текстурой он работает - текстурные координаты всегда от 0 до 1, пофигу какая текстура, хоть 1х1.
-------------------- ![]() |
||||
|
|||||
| Змий |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 6.12.2005 Репутация: нет Всего: нет |
Спасибо.
А анимированной эту текстуру сделать можно? Чтобы волны ещё и расходились. PS С новым годом! |
|||
|
||||
| mr.DUDA |
|
||||||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 7 Всего: 232 |
Можно, см. моё сообщение выше:
Спасибо, тебя также! Успехов, здоровья и счастья в новом году! -------------------- ![]() |
||||||
|
|||||||
| Змий |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 6.12.2005 Репутация: нет Всего: нет |
Извиняюсь, не прочитал
Слои строятся по принципу каналов или необходима Dxtexture или плюгин dds? |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 7 Всего: 232 |
Насколько мне известно, dds и только dds. Принцип такой: в одном файле хранится несколько битмапов одного размера, пронумерованных от нуля до 2^N, т.е. количество битмапов равно целой степени двойки. Ну а в шейдере вводится понятие "слой", подразумевающее работу уже не с набором отдельных битмапов, а как бы с непрерывным "слоёным пирогом", в котором номер слоя - произвольное число от 0 до 1 включительно. Выбирая, к примеру, слой 0.125 из 3D-текстуры с четырьмя битмапами, мы получим "срез" ровно посередине между нулевым и первым битмапом - плавный, интерполированный переходной слой. -------------------- ![]() |
|||
|
||||
| Ch0bits |
|
|||
![]() Python Dev. ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2124 Регистрация: 21.2.2005 Где: Казань Репутация: 2 Всего: 62 |
Вот интересная, наглядно показывающая возможности шейдеров статейка
http://www.thg.ru/graphic/20060114/index.html |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 7 Всего: 232 |
Большинство комментариев в статье сводится к "свет более яркий в шейдерах 3.0" или "стена выглядит интереснее в шейдерах 2.1". Самые интересные скрины взяты из B&W2 и Age of Empires 2, но нет никаких комментариев, почему именно волны отображаются с пеной от прибоя в 3.0, а в 2.0 - нет; и почему отражения на волнах более реалистичны. Мотивация к покупке более новой видеокарты в этой статье не раскрыта -------------------- ![]() |
|||
|
||||
| Lеstat |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 76 Регистрация: 28.12.2005 Где: Москва Репутация: нет Всего: нет |
вот у меня еще вопрос есть!
Хочу сделать освещение из фонарика... Я думаю в шейдер нужно передать координаты фонаря и точку в которую он светит. Ну или вектор куда он светит, так что возник вопрос как грамотно передать в шейдер информацию о положении фонаря? потом я еще передаю угол на который светит фонарь (по аналогии с камерами - FOV)... Дальше я думаю нужно спроектировать на поверхность на которую падает свет круг такой от фонаря и там где у нас поверхность попадает в проекцию сделать цвет белым, там где нет ничего не менять. Никак не могу врубиться в математику... не могу получить проекцию я так понимаю получать проекцию нужно в вершинном шейдере, а раскрашивать это уже в пиксельном. PS: огромное спасибо за статью!! очень помогла врубиться в основы написания шейдеров! Это сообщение отредактировал(а) Lеstat - 30.12.2006, 11:37 |
|||
|
||||
![]()
|
| Правила форума "Программирование игр, графики и искуственного интеллекта" | |
|
|
НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание что новые темы касающиеся новых вопросов создаются кнопкой "Новая тема" а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих тематических темах будут удалены а их авторы, при рецедиве, забанены.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rickert. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Программирование игр, графики и искусственного интеллекта | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |