Войти
ПрограммированиеФорумГрафика

Реализация карт теней с использованием GLSL шейдеров (комментарии) (3 стр)

Страницы: 1 2 3 4 516 Следующая »
#30
19:13, 3 фев. 2009

MNAndrew
>  Intel встроеный в буке 3100 вроде.. 10й директикс держит, т.е. должны быть третьи шэйдеры.

Интел только недавно реализовала ГЛСЛ и то не уверен, что на должном уровне...


#31
1:04, 4 фев. 2009

Хорошо, что кто-то еще пишет статьи. А то, последнее время, совсем голяк - спасибо :)

#32
17:42, 4 фев. 2009

Почему бы не делать это в шейдере? Или так быстрее?

float mvLightPos[3];
  mvLightPos[0] = cameraModelViewMatrix[0] * lightPos[0] + cameraModelViewMatrix[4] * lightPos[1] + cameraModelViewMatrix[8] * lightPos[2] + cameraModelViewMatrix[12];
  mvLightPos[1] = cameraModelViewMatrix[1] * lightPos[0] + cameraModelViewMatrix[5] * lightPos[1] + cameraModelViewMatrix[9] * lightPos[2] + cameraModelViewMatrix[13];
  mvLightPos[2] = cameraModelViewMatrix[2] * lightPos[0] + cameraModelViewMatrix[6] * lightPos[1] + cameraModelViewMatrix[10] * lightPos[2] + cameraModelViewMatrix[14];
  glUniform3fARB(uniformShadow_lightPos, mvLightPos[0], mvLightPos[1], mvLightPos[2]);
[.code]

#33
18:19, 4 фев. 2009

GraphiX
>Почему бы не делать это в шейдере? Или так быстрее?

В шейдер придётся передавать дополнительно матрицу вида эту, и расчёт будет проводится каждую вершину... В моём случае один раз на всю сцену...

#34
20:54, 4 фев. 2009

Executor
а если матрици будут менятся от модели к модели, то каждый раз када рисуем модель мы будем пересчитывать и запихивать в шейдер?
это будет лучше чем в шейдере считать?

#35
21:13, 4 фев. 2009

Bokl
Источник света только одной матрицей переводится в свою систему координат.
Что там куда и кому надо пересчитывать - не понятно.

#36
21:15, 4 фев. 2009

SNVampyre
туплю)

#37
12:27, 5 фев. 2009

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

#38
23:44, 5 фев. 2009

Ещё 2 вопроса: 
1.
как правильно выбирать
gluPerspective(90.0, 1.0, 10.0, 30.0); ?

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

2
vec3 smcoord = lpos.xyz / lpos.w;

а если координаты выходят за пределы [0.0, 1.0] тогда там будет тоже тень?
тогда это нужно проверять в шейдере?
просто в статье вокруг темнота и рендер из источника охватывает всё световое пятно

P.S.:если туплю сильно не бейте)

#39
2:16, 6 фев. 2009

GraphiX
>Ещё 2 вопроса:
>1.
>как правильно выбирать
>gluPerspective(90.0, 1.0, 10.0, 30.0); ?
>Если поставить угол 45 то качество тени очень повысится, но тогда тень может не
>войти в кадр и потом будет обрезана.
Ты делаешь направленый источник? Если "omni", тогда надо рисовать в кубическую карту

#40
13:03, 6 фев. 2009

Если
gluPerspective(90.0, 1.0, 10.0, 300.0);
то тень такая http://www.gamedev.ru/images/?id=39113
если 
gluPerspective(45.0, 1.0, 10.0, 300.0);
то тень лучше http://www.gamedev.ru/images/?id=39114, но
получается что рендер из источника не охватывает весь кадр и появляется тёмная область
http://www.gamedev.ru/images/?id=39115

как выбирать угол чтоб тёмной области не было, но тень была макс. лучше

#41
13:13, 6 фев. 2009

Erion
>как выбирать угол чтоб тёмной области не было, но тень была макс. лучше
если большие пространства - используй CSM (cascaded), PSSM (parallel-split)

#42
13:28, 6 фев. 2009

пойду читать

#43
15:12, 6 фев. 2009

GraphiX
>1.
>как правильно выбирать
>gluPerspective(90.0, 1.0, 10.0, 30.0); ?
>Если поставить угол 45 то качество тени очень повысится, но тогда тень может не
>войти в кадр и потом будет обрезана.

Я думаю это зависит от самого источника света... Какой угол надо, такой и ставь...

>2
>vec3 smcoord = lpos.xyz / lpos.w;
>а если координаты выходят за пределы [0.0, 1.0] тогда там будет тоже тень?
>тогда это нужно проверять в шейдере?
>просто в статье вокруг темнота и рендер из источника охватывает всё световое пятно

Ну тут зависит от настроек клампинга текстуры, что будет за пределами...
Можешь например чтонить типа такого написать smcoord = clamp(smcoord, 0.0, 1.0);

#44
10:01, 14 фев. 2009

innuendo
>Не замерял где быстрее получается ? C depthTexture или  colorTexture ?

Вспомнил про NVShaderPerf...

NVShaderPerf : version 2.0, build date Jun 11 2008, 19:15:47
Copyright (C) 2002-2008, NVIDIA Corporation
=====================================================================
Performance analysis of shadow_tex2D.frag
Fragment Performance Setup: Driver 174.74, GPU G80, Flags 0x0
Results 45 cycles, 14 r regs, 3,366,400,051 pixels/s
=====================================================================
Performance analysis of shadow_shad2D.frag
Fragment Performance Setup: Driver 174.74, GPU G80, Flags 0x0
Results 41 cycles, 14 r regs, 3,512,319,946 pixels/s

Как видно, разница в скорости есть, но она вообщемто не слишком значительная... Но стоит не забывать, что в одном случае мы рендерим в колор, а в другом напрямую в глубину... Я думаю в глубину должно быть немного побыстрее, поэтому отрыв наверное будет в реальной сцене чуть выше, но ИМХО разницу заметить будет сложновато... Но ведь у нас может быть несколько выборок, поэтому разрыв будет уже заметнее...

Страницы: 1 2 3 4 516 Следующая »
ПрограммированиеФорумГрафика

Тема в архиве.