[Bf-blender-cvs] [f987d9b7583] master: Merge branch 'blender-v3.3-release'
Joseph Eagar
noreply at git.blender.org
Wed Aug 31 17:33:32 CEST 2022
Commit: f987d9b7583c1ce45c6c19eec054d023e12a0f57
Author: Joseph Eagar
Date: Wed Aug 31 08:33:23 2022 -0700
Branches: master
https://developer.blender.org/rBf987d9b7583c1ce45c6c19eec054d023e12a0f57
Merge branch 'blender-v3.3-release'
===================================================================
===================================================================
diff --cc source/blender/blenkernel/intern/customdata.cc
index 51edf8308c3,1c7b78fd902..9a9128387b1
--- a/source/blender/blenkernel/intern/customdata.cc
+++ b/source/blender/blenkernel/intern/customdata.cc
@@@ -1688,16 -1652,7 +1678,16 @@@ static const LayerTypeInfo LAYERTYPEINF
nullptr,
nullptr,
nullptr,
- nullptr},
+ layerMaxNum_tface},
+ /* 6: CD_MCOL */
+ /* 4 MCol structs per face */
+ {sizeof(MCol[4]), "MCol", 4,
+ N_("Col"), nullptr, nullptr,
+ layerInterp_mcol, layerSwap_mcol, layerDefault_mcol,
+ nullptr, nullptr, nullptr,
+ nullptr, nullptr, nullptr,
+ nullptr, nullptr, nullptr,
- nullptr, nullptr, layerMaxNum_mloopcol},
++ nullptr, nullptr, nullptr},
/* 7: CD_ORIGINDEX */
{sizeof(int), "", 0, nullptr, nullptr, nullptr, nullptr, nullptr, layerDefault_origindex},
/* 8: CD_NORMAL */
diff --cc source/blender/modifiers/intern/MOD_ocean.c
index c84d1b56cec,b596d493453..fb28c08d60b
--- a/source/blender/modifiers/intern/MOD_ocean.c
+++ b/source/blender/modifiers/intern/MOD_ocean.c
@@@ -373,117 -373,111 +373,114 @@@ static Mesh *doOcean(ModifierData *md,
/* add vcols before displacement - allows lookup based on position */
if (omd->flag & MOD_OCEAN_GENERATE_FOAM) {
- if (CustomData_number_of_layers(&result->ldata, CD_PROP_BYTE_COLOR) < MAX_MCOL) {
- const int polys_num = result->totpoly;
- const int loops_num = result->totloop;
- MLoop *mloops = result->mloop;
- MLoopCol *mloopcols = CustomData_add_layer_named(
- &result->ldata, CD_PROP_BYTE_COLOR, CD_SET_DEFAULT, NULL, loops_num, omd->foamlayername);
-
- MLoopCol *mloopcols_spray = NULL;
- if (omd->flag & MOD_OCEAN_GENERATE_SPRAY) {
- mloopcols_spray = CustomData_add_layer_named(&result->ldata,
- CD_PROP_BYTE_COLOR,
- CD_SET_DEFAULT,
- NULL,
- loops_num,
- omd->spraylayername);
- }
+ const int polys_num = result->totpoly;
+ const int loops_num = result->totloop;
+ MLoop *mloops = result->mloop;
+ MLoopCol *mloopcols = CustomData_add_layer_named(
- &result->ldata, CD_PROP_BYTE_COLOR, CD_CALLOC, NULL, loops_num, omd->foamlayername);
++ &result->ldata, CD_PROP_BYTE_COLOR, CD_SET_DEFAULT, NULL, loops_num, omd->foamlayername);
+
+ MLoopCol *mloopcols_spray = NULL;
+ if (omd->flag & MOD_OCEAN_GENERATE_SPRAY) {
- mloopcols_spray = CustomData_add_layer_named(
- &result->ldata, CD_PROP_BYTE_COLOR, CD_CALLOC, NULL, loops_num, omd->spraylayername);
++ mloopcols_spray = CustomData_add_layer_named(&result->ldata,
++ CD_PROP_BYTE_COLOR,
++ CD_SET_DEFAULT,
++ NULL,
++ loops_num,
++ omd->spraylayername);
+ }
- if (mloopcols) { /* unlikely to fail */
- MPoly *mpolys = result->mpoly;
- MPoly *mp;
+ if (mloopcols) { /* unlikely to fail */
+ MPoly *mpolys = result->mpoly;
+ MPoly *mp;
- for (i = 0, mp = mpolys; i < polys_num; i++, mp++) {
- MLoop *ml = &mloops[mp->loopstart];
- MLoopCol *mlcol = &mloopcols[mp->loopstart];
+ for (i = 0, mp = mpolys; i < polys_num; i++, mp++) {
+ MLoop *ml = &mloops[mp->loopstart];
+ MLoopCol *mlcol = &mloopcols[mp->loopstart];
- MLoopCol *mlcolspray = NULL;
- if (omd->flag & MOD_OCEAN_GENERATE_SPRAY) {
- mlcolspray = &mloopcols_spray[mp->loopstart];
+ MLoopCol *mlcolspray = NULL;
+ if (omd->flag & MOD_OCEAN_GENERATE_SPRAY) {
+ mlcolspray = &mloopcols_spray[mp->loopstart];
+ }
+
+ for (j = mp->totloop; j--; ml++, mlcol++) {
+ const float *vco = mverts[ml->v].co;
+ const float u = OCEAN_CO(size_co_inv, vco[0]);
+ const float v = OCEAN_CO(size_co_inv, vco[1]);
+ float foam;
+
+ if (omd->oceancache && omd->cached == true) {
+ BKE_ocean_cache_eval_uv(omd->oceancache, &ocr, cfra_for_cache, u, v);
+ foam = ocr.foam;
+ CLAMP(foam, 0.0f, 1.0f);
+ }
+ else {
+ BKE_ocean_eval_uv(omd->ocean, &ocr, u, v);
+ foam = BKE_ocean_jminus_to_foam(ocr.Jminus, omd->foam_coverage);
}
- for (j = mp->totloop; j--; ml++, mlcol++) {
- const float *vco = mverts[ml->v].co;
- const float u = OCEAN_CO(size_co_inv, vco[0]);
- const float v = OCEAN_CO(size_co_inv, vco[1]);
- float foam;
+ mlcol->r = mlcol->g = mlcol->b = (char)(foam * 255);
+ /* This needs to be set (render engine uses) */
+ mlcol->a = 255;
- if (omd->oceancache && omd->cached == true) {
- BKE_ocean_cache_eval_uv(omd->oceancache, &ocr, cfra_for_cache, u, v);
- foam = ocr.foam;
- CLAMP(foam, 0.0f, 1.0f);
+ if (omd->flag & MOD_OCEAN_GENERATE_SPRAY) {
+ if (omd->flag & MOD_OCEAN_INVERT_SPRAY) {
+ mlcolspray->r = ocr.Eminus[0] * 255;
}
else {
- BKE_ocean_eval_uv(omd->ocean, &ocr, u, v);
- foam = BKE_ocean_jminus_to_foam(ocr.Jminus, omd->foam_coverage);
+ mlcolspray->r = ocr.Eplus[0] * 255;
}
-
- mlcol->r = mlcol->g = mlcol->b = (char)(foam * 255);
- /* This needs to be set (render engine uses) */
- mlcol->a = 255;
-
- if (omd->flag & MOD_OCEAN_GENERATE_SPRAY) {
- if (omd->flag & MOD_OCEAN_INVERT_SPRAY) {
- mlcolspray->r = ocr.Eminus[0] * 255;
- }
- else {
- mlcolspray->r = ocr.Eplus[0] * 255;
- }
- mlcolspray->g = 0;
- if (omd->flag & MOD_OCEAN_INVERT_SPRAY) {
- mlcolspray->b = ocr.Eminus[2] * 255;
- }
- else {
- mlcolspray->b = ocr.Eplus[2] * 255;
- }
- mlcolspray->a = 255;
+ mlcolspray->g = 0;
+ if (omd->flag & MOD_OCEAN_INVERT_SPRAY) {
+ mlcolspray->b = ocr.Eminus[2] * 255;
+ }
+ else {
+ mlcolspray->b = ocr.Eplus[2] * 255;
}
+ mlcolspray->a = 255;
}
}
}
}
-- }
-- /* displace the geometry */
++ /* displace the geometry */
-- /* NOTE: tried to parallelized that one and previous foam loop,
-- * but gives 20% slower results... odd. */
-- {
-- const int verts_num = result->totvert;
++ /* NOTE: tried to parallelized that one and previous foam loop,
++ * but gives 20% slower results... odd. */
++ {
++ const int verts_num = result->totvert;
-- for (i = 0; i < verts_num; i++) {
-- float *vco = mverts[i].co;
-- const float u = OCEAN_CO(size_co_inv, vco[0]);
-- const float v = OCEAN_CO(size_co_inv, vco[1]);
++ for (i = 0; i < verts_num; i++) {
++ float *vco = mverts[i].co;
++ const float u = OCEAN_CO(size_co_inv, vco[0]);
++ const float v = OCEAN_CO(size_co_inv, vco[1]);
-- if (omd->oceancache && omd->cached == true) {
-- BKE_ocean_cache_eval_uv(omd->oceancache, &ocr, cfra_for_cache, u, v);
-- }
-- else {
-- BKE_ocean_eval_uv(omd->ocean, &ocr, u, v);
-- }
++ if (omd->oceancache && omd->cached == true) {
++ BKE_ocean_cache_eval_uv(omd->oceancache, &ocr, cfra_for_cache, u, v);
++ }
++ else {
++ BKE_ocean_eval_uv(omd->ocean, &ocr, u, v);
++ }
-- vco[2] += ocr.disp[1];
++ vco[2] += ocr.disp[1];
-- if (omd->chop_amount > 0.0f) {
-- vco[0] += ocr.disp[0];
-- vco[1] += ocr.disp[2];
++ if (omd->chop_amount > 0.0f) {
++ vco[0] += ocr.disp[0];
++ vco[1] += ocr.disp[2];
++ }
}
}
-- }
-- BKE_mesh_tag_coords_changed(mesh);
++ BKE_mesh_tag_coords_changed(mesh);
-- if (allocated_ocean) {
-- BKE_ocean_free(omd->ocean);
-- omd->ocean = NULL;
-- }
++ if (allocated_ocean) {
++ BKE_ocean_free(omd->ocean);
++ omd->ocean = NULL;
++ }
# undef OCEAN_CO
-- return result;
--}
++ return result;
++ }
#else /* WITH_OCEANSIM */
static Mesh *doOcean(ModifierData *UNUSED(md), const ModifierEvalContext *UNUSED(ctx), Mesh *mesh)
{
@@@ -491,249 -485,249 +488,249 @@@
}
#endif /* WITH_OCEANSIM */
--static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh)
--{
-- return doOcean(md, ctx, mesh);
--}
--// #define WITH_OCEANSIM
--static void panel_draw(const bContext *UNUSED(C), Panel *panel)
--{
-- uiLayout *layout = panel->layout;
++ static Mesh *modifyMesh(ModifierData * md, const ModifierEvalContext *ctx, Mesh *mesh)
++ {
++ return doOcean(md, ctx, mesh);
++ }
++ // #define WITH_OCEANSIM
++ static void panel_draw(const bContext *UNUSED(C), Panel *panel)
++ {
++ uiLayout *layout = panel->layout;
#ifdef WITH_OCEANSIM
-- uiLayout *col, *sub;
++ uiLayout *col, *sub;
-- PointerRNA ob_ptr;
-- PointerRNA *ptr = modifier_panel_get_property_pointers(panel, &ob_ptr);
++ PointerRNA ob_ptr;
++ PointerRNA *ptr = modifier_panel_get_property_pointers(panel, &ob_ptr);
-- uiLayoutSetPropSep(layout, true);
++ uiLayoutSetPropSep(layout, true);
-- col = uiLayoutColumn(layout, false);
-- uiItemR(col, ptr, "geometry_mode", 0, NULL, ICON_NONE);
-- if (RNA_enum_get(ptr, "geometry_mode") == MOD_OCEAN_GEOM_GENERATE) {
-- sub = uiLayoutColumn(col, t
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list