TerrainLitMetaPass.hlsl 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #ifndef TERRAIN_LIT_META_PASS_INCLUDED
  2. #define TERRAIN_LIT_META_PASS_INCLUDED
  3. #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/MetaInput.hlsl"
  4. struct Attributes
  5. {
  6. float4 positionOS : POSITION;
  7. float2 uv0 : TEXCOORD0;
  8. float2 uv1 : TEXCOORD1;
  9. float2 uv2 : TEXCOORD2;
  10. };
  11. struct Varyings
  12. {
  13. float4 positionCS : SV_POSITION;
  14. float2 uv : TEXCOORD0;
  15. };
  16. Varyings TerrainVertexMeta(Attributes input)
  17. {
  18. Varyings output;
  19. output.positionCS = MetaVertexPosition(input.positionOS, input.uv1, input.uv2,
  20. unity_LightmapST, unity_DynamicLightmapST);
  21. output.uv = TRANSFORM_TEX(input.uv0, _MainTex);
  22. return output;
  23. }
  24. half4 TerrainFragmentMeta(Varyings input) : SV_Target
  25. {
  26. SurfaceData surfaceData;
  27. InitializeStandardLitSurfaceData(input.uv, surfaceData);
  28. BRDFData brdfData;
  29. InitializeBRDFData(surfaceData.albedo, surfaceData.metallic, surfaceData.specular, surfaceData.smoothness, surfaceData.alpha, brdfData);
  30. MetaInput metaInput;
  31. metaInput.Albedo = brdfData.diffuse + brdfData.specular * brdfData.roughness * 0.5;
  32. metaInput.SpecularColor = surfaceData.specular;
  33. metaInput.Emission = surfaceData.emission;
  34. return MetaFragment(metaInput);
  35. }
  36. #endif