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

GPSM: Geometry Pitch Shadow Map (комментарии) (7 стр)

Страницы: 16 7 8 911 Следующая »
#90
18:52, 20 мая 2012

нет. а вобще ты на каком апи делаешь?
у меня:
matAll = objMat*matView*matProj;
matWorld = objMat;
matLight =light_matView*light_matProj;

я не пойму че за LightOrthoMatrix, и почему она участвует в matAll, т.к. matAll-это для рендера сцены.
при чем заметим что матрицы разные в разных шейдерах, так что не понятно это ты к какому шейдеру.

#91
19:36, 20 мая 2012

Не то написал:

matLight = LightViewProjMatrix = LightProjMatrix* LightViewMatrix
LightOrthoMatrix = LightProjMatrix

Делаю на openGL

#92
20:02, 20 мая 2012

LightOrthoMatrix должен участвовать в matAll при рендере глубины из источника света
но не должен участвовать в matAll для сцены. для этого туда сунется matLight и matWorld чтобы работать суто с текстурными координатами.

#93
20:27, 20 мая 2012

Кирюха
> Делаю на openGL
GLSL?

#94
20:37, 20 мая 2012

Аврелий
> GLSL?
Да

#95
13:16, 21 мая 2012

GLSL Example в студию =)

#96
23:35, 23 мая 2012

Или HLSL Example в конечном виде... Дабы адаптировать в GLSL корректно

#97
23:43, 23 мая 2012

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

#98
12:35, 24 мая 2012

Тогда ссылку на простейшие шмапы HLSL, к которым это хозяйство можно применить =) (с HLSL не дружил, но вроде бы есть разницы в представлении матриц)

#99
22:03, 24 мая 2012

google.com

#100
22:07, 24 мая 2012

Спс, глаза открыл, теперь всегда буду пользоваться этим сайтом =) (на самом деле хотелось видеть именно подобие твоего кода =)) ну да ладно...

#101
0:46, 25 мая 2012

Таки доделал  тени. Как оказалось ошибка была банальная.  За место smcd.x*=0.5; smcd.y=-smcd.y*0.5; надо было написать smcd.x=0.5+0.5;  smcd.y=smcd.y*0.5+0.5;
Вот код шейдеров если кому интересно:

Рендер шадоу мапы

#version 120
uniform mat4 viewprojMatrix;
uniform mat4 modelMatrix;
varying vec4 pos;

void main(void)
{
  pos = viewprojMatrix * modelMatrix * vec4(gl_Vertex.xyz, 1.0);

  pos.x=pos.x/(abs(pos.x)+1.0);
  pos.y=pos.y/(abs(pos.y)+1.0);
  
  gl_Position = pos;
}

#version 120
varying vec4 pos;

void main(void)
{
  gl_FragColor = vec4(pos.z*0.5+0.5);
}

Наложение теней

#version 120

uniform mat4 viewprojMatrix;
uniform mat4 modelMatrix;


varying vec3 smc;

void main(void)
{
  vec4 lpos = viewprojMatrix * modelMatrix * gl_Vertex;

  lpos.x=lpos.x/(abs(lpos.x)+1.0); 
  lpos.y=lpos.y/(abs(lpos.y)+1.0);
  
  smc.x  = lpos.x*0.5+0.5;
  smc.y  = lpos.y*0.5+0.5; 
  smc.z  = lpos.z*0.5+0.5 - 0.0001;    
    
  gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;  
}

#version 120

uniform sampler2D shadowMap;

varying vec3 smc;

void main (void)
{      
  float shadow = float( smc.z <= texture2D(shadowMap,smc.xy).x);
  
  gl_FragColor = vec4(vec3(1.0) * shadow , 1.0);
}
#102
0:48, 25 мая 2012

Кирюха
> smcd.x=0.5+0.5
извини, но это бред. уверен что с этим работает нормально?

#103
0:53, 25 мая 2012

Да, все отлично работает.

#104
1:53, 25 мая 2012

Кирюха
> smcd.x=0.5+0.5
Очепятка? В шейдере-то smc.x  = lpos.x*0.5+0.5;

Страницы: 16 7 8 911 Следующая »
ПрограммированиеФорумГрафика

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