[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [42698] branches/ge_harmony: Here is a start on shadows for Sun lamps.
Daniel Stokes
kupomail at gmail.com
Sat Dec 17 23:40:54 CET 2011
Revision: 42698
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=42698
Author: kupoman
Date: 2011-12-17 22:40:51 +0000 (Sat, 17 Dec 2011)
Log Message:
-----------
Here is a start on shadows for Sun lamps. The biggest difference between the sun shadows and spot shadows is that sun shadows are orthographic.
Modified Paths:
--------------
branches/ge_harmony/release/scripts/startup/bl_ui/properties_data_lamp.py
branches/ge_harmony/source/blender/gpu/intern/gpu_extensions.c
branches/ge_harmony/source/blender/gpu/intern/gpu_material.c
branches/ge_harmony/source/blender/gpu/intern/gpu_shader_material.glsl
branches/ge_harmony/source/blender/gpu/intern/gpu_shader_material.glsl.c
Modified: branches/ge_harmony/release/scripts/startup/bl_ui/properties_data_lamp.py
===================================================================
--- branches/ge_harmony/release/scripts/startup/bl_ui/properties_data_lamp.py 2011-12-17 21:24:39 UTC (rev 42697)
+++ branches/ge_harmony/release/scripts/startup/bl_ui/properties_data_lamp.py 2011-12-17 22:40:51 UTC (rev 42698)
@@ -193,7 +193,7 @@
@classmethod
def poll(cls, context):
- COMPAT_LIGHTS = {'SPOT', 'POINT'}
+ COMPAT_LIGHTS = {'SPOT', 'SUN'}
lamp = context.lamp
engine = context.scene.render.engine
return (lamp and lamp.type in COMPAT_LIGHTS) and (engine in cls.COMPAT_ENGINES)
Modified: branches/ge_harmony/source/blender/gpu/intern/gpu_extensions.c
===================================================================
--- branches/ge_harmony/source/blender/gpu/intern/gpu_extensions.c 2011-12-17 21:24:39 UTC (rev 42697)
+++ branches/ge_harmony/source/blender/gpu/intern/gpu_extensions.c 2011-12-17 22:40:51 UTC (rev 42698)
@@ -610,6 +610,8 @@
if (tex) {
/* Now we tweak some of the settings */
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RG32F, size, size, 0, GL_RG, GL_FLOAT, 0);
GPU_texture_unbind(tex);
Modified: branches/ge_harmony/source/blender/gpu/intern/gpu_material.c
===================================================================
--- branches/ge_harmony/source/blender/gpu/intern/gpu_material.c 2011-12-17 21:24:39 UTC (rev 42697)
+++ branches/ge_harmony/source/blender/gpu/intern/gpu_material.c 2011-12-17 22:40:51 UTC (rev 42698)
@@ -1588,12 +1588,17 @@
lamp->bias *= 0.25f;
/* makeshadowbuf */
- angle= saacos(lamp->spotsi);
- temp= 0.5f*lamp->size*cosf(angle)/sinf(angle);
- pixsize= (lamp->d)/temp;
- wsize= pixsize*0.5f*lamp->size;
-
- perspective_m4( lamp->winmat,-wsize, wsize, -wsize, wsize, lamp->d, lamp->clipend);
+ if (lamp->type == LA_SUN) {
+ wsize = 10;
+ orthographic_m4( lamp->winmat,-wsize, wsize, -wsize, wsize, lamp->d, lamp->clipend);
+ }
+ else {
+ angle= saacos(lamp->spotsi);
+ temp= 0.5f*lamp->size*cosf(angle)/sinf(angle);
+ pixsize= (lamp->d)/temp;
+ wsize= pixsize*0.5f*lamp->size;
+ perspective_m4( lamp->winmat,-wsize, wsize, -wsize, wsize, lamp->d, lamp->clipend);
+ }
}
static void gpu_lamp_shadow_free(GPULamp *lamp)
@@ -1642,7 +1647,7 @@
la = ob->data;
gpu_lamp_from_blender(scene, ob, par, la, lamp);
- if(la->type==LA_SPOT && (la->mode & LA_SHAD_BUF)) {
+ if((la->type==LA_SPOT || la->type==LA_SUN) && (la->mode & LA_SHAD_BUF)) {
/* opengl */
lamp->fb = GPU_framebuffer_create();
if(!lamp->fb) {
Modified: branches/ge_harmony/source/blender/gpu/intern/gpu_shader_material.glsl
===================================================================
--- branches/ge_harmony/source/blender/gpu/intern/gpu_shader_material.glsl 2011-12-17 21:24:39 UTC (rev 42697)
+++ branches/ge_harmony/source/blender/gpu/intern/gpu_shader_material.glsl 2011-12-17 22:40:51 UTC (rev 42698)
@@ -1784,8 +1784,11 @@
//float bias = (1.5 - inp*inp)*shadowbias;
co.z -= shadowbias*co.w;
-
- result = shadow2DProj(shadowmap, co).x;
+
+ if (co.w > 0.0 && co.x > 0.0 && co.y > 0.0)
+ result = shadow2DProj(shadowmap, co).x;
+ else
+ result = 1.0;
}
}
@@ -1796,23 +1799,28 @@
}
else {
vec4 co = shadowpersmat*vec4(rco, 1.0);
- vec2 moments = texture2DProj(shadowmap, co).rg;
- float dist = co.z/co.w;
- float p = 0.0;
-
- if(dist <= moments.x)
- p = 1.0;
+ if (co.w > 0.0 && co.x > 0.0 && co.y > 0.0) {
+ vec2 moments = texture2DProj(shadowmap, co).rg;
+ float dist = co.z/co.w;
+ float p = 0.0;
+
+ if(dist <= moments.x)
+ p = 1.0;
- float variance = moments.y - (moments.x*moments.x);
- variance = max(variance, shadowbias/10.0);
+ float variance = moments.y - (moments.x*moments.x);
+ variance = max(variance, shadowbias/10.0);
- float d = moments.x - dist;
- float p_max = variance / (variance + d*d);
+ float d = moments.x - dist;
+ float p_max = variance / (variance + d*d);
- // Now reduce light-bleeding by removing the [0, x] tail and linearly rescaling (x, 1]
- p_max = clamp((p_max-bleedbias)/(1.0-bleedbias), 0, 1);
+ // Now reduce light-bleeding by removing the [0, x] tail and linearly rescaling (x, 1]
+ p_max = clamp((p_max-bleedbias)/(1.0-bleedbias), 0, 1);
- result = max(p, p_max);
+ result = max(p, p_max);
+ }
+ else {
+ result = 1.0;
+ }
}
}
Modified: branches/ge_harmony/source/blender/gpu/intern/gpu_shader_material.glsl.c
===================================================================
--- branches/ge_harmony/source/blender/gpu/intern/gpu_shader_material.glsl.c 2011-12-17 21:24:39 UTC (rev 42697)
+++ branches/ge_harmony/source/blender/gpu/intern/gpu_shader_material.glsl.c 2011-12-17 22:40:51 UTC (rev 42698)
@@ -1,1318 +1,1323 @@
/* DataToC output of file <gpu_shader_material_glsl> */
-int datatoc_gpu_shader_material_glsl_size= 49992;
+int datatoc_gpu_shader_material_glsl_size= 50172;
char datatoc_gpu_shader_material_glsl[]= {
- 13, 10,102,108,111, 97,116, 32,
-101,120,112, 95, 98,108,101,110,100,101,114, 40,102,108,111, 97,116, 32,102, 41, 13, 10,123, 13, 10, 9,114,101,116,117,114,110,
- 32,112,111,119, 40, 50, 46, 55, 49, 56, 50, 56, 49, 56, 50, 56, 52, 54, 44, 32,102, 41, 59, 13, 10,125, 13, 10, 13, 10,118,111,
-105,100, 32,114,103, 98, 95,116,111, 95,104,115,118, 40,118,101, 99, 52, 32,114,103, 98, 44, 32,111,117,116, 32,118,101, 99, 52,
- 32,111,117,116, 99,111,108, 41, 13, 10,123, 13, 10, 9,102,108,111, 97,116, 32, 99,109, 97,120, 44, 32, 99,109,105,110, 44, 32,
-104, 44, 32,115, 44, 32,118, 44, 32, 99,100,101,108,116, 97, 59, 13, 10, 9,118,101, 99, 51, 32, 99, 59, 13, 10, 13, 10, 9, 99,
-109, 97,120, 32, 61, 32,109, 97,120, 40,114,103, 98, 91, 48, 93, 44, 32,109, 97,120, 40,114,103, 98, 91, 49, 93, 44, 32,114,103,
- 98, 91, 50, 93, 41, 41, 59, 13, 10, 9, 99,109,105,110, 32, 61, 32,109,105,110, 40,114,103, 98, 91, 48, 93, 44, 32,109,105,110,
- 40,114,103, 98, 91, 49, 93, 44, 32,114,103, 98, 91, 50, 93, 41, 41, 59, 13, 10, 9, 99,100,101,108,116, 97, 32, 61, 32, 99,109,
- 97,120, 45, 99,109,105,110, 59, 13, 10, 13, 10, 9,118, 32, 61, 32, 99,109, 97,120, 59, 13, 10, 9,105,102, 32, 40, 99,109, 97,
-120, 33, 61, 48, 46, 48, 41, 13, 10, 9, 9,115, 32, 61, 32, 99,100,101,108,116, 97, 47, 99,109, 97,120, 59, 13, 10, 9,101,108,
-115,101, 32,123, 13, 10, 9, 9,115, 32, 61, 32, 48, 46, 48, 59, 13, 10, 9, 9,104, 32, 61, 32, 48, 46, 48, 59, 13, 10, 9,125,
- 13, 10, 13, 10, 9,105,102, 32, 40,115, 32, 61, 61, 32, 48, 46, 48, 41, 32,123, 13, 10, 9, 9,104, 32, 61, 32, 48, 46, 48, 59,
- 13, 10, 9,125, 13, 10, 9,101,108,115,101, 32,123, 13, 10, 9, 9, 99, 32, 61, 32, 40,118,101, 99, 51, 40, 99,109, 97,120, 44,
- 32, 99,109, 97,120, 44, 32, 99,109, 97,120, 41, 32, 45, 32,114,103, 98, 46,120,121,122, 41, 47, 99,100,101,108,116, 97, 59, 13,
- 10, 13, 10, 9, 9,105,102, 32, 40,114,103, 98, 46,120, 61, 61, 99,109, 97,120, 41, 32,104, 32, 61, 32, 99, 91, 50, 93, 32, 45,
- 32, 99, 91, 49, 93, 59, 13, 10, 9, 9,101,108,115,101, 32,105,102, 32, 40,114,103, 98, 46,121, 61, 61, 99,109, 97,120, 41, 32,
-104, 32, 61, 32, 50, 46, 48, 32, 43, 32, 99, 91, 48, 93, 32, 45, 32, 32, 99, 91, 50, 93, 59, 13, 10, 9, 9,101,108,115,101, 32,
-104, 32, 61, 32, 52, 46, 48, 32, 43, 32, 99, 91, 49, 93, 32, 45, 32, 99, 91, 48, 93, 59, 13, 10, 13, 10, 9, 9,104, 32, 47, 61,
- 32, 54, 46, 48, 59, 13, 10, 13, 10, 9, 9,105,102, 32, 40,104, 60, 48, 46, 48, 41, 13, 10, 9, 9, 9,104, 32, 43, 61, 32, 49,
- 46, 48, 59, 13, 10, 9,125, 13, 10, 13, 10, 9,111,117,116, 99,111,108, 32, 61, 32,118,101, 99, 52, 40,104, 44, 32,115, 44, 32,
-118, 44, 32,114,103, 98, 46,119, 41, 59, 13, 10,125, 13, 10, 13, 10,118,111,105,100, 32,104,115,118, 95,116,111, 95,114,103, 98,
- 40,118,101, 99, 52, 32,104,115,118, 44, 32,111,117,116, 32,118,101, 99, 52, 32,111,117,116, 99,111,108, 41, 13, 10,123, 13, 10,
- 9,102,108,111, 97,116, 32,105, 44, 32,102, 44, 32,112, 44, 32,113, 44, 32,116, 44, 32,104, 44, 32,115, 44, 32,118, 59, 13, 10,
- 9,118,101, 99, 51, 32,114,103, 98, 59, 13, 10, 13, 10, 9,104, 32, 61, 32,104,115,118, 91, 48, 93, 59, 13, 10, 9,115, 32, 61,
- 32,104,115,118, 91, 49, 93, 59, 13, 10, 9,118, 32, 61, 32,104,115,118, 91, 50, 93, 59, 13, 10, 13, 10, 9,105,102, 40,115, 61,
- 61, 48, 46, 48, 41, 32,123, 13, 10, 9, 9,114,103, 98, 32, 61, 32,118,101, 99, 51, 40,118, 44, 32,118, 44, 32,118, 41, 59, 13,
- 10, 9,125, 13, 10, 9,101,108,115,101, 32,123, 13, 10, 9, 9,105,102, 40,104, 61, 61, 49, 46, 48, 41, 13, 10, 9, 9, 9,104,
- 32, 61, 32, 48, 46, 48, 59, 13, 10, 9, 9, 13, 10, 9, 9,104, 32, 42, 61, 32, 54, 46, 48, 59, 13, 10, 9, 9,105, 32, 61, 32,
-102,108,111,111,114, 40,104, 41, 59, 13, 10, 9, 9,102, 32, 61, 32,104, 32, 45, 32,105, 59, 13, 10, 9, 9,114,103, 98, 32, 61,
- 32,118,101, 99, 51, 40,102, 44, 32,102, 44, 32,102, 41, 59, 13, 10, 9, 9,112, 32, 61, 32,118, 42, 40, 49, 46, 48, 45,115, 41,
- 59, 13, 10, 9, 9,113, 32, 61, 32,118, 42, 40, 49, 46, 48, 45, 40,115, 42,102, 41, 41, 59, 13, 10, 9, 9,116, 32, 61, 32,118,
- 42, 40, 49, 46, 48, 45, 40,115, 42, 40, 49, 46, 48, 45,102, 41, 41, 41, 59, 13, 10, 9, 9, 13, 10, 9, 9,105,102, 32, 40,105,
- 32, 61, 61, 32, 48, 46, 48, 41, 32,114,103, 98, 32, 61, 32,118,101, 99, 51, 40,118, 44, 32,116, 44, 32,112, 41, 59, 13, 10, 9,
- 9,101,108,115,101, 32,105,102, 32, 40,105, 32, 61, 61, 32, 49, 46, 48, 41, 32,114,103, 98, 32, 61, 32,118,101, 99, 51, 40,113,
- 44, 32,118, 44, 32,112, 41, 59, 13, 10, 9, 9,101,108,115,101, 32,105,102, 32, 40,105, 32, 61, 61, 32, 50, 46, 48, 41, 32,114,
-103, 98, 32, 61, 32,118,101, 99, 51, 40,112, 44, 32,118, 44, 32,116, 41, 59, 13, 10, 9, 9,101,108,115,101, 32,105,102, 32, 40,
-105, 32, 61, 61, 32, 51, 46, 48, 41, 32,114,103, 98, 32, 61, 32,118,101, 99, 51, 40,112, 44, 32,113, 44, 32,118, 41, 59, 13, 10,
- 9, 9,101,108,115,101, 32,105,102, 32, 40,105, 32, 61, 61, 32, 52, 46, 48, 41, 32,114,103, 98, 32, 61, 32,118,101, 99, 51, 40,
-116, 44, 32,112, 44, 32,118, 41, 59, 13, 10, 9, 9,101,108,115,101, 32,114,103, 98, 32, 61, 32,118,101, 99, 51, 40,118, 44, 32,
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list