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)