BsGpuParam.cpp 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  1. #include "BsGpuParam.h"
  2. #include "BsGpuParams.h"
  3. #include "BsGpuParamBlockBuffer.h"
  4. namespace BansheeEngine
  5. {
  6. /************************************************************************/
  7. /* GPU PARAMS BASE */
  8. /************************************************************************/
  9. GpuParamBase::GpuParamBase()
  10. { }
  11. GpuParamBase::GpuParamBase(const SPtr<GpuParams>& parent)
  12. :mParent(parent)
  13. { }
  14. void GpuParamBase::markCoreDirty()
  15. {
  16. mParent->_markCoreDirty();
  17. }
  18. /************************************************************************/
  19. /* GPU DATA PARAMS BASE */
  20. /************************************************************************/
  21. GpuDataParamBase::GpuDataParamBase()
  22. : GpuParamBase(), mParamDesc(nullptr)
  23. { }
  24. GpuDataParamBase::GpuDataParamBase(GpuParamDataDesc* paramDesc, const SPtr<GpuParams>& parent)
  25. : GpuParamBase(parent), mParamDesc(paramDesc)
  26. { }
  27. bool GpuDataParamBase::getTransposeMatrices() const
  28. {
  29. return mParent->getTransposeMatrices();
  30. }
  31. bool GpuDataParamBase::write(UINT32 offset, const void* data, UINT32 size)
  32. {
  33. GpuParamBlockBufferPtr paramBlock = mParent->getParamBlockBuffer(mParamDesc->paramBlockSlot);
  34. if (paramBlock == nullptr)
  35. return false;
  36. paramBlock->write(offset, data, size);
  37. return true;
  38. }
  39. bool GpuDataParamBase::read(UINT32 offset, void* data, UINT32 size)
  40. {
  41. GpuParamBlockBufferPtr paramBlock = mParent->getParamBlockBuffer(mParamDesc->paramBlockSlot);
  42. if (paramBlock == nullptr)
  43. return false;
  44. paramBlock->read(offset, data, size);
  45. return true;
  46. }
  47. void GpuDataParamBase::zeroOut(UINT32 offset, UINT32 size)
  48. {
  49. GpuParamBlockBufferPtr paramBlock = mParent->getParamBlockBuffer(mParamDesc->paramBlockSlot);
  50. if (paramBlock == nullptr)
  51. return;
  52. paramBlock->zeroOut(offset, size);
  53. }
  54. /************************************************************************/
  55. /* GPU OBJECT PARAMS BASE */
  56. /************************************************************************/
  57. GpuObjectParamBase::GpuObjectParamBase()
  58. : GpuParamBase(), mParamDesc(nullptr)
  59. { }
  60. GpuObjectParamBase::GpuObjectParamBase(GpuParamObjectDesc* paramDesc, const SPtr<GpuParams>& parent)
  61. : GpuParamBase(parent), mParamDesc(paramDesc)
  62. { }
  63. HTexture GpuObjectParamBase::getTexture(UINT32 slot)
  64. {
  65. return mParent->getTexture(slot);
  66. }
  67. HSamplerState GpuObjectParamBase::getSamplerState(UINT32 slot)
  68. {
  69. return mParent->getSamplerState(slot);
  70. }
  71. void GpuObjectParamBase::setTexture(UINT32 slot, const HTexture& texture)
  72. {
  73. mParent->setTexture(slot, texture);
  74. }
  75. void GpuObjectParamBase::setSamplerState(UINT32 slot, const HSamplerState& sampler)
  76. {
  77. mParent->setSamplerState(slot, sampler);
  78. }
  79. void GpuObjectParamBase::setLoadStoreSurface(UINT32 slot, const TextureSurface& surface) const
  80. {
  81. mParent->setLoadStoreSurface(slot, surface);
  82. }
  83. void GpuObjectParamBase::setIsLoadStoreTexture(UINT32 slot, bool isLoadStore)
  84. {
  85. mParent->setIsLoadStoreTexture(slot, isLoadStore);
  86. }
  87. /************************************************************************/
  88. /* GPU PARAMS CORE BASE */
  89. /************************************************************************/
  90. GpuParamCoreBase::GpuParamCoreBase()
  91. { }
  92. GpuParamCoreBase::GpuParamCoreBase(const SPtr<GpuParamsCore>& parent)
  93. :mParent(parent)
  94. { }
  95. void GpuParamCoreBase::markCoreDirty()
  96. {
  97. mParent->_markCoreDirty();
  98. }
  99. /************************************************************************/
  100. /* GPU DATA PARAMS CORE BASE */
  101. /************************************************************************/
  102. GpuDataParamCoreBase::GpuDataParamCoreBase()
  103. : GpuParamCoreBase(), mParamDesc(nullptr)
  104. { }
  105. GpuDataParamCoreBase::GpuDataParamCoreBase(GpuParamDataDesc* paramDesc, const SPtr<GpuParamsCore>& parent)
  106. : GpuParamCoreBase(parent), mParamDesc(paramDesc)
  107. { }
  108. bool GpuDataParamCoreBase::getTransposeMatrices() const
  109. {
  110. return mParent->getTransposeMatrices();
  111. }
  112. bool GpuDataParamCoreBase::write(UINT32 offset, const void* data, UINT32 size)
  113. {
  114. SPtr<GpuParamBlockBufferCore> paramBlock = mParent->getParamBlockBuffer(mParamDesc->paramBlockSlot);
  115. if (paramBlock == nullptr)
  116. return false;
  117. paramBlock->write(offset, data, size);
  118. return true;
  119. }
  120. bool GpuDataParamCoreBase::read(UINT32 offset, void* data, UINT32 size)
  121. {
  122. SPtr<GpuParamBlockBufferCore> paramBlock = mParent->getParamBlockBuffer(mParamDesc->paramBlockSlot);
  123. if (paramBlock == nullptr)
  124. return false;
  125. paramBlock->read(offset, data, size);
  126. return true;
  127. }
  128. void GpuDataParamCoreBase::zeroOut(UINT32 offset, UINT32 size)
  129. {
  130. SPtr<GpuParamBlockBufferCore> paramBlock = mParent->getParamBlockBuffer(mParamDesc->paramBlockSlot);
  131. if (paramBlock == nullptr)
  132. return;
  133. paramBlock->zeroOut(offset, size);
  134. }
  135. /************************************************************************/
  136. /* GPU OBJECT PARAMS CORE BASE */
  137. /************************************************************************/
  138. GpuObjectParamCoreBase::GpuObjectParamCoreBase()
  139. : GpuParamCoreBase(), mParamDesc(nullptr)
  140. { }
  141. GpuObjectParamCoreBase::GpuObjectParamCoreBase(GpuParamObjectDesc* paramDesc, const SPtr<GpuParamsCore>& parent)
  142. : GpuParamCoreBase(parent), mParamDesc(paramDesc)
  143. { }
  144. SPtr<TextureCore> GpuObjectParamCoreBase::getTexture(UINT32 slot)
  145. {
  146. return mParent->getTexture(slot);
  147. }
  148. SPtr<SamplerStateCore> GpuObjectParamCoreBase::getSamplerState(UINT32 slot)
  149. {
  150. return mParent->getSamplerState(slot);
  151. }
  152. void GpuObjectParamCoreBase::setTexture(UINT32 slot, const SPtr<TextureCore>& texture)
  153. {
  154. mParent->setTexture(slot, texture);
  155. }
  156. void GpuObjectParamCoreBase::setSamplerState(UINT32 slot, const SPtr<SamplerStateCore>& sampler)
  157. {
  158. mParent->setSamplerState(slot, sampler);
  159. }
  160. void GpuObjectParamCoreBase::setLoadStoreSurface(UINT32 slot, const TextureSurface& surface) const
  161. {
  162. mParent->setLoadStoreSurface(slot, surface);
  163. }
  164. void GpuObjectParamCoreBase::setIsLoadStoreTexture(UINT32 slot, bool isLoadStore)
  165. {
  166. mParent->setIsLoadStoreTexture(slot, isLoadStore);
  167. }
  168. }