Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Loading