BsMaterialParam.cpp 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. #include "BsMaterialParam.h"
  2. namespace BansheeEngine
  3. {
  4. template<class T, bool Core>
  5. TMaterialDataParam<T, Core>::TMaterialDataParam(const Vector<TGpuDataParam<T, Core>>& params)
  6. :mParams(params)
  7. { }
  8. template<class T, bool Core>
  9. void TMaterialDataParam<T, Core>::set(const T& value, UINT32 arrayIdx)
  10. {
  11. for (auto& param : mParams)
  12. param.set(value, arrayIdx);
  13. }
  14. template<class T, bool Core>
  15. T TMaterialDataParam<T, Core>::get(UINT32 arrayIdx)
  16. {
  17. if (mParams.size() == 0)
  18. return T();
  19. return mParams[0].get(arrayIdx); // They should all have the same value
  20. }
  21. template<bool Core>
  22. TMaterialParamStruct<Core>::TMaterialParamStruct(const Vector<TGpuParamStruct<Core>>& params)
  23. :mParams(params)
  24. { }
  25. template<bool Core>
  26. void TMaterialParamStruct<Core>::set(const void* value, UINT32 sizeBytes, UINT32 arrayIdx)
  27. {
  28. for (auto& param : mParams)
  29. param.set(value, sizeBytes, arrayIdx);
  30. }
  31. template<bool Core>
  32. void TMaterialParamStruct<Core>::get(void* value, UINT32 sizeBytes, UINT32 arrayIdx)
  33. {
  34. if (mParams.size() == 0)
  35. {
  36. value = nullptr;
  37. return;
  38. }
  39. return mParams[0].get(value, sizeBytes, arrayIdx); // They should all have the same value
  40. }
  41. template<bool Core>
  42. UINT32 TMaterialParamStruct<Core>::getElementSize() const
  43. {
  44. if (mParams.size() == 0)
  45. return 0;
  46. return mParams[0].getElementSize();
  47. }
  48. template<bool Core>
  49. TMaterialParamTexture<Core>::TMaterialParamTexture(const Vector<TGpuParamTexture<Core>>& params)
  50. :mParams(params)
  51. { }
  52. template<bool Core>
  53. void TMaterialParamTexture<Core>::set(const TextureType& texture)
  54. {
  55. for (auto& param : mParams)
  56. param.set(texture);
  57. }
  58. template<bool Core>
  59. typename TMaterialParamTexture<Core>::TextureType TMaterialParamTexture<Core>::get()
  60. {
  61. if (mParams.size() == 0)
  62. return TextureType();
  63. return mParams[0].get(); // They should all have the same value
  64. }
  65. template<bool Core>
  66. TMaterialParamLoadStoreTexture<Core>::TMaterialParamLoadStoreTexture(const Vector<TGpuParamLoadStoreTexture<Core>>& params)
  67. :mParams(params)
  68. { }
  69. template<bool Core>
  70. void TMaterialParamLoadStoreTexture<Core>::set(const TextureType& texture, const TextureSurface& surface)
  71. {
  72. for (auto& param : mParams)
  73. param.set(texture, surface);
  74. }
  75. template<bool Core>
  76. typename TMaterialParamLoadStoreTexture<Core>::TextureType TMaterialParamLoadStoreTexture<Core>::get()
  77. {
  78. if (mParams.size() == 0)
  79. return TextureType();
  80. return mParams[0].get(); // They should all have the same value
  81. }
  82. template<bool Core>
  83. TMaterialParamSampState<Core>::TMaterialParamSampState(const Vector<TGpuParamSampState<Core>>& params)
  84. :mParams(params)
  85. { }
  86. template<bool Core>
  87. void TMaterialParamSampState<Core>::set(const SamplerType& sampState)
  88. {
  89. for (auto& param : mParams)
  90. param.set(sampState);
  91. }
  92. template<bool Core>
  93. typename TMaterialParamSampState<Core>::SamplerType TMaterialParamSampState<Core>::get()
  94. {
  95. if (mParams.size() == 0)
  96. return SamplerType();
  97. return mParams[0].get(); // They should all have the same value
  98. }
  99. template class TMaterialDataParam<float, false>;
  100. template class TMaterialDataParam<Color, false>;
  101. template class TMaterialDataParam<Vector2, false>;
  102. template class TMaterialDataParam<Vector3, false>;
  103. template class TMaterialDataParam<Vector4, false>;
  104. template class TMaterialDataParam<Matrix3, false>;
  105. template class TMaterialDataParam<Matrix4, false>;
  106. template class TMaterialDataParam<float, true>;
  107. template class TMaterialDataParam<Color, true>;
  108. template class TMaterialDataParam<Vector2, true>;
  109. template class TMaterialDataParam<Vector3, true>;
  110. template class TMaterialDataParam<Vector4, true>;
  111. template class TMaterialDataParam<Matrix3, true>;
  112. template class TMaterialDataParam<Matrix4, true>;
  113. template class TMaterialParamStruct<false>;
  114. template class TMaterialParamStruct<true>;
  115. template class TMaterialParamTexture<false>;
  116. template class TMaterialParamTexture<true>;
  117. template class TMaterialParamLoadStoreTexture<false>;
  118. template class TMaterialParamLoadStoreTexture<true>;
  119. template class TMaterialParamSampState<false>;
  120. template class TMaterialParamSampState<true>;
  121. }