Samplers.hlsl 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #ifdef COMPILEPS
  2. sampler2D sDiffMap : register(S0);
  3. samplerCUBE sDiffCubeMap : register(S0);
  4. sampler2D sAlbedoBuffer : register(S0);
  5. sampler2D sNormalMap : register(S1);
  6. sampler2D sNormalBuffer : register(S1);
  7. sampler2D sSpecMap : register(S2);
  8. sampler2D sEmissiveMap : register(S3);
  9. sampler2D sEnvMap : register(S4);
  10. samplerCUBE sEnvCubeMap : register(S4);
  11. sampler1D sLightRampMap : register(S5);
  12. sampler2D sLightSpotMap : register(S6);
  13. samplerCUBE sLightCubeMap : register(S6);
  14. sampler2D sShadowMap : register(S7);
  15. samplerCUBE sFaceSelectCubeMap : register(S8);
  16. samplerCUBE sIndirectionCubeMap : register(S9);
  17. sampler2D sDepthBuffer : register(S10);
  18. sampler2D sLightBuffer : register(S11);
  19. sampler3D sVolumeMap : register(S12);
  20. samplerCUBE sZoneCubeMap : register(S13);
  21. sampler3D sZoneVolumeMap : register(S13);
  22. float4 Sample(sampler2D map, float2 texCoord)
  23. {
  24. // Use tex2Dlod if available to avoid divergence and allow branching
  25. #ifdef SM3
  26. return tex2Dlod(map, float4(texCoord, 0.0, 0.0));
  27. #else
  28. return tex2D(map, texCoord);
  29. #endif
  30. }
  31. float3 DecodeNormal(float4 normalInput)
  32. {
  33. #ifdef PACKEDNORMAL
  34. float3 normal;
  35. normal.xy = normalInput.ag * 2.0 - 1.0;
  36. #ifdef SM3
  37. normal.z = sqrt(max(1.0 - dot(normal.xy, normal.xy), 0.0));
  38. #else
  39. normal.z = sqrt(1.0 - dot(normal.xy, normal.xy));
  40. #endif
  41. return normal;
  42. #else
  43. return normalInput.rgb * 2.0 - 1.0;
  44. #endif
  45. }
  46. #endif