BCDirectCompute.h 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  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. #if defined(_MSC_VER) && (_MSC_VER > 1000)
  14. #pragma once
  15. #endif
  16. namespace DirectX
  17. {
  18. class GPUCompressBC
  19. {
  20. public:
  21. GPUCompressBC();
  22. HRESULT Initialize( _In_ ID3D11Device* pDevice );
  23. HRESULT Prepare( _In_ size_t width, _In_ size_t height, _In_ DXGI_FORMAT format, _In_ float alphaWeight = 1.f );
  24. HRESULT Compress( _In_ const Image& srcImage, _In_ const Image& destImage );
  25. DXGI_FORMAT GetSourceFormat() const { return m_srcformat; }
  26. private:
  27. DXGI_FORMAT m_bcformat;
  28. DXGI_FORMAT m_srcformat;
  29. float m_alphaWeight;
  30. size_t m_width;
  31. size_t m_height;
  32. Microsoft::WRL::ComPtr<ID3D11Device> m_device;
  33. Microsoft::WRL::ComPtr<ID3D11DeviceContext> m_context;
  34. Microsoft::WRL::ComPtr<ID3D11Buffer> m_err1;
  35. Microsoft::WRL::ComPtr<ID3D11UnorderedAccessView> m_err1UAV;
  36. Microsoft::WRL::ComPtr<ID3D11ShaderResourceView> m_err1SRV;
  37. Microsoft::WRL::ComPtr<ID3D11Buffer> m_err2;
  38. Microsoft::WRL::ComPtr<ID3D11UnorderedAccessView> m_err2UAV;
  39. Microsoft::WRL::ComPtr<ID3D11ShaderResourceView> m_err2SRV;
  40. Microsoft::WRL::ComPtr<ID3D11Buffer> m_output;
  41. Microsoft::WRL::ComPtr<ID3D11Buffer> m_outputCPU;
  42. Microsoft::WRL::ComPtr<ID3D11UnorderedAccessView> m_outputUAV;
  43. Microsoft::WRL::ComPtr<ID3D11Buffer> m_constBuffer;
  44. // Compute shader library
  45. Microsoft::WRL::ComPtr<ID3D11ComputeShader> m_BC6H_tryModeG10CS;
  46. Microsoft::WRL::ComPtr<ID3D11ComputeShader> m_BC6H_tryModeLE10CS;
  47. Microsoft::WRL::ComPtr<ID3D11ComputeShader> m_BC6H_encodeBlockCS;
  48. Microsoft::WRL::ComPtr<ID3D11ComputeShader> m_BC7_tryMode456CS;
  49. Microsoft::WRL::ComPtr<ID3D11ComputeShader> m_BC7_tryMode137CS;
  50. Microsoft::WRL::ComPtr<ID3D11ComputeShader> m_BC7_tryMode02CS;
  51. Microsoft::WRL::ComPtr<ID3D11ComputeShader> m_BC7_encodeBlockCS;
  52. };
  53. }; // namespace