Advertisement
Guest User

Untitled

a guest
Oct 17th, 2014
726
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.97 KB | None | 0 0
  1. #ifdef USE_SHADOWMAP
  2.  
  3. static const float shadowNormalOffset = 0.1;
  4. static const float shadowMapEpsilon = 0.0001;
  5.  
  6. #ifdef USE_SHADOWMAP_NOISE
  7. #define USE_SHADOWMAP_NOISEN
  8. #else
  9. #undef USE_SHADOWMAP_NOISEN
  10. #endif
  11.  
  12. #ifdef USE_SHADOWMAP_PCF
  13. #define USE_SHADOWMAP_PCFN
  14. #else
  15. #undef USE_SHADOWMAP_PCFN
  16. #endif
  17.  
  18. #ifdef USE_SHADOWMAP_VARIANCE
  19. #define USE_SHADOWMAP_VARIANCEN
  20. #else
  21. #undef USE_SHADOWMAP_VARIANCEN
  22. #endif
  23.  
  24. #ifdef USE_SHADOWMAP_CSM
  25. #define USE_SHADOWMAP_CSMN
  26. #else
  27. #undef USE_SHADOWMAP_CSMN
  28. #endif
  29.  
  30. #ifdef USE_SHADOWMAP_CSM_INSTANCED
  31. #define USE_SHADOWMAP_CSM_INSTANCEDN
  32. #else
  33. #undef USE_SHADOWMAP_CSM_INSTANCEDN
  34. #endif
  35.  
  36. #ifdef USE_SHADOWMAP_DYNLM
  37. #define USE_SHADOWMAP_DYNLMN
  38. #else
  39. #undef USE_SHADOWMAP_DYNLMN
  40. #endif
  41.  
  42. #ifdef USE_SHADOWMAP_STLM
  43. #define USE_SHADOWMAP_STLMN
  44. #else
  45. #undef USE_SHADOWMAP_STLMN
  46. #endif
  47.  
  48. #ifdef USE_SHADOWMAP_NODEPTH
  49. #define USE_SHADOWMAP_NODEPTHN
  50. #else
  51. #undef USE_SHADOWMAP_NODEPTHN
  52. #endif
  53.  
  54. #ifdef USE_SHADOWMAP_CLAMP
  55. #define USE_SHADOWMAP_CLAMPN
  56. #else
  57. #undef USE_SHADOWMAP_CLAMPN
  58. #endif
  59.  
  60. #define ShadowMapN ShadowMap
  61. #define shadowmapN shadowmap
  62. #define getShadowMapN getShadowMap1
  63. #define ShadowMapViewProjN ShadowMapViewProj
  64. #define getPCFN getPCF
  65. #define getVarianceN getVariance
  66. #define GetShadowCoordsAndEpsilonN GetShadowCoordsAndEpsilon
  67. #define shadowMapFilterSizeN shadowMapFilterSize
  68. #include "shadow_add2.fx"
  69.  
  70. #ifdef USE_SHADOWMAP2
  71. #ifdef USE_SHADOWMAP_NOISE2
  72. #define USE_SHADOWMAP_NOISEN
  73. #else
  74. #undef USE_SHADOWMAP_NOISEN
  75. #endif
  76.  
  77. #ifdef USE_SHADOWMAP_PCF2
  78. #define USE_SHADOWMAP_PCFN
  79. #else
  80. #undef USE_SHADOWMAP_PCFN
  81. #endif
  82.  
  83. #ifdef USE_SHADOWMAP_VARIANCE2
  84. #define USE_SHADOWMAP_VARIANCEN
  85. #else
  86. #undef USE_SHADOWMAP_VARIANCEN
  87. #endif
  88.  
  89. #ifdef USE_SHADOWMAP_CSM2
  90. #define USE_SHADOWMAP_CSMN
  91. #else
  92. #undef USE_SHADOWMAP_CSMN
  93. #endif
  94.  
  95. #ifdef USE_SHADOWMAP_CSM_INSTANCED2
  96. #define USE_SHADOWMAP_CSM_INSTANCEDN
  97. #else
  98. #undef USE_SHADOWMAP_CSM_INSTANCEDN
  99. #endif
  100.  
  101. #ifdef USE_SHADOWMAP_DYNLM2
  102. #define USE_SHADOWMAP_DYNLMN
  103. #else
  104. #undef USE_SHADOWMAP_DYNLMN
  105. #endif
  106.  
  107. #ifdef USE_SHADOWMAP_STLM2
  108. #define USE_SHADOWMAP_STLMN
  109. #else
  110. #undef USE_SHADOWMAP_STLMN
  111. #endif
  112.  
  113. #ifdef USE_SHADOWMAP_NODEPTH2
  114. #define USE_SHADOWMAP_NODEPTHN
  115. #else
  116. #undef USE_SHADOWMAP_NODEPTHN
  117. #endif
  118.  
  119. #ifdef USE_SHADOWMAP_CLAMP2
  120. #define USE_SHADOWMAP_CLAMPN
  121. #else
  122. #undef USE_SHADOWMAP_CLAMPN
  123. #endif
  124.  
  125. #define ShadowMapN ShadowMap2
  126. #define shadowmapN shadowmap2
  127. #define getShadowMapN getShadowMap2
  128. #define ShadowMapViewProjN ShadowMapViewProj2
  129. #define getPCFN getPCF2
  130. #define getVarianceN getVariance2
  131. #define GetShadowCoordsAndEpsilonN GetShadowCoordsAndEpsilon2
  132. #define shadowMapFilterSizeN shadowMapFilterSize2
  133. #include "shadow_add2.fx"
  134. #endif
  135.  
  136. #ifdef USE_SHADOWMAP3
  137. #ifdef USE_SHADOWMAP_NOISE3
  138. #define USE_SHADOWMAP_NOISEN
  139. #else
  140. #undef USE_SHADOWMAP_NOISEN
  141. #endif
  142.  
  143. #ifdef USE_SHADOWMAP_PCF3
  144. #define USE_SHADOWMAP_PCFN
  145. #else
  146. #undef USE_SHADOWMAP_PCFN
  147. #endif
  148.  
  149. #ifdef USE_SHADOWMAP_VARIANCE3
  150. #define USE_SHADOWMAP_VARIANCEN
  151. #else
  152. #undef USE_SHADOWMAP_VARIANCEN
  153. #endif
  154.  
  155. #ifdef USE_SHADOWMAP_CSM3
  156. #define USE_SHADOWMAP_CSMN
  157. #else
  158. #undef USE_SHADOWMAP_CSMN
  159. #endif
  160.  
  161. #ifdef USE_SHADOWMAP_CSM_INSTANCED3
  162. #define USE_SHADOWMAP_CSM_INSTANCEDN
  163. #else
  164. #undef USE_SHADOWMAP_CSM_INSTANCEDN
  165. #endif
  166.  
  167. #ifdef USE_SHADOWMAP_DYNLM3
  168. #define USE_SHADOWMAP_DYNLMN
  169. #else
  170. #undef USE_SHADOWMAP_DYNLMN
  171. #endif
  172.  
  173. #ifdef USE_SHADOWMAP_STLM3
  174. #define USE_SHADOWMAP_STLMN
  175. #else
  176. #undef USE_SHADOWMAP_STLMN
  177. #endif
  178.  
  179. #ifdef USE_SHADOWMAP_NODEPTH3
  180. #define USE_SHADOWMAP_NODEPTHN
  181. #else
  182. #undef USE_SHADOWMAP_NODEPTHN
  183. #endif
  184.  
  185. #ifdef USE_SHADOWMAP_CLAMP3
  186. #define USE_SHADOWMAP_CLAMPN
  187. #else
  188. #undef USE_SHADOWMAP_CLAMPN
  189. #endif
  190.  
  191. #define ShadowMapN ShadowMap3
  192. #define shadowmapN shadowmap3
  193. #define getShadowMapN getShadowMap3
  194. #define ShadowMapViewProjN ShadowMapViewProj3
  195. #define getPCFN getPCF3
  196. #define getVarianceN getVariance3
  197. #define GetShadowCoordsAndEpsilonN GetShadowCoordsAndEpsilon3
  198. #define shadowMapFilterSizeN shadowMapFilterSize3
  199. #include "shadow_add2.fx"
  200. #endif
  201.  
  202. #ifdef USE_SHADOWMAP4
  203. #ifdef USE_SHADOWMAP_NOISE4
  204. #define USE_SHADOWMAP_NOISEN
  205. #else
  206. #undef USE_SHADOWMAP_NOISEN
  207. #endif
  208.  
  209. #ifdef USE_SHADOWMAP_PCF4
  210. #define USE_SHADOWMAP_PCFN
  211. #else
  212. #undef USE_SHADOWMAP_PCFN
  213. #endif
  214.  
  215. #ifdef USE_SHADOWMAP_VARIANCE4
  216. #define USE_SHADOWMAP_VARIANCEN
  217. #else
  218. #undef USE_SHADOWMAP_VARIANCEN
  219. #endif
  220.  
  221. #ifdef USE_SHADOWMAP_CSM4
  222. #define USE_SHADOWMAP_CSMN
  223. #else
  224. #undef USE_SHADOWMAP_CSMN
  225. #endif
  226.  
  227. #ifdef USE_SHADOWMAP_CSM_INSTANCED4
  228. #define USE_SHADOWMAP_CSM_INSTANCEDN
  229. #else
  230. #undef USE_SHADOWMAP_CSM_INSTANCEDN
  231. #endif
  232.  
  233. #ifdef USE_SHADOWMAP_DYNLM4
  234. #define USE_SHADOWMAP_DYNLMN
  235. #else
  236. #undef USE_SHADOWMAP_DYNLMN
  237. #endif
  238.  
  239. #ifdef USE_SHADOWMAP_STLM4
  240. #define USE_SHADOWMAP_STLMN
  241. #else
  242. #undef USE_SHADOWMAP_STLMN
  243. #endif
  244.  
  245. #ifdef USE_SHADOWMAP_NODEPTH4
  246. #define USE_SHADOWMAP_NODEPTHN
  247. #else
  248. #undef USE_SHADOWMAP_NODEPTHN
  249. #endif
  250.  
  251. #ifdef USE_SHADOWMAP_CLAMP4
  252. #define USE_SHADOWMAP_CLAMPN
  253. #else
  254. #undef USE_SHADOWMAP_CLAMPN
  255. #endif
  256.  
  257. #define ShadowMapN ShadowMap4
  258. #define shadowmapN shadowmap4
  259. #define getShadowMapN getShadowMap4
  260. #define ShadowMapViewProjN ShadowMapViewProj4
  261. #define getPCFN getPCF4
  262. #define getVarianceN getVariance4
  263. #define GetShadowCoordsAndEpsilonN GetShadowCoordsAndEpsilon4
  264. #define shadowMapFilterSizeN shadowMapFilterSize4
  265. #include "shadow_add2.fx"
  266. #endif
  267.  
  268. #ifdef USE_SHADOWMAP5
  269. #ifdef USE_SHADOWMAP_NOISE5
  270. #define USE_SHADOWMAP_NOISEN
  271. #else
  272. #undef USE_SHADOWMAP_NOISEN
  273. #endif
  274.  
  275. #ifdef USE_SHADOWMAP_PCF5
  276. #define USE_SHADOWMAP_PCFN
  277. #else
  278. #undef USE_SHADOWMAP_PCFN
  279. #endif
  280.  
  281. #ifdef USE_SHADOWMAP_VARIANCE5
  282. #define USE_SHADOWMAP_VARIANCEN
  283. #else
  284. #undef USE_SHADOWMAP_VARIANCEN
  285. #endif
  286.  
  287. #ifdef USE_SHADOWMAP_CSM5
  288. #define USE_SHADOWMAP_CSMN
  289. #else
  290. #undef USE_SHADOWMAP_CSMN
  291. #endif
  292.  
  293. #ifdef USE_SHADOWMAP_CSM_INSTANCED5
  294. #define USE_SHADOWMAP_CSM_INSTANCEDN
  295. #else
  296. #undef USE_SHADOWMAP_CSM_INSTANCEDN
  297. #endif
  298.  
  299. #ifdef USE_SHADOWMAP_DYNLM5
  300. #define USE_SHADOWMAP_DYNLMN
  301. #else
  302. #undef USE_SHADOWMAP_DYNLMN
  303. #endif
  304.  
  305. #ifdef USE_SHADOWMAP_STLM5
  306. #define USE_SHADOWMAP_STLMN
  307. #else
  308. #undef USE_SHADOWMAP_STLMN
  309. #endif
  310.  
  311. #ifdef USE_SHADOWMAP_NODEPTH5
  312. #define USE_SHADOWMAP_NODEPTHN
  313. #else
  314. #undef USE_SHADOWMAP_NODEPTHN
  315. #endif
  316.  
  317. #ifdef USE_SHADOWMAP_CLAMP5
  318. #define USE_SHADOWMAP_CLAMPN
  319. #else
  320. #undef USE_SHADOWMAP_CLAMPN
  321. #endif
  322.  
  323. #define ShadowMapN ShadowMap5
  324. #define shadowmapN shadowmap5
  325. #define getShadowMapN getShadowMap5
  326. #define ShadowMapViewProjN ShadowMapViewProj5
  327. #define getPCFN getPCF5
  328. #define getVarianceN getVariance5
  329. #define GetShadowCoordsAndEpsilonN GetShadowCoordsAndEpsilon5
  330. #define shadowMapFilterSizeN shadowMapFilterSize5
  331. #include "shadow_add2.fx"
  332. #endif
  333.  
  334. float GetShadowMap(float4 pWorld, float smdata=0, float check=1)
  335. {
  336. float s = getShadowMap1(pWorld,smdata);
  337. #ifdef USE_SHADOWMAP2
  338. s *= getShadowMap2(pWorld,smdata,check);
  339. #endif
  340. #ifdef USE_SHADOWMAP3
  341. s *= getShadowMap3(pWorld,smdata,check);
  342. #endif
  343. #ifdef USE_SHADOWMAP4
  344. s *= getShadowMap4(pWorld,smdata,check);
  345. #endif
  346. #ifdef USE_SHADOWMAP5
  347. s *= getShadowMap5(pWorld,smdata,check);
  348. #endif
  349. return s;
  350. }
  351.  
  352. #else
  353. float GetShadowMap(float4 pWorld, float smdata=0, float check=1)
  354. {
  355. return 1;
  356. }
  357.  
  358. #include "shadow_simple_common.fx"
  359.  
  360. #define SMShadowedOutput
  361. #define OutputShadowCoords(p)
  362.  
  363. #ifdef USE_SHADOWMAP_CSMN
  364. #define InputShadowMap(p,check) GetShadowMap(p,0,check)
  365. //IN.SMdata,check)
  366. #else
  367. #define InputShadowMap(p,check) GetShadowMap(p,0,check)
  368. #endif
  369. #endif
  370.  
  371.  
  372.  
  373. #ifdef USE_SHADOWMAP_VARIANCE
  374. #define USE_SHADOWMAP_VARIANCEN
  375. #endif
  376.  
  377. #ifdef USE_SHADOWMAP_VARIANCE2
  378. #define USE_SHADOWMAP_VARIANCEN
  379. #endif
  380.  
  381. #ifdef USE_SHADOWMAP_VARIANCE3
  382. #define USE_SHADOWMAP_VARIANCEN
  383. #endif
  384.  
  385. #ifdef USE_SHADOWMAP_VARIANCE4
  386. #define USE_SHADOWMAP_VARIANCEN
  387. #endif
  388.  
  389. #ifdef USE_SHADOWMAP_VARIANCE5
  390. #define USE_SHADOWMAP_VARIANCEN
  391. #endif
  392.  
  393. #ifdef USE_SHADOWMAP_VARIANCEN
  394.  
  395. #define SHADOWDEPTHTYPE float2
  396.  
  397. float2 getShadowDepth(float4 Position)
  398. {
  399. return float2(Position.z,Position.z*Position.z);//pow(Position.z,2));
  400. }
  401.  
  402.  
  403. float4 getPShadowDepth(float2 Depth)
  404. {
  405. return float4(Depth.x,Depth.y,1,1);
  406. }
  407.  
  408. #else
  409.  
  410. #define SHADOWDEPTHTYPE float
  411.  
  412. float getShadowDepth(float4 Position)
  413. {
  414. return Position.z;
  415. }
  416.  
  417. float4 getPShadowDepth(float Depth)
  418. {
  419. return float4(Depth,Depth,Depth,Depth);
  420. }
  421.  
  422. #endif
  423.  
  424.  
  425. #define OutputShadowDepth(o,i) o = getShadowDepth(i)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement