7 #import <Metal/Metal.h>
11 #include <d3dcompiler.h>
18 struct FileContentsData;
30 void Load(
const char* vertexSource,
const char* fragmentSource );
39 const char* metalVertexShaderName,
const char* metalFragmentShaderName,
43 void LoadFromLibrary(
const char* vertexShaderName,
const char* fragmentShaderName );
51 void SetMatrix(
const char* name,
const float* matrix4x4 );
70 void SetInt(
const char* name,
int value );
74 void SetFloat(
const char* name,
float value );
78 void SetVector3(
const char* name,
const float* vec3 );
82 void SetVector4(
const char* name,
const float* vec4 );
85 ID3DBlob* blobShaderVertex =
nullptr;
86 ID3DBlob* blobShaderPixel =
nullptr;
90 enum class UniformType { Float, Float2, Float3, Float4, Matrix4x4 };
94 UniformType type = UniformType::Float;
95 unsigned long offsetFromBufferStart = 0;
96 float floatValue[ 4 ];
97 float matrix4x4[ 16 ];
100 std::map< std::string, Uniform > uniforms;
102 void LoadUniforms( MTLRenderPipelineReflection* reflection );
103 id <MTLBuffer> GetUniformBuffer() {
return uniformBuffer; }
105 id <MTLFunction> vertexProgram;
106 id <MTLFunction> fragmentProgram;
107 id <MTLBuffer> uniformBuffer;
109 struct IntDefaultedToMinusOne
118 void CreateConstantBuffer();
119 void ReflectVariables();
121 ID3D12Resource* constantBuffer =
nullptr;
122 void* constantBufferUpload =
nullptr;
123 ID3D12ShaderReflection* reflector =
nullptr;
126 std::map<std::string, IntDefaultedToMinusOne > uniformLocations;
void SetRenderTexture(const char *name, const class RenderTexture *renderTexture, int textureUnit)
Definition: AudioClip.hpp:4
Render texture.
Definition: RenderTexture.hpp:10
void SetVector4(const char *name, const float *vec4)
void SetVector3(const char *name, const float *vec3)
void SetInt(const char *name, int value)
void SetFloat(const char *name, float value)
Cube Map texture.
Definition: TextureCube.hpp:15
Shader program containing a vertex and pixel shader.
Definition: Shader.hpp:22
void Use()
Activates the shader to be used in a draw call.
2D texture.
Definition: Texture2D.hpp:15
void Load(const char *vertexSource, const char *fragmentSource)
int i
-1 means unused/missing uniform.
Definition: Shader.hpp:113
bool IsValid() const
Definition: Shader.hpp:26
void SetTexture(const char *name, const class Texture2D *texture, int textureUnit)
Definition: FileSystem.hpp:12
void SetMatrix(const char *name, const float *matrix4x4)