Hardware Scaling Level Texture Blur

Hi.
I’ve a question regarding the texture rendering quality / blurriness when setting the hardware scaling level to 1.0. When looking at the code one can see that the underlying canvas is resized depending on the hardware scaling level.
This means if it’s 1.0 it renders with native resolution of the canvas client size, with 0.5 it’s doubling the resolution in x and y. From my understanding setting it to 0.5 would help with AA as this is classing supersampling where the browser performs that final downsampling.
I’m concerned now about the texture quality which should not change depending on the hardware scaling level, right? It somehow looks to me like the pixel center is not correctly sampled when the hardware scaling level is at 1 but that doesn’t make much sense to me.
Can someone explain me why it behaves like this?

I’ve created a playground sample which switches the hardware scaling level every 2 seconds to show the problem: https://playground.babylonjs.com/#ETZMC9#4

Hi,
I’m not a specialist, but I do believe hardware scaling is made to adapt to hardware and is not intended for being changed dynamically (someone correct me if I’m wrong). I would look on the side of sampling and PP. Something around this:

Thx but I don’t want to apply any post processing since this would not solve the root cause (plus it has performance drawbacks).
I’m not planing on changing the hardware scaling level dynamically but just once after creating the engine. I just did it in the pg like that although I don’t think anything is wrong with it since it’s effectively just resizing the canvas (you can see it if you inspect the canvas element with your browser devtools).

cc @Evgeni_Popov

I think it’s blurrier in the hw=1 case than when hw=0.5 because in the first case we sample the cat texture with the minification filter, whereas in the second case we sample it with the magnification filter (the size of this cat texture is 1795x2397).

If you zoom in quite a bit so that we also use the magnification filter when hw=1, you’ll see that there’s no difference between the two renderings (at least, I don’t see any).

3 Likes