diff --git a/Source/Engine/Core/Compiler.h b/Source/Engine/Core/Compiler.h index 47edbc7d9..9c736aa14 100644 --- a/Source/Engine/Core/Compiler.h +++ b/Source/Engine/Core/Compiler.h @@ -98,7 +98,7 @@ #endif -#define PACK_STRUCT(__Declaration__) PACK_BEGIN() __Declaration__ PACK_END() +#define PACK_STRUCT(_declaration) PACK_BEGIN() _declaration PACK_END() // C++ 17 #if __cplusplus >= 201703L diff --git a/Source/Engine/Debug/DebugDraw.cpp b/Source/Engine/Debug/DebugDraw.cpp index a3a9c21a8..5723fc265 100644 --- a/Source/Engine/Debug/DebugDraw.cpp +++ b/Source/Engine/Debug/DebugDraw.cpp @@ -125,7 +125,7 @@ PACK_STRUCT(struct Vertex { Color32 Color; }); -PACK_STRUCT(struct alignas(GPU_SHADER_DATA_ALIGNMENT) Data { +GPU_CB_STRUCT(Data { Matrix ViewProjection; Float2 Padding; float ClipPosZBias; diff --git a/Source/Engine/Graphics/Config.h b/Source/Engine/Graphics/Config.h index c37594bdb..2a9167045 100644 --- a/Source/Engine/Graphics/Config.h +++ b/Source/Engine/Graphics/Config.h @@ -85,3 +85,6 @@ #undef GPU_ENABLE_ASSERTION #define GPU_ENABLE_ASSERTION 0 #endif + +// Helper macro for defining shader structures wrappers in C++ that match HLSL constant buffers +#define GPU_CB_STRUCT(_declaration) ALIGN_BEGIN(GPU_SHADER_DATA_ALIGNMENT) PACK_BEGIN() struct _declaration PACK_END() ALIGN_END(GPU_SHADER_DATA_ALIGNMENT) diff --git a/Source/Engine/Graphics/RenderTools.h b/Source/Engine/Graphics/RenderTools.h index 8a19718f1..8d2873c29 100644 --- a/Source/Engine/Graphics/RenderTools.h +++ b/Source/Engine/Graphics/RenderTools.h @@ -12,8 +12,7 @@ class SkinnedModel; struct RenderContext; struct FloatR10G10B10A2; -PACK_STRUCT(struct alignas(GPU_SHADER_DATA_ALIGNMENT) QuadShaderData - { +GPU_CB_STRUCT(QuadShaderData { Float4 Color; }); diff --git a/Source/Engine/Level/Actors/ExponentialHeightFog.cpp b/Source/Engine/Level/Actors/ExponentialHeightFog.cpp index 10be7bdf0..7c3cfa846 100644 --- a/Source/Engine/Level/Actors/ExponentialHeightFog.cpp +++ b/Source/Engine/Level/Actors/ExponentialHeightFog.cpp @@ -179,7 +179,7 @@ void ExponentialHeightFog::GetExponentialHeightFogData(const RenderView& view, S result.VolumetricFogMaxDistance = VolumetricFogDistance; } -PACK_STRUCT(struct alignas(GPU_SHADER_DATA_ALIGNMENT) Data { +GPU_CB_STRUCT(Data { ShaderGBufferData GBuffer; ShaderExponentialHeightFogData ExponentialHeightFog; }); diff --git a/Source/Engine/Level/Actors/Sky.cpp b/Source/Engine/Level/Actors/Sky.cpp index f0a7c354d..2e1d46161 100644 --- a/Source/Engine/Level/Actors/Sky.cpp +++ b/Source/Engine/Level/Actors/Sky.cpp @@ -17,7 +17,7 @@ #include "Engine/Serialization/Serialization.h" #include "Engine/Level/Scene/SceneRendering.h" -PACK_STRUCT(struct alignas(GPU_SHADER_DATA_ALIGNMENT) Data { +GPU_CB_STRUCT(Data { Matrix WVP; Float3 ViewOffset; float Padding; diff --git a/Source/Engine/Particles/Graph/GPU/GPUParticles.cpp b/Source/Engine/Particles/Graph/GPU/GPUParticles.cpp index e4de0ad89..2a728170b 100644 --- a/Source/Engine/Particles/Graph/GPU/GPUParticles.cpp +++ b/Source/Engine/Particles/Graph/GPU/GPUParticles.cpp @@ -13,7 +13,7 @@ #include "Engine/Graphics/Shaders/GPUShader.h" #include "Engine/Graphics/Shaders/GPUConstantBuffer.h" -PACK_STRUCT(struct alignas(GPU_SHADER_DATA_ALIGNMENT) GPUParticlesData { +GPU_CB_STRUCT(GPUParticlesData { Matrix ViewProjectionMatrix; Matrix InvViewProjectionMatrix; Matrix InvViewMatrix; diff --git a/Source/Engine/Particles/Particles.cpp b/Source/Engine/Particles/Particles.cpp index 0e468b66f..c7d9e01d8 100644 --- a/Source/Engine/Particles/Particles.cpp +++ b/Source/Engine/Particles/Particles.cpp @@ -569,7 +569,7 @@ void DrawEmitterCPU(RenderContext& renderContext, ParticleBuffer* buffer, DrawCa #if COMPILE_WITH_GPU_PARTICLES -PACK_STRUCT(struct alignas(GPU_SHADER_DATA_ALIGNMENT) GPUParticlesSortingData { +GPU_CB_STRUCT(GPUParticlesSortingData { Float3 ViewPosition; uint32 ParticleCounterOffset; uint32 ParticleStride; diff --git a/Source/Engine/Render2D/Render2D.cpp b/Source/Engine/Render2D/Render2D.cpp index 41a136314..788d46088 100644 --- a/Source/Engine/Render2D/Render2D.cpp +++ b/Source/Engine/Render2D/Render2D.cpp @@ -52,11 +52,11 @@ // True if enable downscaling when rendering blur const bool DownsampleForBlur = false; -PACK_STRUCT(struct alignas(GPU_SHADER_DATA_ALIGNMENT) Data { +GPU_CB_STRUCT(Data { Matrix ViewProjection; }); -PACK_STRUCT(struct alignas(GPU_SHADER_DATA_ALIGNMENT) BlurData { +GPU_CB_STRUCT(BlurData { Float2 InvBufferSize; uint32 SampleCount; float Dummy0; diff --git a/Source/Engine/Renderer/AmbientOcclusionPass.h b/Source/Engine/Renderer/AmbientOcclusionPass.h index 69fcd211c..fe86fa7e7 100644 --- a/Source/Engine/Renderer/AmbientOcclusionPass.h +++ b/Source/Engine/Renderer/AmbientOcclusionPass.h @@ -20,7 +20,7 @@ class AmbientOcclusionPass : public RendererPass private: // Packed shader constant buffer structure (this MUST match shader code) - PACK_STRUCT(struct alignas(GPU_SHADER_DATA_ALIGNMENT) ASSAOConstants { + GPU_CB_STRUCT(ASSAOConstants { ShaderGBufferData GBuffer; Float2 ViewportPixelSize; diff --git a/Source/Engine/Renderer/AntiAliasing/FXAA.cpp b/Source/Engine/Renderer/AntiAliasing/FXAA.cpp index 032230d64..57da136c1 100644 --- a/Source/Engine/Renderer/AntiAliasing/FXAA.cpp +++ b/Source/Engine/Renderer/AntiAliasing/FXAA.cpp @@ -7,8 +7,7 @@ #include "Engine/Graphics/Graphics.h" #include "Engine/Graphics/RenderTask.h" -PACK_STRUCT(struct alignas(GPU_SHADER_DATA_ALIGNMENT) Data - { +GPU_CB_STRUCT(Data { Float4 ScreenSize; }); diff --git a/Source/Engine/Renderer/AntiAliasing/SMAA.h b/Source/Engine/Renderer/AntiAliasing/SMAA.h index 7a6690f5d..d1170a403 100644 --- a/Source/Engine/Renderer/AntiAliasing/SMAA.h +++ b/Source/Engine/Renderer/AntiAliasing/SMAA.h @@ -15,8 +15,7 @@ class SMAA : public RendererPass { private: - PACK_STRUCT(struct alignas(GPU_SHADER_DATA_ALIGNMENT) Data - { + GPU_CB_STRUCT(Data { Float4 RtSize; }); diff --git a/Source/Engine/Renderer/AntiAliasing/TAA.cpp b/Source/Engine/Renderer/AntiAliasing/TAA.cpp index 168e15ed9..316001d99 100644 --- a/Source/Engine/Renderer/AntiAliasing/TAA.cpp +++ b/Source/Engine/Renderer/AntiAliasing/TAA.cpp @@ -11,8 +11,7 @@ #include "Engine/Renderer/GBufferPass.h" #include "Engine/Engine/Engine.h" -PACK_STRUCT(struct alignas(GPU_SHADER_DATA_ALIGNMENT) Data - { +GPU_CB_STRUCT(Data { Float2 ScreenSizeInv; Float2 JitterInv; float Sharpness; diff --git a/Source/Engine/Renderer/AtmospherePreCompute.cpp b/Source/Engine/Renderer/AtmospherePreCompute.cpp index 6d17e7613..789526349 100644 --- a/Source/Engine/Renderer/AtmospherePreCompute.cpp +++ b/Source/Engine/Renderer/AtmospherePreCompute.cpp @@ -61,8 +61,7 @@ protected: bool Run() override; }; -PACK_STRUCT(struct alignas(GPU_SHADER_DATA_ALIGNMENT) Data - { +GPU_CB_STRUCT(Data { float First; float AtmosphereR; int AtmosphereLayer; diff --git a/Source/Engine/Renderer/ColorGradingPass.cpp b/Source/Engine/Renderer/ColorGradingPass.cpp index 9edc83969..82a1056c8 100644 --- a/Source/Engine/Renderer/ColorGradingPass.cpp +++ b/Source/Engine/Renderer/ColorGradingPass.cpp @@ -8,7 +8,7 @@ #include "Engine/Graphics/RenderTargetPool.h" #include "Engine/Graphics/RenderTask.h" -PACK_STRUCT(struct alignas(GPU_SHADER_DATA_ALIGNMENT) Data { +GPU_CB_STRUCT(Data { Float4 ColorSaturationShadows; Float4 ColorContrastShadows; Float4 ColorGammaShadows; diff --git a/Source/Engine/Renderer/Config.h b/Source/Engine/Renderer/Config.h index a861eb127..2685757ed 100644 --- a/Source/Engine/Renderer/Config.h +++ b/Source/Engine/Renderer/Config.h @@ -11,8 +11,7 @@ /// /// Structure that contains information about GBuffer for shaders. /// -PACK_STRUCT(struct alignas(GPU_SHADER_DATA_ALIGNMENT) ShaderGBufferData - { +GPU_CB_STRUCT(ShaderGBufferData { Float4 ViewInfo; Float4 ScreenSize; Float3 ViewPos; @@ -24,8 +23,7 @@ PACK_STRUCT(struct alignas(GPU_SHADER_DATA_ALIGNMENT) ShaderGBufferData /// /// Structure that contains information about exponential height fog for shaders. /// -PACK_STRUCT(struct alignas(GPU_SHADER_DATA_ALIGNMENT) ShaderExponentialHeightFogData - { +GPU_CB_STRUCT(ShaderExponentialHeightFogData { Float3 FogInscatteringColor; float FogMinOpacity; @@ -49,8 +47,7 @@ PACK_STRUCT(struct alignas(GPU_SHADER_DATA_ALIGNMENT) ShaderExponentialHeightFog /// /// Structure that contains information about atmosphere fog for shaders. /// -PACK_STRUCT(struct alignas(GPU_SHADER_DATA_ALIGNMENT) ShaderAtmosphericFogData - { +GPU_CB_STRUCT(ShaderAtmosphericFogData { float AtmosphericFogDensityScale; float AtmosphericFogSunDiscScale; float AtmosphericFogDistanceScale; @@ -71,7 +68,7 @@ PACK_STRUCT(struct alignas(GPU_SHADER_DATA_ALIGNMENT) ShaderAtmosphericFogData /// /// Structure that contains information about light for shaders. /// -PACK_STRUCT(struct alignas(GPU_SHADER_DATA_ALIGNMENT) ShaderLightData { +GPU_CB_STRUCT(ShaderLightData { Float2 SpotAngles; float SourceRadius; float SourceLength; @@ -90,7 +87,7 @@ PACK_STRUCT(struct alignas(GPU_SHADER_DATA_ALIGNMENT) ShaderLightData { /// /// Packed env probe data /// -PACK_STRUCT(struct alignas(GPU_SHADER_DATA_ALIGNMENT) ShaderEnvProbeData { +GPU_CB_STRUCT(ShaderEnvProbeData { Float4 Data0; // x - Position.x, y - Position.y, z - Position.z, w - unused Float4 Data1; // x - Radius , y - 1 / Radius, z - Brightness, w - unused }); diff --git a/Source/Engine/Renderer/DepthOfFieldPass.cpp b/Source/Engine/Renderer/DepthOfFieldPass.cpp index 23c626e9c..a0731649b 100644 --- a/Source/Engine/Renderer/DepthOfFieldPass.cpp +++ b/Source/Engine/Renderer/DepthOfFieldPass.cpp @@ -18,7 +18,7 @@ #define DOF_GRID_SIZE 450 #define DOF_DEPTH_BLUR_FORMAT PixelFormat::R16G16_Float -PACK_STRUCT(struct alignas(GPU_SHADER_DATA_ALIGNMENT) Data { +GPU_CB_STRUCT(Data { Float2 ProjectionAB; float BokehDepthCullThreshold; float BokehDepthCutoff; diff --git a/Source/Engine/Renderer/Editor/LightmapUVsDensity.cpp b/Source/Engine/Renderer/Editor/LightmapUVsDensity.cpp index e51117434..287fd006c 100644 --- a/Source/Engine/Renderer/Editor/LightmapUVsDensity.cpp +++ b/Source/Engine/Renderer/Editor/LightmapUVsDensity.cpp @@ -19,7 +19,7 @@ #include "Engine/Level/Scene/Scene.h" #include "Engine/Level/Actors/StaticModel.h" -PACK_STRUCT(struct alignas(GPU_SHADER_DATA_ALIGNMENT) LightmapUVsDensityMaterialShaderData { +GPU_CB_STRUCT(LightmapUVsDensityMaterialShaderData { Matrix ViewProjectionMatrix; Matrix WorldMatrix; Rectangle LightmapArea; diff --git a/Source/Engine/Renderer/Editor/VertexColors.cpp b/Source/Engine/Renderer/Editor/VertexColors.cpp index 26513f1c8..6da039561 100644 --- a/Source/Engine/Renderer/Editor/VertexColors.cpp +++ b/Source/Engine/Renderer/Editor/VertexColors.cpp @@ -12,7 +12,7 @@ #include "Engine/Graphics/RenderTask.h" #include "Engine/Renderer/DrawCall.h" -PACK_STRUCT(struct alignas(GPU_SHADER_DATA_ALIGNMENT) VertexColorsMaterialShaderData { +GPU_CB_STRUCT(VertexColorsMaterialShaderData { Matrix ViewProjectionMatrix; Matrix WorldMatrix; }); diff --git a/Source/Engine/Renderer/EyeAdaptationPass.cpp b/Source/Engine/Renderer/EyeAdaptationPass.cpp index 79e0c30a8..01c8f1853 100644 --- a/Source/Engine/Renderer/EyeAdaptationPass.cpp +++ b/Source/Engine/Renderer/EyeAdaptationPass.cpp @@ -16,7 +16,7 @@ #include "Engine/Engine/Engine.h" #include "Engine/Engine/Time.h" -PACK_STRUCT(struct alignas(GPU_SHADER_DATA_ALIGNMENT) EyeAdaptationData { +GPU_CB_STRUCT(EyeAdaptationData { float MinBrightness; float MaxBrightness; float SpeedUp; diff --git a/Source/Engine/Renderer/GBufferPass.cpp b/Source/Engine/Renderer/GBufferPass.cpp index 4addcb6c6..500e62f12 100644 --- a/Source/Engine/Renderer/GBufferPass.cpp +++ b/Source/Engine/Renderer/GBufferPass.cpp @@ -21,7 +21,7 @@ #include "Engine/Level/Actors/Decal.h" #include "Engine/Engine/Engine.h" -PACK_STRUCT(struct alignas(GPU_SHADER_DATA_ALIGNMENT) GBufferPassData{ +GPU_CB_STRUCT(GBufferPassData { ShaderGBufferData GBuffer; Float3 Dummy0; int32 ViewMode; diff --git a/Source/Engine/Renderer/GI/DynamicDiffuseGlobalIllumination.cpp b/Source/Engine/Renderer/GI/DynamicDiffuseGlobalIllumination.cpp index 10a40473e..e4e7c0dd2 100644 --- a/Source/Engine/Renderer/GI/DynamicDiffuseGlobalIllumination.cpp +++ b/Source/Engine/Renderer/GI/DynamicDiffuseGlobalIllumination.cpp @@ -41,8 +41,7 @@ #define DDGI_PROBE_UPDATE_BORDERS_GROUP_SIZE 8 #define DDGI_PROBE_CLASSIFY_GROUP_SIZE 32 -PACK_STRUCT(struct alignas(GPU_SHADER_DATA_ALIGNMENT) Data0 - { +GPU_CB_STRUCT(Data0 { DynamicDiffuseGlobalIlluminationPass::ConstantsData DDGI; GlobalSignDistanceFieldPass::ConstantsData GlobalSDF; GlobalSurfaceAtlasPass::ConstantsData GlobalSurfaceAtlas; @@ -54,8 +53,7 @@ PACK_STRUCT(struct alignas(GPU_SHADER_DATA_ALIGNMENT) Data0 Int4 ProbeScrollClears[4]; }); -PACK_STRUCT(struct alignas(GPU_SHADER_DATA_ALIGNMENT) Data1 - { +GPU_CB_STRUCT(Data1 { // TODO: use push constants on Vulkan or root signature data on DX12 to reduce overhead of changing single DWORD Float2 Padding1; uint32 CascadeIndex; diff --git a/Source/Engine/Renderer/GI/DynamicDiffuseGlobalIllumination.h b/Source/Engine/Renderer/GI/DynamicDiffuseGlobalIllumination.h index ed2642153..3931b2777 100644 --- a/Source/Engine/Renderer/GI/DynamicDiffuseGlobalIllumination.h +++ b/Source/Engine/Renderer/GI/DynamicDiffuseGlobalIllumination.h @@ -13,8 +13,7 @@ class FLAXENGINE_API DynamicDiffuseGlobalIlluminationPass : public RendererPass< { public: // Constant buffer data for DDGI access on a GPU. - PACK_STRUCT(struct alignas(GPU_SHADER_DATA_ALIGNMENT) ConstantsData - { + GPU_CB_STRUCT(ConstantsData { Float4 ProbesOriginAndSpacing[4]; Int4 ProbesScrollOffsets[4]; uint32 ProbesCounts[3]; diff --git a/Source/Engine/Renderer/GI/GlobalSurfaceAtlasPass.cpp b/Source/Engine/Renderer/GI/GlobalSurfaceAtlasPass.cpp index 858825145..ffd570fa7 100644 --- a/Source/Engine/Renderer/GI/GlobalSurfaceAtlasPass.cpp +++ b/Source/Engine/Renderer/GI/GlobalSurfaceAtlasPass.cpp @@ -42,8 +42,7 @@ #include "Engine/Debug/DebugDraw.h" #endif -PACK_STRUCT(struct alignas(GPU_SHADER_DATA_ALIGNMENT) Data0 - { +GPU_CB_STRUCT(Data0 { Float3 ViewWorldPos; float ViewNearPlane; float SkyboxIntensity; diff --git a/Source/Engine/Renderer/GI/GlobalSurfaceAtlasPass.h b/Source/Engine/Renderer/GI/GlobalSurfaceAtlasPass.h index 7961eb8b3..a498b3767 100644 --- a/Source/Engine/Renderer/GI/GlobalSurfaceAtlasPass.h +++ b/Source/Engine/Renderer/GI/GlobalSurfaceAtlasPass.h @@ -11,8 +11,7 @@ class FLAXENGINE_API GlobalSurfaceAtlasPass : public RendererPass { private: - PACK_STRUCT(struct alignas(GPU_SHADER_DATA_ALIGNMENT) Data { + GPU_CB_STRUCT(Data { float BloomLimit; float BloomThreshold; float BloomMagnitude; @@ -56,7 +56,7 @@ private: Matrix LensFlareStarMat; }); - PACK_STRUCT(struct alignas(GPU_SHADER_DATA_ALIGNMENT) GaussianBlurData { + GPU_CB_STRUCT(GaussianBlurData { Float2 Size; float Dummy3; float Dummy4; diff --git a/Source/Engine/Renderer/ProbesRenderer.cpp b/Source/Engine/Renderer/ProbesRenderer.cpp index da4e56f31..ec11deeb4 100644 --- a/Source/Engine/Renderer/ProbesRenderer.cpp +++ b/Source/Engine/Renderer/ProbesRenderer.cpp @@ -69,8 +69,7 @@ public: } }; -PACK_STRUCT(struct alignas(GPU_SHADER_DATA_ALIGNMENT) Data - { +GPU_CB_STRUCT(Data { Float2 Dummy0; int32 CubeFace; float SourceMipIndex; diff --git a/Source/Engine/Renderer/ReflectionsPass.cpp b/Source/Engine/Renderer/ReflectionsPass.cpp index f37f711fb..ac4c2b703 100644 --- a/Source/Engine/Renderer/ReflectionsPass.cpp +++ b/Source/Engine/Renderer/ReflectionsPass.cpp @@ -13,7 +13,7 @@ #include "Engine/Graphics/RenderTargetPool.h" #include "Engine/Level/Actors/EnvironmentProbe.h" -PACK_STRUCT(struct alignas(GPU_SHADER_DATA_ALIGNMENT) Data { +GPU_CB_STRUCT(Data { ShaderEnvProbeData PData; Matrix WVP; ShaderGBufferData GBuffer; diff --git a/Source/Engine/Renderer/ScreenSpaceReflectionsPass.cpp b/Source/Engine/Renderer/ScreenSpaceReflectionsPass.cpp index 82873b81c..11eb3e464 100644 --- a/Source/Engine/Renderer/ScreenSpaceReflectionsPass.cpp +++ b/Source/Engine/Renderer/ScreenSpaceReflectionsPass.cpp @@ -17,15 +17,12 @@ #include "Engine/Graphics/GPUContext.h" #include "Engine/Graphics/RenderTask.h" -#define RESOLVE_PASS_OUTPUT_FORMAT PixelFormat::R16G16B16A16_Float - // Shader input texture slots mapping #define TEXTURE0 4 #define TEXTURE1 5 #define TEXTURE2 6 -PACK_STRUCT(struct alignas(GPU_SHADER_DATA_ALIGNMENT) Data - { +GPU_CB_STRUCT(Data { ShaderGBufferData GBuffer; float MaxColorMiplevel; @@ -197,7 +194,7 @@ void ScreenSpaceReflectionsPass::Render(RenderContext& renderContext, GPUTexture tempDesc = GPUTextureDescription::New2D(traceWidth, traceHeight, PixelFormat::R16G16B16A16_Float); auto traceBuffer = RenderTargetPool::Get(tempDesc); RENDER_TARGET_POOL_SET_NAME(traceBuffer, "SSR.TraceBuffer"); - tempDesc = GPUTextureDescription::New2D(resolveWidth, resolveHeight, RESOLVE_PASS_OUTPUT_FORMAT); + tempDesc = GPUTextureDescription::New2D(resolveWidth, resolveHeight, PixelFormat::R16G16B16A16_Float); auto resolveBuffer = RenderTargetPool::Get(tempDesc); RENDER_TARGET_POOL_SET_NAME(resolveBuffer, "SSR.ResolveBuffer"); @@ -253,7 +250,7 @@ void ScreenSpaceReflectionsPass::Render(RenderContext& renderContext, GPUTexture // Wrong size temporal buffer if (buffers->TemporalSSR) RenderTargetPool::Release(buffers->TemporalSSR); - tempDesc = GPUTextureDescription::New2D(temporalWidth, temporalHeight, RESOLVE_PASS_OUTPUT_FORMAT); + tempDesc = GPUTextureDescription::New2D(temporalWidth, temporalHeight, PixelFormat::R16G16B16A16_Float); buffers->TemporalSSR = RenderTargetPool::Get(tempDesc); RENDER_TARGET_POOL_SET_NAME(buffers->TemporalSSR, "SSR.TemporalSSR"); } @@ -378,7 +375,7 @@ void ScreenSpaceReflectionsPass::Render(RenderContext& renderContext, GPUTexture GPUTexture* reflectionsBuffer = resolveBuffer; if (useTemporal) { - tempDesc = GPUTextureDescription::New2D(temporalWidth, temporalHeight, RESOLVE_PASS_OUTPUT_FORMAT); + tempDesc = GPUTextureDescription::New2D(temporalWidth, temporalHeight, PixelFormat::R16G16B16A16_Float); auto newTemporal = RenderTargetPool::Get(tempDesc); RENDER_TARGET_POOL_SET_NAME(newTemporal, "SSR.TemporalSSR"); const auto oldTemporal = buffers->TemporalSSR; diff --git a/Source/Engine/Renderer/ShadowsPass.cpp b/Source/Engine/Renderer/ShadowsPass.cpp index a9920ffb2..d779e0b83 100644 --- a/Source/Engine/Renderer/ShadowsPass.cpp +++ b/Source/Engine/Renderer/ShadowsPass.cpp @@ -28,7 +28,7 @@ #define NormalOffsetScaleTweak METERS_TO_UNITS(1) #define LocalLightNearPlane METERS_TO_UNITS(0.1f) -PACK_STRUCT(struct alignas(GPU_SHADER_DATA_ALIGNMENT) Data{ +GPU_CB_STRUCT(Data { ShaderGBufferData GBuffer; ShaderLightData Light; Matrix WVP; diff --git a/Source/Engine/Renderer/Utils/BitonicSort.cpp b/Source/Engine/Renderer/Utils/BitonicSort.cpp index 8255afdf1..805a5cabd 100644 --- a/Source/Engine/Renderer/Utils/BitonicSort.cpp +++ b/Source/Engine/Renderer/Utils/BitonicSort.cpp @@ -15,7 +15,7 @@ struct Item uint32 Value; }; -PACK_STRUCT(struct alignas(GPU_SHADER_DATA_ALIGNMENT) Data { +GPU_CB_STRUCT(Data { Item NullItem; uint32 CounterOffset; uint32 MaxIterations; diff --git a/Source/Engine/Renderer/Utils/MultiScaler.cpp b/Source/Engine/Renderer/Utils/MultiScaler.cpp index f6a7c6693..dfa94e74a 100644 --- a/Source/Engine/Renderer/Utils/MultiScaler.cpp +++ b/Source/Engine/Renderer/Utils/MultiScaler.cpp @@ -5,7 +5,7 @@ #include "Engine/Content/Content.h" #include "Engine/Graphics/GPUContext.h" -PACK_STRUCT(struct alignas(GPU_SHADER_DATA_ALIGNMENT) Data { +GPU_CB_STRUCT(Data { Float2 TexelSize; Float2 Padding; }); diff --git a/Source/Engine/Renderer/VolumetricFogPass.h b/Source/Engine/Renderer/VolumetricFogPass.h index d39c7638f..0489bb88a 100644 --- a/Source/Engine/Renderer/VolumetricFogPass.h +++ b/Source/Engine/Renderer/VolumetricFogPass.h @@ -28,14 +28,14 @@ public: private: - PACK_STRUCT(struct alignas(GPU_SHADER_DATA_ALIGNMENT) SkyLightData { + GPU_CB_STRUCT(SkyLightData { Float3 MultiplyColor; float VolumetricScatteringIntensity; Float3 AdditiveColor; float Dummy0; }); - PACK_STRUCT(struct alignas(GPU_SHADER_DATA_ALIGNMENT) Data { + GPU_CB_STRUCT(Data { ShaderGBufferData GBuffer; Float3 GlobalAlbedo; @@ -67,7 +67,7 @@ private: DynamicDiffuseGlobalIlluminationPass::ConstantsData DDGI; }); - PACK_STRUCT(struct alignas(GPU_SHADER_DATA_ALIGNMENT) PerLight { + GPU_CB_STRUCT(PerLight { Float2 SliceToDepth; int32 MinZ; float LocalLightScatteringIntensity; diff --git a/Source/Engine/ShadowsOfMordor/Builder.Jobs.cpp b/Source/Engine/ShadowsOfMordor/Builder.Jobs.cpp index b846ab0a9..c6b0cd056 100644 --- a/Source/Engine/ShadowsOfMordor/Builder.Jobs.cpp +++ b/Source/Engine/ShadowsOfMordor/Builder.Jobs.cpp @@ -23,7 +23,7 @@ namespace ShadowsOfMordor { - PACK_STRUCT(struct alignas(GPU_SHADER_DATA_ALIGNMENT) ShaderData { + GPU_CB_STRUCT(ShaderData { Rectangle LightmapArea; Matrix WorldMatrix; Matrix ToTangentSpace; diff --git a/Source/Engine/Tools/ModelTool/ModelTool.cpp b/Source/Engine/Tools/ModelTool/ModelTool.cpp index d9b8d0bf3..b71267e4c 100644 --- a/Source/Engine/Tools/ModelTool/ModelTool.cpp +++ b/Source/Engine/Tools/ModelTool/ModelTool.cpp @@ -90,8 +90,7 @@ class GPUModelSDFTask : public GPUTask Float3 _xyzToLocalMul, _xyzToLocalAdd; const uint32 ThreadGroupSize = 64; - PACK_STRUCT(struct alignas(GPU_SHADER_DATA_ALIGNMENT) Data - { + GPU_CB_STRUCT(Data { Int3 Resolution; uint32 ResolutionSize; float MaxDistance;