struct LightSourceParameters { vec4 position; vec4 diffuse; vec4 specular; }; struct BasicMaterialParameters { vec4 diffuse; vec4 specular; vec4 emission; float shininess; float reflectivity; }; struct PbrMaterialParameters { vec4 base_color; vec4 emission; float metalness; float roughness; }; struct ClipPlane { vec4 equation; }; uniform mat4 eye_obj_matrix; uniform mat3 eye_obj_normal_matrix; uniform Transform { mat4 eye_world_matrix; mat4 projection_matrix; }; uniform BasicMaterial { BasicMaterialParameters basic_material; }; uniform PbrMaterial { PbrMaterialParameters pbr_material; }; uniform Lighting { // Declared as an array for compatibility reasons LightSourceParameters light_sources[1]; vec4 ambient_color; vec4 sky_color; vec3 eye_zenith_dir; float horizon_limit; vec4 fog_color; float fog_density; }; uniform sampler2D diffuse_map; uniform sampler2D specular_map; uniform sampler2D shininess_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_map; uniform ShadowMap { float shadow_darkness; mat4 shd_eye_matrix; }; uniform samplerCube environment_map; uniform EnvMap { mat3 env_eye_matrix; }; const int max_clip_planes = 0; uniform Clipping { ClipPlane clip_planes[max_clip_planes]; }; #pragma MSP stage(vertex) layout(location=0) in vec4 vertex; layout(location=8) in vec4 texcoord; 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;