Jolt Physics
A multi core friendly Game Physics Engine
Loading...
Searching...
No Matches
ComputeQueue.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
9#include <Jolt/Core/Result.h>
10
12
13class ComputeShader;
14class ComputeBuffer;
15
19class JPH_EXPORT ComputeQueue : public RefTarget<ComputeQueue>, public NonCopyable
20{
21public:
23
25 virtual ~ComputeQueue() = default;
26
29 virtual void SetShader(const ComputeShader *inShader) = 0;
30
32 enum class EBarrier
33 {
34 Yes,
35 No
36 };
37
42 virtual void SetConstantBuffer(const char *inName, const ComputeBuffer *inBuffer) = 0;
43
48 virtual void SetBuffer(const char *inName, const ComputeBuffer *inBuffer) = 0;
49
55 virtual void SetRWBuffer(const char *inName, ComputeBuffer *inBuffer, EBarrier inBarrier = EBarrier::Yes) = 0;
56
58 virtual void Dispatch(uint inThreadGroupsX, uint inThreadGroupsY = 1, uint inThreadGroupsZ = 1) = 0;
59
62 virtual void ScheduleReadback(ComputeBuffer *inDst, const ComputeBuffer *inSrc) = 0;
63
66 virtual void Execute() = 0;
67
70 virtual void Wait() = 0;
71
75 {
76 Execute();
77 Wait();
78 }
79};
80
82
#define JPH_EXPORT
Definition Core.h:275
unsigned int uint
Definition Core.h:500
#define JPH_NAMESPACE_END
Definition Core.h:425
#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
Buffer that can be read from / written to by a compute shader.
Definition ComputeBuffer.h:18
Definition ComputeQueue.h:20
EBarrier
If a barrier should be placed before accessing the buffer.
Definition ComputeQueue.h:33
virtual void Wait()=0
virtual void SetBuffer(const char *inName, const ComputeBuffer *inBuffer)=0
virtual void ScheduleReadback(ComputeBuffer *inDst, const ComputeBuffer *inSrc)=0
virtual void SetConstantBuffer(const char *inName, const ComputeBuffer *inBuffer)=0
virtual void SetShader(const ComputeShader *inShader)=0
virtual void Execute()=0
virtual void Dispatch(uint inThreadGroupsX, uint inThreadGroupsY=1, uint inThreadGroupsZ=1)=0
Dispatch a compute shader with the specified number of thread groups.
void ExecuteAndWait()
Definition ComputeQueue.h:74
virtual JPH_OVERRIDE_NEW_DELETE ~ComputeQueue()=default
Destructor.
virtual void SetRWBuffer(const char *inName, ComputeBuffer *inBuffer, EBarrier inBarrier=EBarrier::Yes)=0
Compute shader handle.
Definition ComputeShader.h:15
Class that makes another class non-copyable. Usage: Inherit from NonCopyable.
Definition NonCopyable.h:11
Definition Reference.h:35
Helper class that either contains a valid result or an error.
Definition Result.h:12