Pixel Shaders

Работа с 2D и 3D графикой, видео, звуком.

Модератор: Mikle

ne_tapka
Обычный пользователь
Обычный пользователь
 
Сообщения: 56
Зарегистрирован: 13.04.2005 (Ср) 23:03

Pixel Shaders

Сообщение ne_tapka » 13.04.2005 (Ср) 23:08

Люди, кто нить знает где почитать о сабже? на русском лучше, но впринципе и англ пойдёт...или может кто расскажет вкратце? ;)

И ещё вопрос: можно ли иРендер совмещать с обычным ДиректИкс? ну например bump mapping добавить..

Заранее спасибо!

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 13.04.2005 (Ср) 23:45

ne_tapka, в DXSDK можно почитать и посмотреть примеры. В общем ничего сложного. Шейдеры - это обыкновенные скрипты, кодом схожые с ассемблером, или с Си, если это HLSL на девятом иксе. Смысл работы таков: скрипт загружается и обрабатывается программой DX после чего возвращает handle этого шейдера. Затем этот шейдер включается иксом. Шейдер может изменять цвета точки в зависимости от компонент вертекса, к которому они применяются. Также в шейдерах можно использовать константы, которые можно изменять из кода программы.

iRender не допускает возможности совмещения с DX, чтобы не усложнять работу с ним. Bump mapping будет вскоре добавлен в него.
ХЎ

ne_tapka
Обычный пользователь
Обычный пользователь
 
Сообщения: 56
Зарегистрирован: 13.04.2005 (Ср) 23:03

Сообщение ne_tapka » 13.04.2005 (Ср) 23:54

d3drm

ок, ща полезу на microsoft.com :)

и то что бамп мэпинг добавят - очень кстати.. надеюсь добавят не только его..

Странно, да? Шейдеры держит,а такую ерунду как бамп мэппинг - нет...

И ещё вопрос: в характеристиках иРендера сказано что он анимацию поддреживает.. а в sdk ни слова.. как проиграть анимированный х файл?

Yurich
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 675
Зарегистрирован: 05.03.2003 (Ср) 3:43
Откуда: DONBASS/Gorlovka

Сообщение Yurich » 14.04.2005 (Чт) 0:14

ne_tapka писал(а):ок, ща полезу на microsoft.com :)

По мойму это выше крыши!!!
ne_tapka писал(а):и то что бамп мэпинг добавят - очень кстати.. надеюсь добавят не только его..Странно, да? Шейдеры держит,а такую ерунду как бамп мэппинг - нет...

Об этом щас и говорим
ne_tapka писал(а):И ещё вопрос: в характеристиках иРендера сказано что он анимацию поддреживает.. а в sdk ни слова.. как проиграть анимированный х файл?

Надо Вам? Приглашаем сюда:
http://bbs.vbstreets.ru/viewtopic.php?t=10186
- Какой треугольник не подвластен законам геометрии?
- У которого все углы тупые!

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 14.04.2005 (Чт) 0:17

Ну если уважаемый Юрич не будет возражать, то было бы приятно позаимствовать его код =)
ХЎ

ne_tapka
Обычный пользователь
Обычный пользователь
 
Сообщения: 56
Зарегистрирован: 13.04.2005 (Ср) 23:03

Сообщение ne_tapka » 14.04.2005 (Чт) 1:20

Yurich

В той ветке проблема с "костяной" анимауией..а мне бы попроще - кэйфреймовую.. кейфреймовую анимацию в иРендере

Я почему о ней заговорил - собрался воду сделать.. а вода, в отличае от неба например, в иРендере страшненькая :( Сделал в максе анимированную плоскость, в Х её.. а она стоит разумеется..=(

и ещё, как в иРендере с зеркалами? Кроме ХромЭффект ничего нет?

Кстати, d3drm - создатель iRender, я правильно понял?:) куча респектов! %)

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 14.04.2005 (Чт) 1:23

ne_tapka, благодарю!

Итак, на счет х, то если Yurich сорцами для движка поделится, то добавлю в скором времени. С зеркалами пока туго, хотя могу в следующую версию включить плоские зеркала... Cube map тоже собираюсь добавить, но пока не совсем разобрался с ним...
ХЎ

ne_tapka
Обычный пользователь
Обычный пользователь
 
Сообщения: 56
Зарегистрирован: 13.04.2005 (Ср) 23:03

Сообщение ne_tapka » 14.04.2005 (Чт) 1:42

d3drm

было бы здорово (я про зеркала), как и бампмэпинг =)

а какие ещё нововведения ожидаются? и приблизительно когда?:)

Yurich
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 675
Зарегистрирован: 05.03.2003 (Ср) 3:43
Откуда: DONBASS/Gorlovka

Сообщение Yurich » 14.04.2005 (Чт) 11:11

d3drm писал(а):ne_tapka, благодарю!

Итак, на счет х, то если Yurich сорцами для движка поделится, то добавлю в скором времени.

Мои сорцы поддерживают кости формально, то есть не на чем детально проверить - НЕТ моделей. А насчет добавки к IR - НЕТ проблем!
- Какой треугольник не подвластен законам геометрии?
- У которого все углы тупые!

ne_tapka
Обычный пользователь
Обычный пользователь
 
Сообщения: 56
Зарегистрирован: 13.04.2005 (Ср) 23:03

Сообщение ne_tapka » 14.04.2005 (Чт) 12:15

У меня, бестолкового, ещё вопросы :) (по iRender)

1) На одну модельку (iR_FileX) может быть натянута только одна текстура??

2) Particles всегда развёрнуты "лицом ко мне" ?

3) Есть ли возможность узнать координаты трёхмерного объекта на 2d экране, то есть перевести координаты мира в координаты экрана? Ооочень нужно

4) Могут ли спрайты (interface.renderSprite) быть под моделями? Или они всегда поверх?

5) при создании текстур, если использовать прозрачность, то прозрачный цвет - чёрный. Как быть если нужна текстура с прозрачностью и с чёрными местами?

6) в СДК в примере с шейдерами используется вот такой скрипт
def c0, 1, 1, 1, 1
tex t0 ; color map
tex t1 ; normal map
dp3 r1, t1_bx2, v0_bx2 ; dot(normal,light)
mul r1, r1, c0
mul r0,t0, r1 ; modulate against base color
что тут происходит? Скачал DX SDK но пример с шейдерами у меня не запускается (видюха держит 2.0 точно) а в хелпе непонятно ничего.. :shock:

Спасибо!

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 14.04.2005 (Чт) 13:37

ne_tapka
Исправь в коде device_REF на HAL - запустится. Или переустанови SDK, и на вопрос установки режима отладки нажми Ok. Заработает device_REF.

ne_tapka
Обычный пользователь
Обычный пользователь
 
Сообщения: 56
Зарегистрирован: 13.04.2005 (Ср) 23:03

Сообщение ne_tapka » 14.04.2005 (Чт) 14:10

Mikle

пасиб, прокатило.. только пример выводит восемь квадратиков разноцветных.. вобщем, не то чтобы я что понял что нибудь про шейдеры :-/

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 14.04.2005 (Чт) 14:41

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

ne_tapka
Обычный пользователь
Обычный пользователь
 
Сообщения: 56
Зарегистрирован: 13.04.2005 (Ср) 23:03

Сообщение ne_tapka » 14.04.2005 (Чт) 15:33

Mikle

у тебя в примере шейдер:

ps.1.1
tex t0
tex t1
tex t2
dp3_sat r1,t0_bx2,t1_bx2
mul r1,r1,t2
mul_x4 r0,r1,c0

если не трудно - прокоментируй каждую строчку? (Первая понятна :) )

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 14.04.2005 (Чт) 16:18

ps.1.1 ' версия шейдера
tex t0 ' объявление текстуры 0
tex t1 ' объявление текстуры 1
tex t2 ' объявление текстуры 2
dp3_sat r1,t0_bx2,t1_bx2 ' вычисление Dot3 для t1 и t2, результат в r1
mul r1,r1,t2 ' Умножение r1 на t2, результат в r1
mul_x4 r0,r1,c0 ' Умножение r1 на c0, результат, умноженный на 4, в r0

ne_tapka
Обычный пользователь
Обычный пользователь
 
Сообщения: 56
Зарегистрирован: 13.04.2005 (Ср) 23:03

Сообщение ne_tapka » 14.04.2005 (Чт) 17:03

Mikle

спасибо!! уже понятней, но..

t0 t1 и t2 - искходные текстуры? они есть в проекте? Вроде для бампмэпинга одна - текстура поверхности, вторая - карта по которой изображение выдавливается.. почему на входе их три, а не две?

что такое с0 ?

И на выходе я так понял мы имеем r0? то есть тукстуру с бампмэппингом?

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 14.04.2005 (Чт) 17:19

Третья текстура генерируется, там же в модуле Bump есть код. C0 - константа, в примере заменяет цвет материала.

ne_tapka
Обычный пользователь
Обычный пользователь
 
Сообщения: 56
Зарегистрирован: 13.04.2005 (Ср) 23:03

Сообщение ne_tapka » 14.04.2005 (Чт) 17:28

Mikle
ок, буду ковырять.. спасибо ещё раз

ne_tapka
Обычный пользователь
Обычный пользователь
 
Сообщения: 56
Зарегистрирован: 13.04.2005 (Ср) 23:03

Сообщение ne_tapka » 15.04.2005 (Пт) 1:39

ой...неужели iR_FileX нельзя сделать прозрачным? :(

ne_tapka
Обычный пользователь
Обычный пользователь
 
Сообщения: 56
Зарегистрирован: 13.04.2005 (Ср) 23:03

Сообщение ne_tapka » 15.04.2005 (Пт) 2:46

И ещё вопрос лично d3drm

как работает метод Control.Mouse_RotateCamera ? цель камеры задаётся LookAt, а вот после Control.Mouse_RotateCamera точку куда направлена камера получить нельзя, можно получить лишь направление GetDirection... как при использовании Mouse_RotateCamera узнать куда камера LookAt?

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 15.04.2005 (Пт) 21:31

ne_tapka, наверно сейчас не смогу тебе ответить на этот вопрос ввиду сильной интоксикации алк... организма в общем. Завтра отпишу =)
ХЎ

ne_tapka
Обычный пользователь
Обычный пользователь
 
Сообщения: 56
Зарегистрирован: 13.04.2005 (Ср) 23:03

Сообщение ne_tapka » 15.04.2005 (Пт) 21:44

d3drm %)

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 16.04.2005 (Сб) 9:37

d3drm
iRender не допускает возможности совмещения с DX, чтобы не усложнять работу с ним. Bump mapping будет вскоре добавлен в него.

А чем это усложнит работу? Ведь никто не будет заставлять пользоваться DX. Помню как-то разбирал один пример на iRender, хотел сделать нормальную физику. И наткнулся на недостаток математических ф-ций. Точно не помню, кажется Vec3Add был, а Vec3Sub не было. Не проблема, я бы воспользовался D3DXVec3Subtract, но он работает с типом D3DVECTOR, а в iRender iR_Vector или как-то так. Опять же, не проблема, я, конечно, мог дописать ф-цию:
function vec3(v as iR_Vector)as D3DVECTOR
vec3.x=v.x
vec3.y=v.y
vec3.z=v.z
end function
Но это уже как-то через ж... и я забросил. :cry:
То есть я не понимаю, зачем транслировать D3DX ф-ции в iR - ф-ции? Это только лишняя писанина и тормоза. А кому станет проще от того, что вместо D3DXVec3Subtract теперь мы пишем iR_Vec3Subtract ?
Движек хороший, интересный, но, мне кажется, от излишков нужно избавиться, лучше сосредаточиться на том, чего в DX нет.

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 16.04.2005 (Сб) 10:26

Mikle, в какой-то степени ты прав, но я изначально хотел сделать движок, который позволял бы писать 3D приложения без знаний DX вообще. Когда я только начал заниматься 3D и смотрел некоторые движки (DX я тогда не знал), меня немного напрягало, что для того, чтобы писать с этими движками надо и DX знать... Поэтому и сделал все типы своими. На счет мат. функций, я писал все мат. функции (которых правда не очень много) сам, то есть в движке в этих функциях DX не используется, так что тормозов лишних не может быть - что использовать сложение (вычитание, умножение и т.д.) из DX, что из iR - скорость получается одна и та же.
ХЎ

Yurich
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 675
Зарегистрирован: 05.03.2003 (Ср) 3:43
Откуда: DONBASS/Gorlovka

Сообщение Yurich » 16.04.2005 (Сб) 11:24

d3drm писал(а):...тормозов лишних не может быть - что использовать сложение (вычитание, умножение и т.д.) из DX, что из iR - скорость получается одна и та же.

Точнее тормозов не должно быть! В некоторых случаях у меня получалось, что ДХ срабатывал даже медленне.
- Какой треугольник не подвластен законам геометрии?
- У которого все углы тупые!

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 17.04.2005 (Вс) 9:00

ne_tapka, итак, про Mouse_RotateCamera. Работа данного метода заключается в получении сдвига мыши с прошлой проверки и в зависимости от этого поворота камеры. lookAt работает немного по другой системе, он просто задает точку, на которую камере следует смотреть и включает режим LookAt, когда вызывается Mouse_RotateCamera этот режим отключается и камера поворачивается с учетом прошлого поворота а не того, который был задан в SetLookAt.
ХЎ

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 17.04.2005 (Вс) 10:15

d3drm
изначально хотел сделать движок, который позволял бы писать 3D приложения без знаний DX вообще.

Это понятно. Просто я предлагал заменить ТИПЫ данных на совместимые с DX, ведь это не наложит требований на знание DX. Просто в своем SDK заменишь название типов, и все. Но если кто-то вдруг захочет применить DX, он это сможет. Так же, как написание программ на СИ или Дельфи не требует знаний ассемблера, но программист МОЖЕТ пользоваться асм-вставками ПРИ ЖЕЛАНИИ.
Yurich
В некоторых случаях у меня получалось, что ДХ срабатывал даже медленне.

Медленнее, чем код iRender, вызываемый из activeX-dll, или чем свой, скомпиленный в native-code?

ne_tapka
Обычный пользователь
Обычный пользователь
 
Сообщения: 56
Зарегистрирован: 13.04.2005 (Ср) 23:03

Сообщение ne_tapka » 17.04.2005 (Вс) 11:53

d3drm
то есть после метода Mouse_RotateCamera точку, куда смотрит камера уже не получишь? Печально.. Такая мысль: мы знаем точку где находится камера, знаем направление куда она смотрит.. можно вычеслить вектор, перпендикулярный этому, проходящий через точку с нужным объектом.. а потом найти точку пересечения этих векторов. Правда, я уже не помню матан настолько чтоб это осуществить :))

А есть ли способ перевести трёхмерные координаты мира в двухмерные координаты на экране?

Yurich
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 675
Зарегистрирован: 05.03.2003 (Ср) 3:43
Откуда: DONBASS/Gorlovka

Сообщение Yurich » 17.04.2005 (Вс) 13:35

Mikle писал(а):
В некоторых случаях у меня получалось, что ДХ срабатывал даже медленне.

Медленнее, чем код iRender, вызываемый из activeX-dll, или чем свой, скомпиленный в native-code?

Свой. Я замерял максимальный фпс программы при прочих равных условиях. Но эти случаи не стабильны от запуска к запуску.
- Какой треугольник не подвластен законам геометрии?
- У которого все углы тупые!

Yurich
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 675
Зарегистрирован: 05.03.2003 (Ср) 3:43
Откуда: DONBASS/Gorlovka

Сообщение Yurich » 17.04.2005 (Вс) 13:47

ne_tapka писал(а):А есть ли способ перевести трёхмерные координаты мира в двухмерные координаты на экране?

В дх есть, но iR должен возвращать устройство чтоб такую возможность использовать.
- Какой треугольник не подвластен законам геометрии?
- У которого все углы тупые!

След.

Вернуться в Мультимедиа

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

    TopList