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