85 lines
2.5 KiB
HLSL
85 lines
2.5 KiB
HLSL
// Crest Water System
|
|
// Copyright © 2024 Wave Harmonic. All rights reserved.
|
|
|
|
#ifndef CREST_MACROS_H
|
|
#define CREST_MACROS_H
|
|
|
|
#include "Packages/com.waveharmonic.crest/Runtime/Shaders/Library/Settings.Crest.hlsl"
|
|
|
|
#define m_CrestNameSpace namespace WaveHarmonic { namespace Crest {
|
|
#define m_CrestNameSpaceEnd } }
|
|
|
|
#define m_Crest WaveHarmonic::Crest
|
|
|
|
#define m_FloatMaximum 3.402823466e+38
|
|
|
|
#if (CREST_FULL_PRECISION_DISPLACEMENT != 0)
|
|
#define m_DisplacementTexture(texture, components) texture<float##components>
|
|
#else
|
|
#define m_DisplacementTexture(texture, components) texture
|
|
#endif
|
|
|
|
#define m_CrestVertex \
|
|
m_Crest::Varyings Vertex(m_Crest::Attributes i_Input) \
|
|
{ \
|
|
return m_Crest::Vertex(i_Input); \
|
|
}
|
|
|
|
#define m_CrestFragment(type) \
|
|
type Fragment(m_Crest::Varyings i_Input) : SV_Target \
|
|
{ \
|
|
return m_Crest::Fragment(i_Input); \
|
|
}
|
|
|
|
#define m_CrestFragmentVariant(type, name) \
|
|
type Fragment(m_Crest::Varyings i_Input) : SV_Target \
|
|
{ \
|
|
return m_Crest::name(i_Input); \
|
|
}
|
|
|
|
#define m_CrestFragmentWithFrontFace(type) \
|
|
type Fragment(m_Crest::Varyings i_Input, const bool i_IsFrontFace : SV_IsFrontFace) : SV_Target \
|
|
{ \
|
|
return m_Crest::Fragment(i_Input, i_IsFrontFace); \
|
|
}
|
|
|
|
#define m_CrestKernel(name) \
|
|
void Crest##name(uint3 id : SV_DispatchThreadID) \
|
|
{ \
|
|
m_Crest::name(id); \
|
|
}
|
|
|
|
#define m_CrestKernelVariant(name, variant) \
|
|
void Crest##name##variant(uint3 id : SV_DispatchThreadID) \
|
|
{ \
|
|
m_Crest::name(id); \
|
|
}
|
|
|
|
#define m_CrestKernelDefault(name) \
|
|
[numthreads(THREAD_GROUP_SIZE_X, THREAD_GROUP_SIZE_Y, 1)] \
|
|
void Crest##name(uint3 id : SV_DispatchThreadID) \
|
|
{ \
|
|
m_Crest::name(id); \
|
|
}
|
|
|
|
#define m_CrestInputKernel(name) \
|
|
void Crest##name(uint3 id : SV_DispatchThreadID) \
|
|
{ \
|
|
m_Crest::name(uint3(id.xy, g_Crest_LodCount - 1 - id.z)); \
|
|
}
|
|
|
|
#define m_CrestInputKernelDefault(name) \
|
|
[numthreads(THREAD_GROUP_SIZE_X, THREAD_GROUP_SIZE_Y, 1)] \
|
|
void Crest##name(uint3 id : SV_DispatchThreadID) \
|
|
{ \
|
|
m_Crest::name(uint3(id.xy, g_Crest_LodCount - 1 - id.z)); \
|
|
}
|
|
|
|
// Cross render pipeline kernels.
|
|
#define m_CrestKernelXRP(name) \
|
|
[numthreads(THREAD_GROUP_SIZE_X, THREAD_GROUP_SIZE_Y, 1)] void Crest##name##BRP(uint3 id : SV_DispatchThreadID) { m_Crest::name(id); } \
|
|
[numthreads(THREAD_GROUP_SIZE_X, THREAD_GROUP_SIZE_Y, 1)] void Crest##name##HRP(uint3 id : SV_DispatchThreadID) { m_Crest::name(id); } \
|
|
[numthreads(THREAD_GROUP_SIZE_X, THREAD_GROUP_SIZE_Y, 1)] void Crest##name##URP(uint3 id : SV_DispatchThreadID) { m_Crest::name(id); } \
|
|
|
|
#endif // CREST_MACROS_H
|