cybereality I think you fell into the same trap as I did. Godot doesn't use linear texture sampling on the viewport texture. Uncheck display/window/dpi/allow_hidpi
and look again. The confusion I was having was caused by DPI scaling on one computer and no DPI scaling on another computer, which is why I could've sworn there was no texture filtering the first time I tried it but there was when I tried again. The DPI scaling was making it look like it was using linear texture sampling to scale the viewport texture, but Godot was using nearest to scale up to the expected window size, then Windows was using linear to scale up to the DPI-scaled window size. This is the worst of both worlds, inconsistent fat pixel sizes and blurriness, plus inconsistent behavior of different machines.
I've tried enabling filtering on the sampler for the root viewport with get_tree().root.get_texture().flags |= Texture.FLAG_FILTER
, but I think the viewport is rendered to the screen differently than other textures in the engine, because that doesn't work.
I've included my solution in your project to show you want I mean, because I feel like I'm not explaining myself well.
Godot really, really needs a way to scale the root viewport using a shader like this available with a checkbox or in the scaling modes. You have no idea how many indie games have incorrect scaling of pixel art and it drives me crazy and Godot is just setting people up to repeat this mistake.
Oh, and I forgot to put the URL I found the shader in the shader source, I found it here.
