Paradox Game Engine  v1.0.0 beta06
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Events Macros Pages
BCDirectCompute.h
Go to the documentation of this file.
1 //-------------------------------------------------------------------------------------
2 // BCDirectCompute.h
3 //
4 // Direct3D 11 Compute Shader BC Compressor
5 //
6 // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
7 // ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
8 // THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
9 // PARTICULAR PURPOSE.
10 //
11 // Copyright (c) Microsoft Corporation. All rights reserved.
12 //-------------------------------------------------------------------------------------
13 
14 #if defined(_MSC_VER) && (_MSC_VER > 1000)
15 #pragma once
16 #endif
17 
18 namespace DirectX
19 {
20 
22 {
23 public:
24  GPUCompressBC();
25 
26  HRESULT Initialize( _In_ ID3D11Device* pDevice );
27 
28  HRESULT Prepare( _In_ size_t width, _In_ size_t height, _In_ DXGI_FORMAT format, _In_ float alphaWeight = 1.f );
29 
30  HRESULT Compress( _In_ const Image& srcImage, _In_ const Image& destImage );
31 
32  DXGI_FORMAT GetSourceFormat() const { return m_srcformat; }
33 
34 private:
35  DXGI_FORMAT m_bcformat;
36  DXGI_FORMAT m_srcformat;
37  float m_alphaWeight;
38  size_t m_width;
39  size_t m_height;
40 
41  Microsoft::WRL::ComPtr<ID3D11Device> m_device;
42  Microsoft::WRL::ComPtr<ID3D11DeviceContext> m_context;
43 
44  Microsoft::WRL::ComPtr<ID3D11Buffer> m_err1;
45  Microsoft::WRL::ComPtr<ID3D11UnorderedAccessView> m_err1UAV;
46  Microsoft::WRL::ComPtr<ID3D11ShaderResourceView> m_err1SRV;
47 
48  Microsoft::WRL::ComPtr<ID3D11Buffer> m_err2;
49  Microsoft::WRL::ComPtr<ID3D11UnorderedAccessView> m_err2UAV;
50  Microsoft::WRL::ComPtr<ID3D11ShaderResourceView> m_err2SRV;
51 
52  Microsoft::WRL::ComPtr<ID3D11Buffer> m_output;
53  Microsoft::WRL::ComPtr<ID3D11Buffer> m_outputCPU;
54  Microsoft::WRL::ComPtr<ID3D11UnorderedAccessView> m_outputUAV;
55  Microsoft::WRL::ComPtr<ID3D11Buffer> m_constBuffer;
56 
57  // Compute shader library
58  Microsoft::WRL::ComPtr<ID3D11ComputeShader> m_BC6H_tryModeG10CS;
59  Microsoft::WRL::ComPtr<ID3D11ComputeShader> m_BC6H_tryModeLE10CS;
60  Microsoft::WRL::ComPtr<ID3D11ComputeShader> m_BC6H_encodeBlockCS;
61 
62  Microsoft::WRL::ComPtr<ID3D11ComputeShader> m_BC7_tryMode456CS;
63  Microsoft::WRL::ComPtr<ID3D11ComputeShader> m_BC7_tryMode137CS;
64  Microsoft::WRL::ComPtr<ID3D11ComputeShader> m_BC7_tryMode02CS;
65  Microsoft::WRL::ComPtr<ID3D11ComputeShader> m_BC7_encodeBlockCS;
66 };
67 
68 }; // namespace
HRESULT Initialize(_In_ ID3D11Device *pDevice)
HRESULT Compress(_In_ const Image &srcImage, _In_ const Image &destImage)
DXGI_FORMAT GetSourceFormat() const
_In_ size_t _In_ size_t _In_ DXGI_FORMAT format
Definition: DirectXTexP.h:175
HRESULT Prepare(_In_ size_t width, _In_ size_t height, _In_ DXGI_FORMAT format, _In_ float alphaWeight=1.f)