Fixed accurate normals in globebrowsing after problematic merging.

This commit is contained in:
Jonathas Costa
2017-07-24 13:39:32 -04:00
parent 1962f4f4d5
commit eb87fa4390
4 changed files with 22 additions and 16 deletions
@@ -1,4 +1,4 @@
/*****************************************************************************************
/*****************************************************************************************
* *
* OpenSpace *
* *
@@ -33,8 +33,11 @@ Fragment getFragment() {
frag.color += patchBorderOverlay(fs_uv, vec3(0.0, 1.0, 0.0), 0.02);
#endif // SHOW_CHUNK_EDGES
// TODO: Change the color for the new deferred system (JCC)
#if USE_WATERMASK
frag.gOtherData = vec4(waterReflectance, waterReflectance, waterReflectance, 1.0);
#else
frag.gOtherData = vec4(0.0, 0.0, 0.0, 1.0);
#endif
// Normal is written in Camera Rig (OS Eye) Space
frag.gNormal = vec4(fs_normal, 1.0);
frag.gPosition = vec4(positionCameraSpace, 1.0); // in Camera Rig Space
@@ -34,7 +34,11 @@ Fragment getFragment() {
frag.color += patchBorderOverlay(fs_uv, vec3(1,0,0), 0.005);
#endif // SHOW_CHUNK_EDGES
// G-Buffer
frag.gOtherData = vec4(waterReflectance, 0.0, 0.0, 1.0);
#if USE_WATERMASK
frag.gOtherData = vec4(waterReflectance, waterReflectance, waterReflectance, 1.0);
#else
frag.gOtherData = vec4(0.0, 0.0, 0.0, 1.0);
#endif
// Normal is written in Camera Rig (OS Eye) Space
frag.gNormal = vec4(fs_normal, 1.0);//vec4(ellipsoidNormalCameraSpace, 1.0);
frag.gPosition = vec4(positionCameraSpace, 1.0); // in Camera Rig Space
+12 -13
View File
@@ -97,26 +97,25 @@ vec3 getTileNormal(vec2 uv, LevelWeights levelWeights, vec3 ellipsoidNormalCamer
vec3 ellipsoidTangentThetaCameraSpace,
vec3 ellipsoidTangentPhiCameraSpace)
{
return ellipsoidNormalCameraSpace;
vec3 normal = ellipsoidNormalCameraSpace;
#if USE_ACCURATE_NORMALS
const float deltaPhi = mix(deltaPhi0, deltaPhi1, uv.x);
const float deltaTheta = mix(deltaTheta0, deltaTheta1, uv.y);
float deltaPhi = mix(deltaPhi0, deltaPhi1, uv.x);
float deltaTheta = mix(deltaTheta0, deltaTheta1, uv.y);
const vec3 deltaPhiVec = ellipsoidTangentPhiCameraSpace * deltaPhi;
const vec3 deltaThetaVec = ellipsoidTangentThetaCameraSpace * deltaTheta;
vec3 deltaPhiVec = ellipsoidTangentPhiCameraSpace * deltaPhi;
vec3 deltaThetaVec = ellipsoidTangentThetaCameraSpace * deltaTheta;
const float height00 = getTileHeightScaled(uv, levelWeights);
const float height10 = getTileHeightScaled(uv + vec2(tileDelta, 0.0f), levelWeights);
const float height01 = getTileHeightScaled(uv + vec2(0.0f, tileDelta), levelWeights);
float height00 = getTileHeightScaled(uv, levelWeights);
float height10 = getTileHeightScaled(uv + vec2(tileDelta, 0.0f), levelWeights);
float height01 = getTileHeightScaled(uv + vec2(0.0f, tileDelta), levelWeights);
const vec3 diffTheta =
deltaThetaVec + ellipsoidNormalCameraSpace * (height10 - height00);
const vec3 diffPhi =
deltaPhiVec + ellipsoidNormalCameraSpace * (height01 - height00);
vec3 diffTheta = deltaThetaVec + ellipsoidNormalCameraSpace * (height10 - height00);
vec3 diffPhi = deltaPhiVec + ellipsoidNormalCameraSpace * (height01 - height00);
return normalize(cross(diffTheta, diffPhi));
normal = normalize(cross(diffTheta, diffPhi));
#endif // USE_ACCURATE_NORMALS
return normal;
}
#endif // TILE_HEIGHT_HGLSL