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

[OGL+GLSL] SSAO (2 стр)

Страницы: 1 2 3 Следующая »
#15
11:43, 21 июля 2008

RaZOR
>в чем может быть проблема? к MRT прицеплена текстура gl_depth_component, в нее
>глубина пишется вроде нормально ( во всяком случае можно разглядеть едва
>заметные силуэты)

нечего не понял.


void main(void)
{
  vec3 nn = normalize(n);

  gl_FragData[0] = vec4(1.0, 1.0, 1.0, 1.0);
  gl_FragData[1] = p;
  gl_FragData[2] = vec4( nn, z);
}


пишешь в  gl_FragData[2] = vec4( nn, z);
что у тебя attach к RT2 ?

#16
11:45, 21 июля 2008

RaZOR

извини, тут на работе запарка :) чуть позже

#17
11:50, 21 июля 2008

innuendo
RT0 - цвет
RT1 - позиция
RT2 - нормаль (в альфе - глубина)

и еще дополнительно есть текстура gl_depth_component, которая прицеплена к мрт как gl_depth_attachment. Вот так
glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_TEXTURE_RECTANGLE_ARB, depthMap, 0);

#18
12:10, 21 июля 2008

RaZOR
vec4 sample2d = sample3d * matProj; 

замени на 

vec4 sample2d = gl_ProjectionMatrix * sample3d; 

тогда worldPos - это eyePos ( точка в пространстве камеры )

#19
12:16, 21 июля 2008

RaZOR
float DecodeZ( float depth ) {

  return( zNear / zFar - depth* ( zFar - zNear ) ) * zFar;

}

восстановление глубины по depth

#20
12:17, 21 июля 2008

innuendo

>замени на
>vec4 sample2d = gl_ProjectionMatrix * sample3d;
зачем? на втором проходе в gl_ProjectionMatrix лежит матрица ортогональной проекции (там же рисуется ScreenQuad).
я думал надо умножать на проекционную матрицу камеры, откуда делали рендер сцены, или я неправ?

#21
12:23, 21 июля 2008

RaZOR
>innuendo
>>замени на
>>vec4 sample2d = gl_ProjectionMatrix * sample3d;
>зачем? на втором проходе в gl_ProjectionMatrix лежит матрица ортогональной
>проекции (там же рисуется ScreenQuad).
>я думал надо умножать на проекционную матрицу камеры, откуда делали рендер
>сцены, или я неправ?

да, точно.  :)
если подозрения на матрицу проекции  - передай её как textureMatrix

#22
12:30, 21 июля 2008

сейчас такую фишку обнаружил : если заменить sample2d = sample2d * 0.5; на sample2d = sample2d * 0.25; то тогда получаеться нормальная проекция о__О. Может это потому, что экран не квадратный и надо учитывать размеры clipspace ?

#23
12:38, 21 июля 2008

RaZOR
>Если проекция правильная, то может быть я не правильно передаю матрицу в шейдер?? делаю так glUniformMatrix4fv(uni_matProj, 1, false, pr);

покопался в своих исходниках - у меня стоит GL_TRUE там где у тебя false :)

попробуй "вынуть" projMatrix и передать как textureMatrix - тогда точно будешь знат что дело не в проекции :)

#24
12:53, 21 июля 2008

> покопался в своих исходниках - у меня стоит GL_TRUE там где у тебя false :)
из спеков: void UniformMatrix{234}{f}v( int location, sizei count, boolean transpose, const float *value );
а зачем нам транспонировать проекционную матрицу? :)

#25
12:55, 21 июля 2008

RaZOR
>> покопался в своих исходниках - у меня стоит GL_TRUE там где у тебя false :)
>из спеков: void UniformMatrix{234}{f}v( int location, sizei count, boolean
>transpose, const float *value );
>а зачем нам транспонировать проекционную матрицу? :)

:) это у меня матрицы передаются транспонированными
передай через textureMatrix

#26
13:02, 21 июля 2008

innuendo
передал через textureMatrix, картинка такая же: рисуется по середине в полэкрана и растягиваеться по сторонам

#27
13:07, 21 июля 2008

RaZOR
>innuendo
>передал через textureMatrix, картинка такая же: рисуется по середине в
>полэкрана и растягиваеться по сторонам
скрин выложи

#28
13:14, 21 июля 2008
ssao | [OGL+GLSL] SSAO

ЗЫ: Под чайником должен быть квад :)

#29
13:18, 21 июля 2008

RaZOR
типа normalMap :)

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

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