Changeset 1060 for GTP/trunk/App/Demos/Illum/Ogre/Media/materials/programs
- Timestamp:
- 06/27/06 10:17:56 (19 years ago)
- Location:
- GTP/trunk/App/Demos/Illum/Ogre/Media/materials/programs
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
GTP/trunk/App/Demos/Illum/Ogre/Media/materials/programs/GameTools_DepthShadow.hlsl
r807 r1060 32 32 float4 hPosition : POSITION; 33 33 float4 Position : TEXCOORD0; 34 float4 cPosition : TEXCOORD1; 34 35 }; 35 36 36 37 VS_OUT_SHADOW depthShadowVS(float4 position : POSITION, 37 38 uniform float4x4 world, 39 uniform float4x4 worldView, 38 40 uniform float4x4 worldViewProj) 39 41 { … … 41 43 OUT.hPosition = mul(worldViewProj, position); 42 44 OUT.Position = mul(world, position); 45 OUT.cPosition = mul(worldView, position); 43 46 return OUT; 44 47 } … … 48 51 uniform float4x4 lightView, 49 52 uniform float4x4 lightViewProj, 50 uniform sampler2D depthShadowMap ):COLOR 51 { 52 float bias = 0.0; 53 float4 shadowColor = float4(0.4, 0.4, 0.4, 1.0); 53 uniform float4x4 lightView2, 54 uniform float4x4 lightViewProj2, 55 uniform sampler2D depthShadowMap : register(s0), 56 uniform sampler2D depthShadowMap2 : register(s1)):COLOR 57 { 58 float bias = 0.06; 59 float4 shadowColor = float4(0.6, 0.6, 0.6, 1.0); 54 60 55 float4 light = 1; 61 float4 light1 = 1; 62 float4 light2 = 1; 63 float weight1 = 1; 64 float weight2 = 1; 56 65 57 float4 lightCamPos = mul(lightView, IN.Position); 58 float d = length(lightCamPos.xyz); 66 float4 lightCamPos1 = mul(lightView, IN.Position); 67 float d1 = length(lightCamPos1.xyz); 68 float4 lightScreenPos1 = mul(lightViewProj, IN.Position); 69 lightScreenPos1 = lightScreenPos1 / lightScreenPos1.w ; 70 lightScreenPos1 = ( lightScreenPos1 + 1.0 ) / 2.0; 71 lightScreenPos1.y = 1.0 - lightScreenPos1.y; 72 float4 storedDepth1 = tex2D(depthShadowMap, lightScreenPos1.xy); 73 if(storedDepth1.r + bias < d1) 74 light1=0; 59 75 60 float4 lightScreenPos = mul(lightViewProj, IN.Position);61 lightScreenPos = lightScreenPos / lightScreenPos.w ;62 float dist = length(lightScreenPos.xy);63 76 64 if(dist < 1.0 && lightCamPos.z < 0) 77 float4 lightCamPos2 = mul(lightView2, IN.Position); 78 float d2 = length(lightCamPos2.xyz); 79 80 81 float4 lightScreenPos2 = mul(lightViewProj2, IN.Position); 82 lightScreenPos2 = lightScreenPos2 / lightScreenPos2.w ; 83 84 if(abs(lightScreenPos2.x) < 0.99 && abs(lightScreenPos2.y) < 0.99 ) 65 85 { 66 lightScreenPos = ( lightScreenPos + 1.0 ) / 2.0; 67 lightScreenPos.y = 1.0 - lightScreenPos.y; 68 float4 storedDepth = tex2D(depthShadowMap, lightScreenPos.xy); 69 70 71 if(storedDepth.r + bias < d) 72 light = shadowColor; 73 if(storedDepth.r == 0) 74 light = 1; 86 lightScreenPos2 = ( lightScreenPos2 + 1.0 ) / 2.0; 87 lightScreenPos2.y = 1.0 - lightScreenPos2.y; 88 float4 storedDepth2 = tex2D(depthShadowMap2, lightScreenPos2.xy); 89 if(storedDepth2.r + bias < d2) 90 light2=0; 75 91 } 76 92 else 77 light = 1;93 weight2 = 0; 78 94 79 return light; 95 weight1 = 1 - weight2; 96 97 return saturate((light1*weight1 + light2*weight2) + shadowColor); 80 98 } 81 99 -
GTP/trunk/App/Demos/Illum/Ogre/Media/materials/programs/GameTools_Localized_EnvMap.hlsl
r875 r1060 245 245 } 246 246 247 void PhotonMapSoftShadowPS( float2 texCoord : TEXCOORD0, 248 float3 wPos : TEXCOORD1, 249 float3 mNormal : TEXCOORD2, 250 uniform float3 cameraPos, 251 uniform samplerCUBE DistanceMap : register(s0), 252 uniform float3 lastCenter, 253 out float4 Color :COLOR0) 254 { 255 256 Color = float4(1,1,1,1); 257 258 mNormal = normalize(mNormal); 259 float3 newTexCoord; 260 float3 mPos = wPos - lastCenter; 261 float3 V = normalize(wPos - cameraPos); 262 newTexCoord = V; 263 264 newTexCoord = Hit(mPos, V, DistanceMap); 265 266 Color = float4(normalize(newTexCoord),1); 267 } 247 268 248 269 249 /////////////////////
Note: See TracChangeset
for help on using the changeset viewer.