71 lines
2.7 KiB
HLSL
71 lines
2.7 KiB
HLSL
#include "functions.hlsl"
|
|
|
|
sampler2D transmittance_texture;
|
|
sampler3D scattering_texture;
|
|
sampler3D single_mie_scattering_texture;
|
|
sampler2D irradiance_texture;
|
|
|
|
RadianceSpectrum GetSolarRadiance()
|
|
{
|
|
return ATMOSPHERE.solar_irradiance / (PI * ATMOSPHERE.sun_angular_radius * ATMOSPHERE.sun_angular_radius);
|
|
}
|
|
RadianceSpectrum GetSkyRadiance(
|
|
Position camera, Direction view_ray, Length shadow_length,
|
|
Direction sun_direction, out DimensionlessSpectrum transmittance)
|
|
{
|
|
return GetSkyRadiance(ATMOSPHERE, transmittance_texture,
|
|
scattering_texture, single_mie_scattering_texture,
|
|
camera, view_ray, shadow_length, sun_direction, transmittance);
|
|
}
|
|
RadianceSpectrum GetSkyRadianceToPoint(
|
|
Position camera, Position position, Length shadow_length,
|
|
Direction sun_direction, out DimensionlessSpectrum transmittance)
|
|
{
|
|
return GetSkyRadianceToPoint(ATMOSPHERE, transmittance_texture,
|
|
scattering_texture, single_mie_scattering_texture,
|
|
camera, position, shadow_length, sun_direction, transmittance);
|
|
}
|
|
IrradianceSpectrum GetSunAndSkyIrradiance(
|
|
Position p, Direction normal, Direction sun_direction,
|
|
out IrradianceSpectrum sky_irradiance)
|
|
{
|
|
return GetSunAndSkyIrradiance(ATMOSPHERE, transmittance_texture,
|
|
irradiance_texture, p, normal, sun_direction, sky_irradiance);
|
|
}
|
|
|
|
Luminance3 GetSolarLuminance()
|
|
{
|
|
return ATMOSPHERE.solar_irradiance / (PI * ATMOSPHERE.sun_angular_radius * ATMOSPHERE.sun_angular_radius) * SUN_SPECTRAL_RADIANCE_TO_LUMINANCE;
|
|
}
|
|
|
|
Luminance3 GetSkyLuminance(
|
|
Position camera, Direction view_ray, Length shadow_length,
|
|
Direction sun_direction, out DimensionlessSpectrum transmittance)
|
|
{
|
|
return GetSkyRadiance(ATMOSPHERE, transmittance_texture,
|
|
scattering_texture, single_mie_scattering_texture,
|
|
camera, view_ray, shadow_length, sun_direction, transmittance)
|
|
* SKY_SPECTRAL_RADIANCE_TO_LUMINANCE;
|
|
}
|
|
|
|
Luminance3 GetSkyLuminanceToPoint(
|
|
Position camera, Position position, Length shadow_length,
|
|
Direction sun_direction, out DimensionlessSpectrum transmittance)
|
|
{
|
|
return GetSkyRadianceToPoint(ATMOSPHERE, transmittance_texture,
|
|
scattering_texture, single_mie_scattering_texture,
|
|
camera, position, shadow_length, sun_direction, transmittance)
|
|
* SKY_SPECTRAL_RADIANCE_TO_LUMINANCE;
|
|
}
|
|
|
|
Illuminance3 GetSunAndSkyIlluminance(
|
|
Position p, Direction normal, Direction sun_direction,
|
|
out IrradianceSpectrum sky_irradiance)
|
|
{
|
|
IrradianceSpectrum sun_irradiance = GetSunAndSkyIrradiance(
|
|
ATMOSPHERE, transmittance_texture, irradiance_texture, p, normal,
|
|
sun_direction, sky_irradiance);
|
|
sky_irradiance *= SKY_SPECTRAL_RADIANCE_TO_LUMINANCE;
|
|
return sun_irradiance * SUN_SPECTRAL_RADIANCE_TO_LUMINANCE;
|
|
}
|