54 lines
1.6 KiB
GLSL
54 lines
1.6 KiB
GLSL
@vs vs_trile
|
|
|
|
in vec4 position;
|
|
in vec4 normal;
|
|
in vec4 centre;
|
|
|
|
layout(binding=0) uniform trile_vs_params {
|
|
mat4 mvp;
|
|
};
|
|
|
|
|
|
out vec3 to_center;
|
|
out vec3 vpos;
|
|
out vec4 fnormal;
|
|
|
|
void main() {
|
|
|
|
gl_Position = mvp * vec4(position.xyz, 1.0);
|
|
fnormal = normal;
|
|
to_center = centre.xyz - position.xyz;
|
|
vpos = position.xyz;
|
|
}
|
|
@end
|
|
|
|
@fs fs_trile
|
|
|
|
in vec3 to_center;
|
|
in vec3 vpos;
|
|
in vec4 fnormal;
|
|
out vec4 frag_color;
|
|
|
|
layout(binding = 0) uniform texture2D triletex;
|
|
layout(binding = 0) uniform sampler trilesmp;
|
|
|
|
void main() {
|
|
//frag_color = vec4((fnormal.xyz + vec3(1.0, 1.0, 1.0)) * 0.5, 1.0);
|
|
vec3 pos_after_adjust_f = vpos - fnormal.xyz * 0.01 + normalize(to_center) * 0.01;
|
|
vec3 pos_after_adjust_b = vpos - fnormal.xyz * 0.01 + normalize(to_center) * 0.1;
|
|
int xpos_f = int(clamp(pos_after_adjust_f.z, 0.0001, 0.99999) * 16.0);
|
|
int ypos_f = int(clamp(pos_after_adjust_f.y, 0.0001, 0.99999) * 16.0);
|
|
int zpos_f = int(clamp(pos_after_adjust_f.x, 0.0001, 0.99999) * 16.0);
|
|
int xpos_b = int(clamp(pos_after_adjust_b.z, 0.0001, 0.99999) * 16.0);
|
|
int ypos_b = int(clamp(pos_after_adjust_b.y, 0.0001, 0.99999) * 16.0);
|
|
int zpos_b = int(clamp(pos_after_adjust_b.x, 0.0001, 0.99999) * 16.0);
|
|
|
|
vec4 trixel_material_b = texelFetch(sampler2D(triletex, trilesmp), ivec2(xpos_b, ypos_b + zpos_b * 16), 0);
|
|
vec4 trixel_material_f = texelFetch(sampler2D(triletex, trilesmp), ivec2(xpos_f, ypos_f + zpos_f * 16), 0);
|
|
frag_color = vec4(max(trixel_material_f.xyz, trixel_material_b.xyz), 1.0);
|
|
// frag_color = vec4(vec3(length(to_center)), 1.0);
|
|
}
|
|
@end
|
|
|
|
@program trile vs_trile fs_trile
|