public static Colour lightValue(World world) {
    final float dayValue = dayValue(world) ;
    if (dayValue == 1) return DAY_LIGHT ;
    if (dayValue == 0) return NIGHT_LIGHT ;
    
    final Colour a, b ;
    final float w ;
    if (dayValue > 0.5f) {
      a = DAY_LIGHT ;
      b = isMorning(world) ? MORNING_LIGHT : EVENING_LIGHT ;
      w = (dayValue - 0.5f) * 2 ;
    }
    else {
      a = isMorning(world) ? MORNING_LIGHT : EVENING_LIGHT ;
      b = NIGHT_LIGHT ;
      w = dayValue * 2 ;
    }
    
    final Colour blend = new Colour().set(
      (a.r * w) + (b.r * (1 - w)),
      (a.g * w) + (b.g * (1 - w)),
      (a.b * w) + (b.b * (1 - w)),
      1
    ) ;
    return blend ;
  }