forked from bartvdbraak/blender
fix for bug that caused transparant shadow change how a texture
rendered itself. this happened when transparent shadow ray hit a face with same material as where ray started. is this understandable? i guess not! :P the actual fix is just a few lines, to store material locally before going to trace transp shadow.
This commit is contained in:
parent
6727eb6104
commit
0d6533a48f
@ -1836,9 +1836,14 @@ int ray_trace_shadow_rad(ShadeInput *ship, ShadeResult *shr)
|
||||
void ray_shadow(ShadeInput *shi, LampRen *lar, float *shadfac, int mask)
|
||||
{
|
||||
Isect isec;
|
||||
Material stored;
|
||||
float fac, div=0.0, lampco[3];
|
||||
|
||||
if(shi->matren->mode & MA_SHADOW_TRA) isec.mode= DDA_SHADOW_TRA;
|
||||
if(shi->matren->mode & MA_SHADOW_TRA) {
|
||||
isec.mode= DDA_SHADOW_TRA;
|
||||
/* needed to prevent shade_ray changing matren (textures) */
|
||||
stored= *(shi->matren);
|
||||
}
|
||||
else isec.mode= DDA_SHADOW;
|
||||
|
||||
shadfac[3]= 1.0; // 1=full light
|
||||
@ -1957,5 +1962,12 @@ void ray_shadow(ShadeInput *shi, LampRen *lar, float *shadfac, int mask)
|
||||
else
|
||||
shadfac[3]= 1.0-fac/div;
|
||||
}
|
||||
|
||||
if(shi->matren->mode & MA_SHADOW_TRA) {
|
||||
/* needed to prevent shade_ray changing matren (textures) */
|
||||
*(shi->matren)= stored;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user