BsMaterialParam.cpp 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. #include "BsMaterialParam.h"
  2. namespace BansheeEngine
  3. {
  4. void MaterialParamStruct::set(const void* value, UINT32 sizeBytes, UINT32 arrayIdx)
  5. {
  6. for (auto& param : mParams)
  7. param.set(value, sizeBytes, arrayIdx);
  8. }
  9. void MaterialParamStruct::get(void* value, UINT32 sizeBytes, UINT32 arrayIdx)
  10. {
  11. if (mParams.size() == 0)
  12. {
  13. value = nullptr;
  14. return;
  15. }
  16. return mParams[0].get(value, sizeBytes, arrayIdx); // They should all have the same value
  17. }
  18. UINT32 MaterialParamStruct::getElementSize() const
  19. {
  20. if (mParams.size() == 0)
  21. return 0;
  22. return mParams[0].getElementSize();
  23. }
  24. MaterialParamStruct::MaterialParamStruct(const Vector<GpuParamStruct>& params)
  25. :mParams(params)
  26. { }
  27. void MaterialParamTexture::set(const HTexture& texture)
  28. {
  29. for (auto& param : mParams)
  30. param.set(texture);
  31. }
  32. HTexture MaterialParamTexture::get()
  33. {
  34. if (mParams.size() == 0)
  35. return HTexture();
  36. return mParams[0].get(); // They should all have the same value
  37. }
  38. MaterialParamTexture::MaterialParamTexture(const Vector<GpuParamTexture>& params)
  39. :mParams(params)
  40. { }
  41. void MaterialParamLoadStoreTexture::set(const HTexture& texture, const TextureSurface& surface)
  42. {
  43. for (auto& param : mParams)
  44. param.set(texture, surface);
  45. }
  46. HTexture MaterialParamLoadStoreTexture::get()
  47. {
  48. if (mParams.size() == 0)
  49. return HTexture();
  50. return mParams[0].get(); // They should all have the same value
  51. }
  52. MaterialParamLoadStoreTexture::MaterialParamLoadStoreTexture(const Vector<GpuParamLoadStoreTexture>& params)
  53. :mParams(params)
  54. { }
  55. void MaterialParamSampState::set(const HSamplerState& sampState)
  56. {
  57. for (auto& param : mParams)
  58. param.set(sampState);
  59. }
  60. HSamplerState MaterialParamSampState::get()
  61. {
  62. if (mParams.size() == 0)
  63. return HSamplerState();
  64. return mParams[0].get(); // They should all have the same value
  65. }
  66. MaterialParamSampState::MaterialParamSampState(const Vector<GpuParamSampState>& params)
  67. :mParams(params)
  68. { }
  69. }