diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2012-05-02 14:10:05 +0400 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2012-05-02 14:10:05 +0400 |
commit | f965858867a6df5825b52060d13d736793e25595 (patch) | |
tree | 2fa82d7c2849a655e72d5e29915e45bdaebf20f5 /source | |
parent | afcc42c324e8f3bf6508f2087602a0e055eedead (diff) |
Fix 31220: glsl sun lamp shadows did not apparently respect shadow flag when
working in blender render rather than blender game mode. Tweaked the flags a
bit to make it compatible more, but for full configuration you need to be in
blender game mode still.
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/gpu/intern/gpu_material.c | 2 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_lamp.c | 14 |
2 files changed, 11 insertions, 5 deletions
diff --git a/source/blender/gpu/intern/gpu_material.c b/source/blender/gpu/intern/gpu_material.c index 173fbf02287..383dd6b8f2f 100644 --- a/source/blender/gpu/intern/gpu_material.c +++ b/source/blender/gpu/intern/gpu_material.c @@ -1669,7 +1669,7 @@ GPULamp *GPU_lamp_from_blender(Scene *scene, Object *ob, Object *par) la = ob->data; gpu_lamp_from_blender(scene, ob, par, la, lamp); - if ((la->type==LA_SPOT || la->type==LA_SUN) && (la->mode & LA_SHAD_BUF)) { + if ((la->type==LA_SPOT && (la->mode & LA_SHAD_BUF)) || (la->type==LA_SUN && (la->mode & LA_SHAD_RAY))) { /* opengl */ lamp->fb = GPU_framebuffer_create(); if (!lamp->fb) { diff --git a/source/blender/makesrna/intern/rna_lamp.c b/source/blender/makesrna/intern/rna_lamp.c index 88bab4d5af3..fef362c8f10 100644 --- a/source/blender/makesrna/intern/rna_lamp.c +++ b/source/blender/makesrna/intern/rna_lamp.c @@ -89,18 +89,24 @@ static void rna_Lamp_active_texture_set(PointerRNA *ptr, PointerRNA value) static int rna_use_shadow_get(PointerRNA *ptr) { Lamp *la = (Lamp*)ptr->data; - return la->mode & LA_SHAD_BUF; + + if(la->type == LA_SPOT) + return la->mode & LA_SHAD_BUF; + else + return la->mode & LA_SHAD_RAY; } static void rna_use_shadow_set(PointerRNA *ptr, int value) { Lamp *la = (Lamp*)ptr->data; if (value) { - la->mode |= LA_SHAD_BUF; - la->mode &= ~LA_SHAD_RAY; + if(la->type == LA_SPOT) + la->mode |= LA_SHAD_BUF; + else + la->mode |= LA_SHAD_RAY; } else - la->mode &= ~(LA_SHAD_BUF + LA_SHAD_RAY); + la->mode &= ~(LA_SHAD_BUF|LA_SHAD_RAY); } static StructRNA* rna_Lamp_refine(struct PointerRNA *ptr) |