PassTemplate.cpp 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  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. ->Field("DefaultShaderAttachmentStage", &PassTemplate::m_defaultShaderAttachmentStage)
  31. ;
  32. }
  33. }
  34. const PassRequest* PassTemplate::FindPassRequest(const Name& passName) const
  35. {
  36. for (const PassRequest& request : m_passRequests)
  37. {
  38. if (request.m_passName == passName)
  39. {
  40. return &request;
  41. }
  42. }
  43. return nullptr;
  44. }
  45. void PassTemplate::AddSlot(PassSlot passSlot)
  46. {
  47. m_slots.push_back(passSlot);
  48. }
  49. void PassTemplate::AddOutputConnection(PassConnection connection)
  50. {
  51. m_connections.push_back(connection);
  52. }
  53. void PassTemplate::AddImageAttachment(PassImageAttachmentDesc imageAttachment)
  54. {
  55. m_imageAttachments.push_back(imageAttachment);
  56. }
  57. void PassTemplate::AddBufferAttachment(PassBufferAttachmentDesc bufferAttachment)
  58. {
  59. m_bufferAttachments.push_back(bufferAttachment);
  60. }
  61. void PassTemplate::AddPassRequest(PassRequest passRequest)
  62. {
  63. m_passRequests.push_back(passRequest);
  64. }
  65. } // namespace RPI
  66. } // namespace AZ