Advertisement
Guest User

Untitled

a guest
Aug 7th, 2015
218
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.77 KB | None | 0 0
  1. #ifdef D3D11
  2. // Make sampling macros also available for VS on D3D11
  3. #define Sample2D(tex, uv) t##tex.Sample(s##tex, uv)
  4. #define Sample2DProj(tex, uv) t##tex.Sample(s##tex, uv.xy / uv.w)
  5. #define Sample2DLod0(tex, uv) t##tex.SampleLevel(s##tex, uv, 0.0)
  6. #define SampleCube(tex, uv) t##tex.Sample(s##tex, uv)
  7. #define SampleShadow(tex, uv) t##tex.SampleCmpLevelZero(s##tex, uv.xy, uv.z)
  8.  
  9. #ifdef COMPILEVS
  10. Texture2D tDisplaceMap : register(t1);
  11. SamplerState sDisplaceMap : register(s1);
  12. #endif
  13.  
  14. #endif
  15.  
  16. #ifdef COMPILEPS
  17.  
  18. #ifndef D3D11
  19.  
  20. // D3D9 samplers
  21. sampler2D sDiffMap : register(s0);
  22. samplerCUBE sDiffCubeMap : register(s0);
  23. sampler2D sAlbedoBuffer : register(s0);
  24. sampler2D sNormalMap : register(s1);
  25. sampler2D sNormalBuffer : register(s1);
  26. sampler2D sSpecMap : register(s2);
  27. sampler2D sEmissiveMap : register(s3);
  28. sampler2D sEnvMap : register(s4);
  29. sampler3D sVolumeMap : register(s5);
  30. samplerCUBE sEnvCubeMap : register(s4);
  31. sampler2D sLightRampMap : register(s8);
  32. sampler2D sLightSpotMap : register(s9);
  33. samplerCUBE sLightCubeMap : register(s9);
  34. sampler2D sShadowMap : register(s10);
  35. samplerCUBE sFaceSelectCubeMap : register(s11);
  36. samplerCUBE sIndirectionCubeMap : register(s12);
  37. sampler2D sDepthBuffer : register(s13);
  38. sampler2D sLightBuffer : register(s14);
  39. samplerCUBE sZoneCubeMap : register(s15);
  40. sampler3D sZoneVolumeMap : register(s15);
  41.  
  42. #define Sample2D(tex, uv) tex2D(s##tex, uv)
  43. #define Sample2DProj(tex, uv) tex2Dproj(s##tex, uv)
  44. #define Sample2DLod0(tex, uv) tex2Dlod(s##tex, float4(uv, 0.0, 0.0))
  45. #define SampleCube(tex, uv) texCUBE(s##tex, uv)
  46. #define SampleShadow(tex, uv) tex2Dproj(s##tex, uv)
  47.  
  48. #else
  49.  
  50. // D3D11 textures and samplers
  51.  
  52. Texture2D tDiffMap : register(t0);
  53. TextureCube tDiffCubeMap : register(t0);
  54. Texture2D tAlbedoBuffer : register(t0);
  55. Texture2D tNormalMap : register(t1);
  56. Texture2D tNormalBuffer : register(t1);
  57. Texture2D tSpecMap : register(t2);
  58. Texture2D tEmissiveMap : register(t3);
  59. Texture2D tEnvMap : register(t4);
  60. Texture3D tVolumeMap : register(t5);
  61. TextureCube tEnvCubeMap : register(t4);
  62. Texture2D tLightRampMap : register(t8);
  63. Texture2D tLightSpotMap : register(t9);
  64. TextureCube tLightCubeMap : register(t9);
  65. Texture2D tShadowMap : register(t10);
  66. TextureCube tFaceSelectCubeMap : register(t11);
  67. TextureCube tIndirectionCubeMap : register(t12);
  68. Texture2D tDepthBuffer : register(t13);
  69. Texture2D tLightBuffer : register(t14);
  70. TextureCube tZoneCubeMap : register(t15);
  71. Texture3D tZoneVolumeMap : register(t15);
  72.  
  73. SamplerState sDiffMap : register(s0);
  74. SamplerState sDiffCubeMap : register(s0);
  75. SamplerState sAlbedoBuffer : register(s0);
  76. SamplerState sNormalMap : register(s1);
  77. SamplerState sNormalBuffer : register(s1);
  78. SamplerState sSpecMap : register(s2);
  79. SamplerState sEmissiveMap : register(s3);
  80. SamplerState sEnvMap : register(s4);
  81. SamplerState sVolumeMap : register(s5);
  82. SamplerState sEnvCubeMap : register(s4);
  83. SamplerState sLightRampMap : register(s8);
  84. SamplerState sLightSpotMap : register(s9);
  85. SamplerState sLightCubeMap : register(s9);
  86. SamplerComparisonState sShadowMap : register(s10);
  87. SamplerState sFaceSelectCubeMap : register(s11);
  88. SamplerState sIndirectionCubeMap : register(s12);
  89. SamplerState sDepthBuffer : register(s13);
  90. SamplerState sLightBuffer : register(s14);
  91. SamplerState sZoneCubeMap : register(s15);
  92. SamplerState sZoneVolumeMap : register(s15);
  93.  
  94. #endif
  95.  
  96. float3 DecodeNormal(float4 normalInput)
  97. {
  98. #ifdef PACKEDNORMAL
  99.     float3 normal;
  100.     normal.xy = normalInput.ag * 2.0 - 1.0;
  101.     normal.z = sqrt(max(1.0 - dot(normal.xy, normal.xy), 0.0));
  102.     return normal;
  103. #else
  104.     return normalInput.rgb * 2.0 - 1.0;
  105. #endif
  106. }
  107.  
  108. float ReconstructDepth(float hwDepth)
  109. {
  110.     return dot(float2(hwDepth, cDepthReconstruct.y / (hwDepth - cDepthReconstruct.x)), cDepthReconstruct.zw);
  111. }
  112.  
  113. #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement