Size: a a a

pro.graphon (and gamedev)

2021 March 30

TG

Timur Gagiev in pro.graphon (and gamedev)
источник

AP

Alexander Potapov in pro.graphon (and gamedev)
все равно колхоз
источник

VK

Vitaliy ◀️TriΔng3l▶️... in pro.graphon (and gamedev)
Мне кажется, там скриншоты перепутали
источник

VK

Vitaliy ◀️TriΔng3l▶️... in pro.graphon (and gamedev)
А, нет
источник

D

Deathwish in pro.graphon (and gamedev)
Alexander Potapov
все равно колхоз
Боже, что это такое...
источник

VK

Vitaliy ◀️TriΔng3l▶️... in pro.graphon (and gamedev)
Да, слева что-то странное
источник

D

Deathwish in pro.graphon (and gamedev)
Вообще, тут на 252 странице тени выглядят прикольно
источник

D

Deathwish in pro.graphon (and gamedev)
источник

D

Deathwish in pro.graphon (and gamedev)
Но какой там шейдер жуткий
источник

D

Deathwish in pro.graphon (and gamedev)
А хотя я слепой это же в главной программе код
источник

AP

Alexander Potapov in pro.graphon (and gamedev)
у меня пока так но все равно херня
вот subpixel shadow mapping попробую
источник

D

Deathwish in pro.graphon (and gamedev)
Alexander Potapov
у меня пока так но все равно херня
вот subpixel shadow mapping попробую
Вот уже как-то не плохо, действительно
источник

AP

Alexander Potapov in pro.graphon (and gamedev)
жаль что много чего ломается при больших углах
источник

D

Deathwish in pro.graphon (and gamedev)
А вот эта тема норм или не совсем?
источник

D

Deathwish in pro.graphon (and gamedev)
источник

YS

Yaroslav Savin in pro.graphon (and gamedev)
Alexander Potapov
у меня пока так но все равно херня
вот subpixel shadow mapping попробую
а это с помощью чего?
источник

AP

Alexander Potapov in pro.graphon (and gamedev)
float sampleShadowMap(sampler2D depthMap, vec2 coords, float lod, float compare)
{
 return step(compare, texture(depthMap, coords, lod).r);
}

float sampleShadowMapLinear(sampler2D depthMap, vec2 coords, float compare)
{
 const int lod = 0;
 vec2 texelSize = 1.0 / textureSize(depthMap, lod);
 vec2 pixelPos = coords / texelSize + vec2(0.5);
 vec2 fracPart = fract(pixelPos);
 vec2 startTexel = (pixelPos - fracPart) * texelSize;
 
 vec4 samples;
 samples[0] = sampleShadowMap(depthMap, startTexel + vec2(0.0, 0.0) * texelSize, lod, compare);
 samples[1] = sampleShadowMap(depthMap, startTexel + vec2(1.0, 0.0) * texelSize, lod, compare);
 samples[2] = sampleShadowMap(depthMap, startTexel + vec2(0.0, 1.0) * texelSize, lod, compare);
 samples[3] = sampleShadowMap(depthMap, startTexel + vec2(1.0, 1.0) * texelSize, lod, compare);

 float sampleA = mix(samples[0], samples[2], fracPart.y);
 float sampleB = mix(samples[1], samples[3], fracPart.y);
 return mix(sampleA, sampleB, fracPart.x);
}
источник

D

Deathwish in pro.graphon (and gamedev)
Alexander Potapov
float sampleShadowMap(sampler2D depthMap, vec2 coords, float lod, float compare)
{
 return step(compare, texture(depthMap, coords, lod).r);
}

float sampleShadowMapLinear(sampler2D depthMap, vec2 coords, float compare)
{
 const int lod = 0;
 vec2 texelSize = 1.0 / textureSize(depthMap, lod);
 vec2 pixelPos = coords / texelSize + vec2(0.5);
 vec2 fracPart = fract(pixelPos);
 vec2 startTexel = (pixelPos - fracPart) * texelSize;
 
 vec4 samples;
 samples[0] = sampleShadowMap(depthMap, startTexel + vec2(0.0, 0.0) * texelSize, lod, compare);
 samples[1] = sampleShadowMap(depthMap, startTexel + vec2(1.0, 0.0) * texelSize, lod, compare);
 samples[2] = sampleShadowMap(depthMap, startTexel + vec2(0.0, 1.0) * texelSize, lod, compare);
 samples[3] = sampleShadowMap(depthMap, startTexel + vec2(1.0, 1.0) * texelSize, lod, compare);

 float sampleA = mix(samples[0], samples[2], fracPart.y);
 float sampleB = mix(samples[1], samples[3], fracPart.y);
 return mix(sampleA, sampleB, fracPart.x);
}
Ну выглядит относительно быстро
источник

D

Deathwish in pro.graphon (and gamedev)
Alexander Potapov
float sampleShadowMap(sampler2D depthMap, vec2 coords, float lod, float compare)
{
 return step(compare, texture(depthMap, coords, lod).r);
}

float sampleShadowMapLinear(sampler2D depthMap, vec2 coords, float compare)
{
 const int lod = 0;
 vec2 texelSize = 1.0 / textureSize(depthMap, lod);
 vec2 pixelPos = coords / texelSize + vec2(0.5);
 vec2 fracPart = fract(pixelPos);
 vec2 startTexel = (pixelPos - fracPart) * texelSize;
 
 vec4 samples;
 samples[0] = sampleShadowMap(depthMap, startTexel + vec2(0.0, 0.0) * texelSize, lod, compare);
 samples[1] = sampleShadowMap(depthMap, startTexel + vec2(1.0, 0.0) * texelSize, lod, compare);
 samples[2] = sampleShadowMap(depthMap, startTexel + vec2(0.0, 1.0) * texelSize, lod, compare);
 samples[3] = sampleShadowMap(depthMap, startTexel + vec2(1.0, 1.0) * texelSize, lod, compare);

 float sampleA = mix(samples[0], samples[2], fracPart.y);
 float sampleB = mix(samples[1], samples[3], fracPart.y);
 return mix(sampleA, sampleB, fracPart.x);
}
А compare это сравнение с чем идёт?
источник

AP

Alexander Potapov in pro.graphon (and gamedev)
значение из буфера глубины
источник