40 const int2 &image_size,
41 const int num_samples,
42 const int max_num_path_states,
43 const float scrambling_distance)
45 if (max_num_path_states == 1) {
50 const int64_t num_pixels = image_size.
x * image_size.
y;
51 const int64_t num_pixel_samples = num_pixels * num_samples;
53 if (max_num_path_states >= num_pixel_samples) {
55 return TileSize(image_size.
x, image_size.
y, num_samples);
66 const int num_path_states_per_sample = max_num_path_states / num_samples;
67 if (scrambling_distance < 0.9f && accel_rt) {
69 tile_size.
width =
min(image_size.
x, max_num_path_states);
70 tile_size.
height =
min(image_size.
y, max(max_num_path_states / tile_size.
width, 1));
77 if (num_path_states_per_sample != 0) {
86 if (num_samples == 1) {
93 static_cast<uint>(num_samples));
95 const int tile_area = tile_size.
width * tile_size.
height;
TileSize tile_calculate_best_size(const bool accel_rt, const int2 &image_size, const int num_samples, const int max_num_path_states, const float scrambling_distance)