2
0

ComputeShaderCPU.h 900 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. // Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
  2. // SPDX-FileCopyrightText: 2026 Jorrit Rouwe
  3. // SPDX-License-Identifier: MIT
  4. #pragma once
  5. #include <Jolt/Compute/ComputeShader.h>
  6. #ifdef JPH_USE_CPU_COMPUTE
  7. JPH_NAMESPACE_BEGIN
  8. class ShaderWrapper;
  9. /// Compute shader handle for CPU compute
  10. class JPH_EXPORT ComputeShaderCPU : public ComputeShader
  11. {
  12. public:
  13. JPH_OVERRIDE_NEW_DELETE
  14. using CreateShader = ShaderWrapper *(*)();
  15. /// Constructor
  16. ComputeShaderCPU(CreateShader inCreateShader, uint32 inGroupSizeX, uint32 inGroupSizeY, uint32 inGroupSizeZ) :
  17. ComputeShader(inGroupSizeX, inGroupSizeY, inGroupSizeZ),
  18. mCreateShader(inCreateShader)
  19. {
  20. }
  21. /// Create an instance of the shader wrapper
  22. ShaderWrapper * CreateWrapper() const
  23. {
  24. return mCreateShader();
  25. }
  26. private:
  27. CreateShader mCreateShader;
  28. };
  29. JPH_NAMESPACE_END
  30. #endif // JPH_USE_CPU_COMPUTE