SurfaceInput.hlsl 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. #ifndef UNIVERSAL_INPUT_SURFACE_INCLUDED
  2. #define UNIVERSAL_INPUT_SURFACE_INCLUDED
  3. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
  4. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Packing.hlsl"
  5. #include "Packages/com.unity.render-pipelines.core/ShaderLibrary/CommonMaterial.hlsl"
  6. TEXTURE2D(_BaseMap); SAMPLER(sampler_BaseMap);
  7. TEXTURE2D(_BumpMap); SAMPLER(sampler_BumpMap);
  8. TEXTURE2D(_EmissionMap); SAMPLER(sampler_EmissionMap);
  9. // Must match Universal ShaderGraph master node
  10. struct SurfaceData
  11. {
  12. half3 albedo;
  13. half3 specular;
  14. half metallic;
  15. half smoothness;
  16. half3 normalTS;
  17. half3 emission;
  18. half occlusion;
  19. half alpha;
  20. };
  21. ///////////////////////////////////////////////////////////////////////////////
  22. // Material Property Helpers //
  23. ///////////////////////////////////////////////////////////////////////////////
  24. half Alpha(half albedoAlpha, half4 color, half cutoff)
  25. {
  26. #if !defined(_SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A) && !defined(_GLOSSINESS_FROM_BASE_ALPHA)
  27. half alpha = albedoAlpha * color.a;
  28. #else
  29. half alpha = color.a;
  30. #endif
  31. #if defined(_ALPHATEST_ON)
  32. clip(alpha - cutoff);
  33. #endif
  34. return alpha;
  35. }
  36. half4 SampleAlbedoAlpha(float2 uv, TEXTURE2D_PARAM(albedoAlphaMap, sampler_albedoAlphaMap))
  37. {
  38. return SAMPLE_TEXTURE2D(albedoAlphaMap, sampler_albedoAlphaMap, uv);
  39. }
  40. half3 SampleNormal(float2 uv, TEXTURE2D_PARAM(bumpMap, sampler_bumpMap), half scale = 1.0h)
  41. {
  42. #ifdef _NORMALMAP
  43. half4 n = SAMPLE_TEXTURE2D(bumpMap, sampler_bumpMap, uv);
  44. #if BUMP_SCALE_NOT_SUPPORTED
  45. return UnpackNormal(n);
  46. #else
  47. return UnpackNormalScale(n, scale);
  48. #endif
  49. #else
  50. return half3(0.0h, 0.0h, 1.0h);
  51. #endif
  52. }
  53. half3 SampleEmission(float2 uv, half3 emissionColor, TEXTURE2D_PARAM(emissionMap, sampler_emissionMap))
  54. {
  55. #ifndef _EMISSION
  56. return 0;
  57. #else
  58. return SAMPLE_TEXTURE2D(emissionMap, sampler_emissionMap, uv).rgb * emissionColor;
  59. #endif
  60. }
  61. #endif