mirror of
https://github.com/CraftyBoss/SuperMarioOdysseyOnline.git
synced 2024-11-25 12:45:17 +00:00
69 lines
1.2 KiB
C
69 lines
1.2 KiB
C
|
/**
|
||
|
* @file Shader.h
|
||
|
* @brief Defines a basic shader.
|
||
|
*/
|
||
|
|
||
|
#pragma once
|
||
|
|
||
|
#include "types.h"
|
||
|
|
||
|
namespace agl
|
||
|
{
|
||
|
enum ShaderType
|
||
|
{
|
||
|
ShaderType_Vertex = 0,
|
||
|
ShaderType_Fragment = 1,
|
||
|
ShaderType_Geometry = 2,
|
||
|
ShaderType_Compute = 3
|
||
|
};
|
||
|
|
||
|
class Shader
|
||
|
{
|
||
|
public:
|
||
|
Shader();
|
||
|
|
||
|
virtual ~Shader();
|
||
|
|
||
|
virtual s32 getShaderType() const = 0;
|
||
|
virtual s32 getShaderMode() const;
|
||
|
virtual s32 getRingItemSize() const;
|
||
|
|
||
|
void setBinary(void const *shaderBinary);
|
||
|
|
||
|
void* mShaderBinary; // _8
|
||
|
u64 _10;
|
||
|
u64 _18;
|
||
|
};
|
||
|
|
||
|
class VertexShader : public agl::Shader
|
||
|
{
|
||
|
public:
|
||
|
virtual ~VertexShader();
|
||
|
|
||
|
virtual s32 getShaderType() const;
|
||
|
};
|
||
|
|
||
|
class FragmentShader : public agl::Shader
|
||
|
{
|
||
|
public:
|
||
|
virtual ~FragmentShader();
|
||
|
|
||
|
virtual s32 getShaderType() const;
|
||
|
};
|
||
|
|
||
|
class GeometryShader : public agl::Shader
|
||
|
{
|
||
|
public:
|
||
|
virtual ~GeometryShader();
|
||
|
|
||
|
virtual s32 getShaderType() const;
|
||
|
};
|
||
|
|
||
|
class ComputeShader : public agl::Shader
|
||
|
{
|
||
|
public:
|
||
|
virtual ~ComputeShader();
|
||
|
|
||
|
virtual s32 getShaderType() const;
|
||
|
};
|
||
|
};
|