SHARE
TWEET

Untitled

a guest Oct 17th, 2014 158 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // shadow_add2.fx
  2.  
  3.     #ifndef ZBIASOFFSET
  4.     #define ZBIASOFFSET 1.0f
  5.     #endif
  6.      
  7.             const float shadowMapFilterSizeN = 1;
  8.      
  9.             #ifdef USE_SHADOWMAP_CSMN
  10.                     #include "shadow_csm.fx"
  11.             #else
  12.                     #ifdef USE_SHADOWMAP_DYNLMN
  13.      
  14.                     #else
  15.                     #ifdef USE_SHADOWMAP_STLMN
  16.                     #else
  17.                             const float4x4 ShadowMapViewProjN;
  18.            
  19.                             float4 GetShadowCoordsAndEpsilonN(float4 pWorld,float smdata)
  20.                             {
  21.                                     float4 ProjCoords = mul(pWorld,ShadowMapViewProjN);
  22.                                     ProjCoords.xy /= ProjCoords.w;
  23.                                     return float4(ProjCoords.xyz,shadowMapEpsilon);
  24.                             }
  25.            
  26.                             #include "shadow_simple_common.fx"
  27.            
  28.                             #ifndef SMShadowedOutput
  29.                                     #define SMShadowedOutput
  30.                                     #define OutputShadowCoords(p)
  31.                                     #define InputShadowMap(p,check) GetShadowMap(p,0,check)
  32.                             #endif
  33.                     #endif
  34.                     #endif
  35.      
  36.             #endif
  37.      
  38.     texture ShadowMapN;
  39.     sampler2D shadowmapN = sampler_state
  40.     {
  41.             Texture = (ShadowMapN);
  42.            
  43.             #ifdef USE_SHADOWMAP_NODEPTHN
  44.                             MAGFILTER = LINEAR;
  45.                             MINFILTER =  LINEAR;
  46.                             MIPFILTER =  NONE;
  47.             #else
  48.                     #ifndef USE_SHADOWMAP_VARIANCEN
  49.                             MAGFILTER = POINT;
  50.                             MINFILTER =  POINT;
  51.                             MIPFILTER =  NONE;
  52.                     #else
  53.                             MAGFILTER = LINEAR;
  54.                             MINFILTER =  LINEAR;
  55.                             MIPFILTER =  LINEAR;
  56.                     #endif
  57.             #endif
  58.      
  59.                     AddressU = Border;
  60.                     AddressV = Border;
  61.                     BorderColor = 0xFFFFFFFF;
  62.     };
  63.      
  64.             #ifdef USE_SHADOWMAP_PCFN
  65.             #include "shadow_pcf.fx"
  66.             #endif
  67.      
  68.             #ifdef USE_SHADOWMAP_VARIANCEN
  69.             #include "shadow_variance.fx"
  70.             #endif
  71.      
  72.      
  73.             float getShadowMapN(float4 pWorld, float smdata=0, float check=1)
  74.             {
  75.                     #ifdef USE_SHADOWMAP_DYNLMN
  76.                             //return tex2D(shadowmapN, pWorld.xz/64+0.5f).x;
  77.                             float4 dynlm = tex2D(shadowmapN, pWorld.xz/64+0.5f);
  78.                             if (pWorld.y <= dynlm.g*2.5f )
  79.                             {
  80.                                     return dynlm.r;
  81.                             }
  82.                             else
  83.                             {
  84.                                     return 1.0f;
  85.                             }
  86.                     #else
  87.                     #ifdef USE_SHADOWMAP_STLMN
  88.                             return tex2D(shadowmapN, pWorld.xz/64+0.5f).x;
  89.                     #else
  90.      
  91.                     #ifdef USE_SHADOWMAP_NOISEN
  92.                             float x = pWorld.x * pWorld.z * pWorld.y *1000;
  93.                             x = fmod(x, 13) * fmod(x, 123);
  94.                             float dx = (fmod(x, 0.01) / 8) * shadowMapFilterSizeN;
  95.                             float4 ProjCoords = GetShadowCoordsAndEpsilonN(pWorld,smdata);//,dx); // wtf was that?
  96.                             ProjCoords.xy += dx;
  97.                     #else
  98.                             float4 ProjCoords = GetShadowCoordsAndEpsilonN(pWorld,smdata);
  99.                     #endif
  100.                             if ((ProjCoords.x<0)||(ProjCoords.x>1)||(ProjCoords.y<0)||(ProjCoords.y>1)) return 1;
  101.                             ProjCoords.z *= ZBIASOFFSET;
  102.      
  103.                     #ifdef USE_SHADOWMAP_VARIANCEN
  104.                             #ifndef USE_SHADOWMAP_PCFN
  105.                                     // Variance, no PCF
  106.                                     return getVarianceN(ProjCoords,check);
  107.                             #else
  108.                                     // Variance + PCF
  109.                                     //return getVariancePCF(ProjCoords,shadowMapFilterSizeN);
  110.                                     return getVarianceN(ProjCoords,check);
  111.                             #endif
  112.                     #else
  113.                             #ifndef USE_SHADOWMAP_PCFN
  114.                                     // No filtering at all
  115.                                     #ifdef USE_SHADOWMAP_NODEPTHN
  116.                                             #ifdef USE_SHADOWMAP_CLAMPN
  117.                                               //return 1-(tex2D(shadowmapN, ProjCoords).x < 1);
  118.                                               float sm = tex2D(shadowmapN, ProjCoords).x;
  119.                                             #ifdef USE_SHADOWMAP_CSMN
  120.                                                     if (smdata > 1) sm=1;
  121.                                             #endif
  122.                                               return sm*sm*sm;
  123.                                             #else
  124.                                               return tex2D(shadowmapN, ProjCoords).x;
  125.                                             #endif
  126.                                     #else
  127.                                             return (tex2D(shadowmapN, ProjCoords).x >= ProjCoords.z-ProjCoords.w);
  128.                                     #endif
  129.                             #else
  130.                                     // PCF
  131.                                     return getPCFN(ProjCoords,shadowMapFilterSizeN,check);
  132.                             #endif
  133.                     #endif
  134.      
  135.                     #endif // end static lm
  136.                     #endif // end dynamic lm
  137.      
  138.             }
RAW Paste Data
Top