Changeset View
Changeset View
Standalone View
Standalone View
intern/cycles/render/bake.cpp
| Show First 20 Lines • Show All 125 Lines • ▼ Show 20 Lines | |||||
| } | } | ||||
| void BakeManager::set_shader_limit(const size_t x, const size_t y) | 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, BakeData *bake_data, float result[]) | bool BakeManager::bake(Device *device, DeviceScene *dscene, Scene *scene, Progress& progress, ShaderEvalType shader_type, | ||||
| Transform* tfm, BakeData *bake_data, float result[]) | |||||
| { | { | ||||
| size_t num_pixels = bake_data->size(); | size_t num_pixels = bake_data->size(); | ||||
| progress.reset_sample(); | progress.reset_sample(); | ||||
| this->num_parts = 0; | this->num_parts = 0; | ||||
| /* calculate the total parts for the progress bar */ | /* calculate the total parts for the progress bar */ | ||||
| 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) { | ||||
| Show All 35 Lines | for(size_t shader_offset = 0; shader_offset < num_pixels; shader_offset += m_shader_limit) { | ||||
| device->mem_alloc(d_input, MEM_READ_ONLY); | device->mem_alloc(d_input, MEM_READ_ONLY); | ||||
| device->mem_copy_to(d_input); | device->mem_copy_to(d_input); | ||||
| device->mem_alloc(d_output, MEM_WRITE_ONLY); | device->mem_alloc(d_output, MEM_WRITE_ONLY); | ||||
| 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.tfm = *tfm; | |||||
| 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 = this->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::increment_sample_update, &progress); | ||||
| device->task_add(task); | device->task_add(task); | ||||
| ▲ Show 20 Lines • Show All 84 Lines • Show Last 20 Lines | |||||