aboutsummaryrefslogtreecommitdiff
path: root/src/Shaders_DX12.h
diff options
context:
space:
mode:
authorlbavoil <[email protected]>2016-03-25 13:01:54 +0100
committerlbavoil <[email protected]>2016-03-25 13:01:54 +0100
commit99174e4e5fb4b7079da80b35a6dfd68f3fd56a1c (patch)
treefbcd4260d6c953d569a887505336a1c3f202e10f /src/Shaders_DX12.h
downloadhbaoplus-99174e4e5fb4b7079da80b35a6dfd68f3fd56a1c.tar.xz
hbaoplus-99174e4e5fb4b7079da80b35a6dfd68f3fd56a1c.zip
GFSDK_HBAO+_distro_r3.0_cl20573789
Diffstat (limited to 'src/Shaders_DX12.h')
-rw-r--r--src/Shaders_DX12.h220
1 files changed, 220 insertions, 0 deletions
diff --git a/src/Shaders_DX12.h b/src/Shaders_DX12.h
new file mode 100644
index 0000000..a210296
--- /dev/null
+++ b/src/Shaders_DX12.h
@@ -0,0 +1,220 @@
+/*
+* Copyright (c) 2008-2016, NVIDIA CORPORATION. All rights reserved.
+*
+* NVIDIA CORPORATION and its licensors retain all intellectual property
+* and proprietary rights in and to this software, related documentation
+* and any modifications thereto. Any use, reproduction, disclosure or
+* distribution of this software and related documentation without an express
+* license agreement from NVIDIA CORPORATION is strictly prohibited.
+*/
+
+#if SUPPORT_D3D12
+
+#pragma once
+#include "Common.h"
+
+namespace GFSDK
+{
+namespace SSAO
+{
+namespace D3D12
+{
+//--------------------------------------------------------------------------------
+struct VertexShader
+{
+ VertexShader()
+ {
+ // Use proper heap here @jihoc
+ VS.BytecodeLength = 0;
+ VS.pShaderBytecode = nullptr;
+ }
+
+ void Create(ID3D12Device* pD3DDevice, const void *pShaderBytecode, SIZE_T BytecodeLength)
+ {
+ VS.pShaderBytecode = pShaderBytecode;
+ VS.BytecodeLength = BytecodeLength;
+ }
+
+ void Release(ID3D12Device*)
+ {
+ VS.pShaderBytecode = nullptr;
+ VS.BytecodeLength = 0;
+ }
+
+ operator GFSDK_D3D12_VertexShader*()
+ {
+ return &VS;
+ }
+
+private:
+ GFSDK_D3D12_VertexShader VS;
+};
+
+//--------------------------------------------------------------------------------
+struct GeometryShader
+{
+ GeometryShader()
+ {
+ GS.BytecodeLength = 0;
+ GS.pShaderBytecode = nullptr;
+ }
+
+ void Create(ID3D12Device* pD3DDevice, const void *pShaderBytecode, SIZE_T BytecodeLength)
+ {
+ GS.pShaderBytecode = pShaderBytecode;
+ GS.BytecodeLength = BytecodeLength;
+ }
+
+ void Release(ID3D12Device*)
+ {
+ GS.pShaderBytecode = nullptr;
+ GS.BytecodeLength = 0;
+ }
+
+ operator GFSDK_D3D12_GeometryShader*()
+ {
+ return &GS;
+ }
+
+private:
+ GFSDK_D3D12_GeometryShader GS;
+};
+
+//--------------------------------------------------------------------------------
+struct PixelShader
+{
+ PixelShader()
+ {
+ PS.BytecodeLength = 0;
+ PS.pShaderBytecode = nullptr;
+ }
+
+ void Create(ID3D12Device* pD3DDevice, const void *pShaderBytecode, SIZE_T BytecodeLength)
+ {
+ PS.BytecodeLength = BytecodeLength;
+ PS.pShaderBytecode = pShaderBytecode;
+ }
+
+ void Release(ID3D12Device*)
+ {
+ PS.pShaderBytecode = nullptr;
+ PS.BytecodeLength = 0;
+ }
+
+ operator GFSDK_D3D12_PixelShader*()
+ {
+ return &PS;
+ }
+
+private:
+ GFSDK_D3D12_PixelShader PS;
+};
+
+//--------------------------------------------------------------------------------
+struct DevicePointer
+{
+ DevicePointer(ID3D12Device* pDeviceIn) : pDevice(pDeviceIn)
+ {
+ }
+
+ DevicePointer() : pDevice(NULL)
+ {
+ }
+
+ operator ID3D12Device*() const
+ {
+ return pDevice;
+ }
+
+private:
+ ID3D12Device* pDevice;
+};
+
+//--------------------------------------------------------------------------------
+#include "shaders/out/D3D11/FullScreenTriangle_VS.h"
+#include "shaders/out/D3D11/CopyDepth_PS.h"
+#include "shaders/out/D3D11/LinearizeDepth_PS.h"
+#include "shaders/out/D3D11/DeinterleaveDepth_PS.h"
+#include "shaders/out/D3D11/DebugNormals_PS.h"
+#include "shaders/out/D3D11/ReconstructNormal_PS.h"
+#include "shaders/out/D3D11/ReinterleaveAO_PS.h"
+#include "shaders/out/D3D11/BlurX_PS.h"
+#include "shaders/out/D3D11/BlurY_PS.h"
+#include "shaders/out/D3D11/CoarseAO_PS.h"
+#include "shaders/out/D3D11/CoarseAO_GS.h"
+
+//--------------------------------------------------------------------------------
+struct Shaders
+{
+ void Create(ID3D12Device* pDevice)
+ {
+ FullScreenTriangle_VS.Create(DevicePointer(pDevice));
+ CopyDepth_PS.Create(DevicePointer(pDevice));
+ LinearizeDepth_PS.Create(DevicePointer(pDevice));
+ DeinterleaveDepth_PS.Create(DevicePointer(pDevice));
+ DebugNormals_PS.Create(DevicePointer(pDevice));
+ ReconstructNormal_PS.Create(DevicePointer(pDevice));
+ ReinterleaveAO_PS.Create(DevicePointer(pDevice));
+ BlurX_PS.Create(DevicePointer(pDevice));
+ BlurY_PS.Create(DevicePointer(pDevice));
+ CoarseAO_PS.Create(DevicePointer(pDevice));
+ CoarseAO_GS.Create(DevicePointer(pDevice));
+ }
+
+ void Release()
+ {
+ FullScreenTriangle_VS.Release(DevicePointer());
+ CopyDepth_PS.Release(DevicePointer());
+ LinearizeDepth_PS.Release(DevicePointer());
+ DeinterleaveDepth_PS.Release(DevicePointer());
+ DebugNormals_PS.Release(DevicePointer());
+ ReconstructNormal_PS.Release(DevicePointer());
+ ReinterleaveAO_PS.Release(DevicePointer());
+ BlurX_PS.Release(DevicePointer());
+ BlurY_PS.Release(DevicePointer());
+ CoarseAO_PS.Release(DevicePointer());
+ CoarseAO_GS.Release(DevicePointer());
+ }
+
+ Generated::FullScreenTriangle_VS FullScreenTriangle_VS;
+ Generated::CopyDepth_PS CopyDepth_PS;
+ Generated::LinearizeDepth_PS LinearizeDepth_PS;
+ Generated::DeinterleaveDepth_PS DeinterleaveDepth_PS;
+ Generated::DebugNormals_PS DebugNormals_PS;
+ Generated::ReconstructNormal_PS ReconstructNormal_PS;
+ Generated::ReinterleaveAO_PS ReinterleaveAO_PS;
+ Generated::BlurX_PS BlurX_PS;
+ Generated::BlurY_PS BlurY_PS;
+ Generated::CoarseAO_PS CoarseAO_PS;
+ Generated::CoarseAO_GS CoarseAO_GS;
+};
+
+#if ENABLE_DEBUG_MODES
+
+#include "shaders/out/D3D11/HBAO_PS.h"
+#include "shaders/out/D3D11/DebugAO_PS.h"
+
+struct DebugShaders
+{
+ void Create(ID3D12Device* pDevice)
+ {
+ HBAO_PS.Create(pDevice);
+ DebugAO_PS.Create(pDevice);
+ }
+ void Release()
+ {
+ HBAO_PS.Release();
+ DebugAO_PS.Release();
+ }
+
+ Generated::HBAO_PS HBAO_PS;
+ Generated::DebugAO_PS DebugAO_PS;
+};
+
+#endif //ENABLE_DEBUG_MODES
+
+} // namespace D3D12
+} // namespace SSAO
+} // namespace GFSDK
+
+#endif // SUPPORT_D3D12