7 #import <Metal/Metal.h>    11 #include <d3dcompiler.h>    14 #include <vulkan/vulkan.h>    22         struct FileContentsData;
    33         void Load( 
const char* vertexSource, 
const char* fragmentSource );
    35         bool IsValid()
 const { 
return true; }
    50                    const char* metalVertexShaderName, 
const char* metalFragmentShaderName,
    55         void LoadFromLibrary( 
const char* vertexShaderName, 
const char* fragmentShaderName );
    58         bool IsValid()
 const { 
return handle != 0; }
    60         unsigned GetHandle()
 const { 
return handle; }
    68         void SetMatrix( 
const char* name, 
const float* matrix4x4 );
    73         void SetTexture( 
const char* name, 
class Texture2D* texture, 
int textureUnit );
    78         void SetTexture( 
const char* name, 
class TextureCube* texture, 
int textureUnit );
    83         void SetRenderTexture( 
const char* name, 
class RenderTexture* renderTexture, 
int textureUnit );
    87         void SetInt( 
const char* name, 
int value );
    91         void SetFloat( 
const char* name, 
float value );
    95         void SetVector3( 
const char* name, 
const float* vec3 );
    99         void SetVector4( 
const char* name, 
const float* vec4 );
   102         bool IsValid()
 const { 
return true; }
   105         bool IsValid()
 const { 
return blobShaderVertex != 
nullptr; }
   106         ID3DBlob* blobShaderVertex = 
nullptr;
   107         ID3DBlob* blobShaderPixel = 
nullptr;
   111         bool IsValid()
 const { 
return vertexProgram != 
nullptr; }
   113         enum class UniformType { Float, Float2, Float3, Float4, Matrix4x4 };
   117             UniformType type = UniformType::Float;
   118             unsigned long offsetFromBufferStart = 0;
   119             float floatValue[ 4 ];
   120             float matrix4x4[ 16 ];
   123         std::map< std::string, Uniform > uniforms;
   125         void LoadUniforms( MTLRenderPipelineReflection* reflection );
   127         id <MTLFunction> vertexProgram;
   128         id <MTLFunction> fragmentProgram;
   131         VkPipelineShaderStageCreateInfo& GetVertexInfo() { 
return vertexInfo; }
   132         VkPipelineShaderStageCreateInfo& GetFragmentInfo() { 
return fragmentInfo; }
   142         std::string fragmentPath;
   145         void ReflectVariables();
   147         ID3D12ShaderReflection* reflector = 
nullptr;
   148         std::map<std::string, IntDefaultedToMinusOne > uniformLocations;
   151         VkPipelineShaderStageCreateInfo vertexInfo;
   152         VkPipelineShaderStageCreateInfo fragmentInfo;        
   156         std::map<std::string, IntDefaultedToMinusOne > uniformLocations;
 Definition: AudioClip.hpp:4
 
Render texture. 
Definition: RenderTexture.hpp:12
 
Wraps an int that is defaulted to -1. Needed for uniform handling. 
Definition: Shader.hpp:135
 
Cube Map texture. 
Definition: TextureCube.hpp:18
 
Shader program containing a vertex and pixel shader. 
Definition: Shader.hpp:26
 
2D texture. 
Definition: Texture2D.hpp:17
 
Definition: FileSystem.hpp:12