// ****************************************************************************
// **** STRUCTS MUST BE PACKED IN OPTIMAL PACKING ORDER TO MATCH D STRUCTS ****
// ****************************************************************************

layout (set = 0, binding = 0) uniform GlobalUniforms {
	mat4 world_matrix;
	vec2 res;
} G;

layout (set = 0, binding = 1) uniform ShaderUniforms {
	float placeholder;
} S;

layout (rgba16f, set = 0, binding = 2) uniform image2D DrawImage;

layout (set = 0, binding = 3) uniform sampler SamplerNearest;

layout (set = 1, binding = 0) uniform texture2D Textures[];

layout (set = 2, binding = 0) uniform Material {
	vec4 ambient;
	vec4 diffuse;
	vec4 specular;
	uint albedo_texture;
	uint ambient_texture;
	uint specular_texture;
	bool albedo_has_texture;
	bool ambient_has_texture;
	bool specular_has_texture;
	float shininess;
} Materials[];

layout (push_constant) uniform Constants {
	uint mat_id;
} PC;
