Curves: Split curve EEVEE/workbench functions from particle hair
The GPU evaluation for curves will have to change significantly from the current particle hair drawing code, due to its more general use cases and support for more curve types. To simplify that process and avoid introducing regressions for the rendering of hair particle systems, this commit splits drawing functions for the curves object and particle hair. The changes are just inlining of functions and copying code where necessary. Differential Revision: https://developer.blender.org/D14576
This commit is contained in:
@@ -160,7 +160,7 @@ EEVEE_HairMotionData *EEVEE_motion_blur_hair_data_get(EEVEE_ObjectMotionData *mb
|
||||
{
|
||||
if (mb_data->hair_data == NULL) {
|
||||
/* Ugly, we allocate for each modifiers and just fill based on modifier index in the list. */
|
||||
int psys_len = (ob->type != OB_CURVES) ? BLI_listbase_count(&ob->modifiers) : 1;
|
||||
int psys_len = BLI_listbase_count(&ob->modifiers);
|
||||
EEVEE_HairMotionData *hair_step = MEM_callocN(
|
||||
sizeof(EEVEE_HairMotionData) + sizeof(hair_step->psys[0]) * psys_len, __func__);
|
||||
hair_step->psys_len = psys_len;
|
||||
@@ -170,6 +170,19 @@ EEVEE_HairMotionData *EEVEE_motion_blur_hair_data_get(EEVEE_ObjectMotionData *mb
|
||||
return mb_data->hair_data;
|
||||
}
|
||||
|
||||
EEVEE_HairMotionData *EEVEE_motion_blur_curves_data_get(EEVEE_ObjectMotionData *mb_data,
|
||||
Object *ob)
|
||||
{
|
||||
if (mb_data->hair_data == NULL) {
|
||||
EEVEE_HairMotionData *hair_step = MEM_callocN(
|
||||
sizeof(EEVEE_HairMotionData) + sizeof(hair_step->psys[0]), __func__);
|
||||
hair_step->psys_len = 1;
|
||||
hair_step->type = EEVEE_MOTION_DATA_HAIR;
|
||||
mb_data->hair_data = hair_step;
|
||||
}
|
||||
return mb_data->hair_data;
|
||||
}
|
||||
|
||||
/* View Layer data. */
|
||||
|
||||
void EEVEE_view_layer_data_free(void *storage)
|
||||
|
||||
Reference in New Issue
Block a user