1#pragma once
2
3#include <nn/gfx/detail/gfx_Shader-api.nvn.8.h>
4
5namespace nn::gfx {
6
7template <class TTarget>
8class TShader : public detail::ShaderImpl<TTarget> {
9 NN_NO_COPY(TShader);
10
11public:
12 typedef ShaderInfo InfoType;
13
14 static size_t GetBinaryCodeAlignment(TDevice<TTarget>*);
15
16 TShader();
17 ShaderInitializeResult Initialize(TDevice<TTarget>*, const InfoType&);
18 void Finalize(TDevice<TTarget>*);
19 int GetInterfaceSlot(ShaderStage, ShaderInterfaceType, const char*) const;
20 void GetWorkGroupSize(int*, int*, int*) const;
21 void SetUserPtr(void*);
22 void* GetUserPtr();
23 const void* GetUserPtr() const;
24};
25
26} // namespace nn::gfx