Fix T101896 Eevee: Custom object properties don't work in shader for Curves objects
Move the material resources binding inside the `DRW_shgroup_curves_create_sub` so that `DRW_shgroup_call_no_cull` extracts the attributes.
This commit is contained in:
@@ -924,17 +924,14 @@ void EEVEE_particle_hair_cache_populate(EEVEE_Data *vedata,
|
||||
if (matcache.depth_grp) {
|
||||
*matcache.depth_grp_p = DRW_shgroup_hair_create_sub(
|
||||
ob, psys, md, matcache.depth_grp, NULL);
|
||||
DRW_shgroup_add_material_resources(*matcache.depth_grp_p, matcache.shading_gpumat);
|
||||
}
|
||||
if (matcache.shading_grp) {
|
||||
*matcache.shading_grp_p = DRW_shgroup_hair_create_sub(
|
||||
ob, psys, md, matcache.shading_grp, matcache.shading_gpumat);
|
||||
DRW_shgroup_add_material_resources(*matcache.shading_grp_p, matcache.shading_gpumat);
|
||||
}
|
||||
if (matcache.shadow_grp) {
|
||||
*matcache.shadow_grp_p = DRW_shgroup_hair_create_sub(
|
||||
ob, psys, md, matcache.shadow_grp, NULL);
|
||||
DRW_shgroup_add_material_resources(*matcache.shadow_grp_p, matcache.shading_gpumat);
|
||||
*cast_shadow = true;
|
||||
}
|
||||
|
||||
@@ -954,16 +951,13 @@ void EEVEE_object_curves_cache_populate(EEVEE_Data *vedata,
|
||||
|
||||
if (matcache.depth_grp) {
|
||||
*matcache.depth_grp_p = DRW_shgroup_curves_create_sub(ob, matcache.depth_grp, NULL);
|
||||
DRW_shgroup_add_material_resources(*matcache.depth_grp_p, matcache.shading_gpumat);
|
||||
}
|
||||
if (matcache.shading_grp) {
|
||||
*matcache.shading_grp_p = DRW_shgroup_curves_create_sub(
|
||||
ob, matcache.shading_grp, matcache.shading_gpumat);
|
||||
DRW_shgroup_add_material_resources(*matcache.shading_grp_p, matcache.shading_gpumat);
|
||||
}
|
||||
if (matcache.shadow_grp) {
|
||||
*matcache.shadow_grp_p = DRW_shgroup_curves_create_sub(ob, matcache.shadow_grp, NULL);
|
||||
DRW_shgroup_add_material_resources(*matcache.shadow_grp_p, matcache.shading_gpumat);
|
||||
*cast_shadow = true;
|
||||
}
|
||||
|
||||
|
||||
@@ -394,6 +394,11 @@ DRWShadingGroup *DRW_shgroup_curves_create_sub(Object *object,
|
||||
DRW_shgroup_uniform_float_copy(shgrp, "hairRadRoot", hair_rad_root);
|
||||
DRW_shgroup_uniform_float_copy(shgrp, "hairRadTip", hair_rad_tip);
|
||||
DRW_shgroup_uniform_bool_copy(shgrp, "hairCloseTip", hair_close_tip);
|
||||
if (gpu_material) {
|
||||
/* \note: This needs to happen before the drawcall to allow correct attribute extraction.
|
||||
* (see T101896) */
|
||||
DRW_shgroup_add_material_resources(shgrp, gpu_material);
|
||||
}
|
||||
/* TODO(fclem): Until we have a better way to cull the curves and render with orco, bypass
|
||||
* culling test. */
|
||||
GPUBatch *geom = curves_cache->final[subdiv].proc_hairs[thickness_res - 1];
|
||||
|
||||
@@ -293,6 +293,11 @@ DRWShadingGroup *DRW_shgroup_hair_create_sub(Object *object,
|
||||
DRW_shgroup_uniform_float_copy(shgrp, "hairRadRoot", hair_rad_root);
|
||||
DRW_shgroup_uniform_float_copy(shgrp, "hairRadTip", hair_rad_tip);
|
||||
DRW_shgroup_uniform_bool_copy(shgrp, "hairCloseTip", hair_close_tip);
|
||||
if (gpu_material) {
|
||||
/* \note: This needs to happen before the drawcall to allow correct attribute extraction.
|
||||
* (see T101896) */
|
||||
DRW_shgroup_add_material_resources(shgrp, gpu_material);
|
||||
}
|
||||
/* TODO(fclem): Until we have a better way to cull the hair and render with orco, bypass
|
||||
* culling test. */
|
||||
GPUBatch *geom = hair_cache->final[subdiv].proc_hairs[thickness_res - 1];
|
||||
|
||||
Reference in New Issue
Block a user