Skip to content
Merged
Original file line number Diff line number Diff line change
Expand Up @@ -332,7 +332,7 @@ const float uniformPhase = RECIPROCAL_PI4;

// Utilizes the transmittance LUT and multiple scattering LUT to compute the radiance and transmittance for a given ray.
#define inline
void integrateScatteredRadiance(
vec3 integrateScatteredRadiance(
bool isAerialPerspectiveLut,
float lightIntensity,
sampler2D transmittanceLut,
Expand All @@ -346,14 +346,13 @@ void integrateScatteredRadiance(
float tMaxMax,
float sampleCount,
float distanceToSurface,
out vec3 radiance,
out vec3 transmittance
#if COMPUTE_MULTI_SCATTERING
, out vec3 multiScattering
#endif
) {

radiance = vec3(0.);
vec3 radiance = vec3(0.);
transmittance = vec3(1.);
#if COMPUTE_MULTI_SCATTERING
multiScattering = vec3(0.);
Expand All @@ -366,7 +365,7 @@ void integrateScatteredRadiance(
if (tBottom < 0.) {
if (tTop < 0.) {
// No intersection with the atmosphere or the planet, so early out.
return;
return radiance;
} else {
// Didn't intersect the planet, but did intersect the atmosphere.
tMax = tTop;
Expand Down Expand Up @@ -456,6 +455,8 @@ void integrateScatteredRadiance(

radiance *= lightIntensity;

return radiance;

}

#endif
Expand Down Expand Up @@ -632,10 +633,9 @@ vec4 renderMultiScattering(vec2 uv, sampler2D transmittanceLut) {
float sinInclination;
vec3 rayDirection = getSphereSample(azimuth, inclination, sinInclination);

vec3 radiance;
vec3 transmittance;
vec3 multiScattering;
integrateScatteredRadiance(
vec3 radiance = integrateScatteredRadiance(
false, // isAerialPerspectiveLut
1., // No light intensity; it will be applied in downstream LUTs (AerialPerspective, SkyView, and DiffuseSkyIrradiance).
transmittanceLut,
Expand All @@ -645,7 +645,6 @@ vec4 renderMultiScattering(vec2 uv, sampler2D transmittanceLut) {
100000000.,
MultiScatteringLutSampleCount,
-1., // No planet hit.
radiance,
transmittance,
multiScattering);

Expand Down Expand Up @@ -737,8 +736,7 @@ vec4 renderSkyView(vec2 uv, sampler2D transmittanceLut, sampler2D multiScatterin
}

vec3 transmittance;
vec3 radiance;
integrateScatteredRadiance(
vec3 radiance = integrateScatteredRadiance(
false, // isAerialPerspectiveLut
atmosphereExposure * lightIntensity,
transmittanceLut,
Expand All @@ -750,7 +748,6 @@ vec4 renderSkyView(vec2 uv, sampler2D transmittanceLut, sampler2D multiScatterin
100000000.,
SkyViewLutSampleCount,
-1., // No planet hit.
radiance,
transmittance);

float transparency = 1. - avg(transmittance);
Expand Down Expand Up @@ -804,8 +801,7 @@ vec4 renderCameraVolume(

float sampleCount = min(SkyViewLutSampleCount, 2. * layer + 2.);
vec3 transmittance;
vec3 radiance;
integrateScatteredRadiance(
vec3 radiance = integrateScatteredRadiance(
true, // isAerialPerspectiveLut
lightIntensity,
transmittanceLut,
Expand All @@ -817,7 +813,6 @@ vec4 renderCameraVolume(
tMaxMax,
sampleCount,
-1., // No planet hit.
radiance,
transmittance);

float transparency = 1. - avg(transmittance);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,10 +79,9 @@ void main() {
return;
}

vec3 transmittance;
vec3 radiance;
bool isAerialPerspectiveLut = clampedCameraRadius < atmosphereRadius;
integrateScatteredRadiance(
vec3 transmittance;
vec3 radiance = integrateScatteredRadiance(
isAerialPerspectiveLut, // isAerialPerspectiveLut
atmosphereExposure * lightIntensity,
transmittanceLut,
Expand All @@ -94,7 +93,6 @@ void main() {
100000000.,
SkyViewLutSampleCount,
distanceToSurface,
radiance,
transmittance);

float transparency = 1. - avg(transmittance);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,16 +44,15 @@ void main() {

float cosAngleBetweenViewAndZenith;
bool isRayIntersectingGround;
vec4 skyColor =
sampleSkyViewLut(
skyViewLut,
clampedCameraRadius,
cameraGeocentricNormal,
rayDirection,
directionToLight,
cosCameraHorizonAngleFromZenith,
cosAngleBetweenViewAndZenith,
isRayIntersectingGround);
vec4 skyColor = sampleSkyViewLut(
skyViewLut,
clampedCameraRadius,
cameraGeocentricNormal,
rayDirection,
directionToLight,
cosCameraHorizonAngleFromZenith,
cosAngleBetweenViewAndZenith,
isRayIntersectingGround);

gl_FragColor = skyColor;

Expand Down Expand Up @@ -102,8 +101,7 @@ void main() {
#endif

vec3 transmittance;
vec3 radiance;
integrateScatteredRadiance(
vec3 radiance = integrateScatteredRadiance(
false, // isAerialPerspectiveLut
atmosphereExposure * lightIntensity,
transmittanceLut,
Expand All @@ -115,7 +113,6 @@ void main() {
100000000.,
SkyViewLutSampleCount,
distanceToSurface,
radiance,
transmittance);

float transparency = 1. - avg(transmittance);
Expand Down
23 changes: 10 additions & 13 deletions packages/dev/addons/src/atmosphere/Shaders/compositeSky.fragment.fx
Original file line number Diff line number Diff line change
Expand Up @@ -37,16 +37,15 @@ void main() {

float cosAngleBetweenViewAndZenith;
bool isRayIntersectingGround;
vec4 skyColor =
sampleSkyViewLut(
skyViewLut,
clampedCameraRadius,
cameraGeocentricNormal,
rayDirection,
directionToLight,
cosCameraHorizonAngleFromZenith,
cosAngleBetweenViewAndZenith,
isRayIntersectingGround);
vec4 skyColor = sampleSkyViewLut(
skyViewLut,
clampedCameraRadius,
cameraGeocentricNormal,
rayDirection,
directionToLight,
cosCameraHorizonAngleFromZenith,
cosAngleBetweenViewAndZenith,
isRayIntersectingGround);

#ifndef APPLY_TRANSMITTANCE_BLENDING
skyColor.a = 0.;
Expand Down Expand Up @@ -75,8 +74,7 @@ void main() {
}

vec3 transmittance;
vec3 radiance;
integrateScatteredRadiance(
vec3 radiance = integrateScatteredRadiance(
false, // isAerialPerspectiveLut
atmosphereExposure * lightIntensity,
transmittanceLut,
Expand All @@ -88,7 +86,6 @@ void main() {
100000000.,
SkyViewLutSampleCount,
-1., // No planet hit.
radiance,
transmittance);

#if APPLY_TRANSMITTANCE_BLENDING
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,8 @@ uniform sampler2D multiScatteringLut;
#include<atmosphereFunctions>

vec3 integrateForIrradiance(vec3 directionToLight, vec3 rayDirection, vec3 rayOrigin) {
vec3 radiance;
vec3 transmittance;
integrateScatteredRadiance(
vec3 radiance = integrateScatteredRadiance(
false, // isAerialPerspectiveLut
1.,
transmittanceLut,
Expand All @@ -30,7 +29,6 @@ vec3 integrateForIrradiance(vec3 directionToLight, vec3 rayDirection, vec3 rayOr
100000000.,
DiffuseSkyIrradianceLutSampleCount,
-1., // No planet hit.
radiance,
transmittance);
return radiance;
}
Expand Down
Loading