init
This commit is contained in:
19
assets/shaders/pixelart.glsl
Normal file
19
assets/shaders/pixelart.glsl
Normal file
@@ -0,0 +1,19 @@
|
||||
// Fragment-stage only (uses screen-space derivatives).
|
||||
// "Sharp bilinear": crisp texel edges when magnified, antialiased boundaries
|
||||
// and correct mip selection when minified (unlike GL_NEAREST shimmer).
|
||||
vec4 sharpSample(sampler2D tex, vec2 uv) {
|
||||
vec2 size = vec2(textureSize(tex, 0));
|
||||
vec2 px = uv * size;
|
||||
vec2 seam = floor(px + 0.5);
|
||||
vec2 fw = max(fwidth(px), vec2(1e-5));
|
||||
px = seam + clamp((px - seam) / fw, -0.5, 0.5);
|
||||
return textureGrad(tex, px / size, dFdx(uv), dFdy(uv));
|
||||
}
|
||||
vec4 sharpSampleArray(sampler2DArray tex, vec2 uv, float layer) {
|
||||
vec2 size = vec2(textureSize(tex, 0).xy);
|
||||
vec2 px = uv * size;
|
||||
vec2 seam = floor(px + 0.5);
|
||||
vec2 fw = max(fwidth(px), vec2(1e-5));
|
||||
px = seam + clamp((px - seam) / fw, -0.5, 0.5);
|
||||
return textureGrad(tex, vec3(px / size, layer), dFdx(uv), dFdy(uv));
|
||||
}
|
||||
Reference in New Issue
Block a user