BsRendererParams.cpp 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #include "BsRendererParams.h"
  2. namespace BansheeEngine
  3. {
  4. RendererMaterialParam::RendererMaterialParam(UINT32 semantic, GpuProgramType program, bool isObject, UINT32 passIdx, UINT32 blockSemantic)
  5. :semantic(semantic), program(program), isObject(isObject), passIdx(passIdx), blockSemantic(blockSemantic)
  6. {
  7. }
  8. RendererMaterialDataParam::RendererMaterialDataParam(UINT32 semantic, GpuProgramType program, GpuParamDataType type, UINT32 elementSize,
  9. UINT32 arraySize, UINT32 arrayElementStride, UINT32 cpuOffset, UINT32 gpuOffset, UINT32 passIdx, UINT32 blockSemantic)
  10. : RendererMaterialParam(semantic, program, false, passIdx, blockSemantic), type(type), elementSize(elementSize), arraySize(arraySize),
  11. arrayElementStride(arrayElementStride), cpuOffset(cpuOffset), gpuOffset(gpuOffset)
  12. {
  13. }
  14. RendererMaterialObjectParam::RendererMaterialObjectParam(UINT32 semantic, GpuProgramType program, GpuParamObjectType type,
  15. UINT32 slot, UINT32 passIdx, UINT32 blockSemantic)
  16. : RendererMaterialParam(semantic, program, true, passIdx, blockSemantic), type(type), slot(slot)
  17. {
  18. }
  19. RendererMaterialParams::RendererMaterialParams(const String& renderSystem, UINT32 renderableType)
  20. :mRenderSystem(renderSystem), mRenderableType(renderableType)
  21. { }
  22. RendererMaterialParams::~RendererMaterialParams()
  23. {
  24. for (auto& param : mParams)
  25. {
  26. bs_delete(param);
  27. }
  28. }
  29. bool RendererMaterialParams::operator== (const RendererMaterialParams& params) const
  30. {
  31. return mRenderSystem == params.mRenderSystem && mRenderableType == params.mRenderableType;
  32. }
  33. void RendererMaterialParams::addDataParam(UINT32 semantic, GpuProgramType program, GpuParamDataType type, UINT32 elementSize,
  34. UINT32 cpuOffset, UINT32 gpuOffset, UINT32 passIdx, UINT32 blockSemantic)
  35. {
  36. mParams.push_back(bs_new<RendererMaterialDataParam>(semantic, program, type, elementSize, 1, elementSize, cpuOffset, gpuOffset, passIdx, blockSemantic));
  37. }
  38. void RendererMaterialParams::addArrayDataParam(UINT32 semantic, GpuProgramType program, GpuParamDataType type, UINT32 elementSize,
  39. UINT32 arraySize, UINT32 arrayElementStride, UINT32 cpuOffset, UINT32 gpuOffset, UINT32 passIdx, UINT32 blockSemantic)
  40. {
  41. mParams.push_back(bs_new<RendererMaterialDataParam>(semantic, program, type, elementSize, arraySize, arrayElementStride,
  42. cpuOffset, gpuOffset, passIdx, blockSemantic));
  43. }
  44. void RendererMaterialParams::addObjectParam(UINT32 semantic, GpuProgramType program, GpuParamObjectType type,
  45. UINT32 slot, UINT32 passIdx, UINT32 blockSemantic)
  46. {
  47. mParams.push_back(bs_new<RendererMaterialObjectParam>(semantic, program, type, slot, passIdx, blockSemantic));
  48. }
  49. }