]> git.tdb.fi Git - libs/gl.git/blobdiff - shaderlib/msp_interface.glsl
Fix some errors in the shader library
[libs/gl.git] / shaderlib / msp_interface.glsl
index e606edf94a55e24f4956c2fab0fb5ad15aa9011a..1c3029ef343cbddb9a295951864300f9ac627b56 100644 (file)
@@ -5,12 +5,21 @@ struct LightSourceParameters
        vec4 specular;
 };
 
-struct MaterialParameters
+struct BasicMaterialParameters
 {
-       vec4 ambient;
        vec4 diffuse;
        vec4 specular;
+       vec4 emission;
        float shininess;
+       float reflectivity;
+};
+
+struct PbrMaterialParameters
+{
+       vec4 base_color;
+       vec4 emission;
+       float metalness;
+       float roughness;
 };
 
 struct ClipPlane
@@ -22,13 +31,18 @@ uniform mat4 eye_obj_matrix;
 uniform mat3 eye_obj_normal_matrix;
 uniform Transform
 {
+       mat4 eye_world_matrix;
        mat4 projection_matrix;
 };
 
-uniform Material
+uniform BasicMaterial
 {
-       MaterialParameters material;
-       float reflectivity;
+       BasicMaterialParameters basic_material;
+};
+
+uniform PbrMaterial
+{
+       PbrMaterialParameters pbr_material;
 };
 
 uniform Lighting
@@ -44,22 +58,30 @@ uniform Lighting
 };
 
 uniform sampler2D diffuse_map;
+uniform sampler2D specular_map;
+uniform sampler2D shininess_map;
+uniform sampler2D reflectivity_map;
+uniform sampler2D base_color_map;
+uniform sampler2D metalness_map;
+uniform sampler2D roughness_map;
+uniform sampler2D occlusion_map;
+uniform sampler2D emission_map;
 uniform sampler2D normal_map;
 
-uniform sampler2DShadow shadow;
+uniform sampler2DShadow shadow_map;
 uniform ShadowMap
 {
        float shadow_darkness;
        mat4 shd_eye_matrix;
 };
 
-uniform samplerCube environment;
+uniform samplerCube environment_map;
 uniform EnvMap
 {
        mat3 env_eye_matrix;
 };
 
-const int max_clip_planes = 0;
+layout(constant_id=auto) const int max_clip_planes = 0;
 uniform Clipping
 {
        ClipPlane clip_planes[max_clip_planes];
@@ -72,6 +94,7 @@ layout(location=3) in vec4 color;
 layout(location=2) in vec3 normal;
 layout(location=4) in vec3 tangent;
 layout(location=5) in vec3 binormal;
+layout(location=12) in vec4 instance_transform[3];
 
 #pragma MSP stage(fragment)
 layout(location=0) out vec4 frag_color;