Issue/558 (#559)

* Removed unused cached uniforms from execution.
This commit is contained in:
Jonathas Costa
2018-03-16 09:19:39 -04:00
committed by Alexander Bock
parent 34187bc065
commit 7a93a4fa37
4 changed files with 6 additions and 62 deletions

View File

@@ -213,50 +213,25 @@ void AtmosphereDeferredcaster::preRaycast(const RenderData& renderData,
program.setUniform(_uniformCache.cullAtmosphere, 0);
program.setUniform(_uniformCache.Rg, _atmospherePlanetRadius);
program.setUniform(_uniformCache.Rt, _atmosphereRadius);
program.setUniform(
_uniformCache.AverageGroundReflectance,
_planetAverageGroundReflectance
);
program.setUniform(_uniformCache.groundRadianceEmittion, _planetGroundRadianceEmittion);
program.setUniform(_uniformCache.HR, _rayleighHeightScale);
program.setUniform(_uniformCache.betaRayleigh, _rayleighScatteringCoeff);
program.setUniform(_uniformCache.HM, _mieHeightScale);
program.setUniform(_uniformCache.betaMieScattering, _mieScatteringCoeff);
program.setUniform(_uniformCache.betaMieExtinction, _mieExtinctionCoeff);
program.setUniform(_uniformCache.mieG, _miePhaseConstant);
program.setUniform(_uniformCache.sunRadiance, _sunRadianceIntensity);
program.setUniform(_uniformCache.ozoneLayerEnabled, _ozoneEnabled);
program.setUniform(_uniformCache.HO, _ozoneHeightScale);
program.setUniform(_uniformCache.betaOzoneExtinction, _ozoneExtinctionCoeff);
program.setUniform(_uniformCache.TRANSMITTANCE_W, _transmittance_table_width);
program.setUniform(_uniformCache.TRANSMITTANCE_H, _transmittance_table_height);
program.setUniform(_uniformCache.SKY_W, _irradiance_table_width);
program.setUniform(_uniformCache.SKY_H, _irradiance_table_height);
program.setUniform(_uniformCache.OTHER_TEXTURES_W, _delta_e_table_width);
program.setUniform(_uniformCache.OTHER_TEXTURES_H, _delta_e_table_height);
program.setUniform(_uniformCache.SAMPLES_R, _r_samples);
program.setUniform(_uniformCache.SAMPLES_MU, _mu_samples);
program.setUniform(_uniformCache.SAMPLES_MU_S, _mu_s_samples);
program.setUniform(_uniformCache.SAMPLES_NU, _nu_samples);
program.setUniform(_uniformCache2.ModelTransformMatrix, _modelTransform);
// Object Space
glm::dmat4 inverseModelMatrix = glm::inverse(_modelTransform);
program.setUniform(_uniformCache2.dInverseModelTransformMatrix, inverseModelMatrix);
program.setUniform(_uniformCache2.dModelTransformMatrix, _modelTransform);
/*
// The following scale comes from PSC transformations.
float fScaleFactor = renderData.camera.scaling().x *
pow(10.f, renderData.camera.scaling().y);
glm::dmat4 dfScaleCamTransf = glm::scale(glm::dvec3(fScaleFactor));
program.setUniform(
"dInverseScaleTransformMatrix",
glm::inverse(dfScaleCamTransf)
);
*/
// Eye Space in OS to Eye Space in SGCT
glm::dmat4 dSgctEye2OSEye = glm::inverse(
@@ -288,7 +263,6 @@ void AtmosphereDeferredcaster::preRaycast(const RenderData& renderData,
program.setUniform(_uniformCache2.dInverseSGCTEyeToTmpRotTransformMatrix,
dInverseCameraRotationToSgctEyeTransform);
program.setUniform(_uniformCache2.dObjpos, glm::dvec4(renderData.position.dvec3(), 1.0));
program.setUniform(_uniformCache2.dCampos, renderData.camera.positionVec3());
glm::dvec4 camPosObjCoords = inverseModelMatrix * glm::dvec4(renderData.camera.positionVec3(), 1.0);
@@ -320,8 +294,6 @@ void AtmosphereDeferredcaster::preRaycast(const RenderData& renderData,
// Sun Position in Object Space
program.setUniform(_uniformCache2.sunDirectionObj, glm::normalize(glm::dvec3(sunPosObj)));
program.setUniform(_uniformCache2.ellipsoidRadii, _ellipsoidRadii);
// Shadow calculations..
if (!_shadowConfArray.empty()) {
std::vector<ShadowRenderingStruct> shadowDataArray;
@@ -461,38 +433,27 @@ void AtmosphereDeferredcaster::initializeCachedVariables(ghoul::opengl::ProgramO
_uniformCache.cullAtmosphere = program.uniformLocation("cullAtmosphere");
_uniformCache.Rg = program.uniformLocation("Rg");
_uniformCache.Rt = program.uniformLocation("Rt");
_uniformCache.AverageGroundReflectance = program.uniformLocation("AverageGroundReflectance");
_uniformCache.groundRadianceEmittion = program.uniformLocation("groundRadianceEmittion");
_uniformCache.HR = program.uniformLocation("HR");
_uniformCache.betaRayleigh = program.uniformLocation("betaRayleigh");
_uniformCache.HM = program.uniformLocation("HM");
_uniformCache.betaMieScattering = program.uniformLocation("betaMieScattering");
_uniformCache.betaMieExtinction = program.uniformLocation("betaMieExtinction");
_uniformCache.mieG = program.uniformLocation("mieG");
_uniformCache.sunRadiance = program.uniformLocation("sunRadiance");
_uniformCache.ozoneLayerEnabled = program.uniformLocation("ozoneLayerEnabled");
_uniformCache.HO = program.uniformLocation("HO");
_uniformCache.betaOzoneExtinction = program.uniformLocation("betaOzoneExtinction");
_uniformCache.TRANSMITTANCE_W = program.uniformLocation("TRANSMITTANCE_W");
_uniformCache.TRANSMITTANCE_H = program.uniformLocation("TRANSMITTANCE_H");
_uniformCache.SKY_W = program.uniformLocation("SKY_W");
_uniformCache.SKY_H = program.uniformLocation("SKY_H");
_uniformCache.OTHER_TEXTURES_W = program.uniformLocation("OTHER_TEXTURES_W");
_uniformCache.OTHER_TEXTURES_H = program.uniformLocation("OTHER_TEXTURES_H");
_uniformCache.SAMPLES_R = program.uniformLocation("SAMPLES_R");
_uniformCache.SAMPLES_MU = program.uniformLocation("SAMPLES_MU");
_uniformCache.SAMPLES_MU_S = program.uniformLocation("SAMPLES_MU_S");
_uniformCache.SAMPLES_NU = program.uniformLocation("SAMPLES_NU");
_uniformCache2.ModelTransformMatrix = program.uniformLocation("ModelTransformMatrix");
_uniformCache2.dInverseModelTransformMatrix = program.uniformLocation("dInverseModelTransformMatrix");
_uniformCache2.dModelTransformMatrix = program.uniformLocation("dModelTransformMatrix");
_uniformCache2.dInverseSgctProjectionToModelTransformMatrix = program.uniformLocation("dInverseSgctProjectionToModelTransformMatrix");
_uniformCache2.dInverseSGCTEyeToTmpRotTransformMatrix = program.uniformLocation("dInverseSGCTEyeToTmpRotTransformMatrix");
_uniformCache2.dObjpos = program.uniformLocation("dObjpos");
_uniformCache2.dCampos = program.uniformLocation("dCampos");
_uniformCache2.dCamPosObj = program.uniformLocation("dCamPosObj");
_uniformCache2.sunDirectionObj = program.uniformLocation("sunDirectionObj");
_uniformCache2.ellipsoidRadii = program.uniformLocation("ellipsoidRadii");
_uniformCache2.hardShadows = program.uniformLocation("hardShadows");
_uniformCache2.transmittanceTexture = program.uniformLocation("transmittanceTexture");
_uniformCache2.irradianceTexture = program.uniformLocation("irradianceTexture");

View File

@@ -129,16 +129,15 @@ private:
std::unique_ptr<ghoul::opengl::ProgramObject> _atmosphereProgramObject;
std::unique_ptr<ghoul::opengl::ProgramObject> _deferredAtmosphereProgramObject;
UniformCache(cullAtmosphere, Rg, Rt, AverageGroundReflectance,
groundRadianceEmittion, HR, betaRayleigh, HM, betaMieScattering,
UniformCache(cullAtmosphere, Rg, Rt,
groundRadianceEmittion, HR, betaRayleigh, HM,
betaMieExtinction, mieG, sunRadiance, ozoneLayerEnabled,
HO, betaOzoneExtinction, TRANSMITTANCE_W, TRANSMITTANCE_H,
SKY_W, SKY_H, OTHER_TEXTURES_W, OTHER_TEXTURES_H, SAMPLES_R,
HO, betaOzoneExtinction, SAMPLES_R,
SAMPLES_MU, SAMPLES_MU_S, SAMPLES_NU) _uniformCache;
UniformCache(ModelTransformMatrix, dInverseModelTransformMatrix, dModelTransformMatrix,
UniformCache(dInverseModelTransformMatrix, dModelTransformMatrix,
dInverseSgctProjectionToModelTransformMatrix,
dInverseSGCTEyeToTmpRotTransformMatrix,
dObjpos, dCampos, dCamPosObj, sunDirectionObj, ellipsoidRadii,
dCampos, dCamPosObj, sunDirectionObj,
hardShadows, transmittanceTexture, irradianceTexture,
inscatterTexture) _uniformCache2;

View File

@@ -89,11 +89,9 @@ uniform dmat4 dModelTransformMatrix;
uniform dmat4 dInverseSGCTEyeToTmpRotTransformMatrix;
uniform dmat4 dInverseSgctProjectionToModelTransformMatrix;
uniform dvec4 dObjpos;
uniform dvec3 dCampos;
uniform dvec4 dCamPosObj;
uniform dvec3 sunDirectionObj;
uniform dvec3 ellipsoidRadii;
/*******************************************************************************
***** ALL CALCULATIONS FOR ECLIPSE ARE IN METERS AND IN WORLD SPACE SYSTEM ****
@@ -262,7 +260,6 @@ void dCalculateRayRenderableGlobe(in int mssaSample, out dRay ray,
// JCC: Applying the inverse of the model transformation on the object postion in World
// space results in imprecision.
planetPositionObjectCoords = dvec4(0.0, 0.0, 0.0, 1.0);
//planetPositionObjectCoords = dInverseModelTransformMatrix * dvec4(dObjpos.xyz, 1.0);
// Camera Position in Object Space
cameraPositionInObject = dCamPosObj;
@@ -594,19 +591,6 @@ void main() {
bool intersectATM = false;
// Instead of ray-ellipsoid intersection lets transform the ray to a sphere:
//dRay transfRay;
//transfRay.origin = ray.origin;
//transfRay.direction = ray.direction;
// transfRay.origin.z *= 1000.0/ellipsoidRadii.x;
// transfRay.direction.z *= 1000.0/ellipsoidRadii.x;
// transfRay.origin.x *= 1000.0/ellipsoidRadii.y;
// transfRay.direction.x *= 1000.0/ellipsoidRadii.y;
// transfRay.origin.y *= 1000.0/ellipsoidRadii.z;
// transfRay.direction.y *= 1000.0/ellipsoidRadii.z;
// transfRay.direction.xyz = normalize(transfRay.direction.xyz);
intersectATM = dAtmosphereIntersection(planetPositionObjectCoords.xyz, ray,
Rt - (ATM_EPSILON * 0.001), insideATM, offset, maxLength );