Merge branch 'blender-v2.83-release'
This commit is contained in:
commit
cdc399a055
Notes:
blender-bot
2023-02-14 09:48:25 +01:00
Referenced by issue #75758, Fluid: Outflow geometry is not working Referenced by issue #75729, Fluid: No Obstacle after resume baking
|
@ -199,32 +199,33 @@ ccl_device float pmj_sample_1D(KernelGlobals *kg, int sample, int rng_hash, int
|
|||
{
|
||||
/* Fallback to random */
|
||||
if (sample >= NUM_PMJ_SAMPLES) {
|
||||
int p = rng_hash + dimension;
|
||||
const int p = rng_hash + dimension;
|
||||
return cmj_randfloat(sample, p);
|
||||
}
|
||||
uint tmp_rng = cmj_hash_simple(dimension, rng_hash);
|
||||
int index = ((dimension % NUM_PMJ_PATTERNS) * NUM_PMJ_SAMPLES + sample) * 2;
|
||||
return __uint_as_float(kernel_tex_fetch(__sample_pattern_lut, index) ^ (tmp_rng & 0x007fffff)) -
|
||||
1.0f;
|
||||
else {
|
||||
const uint mask = cmj_hash_simple(dimension, rng_hash) & 0x007fffff;
|
||||
const int index = ((dimension % NUM_PMJ_PATTERNS) * NUM_PMJ_SAMPLES + sample) * 2;
|
||||
return __uint_as_float(kernel_tex_fetch(__sample_pattern_lut, index) ^ mask) - 1.0f;
|
||||
}
|
||||
}
|
||||
|
||||
ccl_device void pmj_sample_2D(
|
||||
KernelGlobals *kg, int sample, int rng_hash, int dimension, float *fx, float *fy)
|
||||
ccl_device float2 pmj_sample_2D(KernelGlobals *kg, int sample, int rng_hash, int dimension)
|
||||
{
|
||||
if (sample >= NUM_PMJ_SAMPLES) {
|
||||
int p = rng_hash + dimension;
|
||||
*fx = cmj_randfloat(sample, p);
|
||||
*fy = cmj_randfloat(sample, p + 1);
|
||||
return;
|
||||
const int p = rng_hash + dimension;
|
||||
const float fx = cmj_randfloat(sample, p);
|
||||
const float fy = cmj_randfloat(sample, p + 1);
|
||||
return make_float2(fx, fy);
|
||||
}
|
||||
else {
|
||||
const int index = ((dimension % NUM_PMJ_PATTERNS) * NUM_PMJ_SAMPLES + sample) * 2;
|
||||
const uint maskx = cmj_hash_simple(dimension, rng_hash) & 0x007fffff;
|
||||
const uint masky = cmj_hash_simple(dimension + 1, rng_hash) & 0x007fffff;
|
||||
const float fx = __uint_as_float(kernel_tex_fetch(__sample_pattern_lut, index) ^ maskx) - 1.0f;
|
||||
const float fy = __uint_as_float(kernel_tex_fetch(__sample_pattern_lut, index + 1) ^ masky) -
|
||||
1.0f;
|
||||
return make_float2(fx, fy);
|
||||
}
|
||||
uint tmp_rng = cmj_hash_simple(dimension, rng_hash);
|
||||
int index = ((dimension % NUM_PMJ_PATTERNS) * NUM_PMJ_SAMPLES + sample) * 2;
|
||||
*fx = __uint_as_float(kernel_tex_fetch(__sample_pattern_lut, index) ^ (tmp_rng & 0x007fffff)) -
|
||||
1.0f;
|
||||
tmp_rng = cmj_hash_simple(dimension + 1, rng_hash);
|
||||
*fy = __uint_as_float(kernel_tex_fetch(__sample_pattern_lut, index + 1) ^
|
||||
(tmp_rng & 0x007fffff)) -
|
||||
1.0f;
|
||||
}
|
||||
|
||||
CCL_NAMESPACE_END
|
||||
|
|
|
@ -102,7 +102,9 @@ ccl_device_forceinline void path_rng_2D(KernelGlobals *kg,
|
|||
return;
|
||||
#endif
|
||||
if (kernel_data.integrator.sampling_pattern == SAMPLING_PATTERN_PMJ) {
|
||||
pmj_sample_2D(kg, sample, rng_hash, dimension, fx, fy);
|
||||
const float2 f = pmj_sample_2D(kg, sample, rng_hash, dimension);
|
||||
*fx = f.x;
|
||||
*fy = f.y;
|
||||
return;
|
||||
}
|
||||
#ifdef __CMJ__
|
||||
|
|
|
@ -1095,7 +1095,7 @@ def brush_basic_gpencil_paint_settings(layout, context, brush, *, compact=False)
|
|||
settings = context.tool_settings.gpencil_sculpt
|
||||
if compact:
|
||||
row = layout.row(align=True)
|
||||
row.prop(settings, "use_thickness_curve", text="", icon='CURVE_DATA')
|
||||
row.prop(settings, "use_thickness_curve", text="", icon='SPHERECURVE')
|
||||
sub = row.row(align=True)
|
||||
sub.active = settings.use_thickness_curve
|
||||
sub.popover(
|
||||
|
|
|
@ -305,7 +305,7 @@ void BKE_subdiv_ccg_neighbor_coords_get(const SubdivCCG *subdiv_ccg,
|
|||
const bool include_duplicates,
|
||||
SubdivCCGNeighbors *r_neighbors);
|
||||
|
||||
int BKE_subdiv_cgg_grid_to_face_index(const SubdivCCG *subdiv_ccg, const int grid_index);
|
||||
int BKE_subdiv_ccg_grid_to_face_index(const SubdivCCG *subdiv_ccg, const int grid_index);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
|
@ -388,7 +388,7 @@ void BKE_pbvh_sync_face_sets_to_grids(PBVH *bvh)
|
|||
const int gridsize = bvh->gridkey.grid_size;
|
||||
for (int i = 0; i < bvh->totgrid; i++) {
|
||||
BLI_bitmap *gh = bvh->grid_hidden[i];
|
||||
const int face_index = BKE_subdiv_cgg_grid_to_face_index(bvh->subdiv_ccg, i);
|
||||
const int face_index = BKE_subdiv_ccg_grid_to_face_index(bvh->subdiv_ccg, i);
|
||||
if (!gh && bvh->face_sets[face_index] < 0) {
|
||||
gh = bvh->grid_hidden[i] = BLI_BITMAP_NEW(bvh->gridkey.grid_area, "partialvis_update_grids");
|
||||
}
|
||||
|
|
|
@ -1781,7 +1781,7 @@ void BKE_subdiv_ccg_neighbor_coords_get(const SubdivCCG *subdiv_ccg,
|
|||
#endif
|
||||
}
|
||||
|
||||
int BKE_subdiv_cgg_grid_to_face_index(const SubdivCCG *subdiv_ccg, const int grid_index)
|
||||
int BKE_subdiv_ccg_grid_to_face_index(const SubdivCCG *subdiv_ccg, const int grid_index)
|
||||
{
|
||||
// Subdiv *subdiv = subdiv_ccg->subdiv; /* UNUSED */
|
||||
// OpenSubdiv_TopologyRefiner *topology_refiner = subdiv->topology_refiner; /* UNUSED */
|
||||
|
|
|
@ -222,7 +222,7 @@ int SCULPT_active_face_set_get(SculptSession *ss)
|
|||
case PBVH_FACES:
|
||||
return ss->face_sets[ss->active_face_index];
|
||||
case PBVH_GRIDS: {
|
||||
const int face_index = BKE_subdiv_cgg_grid_to_face_index(ss->subdiv_ccg,
|
||||
const int face_index = BKE_subdiv_ccg_grid_to_face_index(ss->subdiv_ccg,
|
||||
ss->active_grid_index);
|
||||
return ss->face_sets[face_index];
|
||||
}
|
||||
|
@ -359,7 +359,7 @@ bool SCULPT_vertex_all_face_sets_visible_get(SculptSession *ss, int index)
|
|||
case PBVH_GRIDS: {
|
||||
const CCGKey *key = BKE_pbvh_get_grid_key(ss->pbvh);
|
||||
const int grid_index = index / key->grid_area;
|
||||
const int face_index = BKE_subdiv_cgg_grid_to_face_index(ss->subdiv_ccg, grid_index);
|
||||
const int face_index = BKE_subdiv_ccg_grid_to_face_index(ss->subdiv_ccg, grid_index);
|
||||
return ss->face_sets[face_index] > 0;
|
||||
}
|
||||
}
|
||||
|
@ -382,7 +382,7 @@ void SCULPT_vertex_face_set_set(SculptSession *ss, int index, int face_set)
|
|||
case PBVH_GRIDS: {
|
||||
const CCGKey *key = BKE_pbvh_get_grid_key(ss->pbvh);
|
||||
const int grid_index = index / key->grid_area;
|
||||
const int face_index = BKE_subdiv_cgg_grid_to_face_index(ss->subdiv_ccg, grid_index);
|
||||
const int face_index = BKE_subdiv_ccg_grid_to_face_index(ss->subdiv_ccg, grid_index);
|
||||
if (ss->face_sets[face_index] > 0) {
|
||||
ss->face_sets[face_index] = abs(face_set);
|
||||
}
|
||||
|
@ -409,7 +409,7 @@ int SCULPT_vertex_face_set_get(SculptSession *ss, int index)
|
|||
case PBVH_GRIDS: {
|
||||
const CCGKey *key = BKE_pbvh_get_grid_key(ss->pbvh);
|
||||
const int grid_index = index / key->grid_area;
|
||||
const int face_index = BKE_subdiv_cgg_grid_to_face_index(ss->subdiv_ccg, grid_index);
|
||||
const int face_index = BKE_subdiv_ccg_grid_to_face_index(ss->subdiv_ccg, grid_index);
|
||||
return ss->face_sets[face_index];
|
||||
}
|
||||
}
|
||||
|
@ -433,7 +433,7 @@ bool SCULPT_vertex_has_face_set(SculptSession *ss, int index, int face_set)
|
|||
case PBVH_GRIDS: {
|
||||
const CCGKey *key = BKE_pbvh_get_grid_key(ss->pbvh);
|
||||
const int grid_index = index / key->grid_area;
|
||||
const int face_index = BKE_subdiv_cgg_grid_to_face_index(ss->subdiv_ccg, grid_index);
|
||||
const int face_index = BKE_subdiv_ccg_grid_to_face_index(ss->subdiv_ccg, grid_index);
|
||||
return ss->face_sets[face_index] == face_set;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -741,7 +741,7 @@ void GPU_pbvh_grid_buffers_update(GPU_PBVH_Buffers *buffers,
|
|||
uchar face_set_color[4] = {UCHAR_MAX, UCHAR_MAX, UCHAR_MAX, UCHAR_MAX};
|
||||
|
||||
if (show_face_sets && subdiv_ccg && sculpt_face_sets) {
|
||||
const int face_index = BKE_subdiv_cgg_grid_to_face_index(subdiv_ccg, grid_index);
|
||||
const int face_index = BKE_subdiv_ccg_grid_to_face_index(subdiv_ccg, grid_index);
|
||||
|
||||
const int fset = abs(sculpt_face_sets[face_index]);
|
||||
/* Skip for the default color Face Set to render it white. */
|
||||
|
|
Loading…
Reference in New Issue