DeferredMaterialPass.azsli 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. /*
  2. * Copyright (c) Contributors to the Open 3D Engine Project.
  3. * For complete copyright and license terms please see the LICENSE at the root of this distribution.
  4. *
  5. * SPDX-License-Identifier: Apache-2.0 OR MIT
  6. *
  7. */
  8. #define MATERIALPIPELINE_SHADER_HAS_PIXEL_STAGE 1
  9. //TODO(DeferredPOC): Support clear coat
  10. #define ENABLE_CLEAR_COAT 0
  11. //////////////////////////////////////////////////////////////////////////////////////////////////
  12. #include MATERIAL_TYPE_AZSLI_FILE_PATH
  13. //////////////////////////////////////////////////////////////////////////////////////////////////
  14. #include <viewsrg.srgi>
  15. #include <Atom/RPI/ShaderResourceGroups/DefaultDrawSrg.azsli>
  16. #include <Atom/Features/PBR/DefaultObjectSrg.azsli>
  17. #include <Atom/Features/ColorManagement/TransformColor.azsli>
  18. #include <Atom/Features/PBR/LightingOptions.azsli>
  19. //#include <Atom/Features/PBR/Surfaces/StandardSurface.azsli>
  20. VsOutput MaterialVS(VsInput IN)
  21. {
  22. VsOutput OUT = EvaluateVertexGeometry(IN);
  23. return OUT;
  24. }
  25. struct DeferredMaterialOutput
  26. {
  27. float4 m_baseColor : SV_Target0;
  28. float4 m_roughnessMetal : SV_Target1;
  29. float4 m_normal : SV_Target2;
  30. };
  31. DeferredMaterialOutput MaterialPS(VsOutput IN, bool isFrontFace : SV_IsFrontFace)
  32. {
  33. // ------- Geometry -> Surface -------
  34. PixelGeometryData geoData = EvaluatePixelGeometry(IN, isFrontFace);
  35. Surface surface = EvaluateSurface(geoData);
  36. // ------- Output -------
  37. DeferredMaterialOutput OUT;
  38. OUT.m_baseColor = float4(surface.baseColor, 1);
  39. OUT.m_roughnessMetal = float4(surface.roughnessLinear, surface.metallic, 0, 0);
  40. OUT.m_normal.rgb = EncodeNormalSignedOctahedron(surface.normal);
  41. OUT.m_normal.a = EncodeUnorm2BitFlags(o_enableIBL, o_specularF0_enableMultiScatterCompensation);
  42. return OUT;
  43. }