2
$\begingroup$

This is general question. In the multitude of video-games that are not specialized in scoped warfare (like Sniper Elite), I've noticed that when you zoom in with a scope, the textures and normal maps won't "update".

You're standing on coordinate $(0,0,0)$ and the textures will load in full quality to some other $R^3$ coordinate, let's say $(10,10,10)$.
If you look through a scope from $(0,0,0)$ past the "Max quality" distance, let's say $(10+n,10+n,10+n)$ (where $n$ is the zoom in factor), the zoomed in textures will not updated as if you were standing on the coordinate $(n,n,n)$.
The best example is the Fallout 4 scope zoom-in.
If you zoom in anywhere, the distant textures to which you zoom in will look washed out.
What are the solutions to such problems? Are they engine related? I've just started to dabble in OpenGL and noticed that problem on the multitude of games which share the same game engine.

$\endgroup$
  • $\begingroup$ it is probably due to LoD and mipmap levels not being changed when zooming in, therefore having the same texels stretched over a polygon that takes up more of the screen $\endgroup$ – Sebastián Mestre Dec 16 '17 at 21:46
  • $\begingroup$ Can you post a screen shot of what you mean by "washed out"? $\endgroup$ – Simon F Dec 18 '17 at 9:37
  • $\begingroup$ @SimonF There is not need to bother with uploading. Have you ever played a game and the textures just popped in to full detail (regardless of zoom or anything, you just running around). If you set "Detail distance" to max then you'll see high resolution textures to a certain extent and beyond that are low-poly, low res textures. $\endgroup$ – Dominik Car Dec 19 '17 at 8:40
  • $\begingroup$ "Have you ever played a game and the textures just popped in to full detail (regardless of zoom or anything, you just running around)" No, I haven't and that's why I asked if you could post a picture. :-/ $\endgroup$ – Simon F Dec 19 '17 at 9:47
  • $\begingroup$ @SimonF This post would be a good reference. quora.com/… Anyway, the thing I'm asking is not bug related or anything like that. It's more of a technical nature. The answer below got it right. $\endgroup$ – Dominik Car Dec 19 '17 at 17:13
4
$\begingroup$

Well there's no way to know for sure unless you look at the source code but my guess is that they do zooming by lowering the FOV (field of view) of the camera. This is easy to implement and actually sort of represents how a real scope works (in the way that light rays are bent through an optical lens). A zoom effect where you change the actual position of the camera might be more trouble than its worth. What if there is an object between the player and the desired camera position? So as you can see, the camera position has not changed at all and so there is no reason the textures would update when zooming.

Now you would think that hey maybe they could just scale the distance required to trigger the higher detail textures as the player zooms in but this may or may not be easy depending on how that is implemented in the engine. The game developers may not even be able to change LOD (level of detail) distances dynamically. Like you said, games like sniper elite which are based all around sniping have dealt with this but general purpose game engines might not have this functionality.

Also you have to consider possible popping effects. If you zoom in to an area and suddenly the textures and meshes update dramatically, this would look very bad. This gets even worse if the zoom effect is gradual or the sight is adjustable. I would even go as far as to say that it might be preferable to have lower quality textures than to have really bad popping.

| improve this answer | |
$\endgroup$
  • $\begingroup$ Also, in a streaming-world game, it might not even be possible to show higher detail in a distant area because the models/textures may not even be loaded at the moment. One could try to stream them in when you zoom the camera, but as mentioned that could produce a lot of popping. $\endgroup$ – Nathan Reed Dec 18 '17 at 17:12
  • $\begingroup$ I remember a really long time ago in the roblox game engine you were unable to edit the camera FOV (not sure if you can nowadays) and somebody had built a sniper game where you could click somewhere on the map and your camera would move there. You had full 360 pivot controls at the new camera location and you could click to take shots which were raycast from your player position to where you clicked. It was absolutely ridiculous but still lots of fun trying to out camera manoeuver people. $\endgroup$ – Chuck Dec 25 '17 at 23:08

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.