64 lines
1.3 KiB
GLSL
64 lines
1.3 KiB
GLSL
//*PIXEL*
|
|||
|
|
#version 460
|
||
|
|
|
||
|
|
#extension GL_ARB_bindless_texture : require
|
||
|
|
|
||
|
|
const uint DIRECTIONAL_LIGHT = 1;
|
||
|
|
const uint POINT_LIGHT = 2;
|
||
|
|
const uint SPOT_LIGHT = 3;
|
||
|
|
uint INVALID_HYDRA_ID = 4294967295;
|
||
|
|
|
||
|
|
struct MaterialStore
|
||
|
|
{
|
||
|
|
vec4 diffuse_colour;
|
||
|
|
vec4 matalic_rough;
|
||
|
|
uint diffuse_texture_id;
|
||
|
|
uint metallic_rough_texture_id;
|
||
|
|
uint normal_texture_id;
|
||
|
|
uint padding[1];
|
||
|
|
};
|
||
|
|
|
||
|
|
layout(std430, binding = 2) readonly buffer material_buffer
|
||
|
|
{
|
||
|
|
MaterialStore materials[1000];
|
||
|
|
};
|
||
|
|
|
||
|
|
layout(std430, binding = 3) readonly buffer texture_buffer
|
||
|
|
{
|
||
|
|
uvec2 textures[1000];
|
||
|
|
};
|
||
|
|
|
||
|
|
layout (location=0) in VS_OUT
|
||
|
|
{
|
||
|
|
vec2 vsUV;
|
||
|
|
flat uint vsMaterialID;
|
||
|
|
}vs_out;
|
||
|
|
|
||
|
|
layout (location=0) out vec4 output_colour;
|
||
|
|
|
||
|
|
void main()
|
||
|
|
{
|
||
|
|
MaterialStore mat = materials[vs_out.vsMaterialID];
|
||
|
|
vec4 diffuse_val = mat.diffuse_colour;
|
||
|
|
|
||
|
|
output_colour = vec4(1,0,0,1);
|
||
|
|
|
||
|
|
if(mat.diffuse_texture_id != INVALID_HYDRA_ID)
|
||
|
|
{
|
||
|
|
output_colour = vec4(0,1,0,1);
|
||
|
|
uvec2 diffuse_handle = textures[mat.diffuse_texture_id];
|
||
|
|
diffuse_val = diffuse_val * texture(sampler2D(diffuse_handle), vs_out.vsUV.xy);
|
||
|
|
if(mat.diffuse_texture_id== 10)
|
||
|
|
{
|
||
|
|
output_colour = vec4(0,0,1,1);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
if(diffuse_val[3] < 1.0)
|
||
|
|
{
|
||
|
|
discard;
|
||
|
|
output_colour = vec4(0,1,1,1);
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|