Changeset View
Changeset View
Standalone View
Standalone View
intern/cycles/render/bake.cpp
| Show First 20 Lines • Show All 129 Lines • ▼ Show 20 Lines | void BakeManager::set_shader_limit(const size_t x, const size_t y) | ||||
| m_shader_limit = x * y; | m_shader_limit = x * y; | ||||
| m_shader_limit = (size_t)pow(2, ceil(log(m_shader_limit)/log(2))); | m_shader_limit = (size_t)pow(2, ceil(log(m_shader_limit)/log(2))); | ||||
| } | } | ||||
| bool BakeManager::bake(Device *device, DeviceScene *dscene, Scene *scene, Progress& progress, ShaderEvalType shader_type, const int pass_filter, BakeData *bake_data, float result[]) | bool BakeManager::bake(Device *device, DeviceScene *dscene, Scene *scene, Progress& progress, ShaderEvalType shader_type, const int pass_filter, BakeData *bake_data, float result[]) | ||||
| { | { | ||||
| size_t num_pixels = bake_data->size(); | size_t num_pixels = bake_data->size(); | ||||
| progress.reset_sample(); | int num_samples = is_aa_pass(shader_type)? scene->integrator->aa_samples : 1; | ||||
sergey: While you're on it, can we drop use of `this->` ?
Calling local variable same as member is… | |||||
| this->num_parts = 0; | |||||
| /* calculate the total parts for the progress bar */ | /* calculate the total pixel samples for the progress bar */ | ||||
| total_pixel_samples = 0; | |||||
| for(size_t shader_offset = 0; shader_offset < num_pixels; shader_offset += m_shader_limit) { | for(size_t shader_offset = 0; shader_offset < num_pixels; shader_offset += m_shader_limit) { | ||||
| size_t shader_size = (size_t)fminf(num_pixels - shader_offset, m_shader_limit); | size_t shader_size = (size_t)fminf(num_pixels - shader_offset, m_shader_limit); | ||||
| total_pixel_samples += shader_size * num_samples; | |||||
| DeviceTask task(DeviceTask::SHADER); | |||||
| task.shader_w = shader_size; | |||||
| this->num_parts += device->get_split_task_count(task); | |||||
| } | } | ||||
| progress.reset_sample(); | |||||
| this->num_samples = is_aa_pass(shader_type)? scene->integrator->aa_samples : 1; | progress.set_total_pixel_samples(total_pixel_samples); | ||||
| for(size_t shader_offset = 0; shader_offset < num_pixels; shader_offset += m_shader_limit) { | for(size_t shader_offset = 0; shader_offset < num_pixels; shader_offset += m_shader_limit) { | ||||
| size_t shader_size = (size_t)fminf(num_pixels - shader_offset, m_shader_limit); | size_t shader_size = (size_t)fminf(num_pixels - shader_offset, m_shader_limit); | ||||
| /* setup input for device task */ | /* setup input for device task */ | ||||
| device_vector<uint4> d_input; | device_vector<uint4> d_input; | ||||
| uint4 *d_input_data = d_input.resize(shader_size * 2); | uint4 *d_input_data = d_input.resize(shader_size * 2); | ||||
| size_t d_input_size = 0; | size_t d_input_size = 0; | ||||
| Show All 22 Lines | for(size_t shader_offset = 0; shader_offset < num_pixels; shader_offset += m_shader_limit) { | ||||
| DeviceTask task(DeviceTask::SHADER); | DeviceTask task(DeviceTask::SHADER); | ||||
| task.shader_input = d_input.device_pointer; | task.shader_input = d_input.device_pointer; | ||||
| task.shader_output = d_output.device_pointer; | task.shader_output = d_output.device_pointer; | ||||
| task.shader_eval_type = shader_type; | task.shader_eval_type = shader_type; | ||||
| task.shader_filter = pass_filter; | task.shader_filter = pass_filter; | ||||
| task.shader_x = 0; | task.shader_x = 0; | ||||
| task.offset = shader_offset; | task.offset = shader_offset; | ||||
| task.shader_w = d_output.size(); | task.shader_w = d_output.size(); | ||||
| task.num_samples = this->num_samples; | task.num_samples = num_samples; | ||||
| task.get_cancel = function_bind(&Progress::get_cancel, &progress); | task.get_cancel = function_bind(&Progress::get_cancel, &progress); | ||||
| task.update_progress_sample = function_bind(&Progress::increment_sample_update, &progress); | task.update_progress_sample = function_bind(&Progress::add_samples_update, &progress, _1, _2); | ||||
| device->task_add(task); | device->task_add(task); | ||||
| device->task_wait(); | device->task_wait(); | ||||
| if(progress.get_cancel()) { | if(progress.get_cancel()) { | ||||
| device->mem_free(d_input); | device->mem_free(d_input); | ||||
| device->mem_free(d_output); | device->mem_free(d_output); | ||||
| m_is_baking = false; | m_is_baking = false; | ||||
| ▲ Show 20 Lines • Show All 83 Lines • Show Last 20 Lines | |||||
While you're on it, can we drop use of this-> ?
Calling local variable same as member is confusing anyway and should be avoid.