mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-04-22 11:18:22 -05:00
Fixed accurate normals in globebrowsing after problematic merging.
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user