is_dithered_grayscale_(false),
is_dithered_color_(false),
is_preserving_blue_noise_offsets_(true) {
+ std::srand(std::time(nullptr));
GenerateBlueNoiseOffsets();
}
return;
}
+ std::srand(std::time(nullptr));
GenerateBlueNoiseOffsets();
}
if (!opencl_handle->HasBuffer(color_kernel_name,
kBufferBlueNoiseOffsetsName)) {
- if (!is_preserving_blue_noise_offsets_) {
- GenerateBlueNoiseOffsets();
- }
-
if (!opencl_handle->CreateKernelBuffer(
color_kernel_name, CL_MEM_READ_ONLY,
sizeof(unsigned int) * blue_noise_offsets_.size(), nullptr,
}
}
+ if (!is_preserving_blue_noise_offsets_) {
+ GenerateBlueNoiseOffsets();
+ }
+
if (!opencl_handle->SetKernelBufferData(
color_kernel_name, kBufferBlueNoiseOffsetsName,
blue_noise_offsets_.size() * sizeof(unsigned int),
}
void Image::GenerateBlueNoiseOffsets() {
- std::srand(std::time(nullptr));
- while (DuplicateBlueNoiseOffsetExists()) {
+ do {
for (unsigned int i = 0; i < blue_noise_offsets_.size(); ++i) {
blue_noise_offsets_.at(i) = rand() % kBlueNoiseOffsetMax;
}
- }
+ } while (DuplicateBlueNoiseOffsetExists());
}
bool Image::DuplicateBlueNoiseOffsetExists() const {