[Bf-blender-cvs] [287968377fc] tmp_hair_curves: Extend default material function for Eevee to work with hair systems.
Lukas Tönne
noreply at git.blender.org
Tue Jul 3 08:34:13 CEST 2018
Commit: 287968377fce17dda80cfb512d58d75fe65667fd
Author: Lukas Tönne
Date: Tue Jul 3 07:32:36 2018 +0100
Branches: tmp_hair_curves
https://developer.blender.org/rB287968377fce17dda80cfb512d58d75fe65667fd
Extend default material function for Eevee to work with hair systems.
===================================================================
M source/blender/draw/engines/eevee/eevee_materials.c
===================================================================
diff --git a/source/blender/draw/engines/eevee/eevee_materials.c b/source/blender/draw/engines/eevee/eevee_materials.c
index 02cbbc2f036..8d569773384 100644
--- a/source/blender/draw/engines/eevee/eevee_materials.c
+++ b/source/blender/draw/engines/eevee/eevee_materials.c
@@ -860,14 +860,16 @@ static struct DRWShadingGroup *EEVEE_default_shading_group_create(
**/
static struct DRWShadingGroup *EEVEE_default_shading_group_get(
EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata,
- Object *ob, ParticleSystem *psys, ModifierData *md,
+ Object *ob,
+ ParticleSystem *psys, ModifierData *md,
+ HairSystem *hsys, const HairDrawSettings *hdraw, struct Mesh *scalp,
bool is_hair, bool is_flat_normal, bool use_ssr, int shadow_method)
{
static int ssr_id;
ssr_id = (use_ssr) ? 1 : -1;
int options = VAR_MAT_MESH;
- BLI_assert(!is_hair || (ob && psys && md));
+ BLI_assert(!is_hair || (ob && psys && md) || (ob && hsys && hdraw && scalp));
if (is_hair) options |= VAR_MAT_HAIR;
if (is_flat_normal) options |= VAR_MAT_FLAT;
@@ -892,9 +894,17 @@ static struct DRWShadingGroup *EEVEE_default_shading_group_get(
}
if (is_hair) {
- DRWShadingGroup *shgrp = DRW_shgroup_particle_hair_create(ob, psys, md,
- vedata->psl->default_pass[options],
- e_data.default_lit[options]);
+ DRWShadingGroup *shgrp = NULL;
+ if (psys && md) {
+ shgrp = DRW_shgroup_particle_hair_create(ob, psys, md,
+ vedata->psl->default_pass[options],
+ e_data.default_lit[options]);
+ }
+ else if (hsys && hdraw && scalp) {
+ shgrp = DRW_shgroup_hair_create(ob, hsys, scalp, hdraw,
+ vedata->psl->default_pass[options],
+ e_data.default_lit[options]);
+ }
add_standard_uniforms(shgrp, sldata, vedata, &ssr_id, NULL, false, false);
return shgrp;
}
@@ -1248,7 +1258,7 @@ static void material_opaque(
if (*shgrp == NULL) {
bool use_ssr = ((effects->enabled_effects & EFFECT_SSR) != 0);
*shgrp = EEVEE_default_shading_group_get(sldata, vedata,
- NULL, NULL, NULL,
+ NULL, NULL, NULL, NULL, NULL, NULL,
false, use_flat_nor, use_ssr, linfo->shadow_method);
DRW_shgroup_uniform_vec3(*shgrp, "basecol", color_p, 1);
DRW_shgroup_uniform_float(*shgrp, "metallic", metal_p, 1);
@@ -1471,7 +1481,7 @@ static void material_particle_hair(
/* Fallback to default shader */
if (shgrp == NULL) {
shgrp = EEVEE_default_shading_group_get(sldata, vedata,
- ob, psys, md,
+ ob, psys, md, NULL, NULL, NULL,
true, false, use_ssr,
sldata->lamps->shadow_method);
DRW_shgroup_uniform_vec3(shgrp, "basecol", color_p, 1);
@@ -1570,8 +1580,8 @@ static void material_hair(
/* Fallback to default shader */
if (shgrp == NULL) {
shgrp = EEVEE_default_shading_group_get(sldata, vedata,
- NULL, NULL, NULL, true,
- false, use_ssr,
+ ob, NULL, NULL, hsys, draw_set, scalp,
+ true, false, use_ssr,
sldata->lamps->shadow_method);
DRW_shgroup_uniform_vec3(shgrp, "basecol", color_p, 1);
DRW_shgroup_uniform_float(shgrp, "metallic", metal_p, 1);
More information about the Bf-blender-cvs
mailing list