mirror of
https://github.com/CraftyBoss/SuperMarioOdysseyOnline.git
synced 2024-11-18 01:05:13 +00:00
69 lines
No EOL
1.2 KiB
C++
69 lines
No EOL
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;
|
|
};
|
|
}; |