ApplyBloomCS.hlsl 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. // RUN: %dxc -E main -T cs_6_0 %s | FileCheck %s
  2. // CHECK: threadId
  3. // CHECK: dot3
  4. // CHECK: Exp
  5. //
  6. // Copyright (c) Microsoft. All rights reserved.
  7. // This code is licensed under the MIT License (MIT).
  8. // THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF
  9. // ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY
  10. // IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR
  11. // PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT.
  12. //
  13. // Developed by Minigraph
  14. //
  15. // Author: James Stanard
  16. //
  17. #include "ShaderUtility.hlsli"
  18. #include "PostEffectsRS.hlsli"
  19. Texture2D<float3> SrcColor : register( t0 );
  20. Texture2D<float3> Bloom : register( t1 );
  21. RWTexture2D<float3> DstColor : register( u0 );
  22. RWTexture2D<float> OutLuma : register( u1 );
  23. SamplerState LinearSampler : register( s0 );
  24. cbuffer ConstantBuffer_x : register( b0 )
  25. {
  26. float2 g_RcpBufferDim;
  27. float g_BloomStrength;
  28. float g_LumaGamma;
  29. };
  30. [RootSignature(PostEffects_RootSig)]
  31. [numthreads( 8, 8, 1 )]
  32. void main( uint3 Gid : SV_GroupID, uint GI : SV_GroupIndex, uint3 GTid : SV_GroupThreadID, uint3 DTid : SV_DispatchThreadID )
  33. {
  34. float2 TexCoord = (DTid.xy + 0.5) * g_RcpBufferDim;
  35. // Load LDR and bloom
  36. float3 ldrColor = SrcColor[DTid.xy] + g_BloomStrength * Bloom.SampleLevel( LinearSampler, TexCoord, 0 );
  37. DstColor[DTid.xy] = ldrColor;
  38. OutLuma[DTid.xy] = RGBToLogLuminance( ldrColor, g_LumaGamma );
  39. }