DebugVertexNormals.azsl 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  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. #include <scenesrg.srgi>
  9. #include <viewsrg.srgi>
  10. #include <Atom/Features/PBR/DefaultObjectSrg.azsli>
  11. #include <Atom/RPI/ShaderResourceGroups/DefaultDrawSrg.azsli>
  12. #include <Atom/Features/InstancedTransforms.azsli>
  13. struct VertexInput
  14. {
  15. float3 m_position : POSITION;
  16. float3 m_normal : NORMAL;
  17. };
  18. struct VertexOutput
  19. {
  20. float4 m_position : SV_Position;
  21. float3 m_normal : NORMAL;
  22. };
  23. VertexOutput MainVS(VertexInput input, uint instanceId : SV_InstanceID)
  24. {
  25. const float4x4 objectToWorldMatrix = GetObjectToWorldMatrix(instanceId);
  26. VertexOutput output;
  27. float4 worldPosition = mul(objectToWorldMatrix, float4(input.m_position, 1.0));
  28. output.m_position = mul(ViewSrg::m_viewProjectionMatrix, worldPosition);
  29. float3x3 objectToWorldMatrixIT = GetObjectToWorldMatrixInverseTranspose(instanceId);
  30. output.m_normal = mul(objectToWorldMatrixIT, input.m_normal);
  31. output.m_normal = normalize(output.m_normal);
  32. return output;
  33. }
  34. struct PixelOutput
  35. {
  36. float4 m_color : SV_Target0;
  37. };
  38. PixelOutput MainPS(VertexOutput input)
  39. {
  40. PixelOutput output;
  41. output.m_color.rgb = normalize(input.m_normal) * 0.5 + 0.5;
  42. output.m_color.a = 1.0;
  43. return output;
  44. }