Jolt Physics
A multi core friendly Game Physics Engine
Loading...
Searching...
No Matches
ComputeShaderDX12.h
Go to the documentation of this file.
1// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
2// SPDX-FileCopyrightText: 2025 Jorrit Rouwe
3// SPDX-License-Identifier: MIT
4
5#pragma once
6
7#ifdef JPH_USE_DX12
8
12
14
16class JPH_EXPORT ComputeShaderDX12 : public ComputeShader
17{
18public:
20
22 ComputeShaderDX12(ComPtr<ID3D12RootSignature> inRootSignature, ComPtr<ID3D12PipelineState> inPipelineState, Array<String> &&inBindingNames, UnorderedMap<string_view, uint> &&inNameToIndex, uint32 inGroupSizeX, uint32 inGroupSizeY, uint32 inGroupSizeZ) :
23 ComputeShader(inGroupSizeX, inGroupSizeY, inGroupSizeZ),
24 mRootSignature(inRootSignature),
25 mPipelineState(inPipelineState),
26 mBindingNames(std::move(inBindingNames)),
27 mNameToIndex(std::move(inNameToIndex))
28 {
29 }
30
32 uint NameToIndex(const char *inName) const
33 {
34 UnorderedMap<string_view, uint>::const_iterator it = mNameToIndex.find(inName);
35 JPH_ASSERT(it != mNameToIndex.end());
36 return it->second;
37 }
38
40 ID3D12PipelineState * GetPipelineState() const { return mPipelineState.Get(); }
41 ID3D12RootSignature * GetRootSignature() const { return mRootSignature.Get(); }
42
43private:
44 ComPtr<ID3D12RootSignature> mRootSignature;
45 ComPtr<ID3D12PipelineState> mPipelineState;
46 Array<String> mBindingNames;
48};
49
51
52#endif // JPH_USE_DX12
#define JPH_EXPORT
Definition Core.h:278
unsigned int uint
Definition Core.h:505
#define JPH_NAMESPACE_END
Definition Core.h:428
std::uint32_t uint32
Definition Core.h:508
#define JPH_NAMESPACE_BEGIN
Definition Core.h:422
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
#define JPH_OVERRIDE_NEW_DELETE
Macro to override the new and delete functions.
Definition Memory.h:50
Definition Array.h:36
Compute shader handle.
Definition ComputeShader.h:15
Definition UnorderedMap.h:31
typename Base::const_iterator const_iterator
Definition UnorderedMap.h:37
Definition Array.h:699