Jolt Physics
A multi core friendly Game Physics Engine
Loading...
Searching...
No Matches
ComputeShaderVK.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
8
9#ifdef JPH_USE_VK
10
13
15
17class JPH_EXPORT ComputeShaderVK : public ComputeShader
18{
19public:
21
23 ComputeShaderVK(VkDevice inDevice, uint32 inGroupSizeX, uint32 inGroupSizeY, uint32 inGroupSizeZ) : ComputeShader(inGroupSizeX, inGroupSizeY, inGroupSizeZ), mDevice(inDevice) { }
24 virtual ~ComputeShaderVK() override;
25
27 bool Initialize(const Array<uint8> &inSPVCode, VkBuffer inDummyBuffer, ComputeShaderResult &outResult);
28
30 uint32 NameToBufferInfoIndex(const char *inName) const;
31
33 VkPipeline GetPipeline() const { return mPipeline; }
34 VkPipelineLayout GetPipelineLayout() const { return mPipelineLayout; }
35 VkDescriptorSetLayout GetDescriptorSetLayout() const { return mDescriptorSetLayout; }
36 const Array<VkDescriptorSetLayoutBinding> &GetLayoutBindings() const { return mLayoutBindings; }
37 const Array<VkDescriptorBufferInfo> &GetBufferInfos() const { return mBufferInfos; }
38
39private:
40 VkDevice mDevice;
41 VkShaderModule mShaderModule = VK_NULL_HANDLE;
42 VkPipelineLayout mPipelineLayout = VK_NULL_HANDLE;
43 VkPipeline mPipeline = VK_NULL_HANDLE;
44 VkDescriptorSetLayout mDescriptorSetLayout = VK_NULL_HANDLE;
45 Array<String> mBindingNames;
46 UnorderedMap<string_view, uint32> mNameToBufferInfoIndex;
49};
50
52
53#endif // JPH_USE_VK
#define JPH_EXPORT
Definition Core.h:275
#define JPH_NAMESPACE_END
Definition Core.h:425
std::uint32_t uint32
Definition Core.h:503
#define JPH_NAMESPACE_BEGIN
Definition Core.h:419
#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
Helper class that either contains a valid result or an error.
Definition Result.h:12
Definition UnorderedMap.h:30