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

PCF и CubeMap

#0
18:10, 15 авг 2009

Всем добрый вечер.

Собсно сабж. Как прикрутить PCF размытие к Cube ShadowMap?

сами тени вычисляются так:

Fragment
uniform samplerCube shadowMap;
.
.
.
const vec4 upk = vec4(256.0, 1.0, 0.00390625, 0.0000152587890625);

void main (void)
{
float shadowFactor = 1.0;

float depth= dot(textureCube(shadowMap, dir), upk);
shadowFactor = step(length(dir), depth + 0.1);
.
.
.
}

где dir - это

Vertex
.
.
.
vec4 pos = gl_ModelViewMatrix * gl_Vertex;
dir = vec3(  gl_TextureMatrixInverse[2] * pos -  light_pos);
.
.
.
#1
18:50, 15 авг 2009

сделать несколько выборок по dir с небольшим смещением ?

#2
19:07, 15 авг 2009

Тоже делал как-то.. Но проблемма у меня возникала, что нужно было сместить ровно на один тексель, а не на просто подобранное значение..

#3
19:21, 15 авг 2009

MoKa
> Но проблемма у меня возникала, что нужно было сместить ровно на один тексель, а
> не на просто подобранное значение..

Делаешь развёртку cubeMap по s,t,r

#4
20:29, 15 авг 2009

> сделать несколько выборок по dir с небольшим смещением ?

ммм размывает, но это неособо помогло...

        shadowFactor += step(length(dir+vec4(0.0,0.0,0.0,0.0)), depth + 0.1);
        shadowFactor += step(length(dir+vec4(-20.0,-20.0,0.0,0.0)), depth + 0.1);
        shadowFactor += step(length(dir+vec4(-20.0,20.0,0.0,0.0)), depth + 0.1);
        shadowFactor += step(length(dir+vec4(20.0,20.0,0.0,0.0)), depth + 0.1);
        shadowFactor += step(length(dir+vec4(20.0,-20.0,0.0,0.0)), depth + 0.1);

        shadowFactor += step(length(dir+vec4(0.0,-20.0,0.0,0.0)), depth + 0.1);
        shadowFactor += step(length(dir+vec4(-20.0,0.0,0.0,0.0)), depth + 0.1);
        shadowFactor += step(length(dir+vec4(0.0,20.0,0.0,0.0)), depth + 0.1);
        shadowFactor += step(length(dir+vec4(20.0,0.0,0.0,0.0)), depth + 0.1);


        shadowFactor *=0.1;

и как же сделать мягкие CubeMap тени?

#5
20:31, 15 авг 2009

вот, еще вопрос вдогонку, как сделать, чтобы тень "легла на bump", а то плоская тень на объемной поверхности плохо смотрится.

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

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