修订版 | 376ae99f43ade9380b6c01a47ea21fc15808035a (tree) |
---|---|
时间 | 2011-12-11 01:56:00 |
作者 | Jarmonik |
Commiter | Jarmonik |
D3D9Client: CTDs and shadows fixed
* Energia CTD fixed.
* Surface base shadow offset fixed.
@@ -286,6 +286,18 @@ | ||
286 | 286 | return outVS; |
287 | 287 | } |
288 | 288 | |
289 | +HazeVS ShadowMeshTechExVS(MESH_VERTEX vrt) | |
290 | +{ | |
291 | + // Zero output. | |
292 | + HazeVS outVS = (HazeVS)0; | |
293 | + float d = dot(vrt.posL,vrt.posL); | |
294 | + float3 posX = mul(float4(vrt.posL, 1.0f), gGrpT).xyz; | |
295 | + float3 posW = mul(float4(posX-gColor.xyz*(gTexOff.x*d+gTexOff.y*d*d), 1.0f), gW).xyz; | |
296 | + outVS.posH = mul(float4(posW, 1.0f), gVP); | |
297 | + | |
298 | + return outVS; | |
299 | +} | |
300 | + | |
289 | 301 | |
290 | 302 | float4 ShadowTechPS(HazeVS frg) : COLOR |
291 | 303 | { |
@@ -313,6 +325,25 @@ | ||
313 | 325 | StencilFunc = NotEqual; |
314 | 326 | StencilPass = Replace; |
315 | 327 | } |
328 | + | |
329 | + pass P1 | |
330 | + { | |
331 | + vertexShader = compile VS_MOD ShadowMeshTechExVS(); | |
332 | + pixelShader = compile PS_MOD ShadowTechPS(); | |
333 | + | |
334 | + AlphaBlendEnable = true; | |
335 | + BlendOp = Add; | |
336 | + SrcBlend = SrcAlpha; | |
337 | + DestBlend = InvSrcAlpha; | |
338 | + ZEnable = false; | |
339 | + ZWriteEnable = false; | |
340 | + | |
341 | + StencilEnable = true; | |
342 | + StencilRef = 1; | |
343 | + StencilMask = 1; | |
344 | + StencilFunc = NotEqual; | |
345 | + StencilPass = Replace; | |
346 | + } | |
316 | 347 | } |
317 | 348 | |
318 | 349 |
@@ -3,8 +3,8 @@ | ||
3 | 3 | // D3D9Client rendering techniques for Orbiter Spaceflight simulator |
4 | 4 | // ------------------------------------------------------------------------------------------------------------- |
5 | 5 | |
6 | -#define LIGHT_BOOST 2.5f | |
7 | -#define AMB_ATTEN 0.4f | |
6 | +#define LIGHT_BOOST 2.0f | |
7 | +#define AMB_ATTEN 0.75f | |
8 | 8 | |
9 | 9 | |
10 | 10 | #define NIGHT_CLOUDS 0.05f // range(0.0f-0.1f) Cloud ambient level at night |
@@ -288,6 +288,18 @@ | ||
288 | 288 | return outVS; |
289 | 289 | } |
290 | 290 | |
291 | +HazeVS ShadowMeshTechExVS(MESH_VERTEX vrt) | |
292 | +{ | |
293 | + // Zero output. | |
294 | + HazeVS outVS = (HazeVS)0; | |
295 | + float d = dot(vrt.posL,vrt.posL); | |
296 | + float3 posX = mul(float4(vrt.posL, 1.0f), gGrpT).xyz; | |
297 | + float3 posW = mul(float4(posX-gColor.xyz*(gTexOff.x*d+gTexOff.y*d*d), 1.0f), gW).xyz; | |
298 | + outVS.posH = mul(float4(posW, 1.0f), gVP); | |
299 | + | |
300 | + return outVS; | |
301 | +} | |
302 | + | |
291 | 303 | |
292 | 304 | float4 ShadowTechPS(HazeVS frg) : COLOR |
293 | 305 | { |
@@ -315,10 +327,30 @@ | ||
315 | 327 | StencilFunc = NotEqual; |
316 | 328 | StencilPass = Replace; |
317 | 329 | } |
330 | + | |
331 | + pass P1 | |
332 | + { | |
333 | + vertexShader = compile VS_MOD ShadowMeshTechExVS(); | |
334 | + pixelShader = compile PS_MOD ShadowTechPS(); | |
335 | + | |
336 | + AlphaBlendEnable = true; | |
337 | + BlendOp = Add; | |
338 | + SrcBlend = SrcAlpha; | |
339 | + DestBlend = InvSrcAlpha; | |
340 | + ZEnable = false; | |
341 | + ZWriteEnable = false; | |
342 | + | |
343 | + StencilEnable = true; | |
344 | + StencilRef = 1; | |
345 | + StencilMask = 1; | |
346 | + StencilFunc = NotEqual; | |
347 | + StencilPass = Replace; | |
348 | + } | |
318 | 349 | } |
319 | 350 | |
320 | 351 | |
321 | 352 | |
353 | + | |
322 | 354 | // ============================================================================= |
323 | 355 | // Mesh Bounding Box Technique |
324 | 356 | // ============================================================================= |
@@ -438,6 +470,7 @@ | ||
438 | 470 | DestBlend = InvSrcAlpha; |
439 | 471 | ZEnable = false; |
440 | 472 | ZWriteEnable = false; |
473 | + //CullMode = NONE; | |
441 | 474 | CullMode = CCW; |
442 | 475 | } |
443 | 476 |
@@ -452,7 +485,8 @@ | ||
452 | 485 | DestBlend = InvSrcAlpha; |
453 | 486 | ZEnable = false; |
454 | 487 | ZWriteEnable = false; |
455 | - CullMode = CCW; | |
488 | + //CullMode = NONE; | |
489 | + CullMode = CCW; | |
456 | 490 | } |
457 | 491 | } |
458 | 492 |