Fix #22432: unrenderable objects cast shadow in GLSL. Committing
patch by Matt, I only reviewed it.
This commit is contained in:
@@ -5557,6 +5557,9 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag)
|
|||||||
if (ob!=scene->obedit) {
|
if (ob!=scene->obedit) {
|
||||||
if (ob->restrictflag & OB_RESTRICT_VIEW)
|
if (ob->restrictflag & OB_RESTRICT_VIEW)
|
||||||
return;
|
return;
|
||||||
|
if ((ob->restrictflag & OB_RESTRICT_RENDER) &&
|
||||||
|
(v3d->flag2 & V3D_RENDER_OVERRIDE))
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* XXX particles are not safe for simultaneous threaded render */
|
/* XXX particles are not safe for simultaneous threaded render */
|
||||||
|
@@ -1830,15 +1830,15 @@ static void gpu_update_lamps_shadows(Scene *scene, View3D *v3d)
|
|||||||
for(shadow=shadows.first; shadow; shadow=shadow->next) {
|
for(shadow=shadows.first; shadow; shadow=shadow->next) {
|
||||||
/* this needs to be done better .. */
|
/* this needs to be done better .. */
|
||||||
float viewmat[4][4], winmat[4][4];
|
float viewmat[4][4], winmat[4][4];
|
||||||
int drawtype, lay, winsize, flag2;
|
int drawtype, lay, winsize, flag2=v3d->flag2;
|
||||||
|
|
||||||
drawtype= v3d->drawtype;
|
drawtype= v3d->drawtype;
|
||||||
lay= v3d->lay;
|
lay= v3d->lay;
|
||||||
flag2= v3d->flag2 & V3D_SOLID_TEX;
|
|
||||||
|
|
||||||
v3d->drawtype = OB_SOLID;
|
v3d->drawtype = OB_SOLID;
|
||||||
v3d->lay &= GPU_lamp_shadow_layer(shadow->lamp);
|
v3d->lay &= GPU_lamp_shadow_layer(shadow->lamp);
|
||||||
v3d->flag2 &= ~V3D_SOLID_TEX;
|
v3d->flag2 &= ~V3D_SOLID_TEX;
|
||||||
|
v3d->flag2 |= V3D_RENDER_OVERRIDE;
|
||||||
|
|
||||||
GPU_lamp_shadow_buffer_bind(shadow->lamp, viewmat, &winsize, winmat);
|
GPU_lamp_shadow_buffer_bind(shadow->lamp, viewmat, &winsize, winmat);
|
||||||
|
|
||||||
@@ -1859,7 +1859,7 @@ static void gpu_update_lamps_shadows(Scene *scene, View3D *v3d)
|
|||||||
|
|
||||||
v3d->drawtype= drawtype;
|
v3d->drawtype= drawtype;
|
||||||
v3d->lay= lay;
|
v3d->lay= lay;
|
||||||
v3d->flag2 |= flag2;
|
v3d->flag2 = flag2;
|
||||||
}
|
}
|
||||||
|
|
||||||
BLI_freelistN(&shadows);
|
BLI_freelistN(&shadows);
|
||||||
|
Reference in New Issue
Block a user