// This should act as a virtual NormalNx upscaler when using texture filtering void SetupMaterial( inout Material mat ) { vec2 size = vec2(textureSize(tex,0)); vec2 pxsize = vec2(1./size.x,1./size.y); vec2 pos = vTexCoord.st-vec2(.5)*pxsize; vec2 fcoord = fract(pos*size-vec2(.5)); vec2 coeff = fcoord*6.; // virtual upscale factor I guess? float threshold = 0.; // this controls sharpness, kinda coeff = (coeff-threshold)*1./(1.-2.*threshold); coeff = clamp(coeff,0.,1.); mat.Base = texture(tex,pos+pxsize*(coeff-fcoord)); mat.Normal = ApplyNormalMap(vTexCoord.st); }