1#pragma once
2
3#include <basis/seadTypes.h>
4
5namespace agl {
6
7class Shader {
8public:
9 Shader();
10
11 virtual ~Shader();
12
13 virtual s32 getShaderType() const = 0;
14 virtual s32 getShaderMode() const;
15 virtual s32 getRingItemSize() const;
16
17 void setBinary(const void* shaderBinary);
18
19private:
20 void* mShaderBinary; // _8
21 void* _10;
22 void* _18;
23};
24
25class VertexShader : public Shader {
26public:
27 virtual ~VertexShader();
28
29 s32 getShaderType() const override;
30};
31
32class FragmentShader : public Shader {
33public:
34 virtual ~FragmentShader();
35
36 s32 getShaderType() const override;
37};
38
39class GeometryShader : public Shader {
40public:
41 virtual ~GeometryShader();
42
43 s32 getShaderType() const override;
44};
45
46class ComputeShader : public Shader {
47public:
48 virtual ~ComputeShader();
49
50 s32 getShaderType() const override;
51};
52
53} // namespace agl
54