mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-04-29 23:39:26 -05:00
Initial Ozone Layer absorption.
This commit is contained in:
@@ -87,15 +87,15 @@ return {
|
||||
-- Thichkness of atmosphere if its density were uniform, in Km
|
||||
H_R = 8.0,
|
||||
},
|
||||
--[[
|
||||
|
||||
Ozone = {
|
||||
Coefficients = {
|
||||
-- Extinction coefficients
|
||||
Extinction = {3.426E-5, 8.298E-5, 0.356E-5}
|
||||
Extinction = {3.426, 8.298, 0.356}
|
||||
},
|
||||
H_O = 8.0,
|
||||
},
|
||||
]]--
|
||||
|
||||
-- Default
|
||||
Mie = {
|
||||
Coefficients = {
|
||||
|
||||
@@ -74,7 +74,7 @@ float opticalDepth(const float H, const float r, const float mu, const float d)
|
||||
vec3 analyticTransmittance(const float r, const float mu, const float d) {
|
||||
if (ozoneLayerEnabled) {
|
||||
return exp(-betaRayleigh * opticalDepth(HR, r, mu, d) -
|
||||
betaOzoneExtinction * (6.0e-7) * opticalDepth(HO, r, mu, d) -
|
||||
betaOzoneExtinction * (0.0000006) * opticalDepth(HO, r, mu, d) -
|
||||
betaMieExtinction * opticalDepth(HM, r, mu, d));
|
||||
} else {
|
||||
return exp(-betaRayleigh * opticalDepth(HR, r, mu, d) -
|
||||
|
||||
@@ -79,7 +79,7 @@ void main(void) {
|
||||
vec3 opDepth = vec3(0.0);
|
||||
|
||||
if (ozoneLayerEnabled) {
|
||||
opDepth = betaOzoneExtinction * (6.0e-7) * opticalDepth(r, muSun, HO) +
|
||||
opDepth = betaOzoneExtinction * (0.0000006) * opticalDepth(r, muSun, HO) +
|
||||
betaMieExtinction * opticalDepth(r, muSun, HM) +
|
||||
betaRayleigh * opticalDepth(r, muSun, HR);
|
||||
} else {
|
||||
|
||||
@@ -107,9 +107,9 @@ RenderableGlobe::RenderableGlobe(const ghoul::Dictionary& dictionary)
|
||||
FloatProperty("rayleighScatteringCoeffY", "Rayleigh Scattering Coeff Y (x10e-3)", 1.0f, 0.01f, 100.0f),
|
||||
FloatProperty("rayleighScatteringCoeffZ", "Rayleigh Scattering Coeff Z (x10e-3)", 1.0f, 0.01f, 100.0f),
|
||||
FloatProperty("ozoneLayerHeightScale", "Ozone Height Scale (KM)", 8.0f, 0.1f, 20.0f),
|
||||
FloatProperty("ozoneLayerCoeffX", "Ozone Layer Extinction Coeff X (x10e-5)", 3.426f, 0.01f, 100.0f),
|
||||
FloatProperty("ozoneLayerCoeffY", "Ozone Layer Extinction Coeff Y (x10e-5)", 8.298f, 0.01f, 100.0f),
|
||||
FloatProperty("ozoneLayerCoeffZ", "Ozone Layer Extinction Coeff Z (x10e-5)", 0.356f, 0.01f, 100.0f),
|
||||
FloatProperty("ozoneLayerCoeffX", "Ozone Layer Extinction Coeff X", 3.426f, 0.01f, 100.0f),
|
||||
FloatProperty("ozoneLayerCoeffY", "Ozone Layer Extinction Coeff Y", 8.298f, 0.01f, 100.0f),
|
||||
FloatProperty("ozoneLayerCoeffZ", "Ozone Layer Extinction Coeff Z", 0.356f, 0.01f, 100.0f),
|
||||
FloatProperty("mieHeightScale", "Mie Height Scale (KM)", 1.2f, 0.1f, 20.0f),
|
||||
FloatProperty("mieScatteringCoeffX", "Mie Scattering Coeff X (x10e-3)", 4.0f, 0.01f, 1000.0f),
|
||||
FloatProperty("mieScatteringCoeffY", "Mie Scattering Coeff Y (x10e-3)", 4.0f, 0.01f, 1000.0f),
|
||||
@@ -397,15 +397,15 @@ RenderableGlobe::RenderableGlobe(const ghoul::Dictionary& dictionary)
|
||||
_atmosphereProperties.ozoneHeightScaleP.onChange(std::bind(&RenderableGlobe::updateAtmosphereParameters, this));
|
||||
_atmospherePropertyOwner.addProperty(_atmosphereProperties.ozoneHeightScaleP);
|
||||
|
||||
_atmosphereProperties.ozoneLayerExtinctionCoeffXP.set(_ozoneLayerExtinctionCoeff.x * 100000.0f);
|
||||
_atmosphereProperties.ozoneLayerExtinctionCoeffXP.set(_ozoneLayerExtinctionCoeff.x);
|
||||
_atmosphereProperties.ozoneLayerExtinctionCoeffXP.onChange(std::bind(&RenderableGlobe::updateAtmosphereParameters, this));
|
||||
_atmospherePropertyOwner.addProperty(_atmosphereProperties.ozoneLayerExtinctionCoeffXP);
|
||||
|
||||
_atmosphereProperties.ozoneLayerExtinctionCoeffYP.set(_ozoneLayerExtinctionCoeff.y * 100000.0f);
|
||||
_atmosphereProperties.ozoneLayerExtinctionCoeffYP.set(_ozoneLayerExtinctionCoeff.y);
|
||||
_atmosphereProperties.ozoneLayerExtinctionCoeffYP.onChange(std::bind(&RenderableGlobe::updateAtmosphereParameters, this));
|
||||
_atmospherePropertyOwner.addProperty(_atmosphereProperties.ozoneLayerExtinctionCoeffYP);
|
||||
|
||||
_atmosphereProperties.ozoneLayerExtinctionCoeffZP.set(_ozoneLayerExtinctionCoeff.z * 100000.0f);
|
||||
_atmosphereProperties.ozoneLayerExtinctionCoeffZP.set(_ozoneLayerExtinctionCoeff.z);
|
||||
_atmosphereProperties.ozoneLayerExtinctionCoeffZP.onChange(std::bind(&RenderableGlobe::updateAtmosphereParameters, this));
|
||||
_atmospherePropertyOwner.addProperty(_atmosphereProperties.ozoneLayerExtinctionCoeffZP);
|
||||
|
||||
@@ -650,9 +650,9 @@ void RenderableGlobe::updateAtmosphereParameters() {
|
||||
_atmosphereProperties.rayleighScatteringCoeffZP.value() * 0.001f);
|
||||
_ozoneLayerEnabled = _atmosphereProperties.ozoneLayerEnabledP.value();
|
||||
_ozoneLayerHeightScale = _atmosphereProperties.ozoneHeightScaleP.value();
|
||||
_ozoneLayerExtinctionCoeff = glm::vec3(_atmosphereProperties.ozoneLayerExtinctionCoeffXP.value() * 0.00001f,
|
||||
_atmosphereProperties.ozoneLayerExtinctionCoeffYP.value() * 0.00001f,
|
||||
_atmosphereProperties.ozoneLayerExtinctionCoeffZP.value() * 0.00001f);
|
||||
_ozoneLayerExtinctionCoeff = glm::vec3(_atmosphereProperties.ozoneLayerExtinctionCoeffXP.value(),
|
||||
_atmosphereProperties.ozoneLayerExtinctionCoeffYP.value(),
|
||||
_atmosphereProperties.ozoneLayerExtinctionCoeffZP.value());
|
||||
_mieHeightScale = _atmosphereProperties.mieHeightScaleP.value();
|
||||
_mieScatteringCoeff = glm::vec3(_atmosphereProperties.mieScatteringCoeffXP.value() * 0.001f,
|
||||
_atmosphereProperties.mieScatteringCoeffYP.value() * 0.001f,
|
||||
|
||||
Reference in New Issue
Block a user