mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-01-07 04:00:37 -06:00
Same changes in stereo.
This commit is contained in:
@@ -256,14 +256,18 @@ void AtmosphereDeferredcaster::preRaycast(const RenderData& renderData,
|
||||
// SGCT Projection to World Space
|
||||
glm::dmat4 dInverseSgctProjectionToWorldTransformMatrix(dInverseProjectionToTmpRotTransformMatrix);
|
||||
double *mSource = (double*)glm::value_ptr(dInverseSgctProjectionToWorldTransformMatrix);
|
||||
|
||||
mSource[12] += renderData.camera.eyePositionVec3().x;
|
||||
mSource[13] += renderData.camera.eyePositionVec3().y;
|
||||
mSource[14] += renderData.camera.eyePositionVec3().z;
|
||||
/*mSource[12] += renderData.camera.positionVec3().x;
|
||||
/*
|
||||
mSource[12] += renderData.camera.positionVec3().x;
|
||||
mSource[13] += renderData.camera.positionVec3().y;
|
||||
mSource[14] += renderData.camera.positionVec3().z;*/
|
||||
mSource[14] += renderData.camera.positionVec3().z;
|
||||
*/
|
||||
mSource[15] = 1.0;
|
||||
|
||||
|
||||
// SGCT Projection to Object Space
|
||||
glm::dmat4 inverseWholeMatrixPipeline = inverseModelMatrix *
|
||||
dInverseSgctProjectionToWorldTransformMatrix;
|
||||
@@ -271,11 +275,9 @@ void AtmosphereDeferredcaster::preRaycast(const RenderData& renderData,
|
||||
inverseWholeMatrixPipeline);
|
||||
|
||||
program.setUniform(_uniformCache2.dCamRigPos, renderData.camera.positionVec3());
|
||||
program.setUniform("dSGCTEyePosWorld", renderData.camera.eyePositionVec3());
|
||||
program.setUniform("dSGCTEyePosObj", inverseModelMatrix * glm::dvec4(renderData.camera.eyePositionVec3(), 1.0));
|
||||
|
||||
//glm::dvec4 camPosObjCoords = inverseModelMatrix * glm::dvec4(renderData.camera.eyePositionVec3(), 1.0);
|
||||
glm::dvec4 camPosObjCoords = inverseModelMatrix * glm::dvec4(renderData.camera.positionVec3(), 1.0);
|
||||
glm::dvec4 camPosObjCoords = inverseModelMatrix * glm::dvec4(renderData.camera.eyePositionVec3(), 1.0);
|
||||
//glm::dvec4 camPosObjCoords = inverseModelMatrix * glm::dvec4(renderData.camera.positionVec3(), 1.0);
|
||||
program.setUniform(_uniformCache2.dCamPosObj, camPosObjCoords);
|
||||
|
||||
double lt;
|
||||
|
||||
@@ -89,8 +89,6 @@ uniform dmat4 dModelTransformMatrix;
|
||||
uniform dmat4 dInverseSGCTEyeToTmpRotTransformMatrix;
|
||||
uniform dmat4 dInverseSgctProjectionToModelTransformMatrix;
|
||||
|
||||
uniform dvec3 dSGCTEyePosWorld;
|
||||
uniform dvec4 dSGCTEyePosObj;
|
||||
uniform dvec3 dCamRigPos;
|
||||
uniform dvec4 dCamPosObj;
|
||||
uniform dvec3 sunDirectionObj;
|
||||
@@ -248,7 +246,7 @@ void dCalculateRayRenderableGlobe(in int mssaSample, out dRay ray,
|
||||
// ======================================
|
||||
// ======= Avoiding Some Matrices =======
|
||||
|
||||
// Compute positions and directions in world space.
|
||||
// Compute positions and directions in object space.
|
||||
dvec2 samplePos = dvec2(msaaSamplePatter[mssaSample],
|
||||
msaaSamplePatter[mssaSample+1]);
|
||||
dvec4 clipCoords = dvec4((interpolatedNDCPos.xy + samplePos)/ gl_FragCoord.w, 0.0, 1.0);
|
||||
@@ -261,14 +259,15 @@ void dCalculateRayRenderableGlobe(in int mssaSample, out dRay ray,
|
||||
// space results in imprecision.
|
||||
planetPositionObjectCoords = dvec4(0.0, 0.0, 0.0, 1.0);
|
||||
|
||||
// Camera Position in Object Space
|
||||
cameraPositionInObject = dSGCTEyePosObj;//dCamPosObj;
|
||||
// Camera Position in Object Space (in meters)
|
||||
cameraPositionInObject = dCamPosObj;
|
||||
|
||||
// ============================
|
||||
// ====== Building Ray ========
|
||||
// Ray in object space (in KM)
|
||||
ray.origin = cameraPositionInObject * dvec4(0.001, 0.001, 0.001, 1.0);
|
||||
ray.direction = dvec4(normalize(objectCoords.xyz - cameraPositionInObject.xyz), 0.0);
|
||||
//ray.direction = dvec4(normalize(objectCoords.xyz - cameraPositionInObject.xyz), 0.0);
|
||||
ray.direction = dvec4(normalize((objectCoords.xyz * dvec3(0.001))- ray.origin.xyz), 0.0);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -588,8 +587,8 @@ void main() {
|
||||
cameraPositionInObject);
|
||||
|
||||
bool insideATM = false;
|
||||
double offset = 0.0;
|
||||
double maxLength = 0.0;
|
||||
double offset = 0.0; // in Km
|
||||
double maxLength = 0.0; // in Km
|
||||
|
||||
bool intersectATM = false;
|
||||
|
||||
@@ -607,7 +606,7 @@ void main() {
|
||||
vec4 normal = texelFetch(mainNormalTexture, fragCoords, i);
|
||||
// Data in the mainPositionTexture are written in view space (view plus camera rig)
|
||||
vec4 position = texelFetch(mainPositionTexture, fragCoords, i);
|
||||
|
||||
|
||||
// OS Eye to World coords
|
||||
dvec4 tmpRInvPos = dInverseSGCTEyeToTmpRotTransformMatrix * position;
|
||||
dvec4 fragWorldCoords = dvec4(dvec3(tmpRInvPos) + dCamRigPos, 1.0);
|
||||
|
||||
Reference in New Issue
Block a user