Changeset View
Changeset View
Standalone View
Standalone View
intern/cycles/blender/blender_session.cpp
| Show First 20 Lines • Show All 531 Lines • ▼ Show 20 Lines | if(bp.object_id() == object_id) { | ||||
| data->set(i, bp.primitive_id(), bp.uv(), bp.du_dx(), bp.du_dy(), bp.dv_dx(), bp.dv_dy()); | data->set(i, bp.primitive_id(), bp.uv(), bp.du_dx(), bp.du_dy(), bp.dv_dx(), bp.dv_dy()); | ||||
| } else { | } else { | ||||
| data->set_null(i); | data->set_null(i); | ||||
| } | } | ||||
| bp = bp.next(); | bp = bp.next(); | ||||
| } | } | ||||
| } | } | ||||
| void BlenderSession::bake(BL::Object b_object, const string& pass_type, const int object_id, BL::BakePixel pixel_array, const size_t num_pixels, const int /*depth*/, float result[]) | void BlenderSession::bake(BL::Object b_object, const string& pass_type, const int object_id, BL::BakePixel pixel_array, | ||||
| const size_t num_pixels, const int /*depth*/, BL::Array<float, 16> *matrix, float result[]) | |||||
| { | { | ||||
| ShaderEvalType shader_type = get_shader_type(pass_type); | ShaderEvalType shader_type = get_shader_type(pass_type); | ||||
| size_t object_index = OBJECT_NONE; | size_t object_index = OBJECT_NONE; | ||||
| int tri_offset = 0; | int tri_offset = 0; | ||||
| Transform tfm; | |||||
| if (matrix) | |||||
| tfm = get_transform(*matrix); | |||||
| /* ensure kernels are loaded before we do any scene updates */ | /* ensure kernels are loaded before we do any scene updates */ | ||||
| session->load_kernels(); | session->load_kernels(); | ||||
| if(session->progress.get_cancel()) | if(session->progress.get_cancel()) | ||||
| return; | return; | ||||
| if(shader_type == SHADER_EVAL_UV) { | if(shader_type == SHADER_EVAL_UV) { | ||||
| ▲ Show 20 Lines • Show All 44 Lines • ▼ Show 20 Lines | void BlenderSession::bake(BL::Object b_object, const string& pass_type, const int object_id, BL::BakePixel pixel_array, | ||||
| /* set number of samples */ | /* set number of samples */ | ||||
| session->tile_manager.set_samples(session_params.samples); | session->tile_manager.set_samples(session_params.samples); | ||||
| session->reset(buffer_params, session_params.samples); | session->reset(buffer_params, session_params.samples); | ||||
| session->update_scene(); | session->update_scene(); | ||||
| session->progress.set_update_callback(function_bind(&BlenderSession::update_bake_progress, this)); | session->progress.set_update_callback(function_bind(&BlenderSession::update_bake_progress, this)); | ||||
| scene->bake_manager->bake(scene->device, &scene->dscene, scene, session->progress, shader_type, bake_data, result); | scene->bake_manager->bake(scene->device, &scene->dscene, scene, session->progress, shader_type, matrix ? &tfm : NULL, bake_data, result); | ||||
| /* free all memory used (host and device), so we wouldn't leave render | /* free all memory used (host and device), so we wouldn't leave render | ||||
| * engine with extra memory allocated | * engine with extra memory allocated | ||||
| */ | */ | ||||
| session->device_free(); | session->device_free(); | ||||
| delete sync; | delete sync; | ||||
| ▲ Show 20 Lines • Show All 549 Lines • Show Last 20 Lines | |||||