Jolt Physics
A multi core friendly Game Physics Engine
Loading...
Searching...
No Matches
WrapShaderBegin.h
Go to the documentation of this file.
1// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
2// SPDX-FileCopyrightText: 2026 Jorrit Rouwe
3// SPDX-License-Identifier: MIT
4
9
11
13JPH_MSVC_SUPPRESS_WARNING(5031) // #pragma warning(pop): likely mismatch, popping warning state pushed in different file
14
15#define JPH_SHADER_OVERRIDE_MACROS
16#define JPH_SHADER_GENERATE_WRAPPER
17
18#define JPH_SHADER_CONSTANT(type, name, value) inline static constexpr type name = value;
19
20#define JPH_SHADER_CONSTANTS_BEGIN(type, name) struct type { alignas(16) int dummy; } name; // Ensure that the first constant is 16 byte aligned
21#define JPH_SHADER_CONSTANTS_MEMBER(type, name) type c##name;
22#define JPH_SHADER_CONSTANTS_END(type)
23
24#define JPH_SHADER_BUFFER(type) const type *
25#define JPH_SHADER_RW_BUFFER(type) type *
26
27#define JPH_SHADER_BIND_BEGIN(name)
28#define JPH_SHADER_BIND_END(name)
29#define JPH_SHADER_BIND_BUFFER(type, name) const type *name = nullptr;
30#define JPH_SHADER_BIND_RW_BUFFER(type, name) type *name = nullptr;
31
32#define JPH_SHADER_FUNCTION_BEGIN(return_type, name, group_size_x, group_size_y, group_size_z) \
33 virtual void Main(
34#define JPH_SHADER_PARAM_THREAD_ID(name) const HLSLToCPP::uint3 &name
35#define JPH_SHADER_FUNCTION_END ) override
36
37#define JPH_SHADER_STRUCT_BEGIN(name) struct name {
38#define JPH_SHADER_STRUCT_MEMBER(type, name) type m##name;
39#define JPH_SHADER_STRUCT_END(name) };
40
41#define JPH_TO_STRING(name) JPH_TO_STRING2(name)
42#define JPH_TO_STRING2(name) #name
43
44#define JPH_SHADER_CLASS_NAME(name) JPH_SHADER_CLASS_NAME2(name)
45#define JPH_SHADER_CLASS_NAME2(name) name##ShaderWrapper
46
47#define JPH_IN(type) const type &
48#define JPH_OUT(type) type &
49#define JPH_IN_OUT(type) type &
50
51// Namespace to prevent 'using' from leaking out
52namespace ShaderWrappers {
53
54using namespace HLSLToCPP;
55
56class JPH_SHADER_CLASS_NAME(JPH_SHADER_NAME) : public ShaderWrapper
57{
58public:
59 // Define types
60 using JPH_float = float;
63 using JPH_uint = uint;
66 using JPH_int = int;
72
73 // Now the shader code should be included followed by WrapShaderBindings.h
74
unsigned int uint
Definition Core.h:500
#define JPH_MSVC_SUPPRESS_WARNING(w)
Definition Core.h:330
#define JPH_NAMESPACE_BEGIN
Definition Core.h:419
uint JPH_uint
Definition ShaderCore.h:44
int JPH_int
Definition ShaderCore.h:47
int3 JPH_int3
Definition ShaderCore.h:48
int4 JPH_int4
Definition ShaderCore.h:49
uint4 JPH_uint4
Definition ShaderCore.h:46
float4 JPH_Mat44[4]
Definition ShaderCore.h:52
float JPH_float
Definition ShaderCore.h:41
float3 JPH_float3
Definition ShaderCore.h:42
float4 JPH_Plane
Definition ShaderCore.h:51
float4 JPH_float4
Definition ShaderCore.h:43
float4 JPH_Quat
Definition ShaderCore.h:50
uint3 JPH_uint3
Definition ShaderCore.h:45
Wraps a compute shader to allow calling it from C++.
Definition ShaderWrapper.h:13
Definition HLSLToCPP.h:11
float4 Plane
Definition HLSLToCPP.h:486
float4 Quat
Definition HLSLToCPP.h:485
Definition HLSLToCPP.h:468
Definition HLSLToCPP.h:87
Definition HLSLToCPP.h:162
Definition HLSLToCPP.h:350
Definition HLSLToCPP.h:406
Definition HLSLToCPP.h:235
Definition HLSLToCPP.h:290