BsObjectRendering.h 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #pragma once
  4. #include "BsRenderBeastPrerequisites.h"
  5. #include "RenderAPI/BsGpuParamDesc.h"
  6. #include "RenderAPI/BsGpuParam.h"
  7. #include "Renderer/BsRenderableElement.h"
  8. #include "Renderer/BsRendererMaterial.h"
  9. #include "Renderer/BsParamBlocks.h"
  10. #include "BsRendererObject.h"
  11. namespace bs
  12. {
  13. struct RendererAnimationData;
  14. namespace ct
  15. {
  16. /** @addtogroup RenderBeast
  17. * @{
  18. */
  19. BS_PARAM_BLOCK_BEGIN(PerFrameParamDef)
  20. BS_PARAM_BLOCK_ENTRY(float, gTime)
  21. BS_PARAM_BLOCK_END
  22. extern PerFrameParamDef gPerFrameParamDef;
  23. /** Manages initialization and rendering of individual renderable object, represented as RenderableElement%s. */
  24. class ObjectRenderer
  25. {
  26. public:
  27. ObjectRenderer();
  28. /** Initializes the specified renderable element, making it ready to be used. */
  29. void initElement(RendererObject& owner, BeastRenderableElement& element);
  30. /** Updates global per frame parameter buffers with new values. To be called at the start of every frame. */
  31. void setParamFrameParams(float time);
  32. protected:
  33. SPtr<GpuParamBlockBuffer> mPerFrameParamBuffer;
  34. };
  35. /** Basic shader that is used when no other is available. */
  36. class DefaultMaterial : public RendererMaterial<DefaultMaterial> { RMAT_DEF("Default.bsl"); };
  37. /** @} */
  38. }}