forked from bartvdbraak/blender
Bugfix for GLSL: no specular/diffuse + only shadow for lamps
didn't work correct.
This commit is contained in:
parent
f1415bca7e
commit
2e653838c0
@ -682,8 +682,15 @@ static void shade_one_light(GPUShadeInput *shi, GPUShadeResult *shr, GPULamp *la
|
||||
|
||||
if(lamp->mode & LA_ONLYSHADOW) {
|
||||
GPU_link(mat, "shade_only_shadow", i, shadfac,
|
||||
GPU_dynamic_uniform(&lamp->dynenergy), shi->rgb, shi->specrgb,
|
||||
shr->diff, shr->spec, &shr->diff, &shr->spec);
|
||||
GPU_dynamic_uniform(&lamp->dynenergy), &shadfac);
|
||||
|
||||
if(!(lamp->mode & LA_NO_DIFF))
|
||||
GPU_link(mat, "shade_only_shadow_diffuse", shadfac, shi->rgb,
|
||||
shr->diff, &shr->diff);
|
||||
|
||||
if(!(lamp->mode & LA_NO_SPEC))
|
||||
GPU_link(mat, "shade_only_shadow_specular", shadfac, shi->specrgb,
|
||||
shr->spec, &shr->spec);
|
||||
|
||||
add_user_list(&mat->lamps, lamp);
|
||||
add_user_list(&lamp->materials, ma);
|
||||
|
@ -1483,11 +1483,18 @@ void ramp_rgbtobw(vec3 color, out float outval)
|
||||
outval = color.r*0.3 + color.g*0.58 + color.b*0.12;
|
||||
}
|
||||
|
||||
void shade_only_shadow(float i, float shadfac, float energy, vec3 rgb, vec3 specrgb, vec4 diff, vec4 spec, out vec4 outdiff, out vec4 outspec)
|
||||
void shade_only_shadow(float i, float shadfac, float energy, out float outshadfac)
|
||||
{
|
||||
shadfac = i*energy*(1.0 - shadfac);
|
||||
outshadfac = i*energy*(1.0 - shadfac);
|
||||
}
|
||||
|
||||
void shade_only_shadow_diffuse(float shadfac, vec3 rgb, vec4 diff, out vec4 outdiff)
|
||||
{
|
||||
outdiff = diff - vec4(rgb*shadfac, 0.0);
|
||||
}
|
||||
|
||||
void shade_only_shadow_specular(float shadfac, vec3 specrgb, vec4 spec, out vec4 outspec)
|
||||
{
|
||||
outspec = spec - vec4(specrgb*shadfac, 0.0);
|
||||
}
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user