forked from LeenkxTeam/LNXSDK
43 lines
900 B
C
43 lines
900 B
C
|
|
// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
|
||
|
|
// SPDX-FileCopyrightText: 2026 Jorrit Rouwe
|
||
|
|
// SPDX-License-Identifier: MIT
|
||
|
|
|
||
|
|
#pragma once
|
||
|
|
|
||
|
|
#include <Jolt/Compute/ComputeShader.h>
|
||
|
|
|
||
|
|
#ifdef JPH_USE_CPU_COMPUTE
|
||
|
|
|
||
|
|
JPH_NAMESPACE_BEGIN
|
||
|
|
|
||
|
|
class ShaderWrapper;
|
||
|
|
|
||
|
|
/// Compute shader handle for CPU compute
|
||
|
|
class JPH_EXPORT ComputeShaderCPU : public ComputeShader
|
||
|
|
{
|
||
|
|
public:
|
||
|
|
JPH_OVERRIDE_NEW_DELETE
|
||
|
|
|
||
|
|
using CreateShader = ShaderWrapper *(*)();
|
||
|
|
|
||
|
|
/// Constructor
|
||
|
|
ComputeShaderCPU(CreateShader inCreateShader, uint32 inGroupSizeX, uint32 inGroupSizeY, uint32 inGroupSizeZ) :
|
||
|
|
ComputeShader(inGroupSizeX, inGroupSizeY, inGroupSizeZ),
|
||
|
|
mCreateShader(inCreateShader)
|
||
|
|
{
|
||
|
|
}
|
||
|
|
|
||
|
|
/// Create an instance of the shader wrapper
|
||
|
|
ShaderWrapper * CreateWrapper() const
|
||
|
|
{
|
||
|
|
return mCreateShader();
|
||
|
|
}
|
||
|
|
|
||
|
|
private:
|
||
|
|
CreateShader mCreateShader;
|
||
|
|
};
|
||
|
|
|
||
|
|
JPH_NAMESPACE_END
|
||
|
|
|
||
|
|
#endif // JPH_USE_CPU_COMPUTE
|