Changeset View
Changeset View
Standalone View
Standalone View
source/blender/modifiers/intern/MOD_ocean.c
| Show First 20 Lines • Show All 262 Lines • ▼ Show 20 Lines | for (x = 0; x < gogd->res_x; x++) { | ||||
| luv++; | luv++; | ||||
| luv->uv[0] = x * gogd->ix; | luv->uv[0] = x * gogd->ix; | ||||
| luv->uv[1] = (y + 1) * gogd->iy; | luv->uv[1] = (y + 1) * gogd->iy; | ||||
| luv++; | luv++; | ||||
| } | } | ||||
| } | } | ||||
| static Mesh *generate_ocean_geometry(OceanModifierData *omd) | static Mesh *generate_ocean_geometry(OceanModifierData *omd, Mesh *mesh_orig) | ||||
| { | { | ||||
| Mesh *result; | Mesh *result; | ||||
| GenerateOceanGeometryData gogd; | GenerateOceanGeometryData gogd; | ||||
| int num_verts; | int num_verts; | ||||
| int num_polys; | int num_polys; | ||||
| Show All 11 Lines | static Mesh *generate_ocean_geometry(OceanModifierData *omd, Mesh *mesh_orig) | ||||
| gogd.sy = omd->size * omd->spatial_size; | gogd.sy = omd->size * omd->spatial_size; | ||||
| gogd.ox = -gogd.sx / 2.0f; | gogd.ox = -gogd.sx / 2.0f; | ||||
| gogd.oy = -gogd.sy / 2.0f; | gogd.oy = -gogd.sy / 2.0f; | ||||
| gogd.sx /= gogd.rx; | gogd.sx /= gogd.rx; | ||||
| gogd.sy /= gogd.ry; | gogd.sy /= gogd.ry; | ||||
| result = BKE_mesh_new_nomain(num_verts, 0, 0, num_polys * 4, num_polys); | result = BKE_mesh_new_nomain(num_verts, 0, 0, num_polys * 4, num_polys); | ||||
| BKE_mesh_copy_settings(result, mesh_orig); | |||||
| gogd.mverts = result->mvert; | gogd.mverts = result->mvert; | ||||
| gogd.mpolys = result->mpoly; | gogd.mpolys = result->mpoly; | ||||
| gogd.mloops = result->mloop; | gogd.mloops = result->mloop; | ||||
| TaskParallelSettings settings; | TaskParallelSettings settings; | ||||
| BLI_parallel_range_settings_defaults(&settings); | BLI_parallel_range_settings_defaults(&settings); | ||||
| settings.use_threading = use_threading; | settings.use_threading = use_threading; | ||||
| ▲ Show 20 Lines • Show All 65 Lines • ▼ Show 20 Lines | else { | ||||
| * This function is only called on an original object when applying the modifier | * This function is only called on an original object when applying the modifier | ||||
| * using the 'Apply Modifier' button, and thus it is not called frequently for | * using the 'Apply Modifier' button, and thus it is not called frequently for | ||||
| * simulation. */ | * simulation. */ | ||||
| allocated_ocean |= BKE_ocean_ensure(omd); | allocated_ocean |= BKE_ocean_ensure(omd); | ||||
| simulate_ocean_modifier(omd); | simulate_ocean_modifier(omd); | ||||
| } | } | ||||
| if (omd->geometry_mode == MOD_OCEAN_GEOM_GENERATE) { | if (omd->geometry_mode == MOD_OCEAN_GEOM_GENERATE) { | ||||
| result = generate_ocean_geometry(omd); | result = generate_ocean_geometry(omd, mesh); | ||||
| BKE_mesh_ensure_normals(result); | BKE_mesh_ensure_normals(result); | ||||
| } | } | ||||
| else if (omd->geometry_mode == MOD_OCEAN_GEOM_DISPLACE) { | else if (omd->geometry_mode == MOD_OCEAN_GEOM_DISPLACE) { | ||||
| BKE_id_copy_ex(NULL, &mesh->id, (ID **)&result, LIB_ID_COPY_LOCALIZE); | BKE_id_copy_ex(NULL, &mesh->id, (ID **)&result, LIB_ID_COPY_LOCALIZE); | ||||
| } | } | ||||
| cfra_for_cache = cfra_scene; | cfra_for_cache = cfra_scene; | ||||
| CLAMP(cfra_for_cache, omd->bakestart, omd->bakeend); | CLAMP(cfra_for_cache, omd->bakestart, omd->bakeend); | ||||
| ▲ Show 20 Lines • Show All 132 Lines • Show Last 20 Lines | |||||