forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Xors3D (http://forum.boolean.name/forumdisplay.php?f=126)
-   -   Шейдеры освещение (http://forum.boolean.name/showthread.php?t=17174)

FREE MAN 10.08.2012 22:32

Шейдеры освещение
 
Изучаю шейдеры, сделал пять источников освещение,только камнями не бросать :)
Ссылка: http://rghost.ru/39704766

Mhyhr 10.08.2012 23:09

Ответ: Шейдеры освещение
 
Код:

...
Color+=cD*nLight0*LightClr0*LightInt0+cD*nLight1*LightClr1*LightInt1+cD*nLight2*LightClr2*LightInt2+cD*nLight3*LightClr3*LightInt3+cD*nLight4*LightClr4*LightInt4-AmbientClr;
...

Жестоко :D

FREE MAN 10.08.2012 23:23

Ответ: Шейдеры освещение
 
Цитата:

Сообщение от Mhyhr (Сообщение 235970)
Код:

...
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, да и вообще убрали из функционала, пока знаний мало что бы такое реализовывать.

dsd 10.08.2012 23:42

Ответ: Шейдеры освещение
 
Цитата:

Сообщение от Phyton (Сообщение 235972)
У тебя есть другие предложения, как это реализовать?
Жаль, что в Ксорсе не да делали 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())
и т.д.

FREE MAN 11.08.2012 00:05

Ответ: Шейдеры освещение
 
Цитата:

Сообщение от dsd (Сообщение 235975)
Можно же массивом передавать, а потом в цикле внутри шейдера посчитать. И тогда можно одним и тем же шейдером иметь хоть один хоть десять источников света.
и т.д.

Ты сам пробовал так реализовывать? А если допустим с бампом, такой метод покатит?

dsd 11.08.2012 00:18

Ответ: Шейдеры освещение
 
Цитата:

Сообщение от Phyton (Сообщение 235979)
Ты сам пробовал так реализовывать? А если допустим с бампом, такой метод покатит?

Сам не пробовал, но помоему это пофигу.
Я бы сделал отдельно функцию которая бы считала в текущей точке сумму цвет_света*интенсивность_света_в_этой_точке. И вставлял бы её везде.
Бамп же просто отклоняет нормаль, за счет чего и создается впечатление рельефа. Количество света не должно же изменится из-за этого в той точке.
А тот бамп который во много слоев рендрит полигон для почти натурального рельефа тоже пофигу, так как один хрен он смещает плоскость полигона, а значит и точка для которой посчитается количество света тоже будет в нужном месте.

FREE MAN 12.08.2012 20:44

Ответ: Шейдеры освещение
 
экспериментирую...

FREE MAN 13.08.2012 02:44

Ответ: Шейдеры освещение
 
Продолжение эксперимента, мене это уже нравится! :cool:
еще бы полностью разобраться с массивами и можно будет без проблем использовать куча света...

pax 13.08.2012 14:34

Ответ: Шейдеры освещение
 
Цитата:

Сообщение от Phyton (Сообщение 236086)
и можно будет без проблем использовать куча света...

Как бэ шейдеры не резиновые) точнее резиновые но не на столько)

Amatsu 13.08.2012 14:48

Ответ: Шейдеры освещение
 
Цитата:

Сообщение от Phyton (Сообщение 236086)
Продолжение эксперимента, мене это уже нравится! :cool:
еще бы полностью разобраться с массивами и можно будет без проблем использовать куча света...

А ты не мог бы поделиться нормал-мапом с последнего скриншота? Заранее спасибо

moka 13.08.2012 15:00

Ответ: Шейдеры освещение
 
Прикольно, только да, шейдеры не резиновые. И "динамичные" циклы - очень дорогое удовольствие в шейдерах.
Деферред не такой и сложный на самом деле, главное понять фишку.
Реализовать его можно не затрудняясь сильно, ты главное попробуй.

dsd 13.08.2012 16:30

Ответ: Шейдеры освещение
 
Цитата:

Сообщение от MoKa (Сообщение 236119)
только да, шейдеры не резиновые. И "динамичные" циклы - очень дорогое удовольствие в шейдерах.

Но ведь можно же сжульничать :)
Сделать текстуру в которой пятнами будет рисоваться интенсивность света на его цвет уже посчитанная. Причем судя по моим экспериментам с axelynx текстура может быть очень подробной. В смысле большой. Потом в вертексном шейдере читать по мировым координатам количество света для этой точки. И цикл исчезает. Или еще лучше не очень подробную, но 3д текстуру. В общем есть на мой взгляд способы повышения резиновости шейдеров. :)

pax 13.08.2012 16:54

Ответ: Шейдеры освещение
 
И прощай динамическое освещение, разве что только дополнительные источники для него пилить. Но лайтмэпы это круто да)

dsd 13.08.2012 16:59

Ответ: Шейдеры освещение
 
Цитата:

Сообщение от pax (Сообщение 236130)
И прощай динамическое освещение, разве что только дополнительные источники для него пилить. Но лайтмэпы это круто да)

Да нет же. В том то и дело что можно обновлять в прямом эфире, несколько раз в секунду, потратив на это несколько миллисекунд времени из всей секунды. А для прям таких близких 3-4 источников можно уже в пиксельном все подробно считать.

pax 13.08.2012 17:08

Ответ: Шейдеры освещение
 
т.е. использовать второй или третий uv канал на огромную текстуру с освещеним?


Часовой пояс GMT +4, время: 10:52.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot