57 lines
1.1 KiB
GLSL
57 lines
1.1 KiB
GLSL
//*PIXEL*
|
|
#version 460 core
|
|
|
|
#extension GL_ARB_bindless_texture : require
|
|
|
|
|
|
uint INVALID_HYDRA_ID = 4294967295;
|
|
|
|
struct MaterialStore
|
|
{
|
|
vec4 diffuse_colour;
|
|
uint diffuse_texture_id;
|
|
uint padding[3];
|
|
};
|
|
|
|
layout(binding = 2, std430) readonly buffer MaterialBuffer
|
|
{
|
|
MaterialStore materials[1000];
|
|
};
|
|
|
|
layout( std430, binding = 3) readonly buffer TextureBuffer {
|
|
uvec2 textures[1000];
|
|
};
|
|
|
|
layout (location=0) in VS_OUT
|
|
{
|
|
vec2 vsUV;
|
|
vec4 vsWorldPos;
|
|
flat uint vsChunkID;
|
|
flat uint vsMaterialID;
|
|
}vs_out;
|
|
|
|
layout (location=0) out vec4 uFragColor;
|
|
|
|
void main()
|
|
{
|
|
MaterialStore mat = materials[vs_out.vsMaterialID];
|
|
//uvec2 tex_handle = textures[mat.diffuse_texture_id];
|
|
|
|
uvec2 handle = textures[mat.diffuse_texture_id];
|
|
|
|
// 2. Explicitly cast the 64-bit integer handle to a sampler type
|
|
// sampler2D tex = sampler2D(handle);
|
|
|
|
// 3. Sample the texture normally
|
|
vec4 output_colour = texture(sampler2D(handle), vs_out.vsUV.xy);
|
|
if(output_colour[3] <= 0.1)
|
|
{
|
|
discard;
|
|
}
|
|
|
|
uFragColor = output_colour;
|
|
|
|
|
|
//uFragColor = vec4(vs_out.vsUV.x, vs_out.vsUV.y, 1, 1);
|
|
|
|
} |