|
Xors3D Графический движок с поддержкой DirectX9 |
10.08.2012, 22:32
|
#1
|
Разработчик
Регистрация: 20.02.2010
Сообщений: 397
Написано 173 полезных сообщений (для 565 пользователей)
|
Шейдеры освещение
Изучаю шейдеры, сделал пять источников освещение,только камнями не бросать
Ссылка: http://rghost.ru/39704766
Последний раз редактировалось FREE MAN, 21.12.2019 в 14:49.
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо FREE MAN за это полезное сообщение:
|
|
10.08.2012, 23:09
|
#2
|
Бывалый
Регистрация: 06.04.2009
Сообщений: 612
Написано 276 полезных сообщений (для 858 пользователей)
|
Ответ: Шейдеры освещение
...
Color+=cD*nLight0*LightClr0*LightInt0+cD*nLight1*LightClr1*LightInt1+cD*nLight2*LightClr2*LightInt2+cD*nLight3*LightClr3*LightInt3+cD*nLight4*LightClr4*LightInt4-AmbientClr;
...
Жестоко :D
|
(Offline)
|
|
10.08.2012, 23:23
|
#3
|
Разработчик
Регистрация: 20.02.2010
Сообщений: 397
Написано 173 полезных сообщений (для 565 пользователей)
|
Ответ: Шейдеры освещение
Сообщение от Mhyhr
...
Color+=cD*nLight0*LightClr0*LightInt0+cD*nLight1*LightClr1*LightInt1+cD*nLight2*LightClr2*LightInt2+cD*nLight3*LightClr3*LightInt3+cD*nLight4*LightClr4*LightInt4-AmbientClr;
...
Жестоко :D
|
У тебя есть другие предложения, как это реализовать?
Жаль, что в Ксорсе не да делали Deferred render, да и вообще убрали из функционала, пока знаний мало что бы такое реализовывать.
|
(Offline)
|
|
10.08.2012, 23:42
|
#4
|
Мастер
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений (для 1,836 пользователей)
|
Ответ: Шейдеры освещение
Сообщение от Phyton
У тебя есть другие предложения, как это реализовать?
Жаль, что в Ксорсе не да делали Deferred render, да и вообще убрали из функционала, пока знаний мало что бы такое реализовывать.
|
Можно же массивом передавать, а потом в цикле внутри шейдера посчитать. И тогда можно одним и тем же шейдером иметь хоть один хоть десять источников света.
BBDECL void BBCALL xSetEffectFloatArray ( Entity * entity,
const char * name,
float * value,
int count,
int layer = -1
)
Sets a floating array constant for entity shaders.
Parameters:
entity Entity handle
name Constant name
value Pointer to floating array
count Number of elements in array
layer Index of the effect layer in range [0; 7]. If -1 is passed - active layer will be used (see xSetShaderLayer())
|
и т.д.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
11.08.2012, 00:05
|
#5
|
Разработчик
Регистрация: 20.02.2010
Сообщений: 397
Написано 173 полезных сообщений (для 565 пользователей)
|
Ответ: Шейдеры освещение
Сообщение от dsd
Можно же массивом передавать, а потом в цикле внутри шейдера посчитать. И тогда можно одним и тем же шейдером иметь хоть один хоть десять источников света.
и т.д.
|
Ты сам пробовал так реализовывать? А если допустим с бампом, такой метод покатит?
|
(Offline)
|
|
11.08.2012, 00:18
|
#6
|
Мастер
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений (для 1,836 пользователей)
|
Ответ: Шейдеры освещение
Сообщение от Phyton
Ты сам пробовал так реализовывать? А если допустим с бампом, такой метод покатит?
|
Сам не пробовал, но помоему это пофигу.
Я бы сделал отдельно функцию которая бы считала в текущей точке сумму цвет_света*интенсивность_света_в_этой_точке. И вставлял бы её везде.
Бамп же просто отклоняет нормаль, за счет чего и создается впечатление рельефа. Количество света не должно же изменится из-за этого в той точке.
А тот бамп который во много слоев рендрит полигон для почти натурального рельефа тоже пофигу, так как один хрен он смещает плоскость полигона, а значит и точка для которой посчитается количество света тоже будет в нужном месте.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
12.08.2012, 20:44
|
#7
|
Разработчик
Регистрация: 20.02.2010
Сообщений: 397
Написано 173 полезных сообщений (для 565 пользователей)
|
Ответ: Шейдеры освещение
экспериментирую...
Последний раз редактировалось FREE MAN, 21.12.2019 в 14:49.
|
(Offline)
|
|
Эти 3 пользователя(ей) сказали Спасибо FREE MAN за это полезное сообщение:
|
|
13.08.2012, 02:44
|
#8
|
Разработчик
Регистрация: 20.02.2010
Сообщений: 397
Написано 173 полезных сообщений (для 565 пользователей)
|
Ответ: Шейдеры освещение
Продолжение эксперимента, мене это уже нравится!
еще бы полностью разобраться с массивами и можно будет без проблем использовать куча света...
Последний раз редактировалось FREE MAN, 21.12.2019 в 14:49.
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо FREE MAN за это полезное сообщение:
|
|
13.08.2012, 14:34
|
#9
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Шейдеры освещение
Сообщение от Phyton
и можно будет без проблем использовать куча света...
|
Как бэ шейдеры не резиновые) точнее резиновые но не на столько)
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
13.08.2012, 14:48
|
#10
|
Дэвелопер
Регистрация: 24.07.2008
Сообщений: 1,544
Написано 1,095 полезных сообщений (для 2,706 пользователей)
|
Ответ: Шейдеры освещение
Сообщение от Phyton
Продолжение эксперимента, мене это уже нравится!
еще бы полностью разобраться с массивами и можно будет без проблем использовать куча света...
|
А ты не мог бы поделиться нормал-мапом с последнего скриншота? Заранее спасибо
|
(Offline)
|
|
13.08.2012, 15:00
|
#11
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: Шейдеры освещение
Прикольно, только да, шейдеры не резиновые. И "динамичные" циклы - очень дорогое удовольствие в шейдерах.
Деферред не такой и сложный на самом деле, главное понять фишку.
Реализовать его можно не затрудняясь сильно, ты главное попробуй.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
13.08.2012, 16:30
|
#12
|
Мастер
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений (для 1,836 пользователей)
|
Ответ: Шейдеры освещение
Сообщение от MoKa
только да, шейдеры не резиновые. И "динамичные" циклы - очень дорогое удовольствие в шейдерах.
|
Но ведь можно же сжульничать
Сделать текстуру в которой пятнами будет рисоваться интенсивность света на его цвет уже посчитанная. Причем судя по моим экспериментам с axelynx текстура может быть очень подробной. В смысле большой. Потом в вертексном шейдере читать по мировым координатам количество света для этой точки. И цикл исчезает. Или еще лучше не очень подробную, но 3д текстуру. В общем есть на мой взгляд способы повышения резиновости шейдеров.
|
(Offline)
|
|
13.08.2012, 16:54
|
#13
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Шейдеры освещение
И прощай динамическое освещение, разве что только дополнительные источники для него пилить. Но лайтмэпы это круто да)
|
(Offline)
|
|
13.08.2012, 16:59
|
#14
|
Мастер
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений (для 1,836 пользователей)
|
Ответ: Шейдеры освещение
Сообщение от pax
И прощай динамическое освещение, разве что только дополнительные источники для него пилить. Но лайтмэпы это круто да)
|
Да нет же. В том то и дело что можно обновлять в прямом эфире, несколько раз в секунду, потратив на это несколько миллисекунд времени из всей секунды. А для прям таких близких 3-4 источников можно уже в пиксельном все подробно считать.
|
(Offline)
|
|
13.08.2012, 17:08
|
#15
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Шейдеры освещение
т.е. использовать второй или третий uv канал на огромную текстуру с освещеним?
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 19:06.
|