mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-01-11 05:59:57 -06:00
Added Percentage Closer Filter.
This commit is contained in:
@@ -265,12 +265,26 @@ Fragment getFragment() {
|
||||
|
||||
#if SHADOW_MAPPING_ENABLED
|
||||
float shadow = 1.0;
|
||||
if ( shadowCoords.z >= 0 ) {
|
||||
if ( shadowCoords.w > 1 ) {
|
||||
vec4 normalizedShadowCoords = shadowCoords;
|
||||
normalizedShadowCoords.z = normalizeFloat(normalizedShadowCoords.w - 0.3);
|
||||
normalizedShadowCoords.xy = normalizedShadowCoords.xy / normalizedShadowCoords.w;
|
||||
normalizedShadowCoords.w = 1.0;
|
||||
shadow = textureProj(shadowMapTexture, normalizedShadowCoords);
|
||||
//shadow = textureProj(shadowMapTexture, normalizedShadowCoords);
|
||||
float sum = 0;
|
||||
int fStep = 5;
|
||||
for (int i = 0; i < fStep; ++i) {
|
||||
sum += textureProjOffset(shadowMapTexture, normalizedShadowCoords, ivec2(-fStep + i, -fStep + i));
|
||||
sum += textureProjOffset(shadowMapTexture, normalizedShadowCoords, ivec2(-fStep + i, 0));
|
||||
sum += textureProjOffset(shadowMapTexture, normalizedShadowCoords, ivec2(-fStep + i, fStep - i));
|
||||
sum += textureProjOffset(shadowMapTexture, normalizedShadowCoords, ivec2( 0, -fStep + i));
|
||||
sum += textureProjOffset(shadowMapTexture, normalizedShadowCoords, ivec2( 0, fStep - i));
|
||||
sum += textureProjOffset(shadowMapTexture, normalizedShadowCoords, ivec2( fStep - i, -fStep + i));
|
||||
sum += textureProjOffset(shadowMapTexture, normalizedShadowCoords, ivec2( fStep - i, 0));
|
||||
sum += textureProjOffset(shadowMapTexture, normalizedShadowCoords, ivec2( fStep - i, fStep - i));
|
||||
}
|
||||
sum += textureProjOffset(shadowMapTexture, normalizedShadowCoords, ivec2( 0, 0));
|
||||
shadow = sum / (8.f * fStep + 1.f);
|
||||
}
|
||||
frag.color.xyz *= shadow < 0.99 ? clamp(shadow + 0.5, 0.0, 1.0) : shadow;
|
||||
#endif
|
||||
|
||||
@@ -76,7 +76,19 @@ Fragment getFragment() {
|
||||
normalizedShadowCoords.z = normalizeFloat(normalizedShadowCoords.w - 0.3);
|
||||
normalizedShadowCoords.xy = normalizedShadowCoords.xy / normalizedShadowCoords.w;
|
||||
normalizedShadowCoords.w = 1.0;
|
||||
shadow = textureProj(shadowMapTexture, normalizedShadowCoords);
|
||||
//shadow = textureProj(shadowMapTexture, normalizedShadowCoords);
|
||||
float sum = 0;
|
||||
int fStep = 2;
|
||||
sum += textureProjOffset(shadowMapTexture, normalizedShadowCoords, ivec2(-fStep, -fStep));
|
||||
sum += textureProjOffset(shadowMapTexture, normalizedShadowCoords, ivec2(-fStep, 0));
|
||||
sum += textureProjOffset(shadowMapTexture, normalizedShadowCoords, ivec2(-fStep, fStep));
|
||||
sum += textureProjOffset(shadowMapTexture, normalizedShadowCoords, ivec2( 0, -fStep));
|
||||
sum += textureProjOffset(shadowMapTexture, normalizedShadowCoords, ivec2( 0, 0));
|
||||
sum += textureProjOffset(shadowMapTexture, normalizedShadowCoords, ivec2( 0, fStep));
|
||||
sum += textureProjOffset(shadowMapTexture, normalizedShadowCoords, ivec2( fStep, -fStep));
|
||||
sum += textureProjOffset(shadowMapTexture, normalizedShadowCoords, ivec2( fStep, 0));
|
||||
sum += textureProjOffset(shadowMapTexture, normalizedShadowCoords, ivec2( fStep, fStep));
|
||||
shadow = sum / 9.f;
|
||||
}
|
||||
|
||||
// The normal for the one plane depends on whether we are dealing
|
||||
|
||||
@@ -246,11 +246,13 @@ namespace openspace {
|
||||
(static_cast<double>(_distanceFraction)/1.0E5);*/
|
||||
|
||||
double multiplier = originalLightDistance *
|
||||
(static_cast<double>(_distanceFraction) / 10000.0);
|
||||
(static_cast<double>(_distanceFraction) / 1E17);
|
||||
|
||||
// New light source position
|
||||
glm::dvec3 lightPosition = data.modelTransform.translation +
|
||||
(lightDirection * multiplier);
|
||||
/*glm::dvec3 lightPosition = data.modelTransform.translation +
|
||||
(lightDirection * multiplier);*/
|
||||
glm::dvec3 lightPosition = data.modelTransform.translation +
|
||||
(diffVector * multiplier);
|
||||
|
||||
//// Light Position
|
||||
//glm::dvec3 lightPosition = glm::dvec3(_sunPosition);
|
||||
|
||||
Reference in New Issue
Block a user