40 lines
1.4 KiB
Plaintext
40 lines
1.4 KiB
Plaintext
#version 460 core
|
|
#extension GL_EXT_nonuniform_qualifier : enable
|
|
#extension GL_GOOGLE_include_directive : require
|
|
#extension GL_EXT_shader_16bit_storage : require
|
|
#extension GL_EXT_ray_tracing: require
|
|
|
|
#define GLSL
|
|
#include "ray_interop.h"
|
|
#undef GLSL
|
|
|
|
// TODO not really needed here?
|
|
// It's an artifact of readHitGeometry() computing uv_lods, which we don't really use in this shader
|
|
// Split readHitGeometry into basic and advanced
|
|
layout(set = 0, binding = 2) uniform UBO { UniformBuffer ubo; } ubo;
|
|
layout(set = 0, binding = 6) uniform sampler2D textures[MAX_TEXTURES];
|
|
|
|
layout(set = 0, binding = 30, std430) readonly buffer ModelHeaders { ModelHeader a[]; } model_headers;
|
|
layout(set = 0, binding = 31, std430) readonly buffer Kusochki { Kusok a[]; } kusochki;
|
|
layout(set = 0, binding = 32, std430) readonly buffer Indices { uint16_t a[]; } indices;
|
|
layout(set = 0, binding = 33, std430) readonly buffer Vertices { Vertex a[]; } vertices;
|
|
|
|
#include "ray_primary_common.glsl"
|
|
#include "ray_kusochki.glsl"
|
|
|
|
hitAttributeEXT vec2 bary;
|
|
|
|
#include "rt_geometry.glsl"
|
|
|
|
const float alpha_mask_threshold = .1f;
|
|
|
|
void main() {
|
|
const Geometry geom = readHitGeometry(bary, ubo.ubo.ray_cone_width);
|
|
const uint tex_index = getKusok(geom.kusok_index).material.tex_base_color;
|
|
const vec4 texture_color = texture(textures[nonuniformEXT(tex_index)], geom.uv);
|
|
|
|
if (texture_color.a < alpha_mask_threshold) {
|
|
ignoreIntersectionEXT;
|
|
}
|
|
}
|