Exemple #1
0
 skylight(yaw_pitch sun_position, float turbidity = 6.0f)
     : sun_pos_    (from_spherical(sun_position))
     , turbidity_  (turbidity)
 {
     thetas_ = std::acos(dot_prod(sun_pos_, vector(0, 0, 1)));
     compute_zenith_color();
     compute_distribution_coefficients();
     compute_term();
 }
Exemple #2
0
void sun_lightmap::add(sun_lightmap::rays& r, float raylen,
                       yaw_pitch dir2) const
{
    const vector half(0.5, 0.5, 0.5);
    for (int d(0); d < 6; ++d) {
        vector normal(dir_vector[d]);
        vector origin(half + normal * 0.6f);
        vector dir(from_spherical(dir2.x, dir2.y));
        float weight(dot_prod(dir, normal));
        if (weight > 0)
            r[d].add(voxel_raycast(origin, origin + dir * raylen), weight);
    }
}
Exemple #3
0
const vector3<t> from_spherical(const vector3<t>& sph)
{
    return from_spherical(sph.x, sph.y, sph.z);
}
Exemple #4
0
const vector3<t> from_spherical(const vector2<t>& yaw_pitch)
{
    return from_spherical(yaw_pitch.x, yaw_pitch.y);
}
Exemple #5
0
const vector3<t> from_spherical(t phi, t theta, t distance)
{
    return from_spherical(phi, theta) * distance;
}