3
0

PassTemplate.cpp 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  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 <Atom/RHI.Reflect/Handle.h>
  9. #include <Atom/RPI.Public/Pass/Pass.h>
  10. #include <Atom/RPI.Reflect/Pass/PassTemplate.h>
  11. namespace AZ
  12. {
  13. namespace RPI
  14. {
  15. void PassTemplate::Reflect(ReflectContext* context)
  16. {
  17. if (auto* serializeContext = azrtti_cast<SerializeContext*>(context))
  18. {
  19. serializeContext->Class<PassTemplate>()
  20. ->Version(3)
  21. ->Field("Name", &PassTemplate::m_name)
  22. ->Field("PassClass", &PassTemplate::m_passClass)
  23. ->Field("Slots", &PassTemplate::m_slots)
  24. ->Field("ImageAttachments", &PassTemplate::m_imageAttachments)
  25. ->Field("BufferAttachments", &PassTemplate::m_bufferAttachments)
  26. ->Field("Connections", &PassTemplate::m_connections)
  27. ->Field("FallbackConnections", &PassTemplate::m_fallbackConnections)
  28. ->Field("PassRequests", &PassTemplate::m_passRequests)
  29. ->Field("PassData", &PassTemplate::m_passData)
  30. ;
  31. }
  32. }
  33. const PassRequest* PassTemplate::FindPassRequest(const Name& passName) const
  34. {
  35. for (const PassRequest& request : m_passRequests)
  36. {
  37. if (request.m_passName == passName)
  38. {
  39. return &request;
  40. }
  41. }
  42. return nullptr;
  43. }
  44. void PassTemplate::AddSlot(PassSlot passSlot)
  45. {
  46. m_slots.push_back(passSlot);
  47. }
  48. void PassTemplate::AddOutputConnection(PassConnection connection)
  49. {
  50. m_connections.push_back(connection);
  51. }
  52. void PassTemplate::AddImageAttachment(PassImageAttachmentDesc imageAttachment)
  53. {
  54. m_imageAttachments.push_back(imageAttachment);
  55. }
  56. void PassTemplate::AddBufferAttachment(PassBufferAttachmentDesc bufferAttachment)
  57. {
  58. m_bufferAttachments.push_back(bufferAttachment);
  59. }
  60. void PassTemplate::AddPassRequest(PassRequest passRequest)
  61. {
  62. m_passRequests.push_back(passRequest);
  63. }
  64. } // namespace RPI
  65. } // namespace AZ