Blender  V3.3
Functions | Variables
sky_nishita.cpp File Reference
#include "sky_float3.h"
#include "sky_model.h"

Go to the source code of this file.

Functions

static float3 geographical_to_direction (float lat, float lon)
 
static float3 spec_to_xyz (const float *spectrum)
 
static float density_rayleigh (float height)
 
static float density_mie (float height)
 
static float density_ozone (float height)
 
static float phase_rayleigh (float mu)
 
static float phase_mie (float mu)
 
static bool surface_intersection (float3 pos, float3 dir)
 
static float3 atmosphere_intersection (float3 pos, float3 dir)
 
static float3 ray_optical_depth (float3 ray_origin, float3 ray_dir)
 
static void single_scattering (float3 ray_dir, float3 sun_dir, float3 ray_origin, float air_density, float dust_density, float ozone_density, float *r_spectrum)
 
void SKY_nishita_skymodel_precompute_texture (float *pixels, int stride, int start_y, int end_y, int width, int height, float sun_elevation, float altitude, float air_density, float dust_density, float ozone_density)
 
static void sun_radiation (float3 cam_dir, float altitude, float air_density, float dust_density, float solid_angle, float *r_spectrum)
 
void SKY_nishita_skymodel_precompute_sun (float sun_elevation, float angular_diameter, float altitude, float air_density, float dust_density, float *r_pixel_bottom, float *r_pixel_top)
 

Variables

static const float rayleigh_scale = 8e3f
 
static const float mie_scale = 1.2e3f
 
static const float mie_coeff = 2e-5f
 
static const float mie_G = 0.76f
 
static const float sqr_G = mie_G * mie_G
 
static const float earth_radius = 6360e3f
 
static const float atmosphere_radius = 6420e3f
 
static const int steps = 32
 
static const int num_wavelengths = 21
 
static const int min_wavelength = 380
 
static const int max_wavelength = 780
 
static const float step_lambda = (max_wavelength - min_wavelength) / (num_wavelengths - 1)
 
static const float irradiance []
 
static const float rayleigh_coeff []
 
static const float ozone_coeff []
 
static const float cmf_xyz [][3]
 
static const int quadrature_steps = 8
 
static const float quadrature_nodes []
 
static const float quadrature_weights []
 

Function Documentation

◆ atmosphere_intersection()

static float3 atmosphere_intersection ( float3  pos,
float3  dir 
)
static

◆ density_mie()

static float density_mie ( float  height)
static

Definition at line 125 of file sky_nishita.cpp.

References expf, height, and mie_scale.

Referenced by ray_optical_depth(), and single_scattering().

◆ density_ozone()

static float density_ozone ( float  height)
static

Definition at line 130 of file sky_nishita.cpp.

References height.

Referenced by ray_optical_depth(), and single_scattering().

◆ density_rayleigh()

static float density_rayleigh ( float  height)
static

Definition at line 120 of file sky_nishita.cpp.

References expf, height, and rayleigh_scale.

Referenced by ray_optical_depth(), and single_scattering().

◆ geographical_to_direction()

static float3 geographical_to_direction ( float  lat,
float  lon 
)
static

◆ phase_mie()

static float phase_mie ( float  mu)
static

Definition at line 147 of file sky_nishita.cpp.

References M_PI_F, mie_G, powf, sqr(), and sqr_G.

Referenced by single_scattering().

◆ phase_rayleigh()

static float phase_rayleigh ( float  mu)
static

Definition at line 142 of file sky_nishita.cpp.

References M_PI_F, and sqr().

Referenced by single_scattering().

◆ ray_optical_depth()

static float3 ray_optical_depth ( float3  ray_origin,
float3  ray_dir 
)
static

◆ single_scattering()

static void single_scattering ( float3  ray_dir,
float3  sun_dir,
float3  ray_origin,
float  air_density,
float  dust_density,
float  ozone_density,
float r_spectrum 
)
static

◆ SKY_nishita_skymodel_precompute_sun()

void SKY_nishita_skymodel_precompute_sun ( float  sun_elevation,
float  angular_diameter,
float  altitude,
float  air_density,
float  dust_density,
float r_pixel_bottom,
float r_pixel_top 
)

◆ SKY_nishita_skymodel_precompute_texture()

void SKY_nishita_skymodel_precompute_texture ( float pixels,
int  stride,
int  start_y,
int  end_y,
int  width,
int  height,
float  sun_elevation,
float  altitude,
float  air_density,
float  dust_density,
float  ozone_density 
)

◆ spec_to_xyz()

static float3 spec_to_xyz ( const float spectrum)
static

◆ sun_radiation()

static void sun_radiation ( float3  cam_dir,
float  altitude,
float  air_density,
float  dust_density,
float  solid_angle,
float r_spectrum 
)
static

◆ surface_intersection()

static bool surface_intersection ( float3  pos,
float3  dir 
)
static

Variable Documentation

◆ atmosphere_radius

const float atmosphere_radius = 6420e3f
static

Definition at line 18 of file sky_nishita.cpp.

Referenced by atmosphere_intersection().

◆ cmf_xyz

const float cmf_xyz[][3]
static
Initial value:
= {{0.00136800000f, 0.00003900000f, 0.00645000100f},
{0.01431000000f, 0.00039600000f, 0.06785001000f},
{0.13438000000f, 0.00400000000f, 0.64560000000f},
{0.34828000000f, 0.02300000000f, 1.74706000000f},
{0.29080000000f, 0.06000000000f, 1.66920000000f},
{0.09564000000f, 0.13902000000f, 0.81295010000f},
{0.00490000000f, 0.32300000000f, 0.27200000000f},
{0.06327000000f, 0.71000000000f, 0.07824999000f},
{0.29040000000f, 0.95400000000f, 0.02030000000f},
{0.59450000000f, 0.99500000000f, 0.00390000000f},
{0.91630000000f, 0.87000000000f, 0.00165000100f},
{1.06220000000f, 0.63100000000f, 0.00080000000f},
{0.85444990000f, 0.38100000000f, 0.00019000000f},
{0.44790000000f, 0.17500000000f, 0.00002000000f},
{0.16490000000f, 0.06100000000f, 0.00000000000f},
{0.04677000000f, 0.01700000000f, 0.00000000000f},
{0.01135916000f, 0.00410200000f, 0.00000000000f},
{0.00289932700f, 0.00104700000f, 0.00000000000f},
{0.00069007860f, 0.00024920000f, 0.00000000000f},
{0.00016615050f, 0.00006000000f, 0.00000000000f},
{0.00004150994f, 0.00001499000f, 0.00000000000f}}

Definition at line 53 of file sky_nishita.cpp.

Referenced by spec_to_xyz().

◆ earth_radius

const float earth_radius = 6360e3f
static

◆ irradiance

const float irradiance[]
static
Initial value:
= {
1.45756829855592995315f, 1.56596305559738380175f, 1.65148449067670455293f,
1.71496242737209314555f, 1.75797983805020541226f, 1.78256407885924539336f,
1.79095108475838560302f, 1.78541550133410664714f, 1.76815554864306845317f,
1.74122069647250410362f, 1.70647127164943679389f, 1.66556087452739887134f,
1.61993437242451854274f, 1.57083597368892080581f, 1.51932335059305478886f,
1.46628494965214395407f, 1.41245852740172450623f, 1.35844961970384092709f,
1.30474913844739281998f, 1.25174963272610817455f, 1.19975998755420620867f}

Definition at line 26 of file sky_nishita.cpp.

Referenced by single_scattering(), and sun_radiation().

◆ max_wavelength

const int max_wavelength = 780
static

Definition at line 22 of file sky_nishita.cpp.

◆ mie_coeff

const float mie_coeff = 2e-5f
static

Definition at line 14 of file sky_nishita.cpp.

Referenced by single_scattering(), and sun_radiation().

◆ mie_G

const float mie_G = 0.76f
static

Definition at line 15 of file sky_nishita.cpp.

Referenced by phase_mie().

◆ mie_scale

const float mie_scale = 1.2e3f
static

Definition at line 13 of file sky_nishita.cpp.

Referenced by density_mie().

◆ min_wavelength

const int min_wavelength = 380
static

Definition at line 21 of file sky_nishita.cpp.

◆ num_wavelengths

const int num_wavelengths = 21
static

◆ ozone_coeff

const float ozone_coeff[]
static
Initial value:
= {
0.00000000325126849861f, 0.00000000585395365047f, 0.00000001977191155085f,
0.00000007309568762914f, 0.00000020084561514287f, 0.00000040383958096161f,
0.00000063551335912363f, 0.00000096707041180970f, 0.00000154797400424410f,
0.00000209038647223331f, 0.00000246128056164565f, 0.00000273551299461512f,
0.00000215125863128643f, 0.00000159051840791988f, 0.00000112356197979857f,
0.00000073527551487574f, 0.00000046450130357806f, 0.00000033096079921048f,
0.00000022512612292678f, 0.00000014879129266490f, 0.00000016828623364192f}

Definition at line 44 of file sky_nishita.cpp.

Referenced by single_scattering().

◆ quadrature_nodes

const float quadrature_nodes[]
static
Initial value:
= {0.006811185292f,
0.03614807107f,
0.09004346519f,
0.1706680068f,
0.2818362161f,
0.4303406404f,
0.6296271457f,
0.9145252695f}

Definition at line 86 of file sky_nishita.cpp.

Referenced by ray_optical_depth().

◆ quadrature_steps

const int quadrature_steps = 8
static

Definition at line 85 of file sky_nishita.cpp.

Referenced by ray_optical_depth().

◆ quadrature_weights

const float quadrature_weights[]
static
Initial value:
= {0.01750893642f,
0.04135477391f,
0.06678839063f,
0.09507698807f,
0.1283416365f,
0.1707430204f,
0.2327233347f,
0.3562490486f}

Definition at line 94 of file sky_nishita.cpp.

Referenced by ray_optical_depth().

◆ rayleigh_coeff

const float rayleigh_coeff[]
static
Initial value:
= {
0.00005424820087636473f, 0.00004418549866505454f, 0.00003635151910165377f,
0.00003017929012024763f, 0.00002526320226989157f, 0.00002130859310621843f,
0.00001809838025320633f, 0.00001547057129129042f, 0.00001330284977336850f,
0.00001150184784075764f, 0.00000999557429990163f, 0.00000872799973630707f,
0.00000765513700977967f, 0.00000674217203751443f, 0.00000596134125832052f,
0.00000529034598065810f, 0.00000471115687557433f, 0.00000420910481110487f,
0.00000377218381260133f, 0.00000339051255477280f, 0.00000305591531679811f}

Definition at line 35 of file sky_nishita.cpp.

Referenced by single_scattering(), and sun_radiation().

◆ rayleigh_scale

const float rayleigh_scale = 8e3f
static

Definition at line 12 of file sky_nishita.cpp.

Referenced by density_rayleigh().

◆ sqr_G

const float sqr_G = mie_G * mie_G
static

Definition at line 16 of file sky_nishita.cpp.

Referenced by phase_mie().

◆ step_lambda

const float step_lambda = (max_wavelength - min_wavelength) / (num_wavelengths - 1)
static

Definition at line 24 of file sky_nishita.cpp.

Referenced by spec_to_xyz().

◆ steps

const int steps = 32
static