News | Forum | People | FAQ | Links | Search | Register | Log in
Mark V - Release 1.00

* Nehahra support -- better and deeper link
* Mirror support, "mirror_" textures. video
* Quaddicted install via console (i.e. "install travail")
* Full external texture support DP naming convention
* Enhanced dev tools texturepointer video inspector video
* IPv6 support, enhanced server capabilities
* Enhance co-operative play (excels at this!)
* Software renderer version (WinQuake)
* "Find" information command (ex. type "find sky")

Thanks to the beta testers! NightFright, fifth, spy, gunter, pulsar, johnny law, dwere, qmaster, mfx, icaro, kinn, adib, onetruepurple, railmccoy

And thanks to the other developers who actively provided advice or assistance: Spike (!), mh, ericw, metlslime and the sw guys: mankrip and qbism.

/Mac version is not current yet ...; Linux will happen sometime in 2017
First | Previous | Next | Last
Testure Filtering 
GL_NEAREST_MIPMAP_LINEAR should give the best result. 
GL_NEAREST_MIPMAP_LINEAR disables anisotropic filtering. The lack of anisotropic filtering is the main reason for the texture aliasing, since Quake's textures are low res enough to not get grainy when viewed from a perpendicular angle. 
Is that exclusive to just nearest+linear, or all nearest* modes? Asking because I'm otetty sure that with nearest+nearest, I can see a bug difference between anisotropy 1 and 16 on the far away surfaces (in Fitz/QS). 
I'm Otetty? 
Meant to say "I'm pretty" (duh). 
... I´m otetty glad you did the clarification :D 
That may be driver-dependent, but I've never seen NEAREST_MIPMAP_LINEAR getting anisotropic filtered.

The _MIPMAP_LINEAR thing, afaik, basically tells the GPU to use linear filtering when generating the mipmaps. So, it influences the quality of the data that's rendered, but not the rendering itself.

If you're noticing a difference when _MIPMAP_LINEAR is turned on, your GPU may be generating anisotropic mipmaps (ripmaps) for the textures. But I'm still skeptical about it using anisotropic filtering per se.

Anisotropic filtering is like a superset of trilinear filtering. While trilinear filtering filters across square mipmap levels (both coordinates at once), anisotropic filtering filters across each texel coordinate individually.

Now, the huge catch is, pretty much all GPUs requires bilinear filtering to be enabled if you want to use trilinear filtering (and anisotropic filtering)... But mathematically, bilinear filtering isn't required. Bilinear filtering only filters across the UV plane, regardless of mipmap level. You can still blend mipmap levels (including anisotropic ones) without blending UV coordinates.

Well, this video doesn't show it, but Retroquad can do trilinear filtering of mipmap levels without doing bilinear filtering of texel coordinates.

I also want to implement anisotropic mipmapping someday, and it won't require bilinear filtering either, but anisotropic filtering may require it. Anisotropic mipmaps can be trilinearly interpolated across mipmap levels with the same width/height aspect, but afaik, to do anisotropic interpolation on them, the blending across mipmap levels must be done in a subtexel scale. Or maybe not. I haven't got to that part yet. 
QS supports nearest+anisotropy
for some engines (Nehahra's GLQ, probably GLQ in general) anisotropy can also be forced via drivers, but not for MarkV

a good spot to see the effects of AF is the floor right at the start of WarpSpasm

I think with AF on, NEAREST and NEAREST_MIPMAP_LINEAR behave identically in QS, but I don't know what happens behind the scenes 
QS supports nearest+anisotropy

Not in my Intel HD Graphics 3000. So, that's really a driver/GPU issue.

With the amoung of "pixelated 3D" games being released nowadays, support for it may become more common. 
the anisotropy extension defines the behaviour only for when using trilinear filtering.
If you try using it anyway then you get undefined results - including glitches. Ultimately it depends on the drivers/hardware as to whether it works or not. 
Texture Filter Modes 
Texture filter modes are kinda funky in OpenGL; there's actually 3 different filters that can be applied:

- Magnification: when a texture is zoomed in.
- Minification: when a texture is zoomed out.
- Mip filter: how the driver selects between different mip levels.

GL_{NEAREST|LINEAR} defines both the magnification and minification filters. If a texture is minified more than 50% it will get aliasing, even with GL_LINEAR.

GL_NEAREST and GL_LINEAR don't use mipmaps. The texture may have miplevels specified for it, but using one of these filters will disable mipmapping and always selects from miplevel 0.

Now, and contrary to what some people believe, software Quake actually did have mipmaps. If you want to replicate the software Quake look, you better use mipmaps.

GL_{NEAREST|LINEAR}_MIPMAP_{NEAREST|LINEAR} filters do use mipmaps, and the filtering mode after the "_MIPMAP_" part specifies how miplevel selection is done. Miplevel selection is not per-vertex in GL, it's per-pixel (per-fragment in more correct GL terminology).

GL_{NEAREST|LINEAR}_MIPMAP_NEAREST just selects the nearest miplevel. This creates a visual artefact where you can quite clearly see the miplevel transition - it's one of those things that might not be immediately obvious but once you do notice it you can't stop seeing it.

GL_{NEAREST|LINEAR}_MIPMAP_LINEAR interpolates between two miplevels and does a good job of hiding miplevel transitions.

Another artefact occurs with surfaces like water and lava: software Quake didn't mipmap those, but if you do, you might notice that the texture shifts between different miplevels as it warps, even though the viewpoint might not otherwise change. The fix to that is to use a shader with the textureGrad instruction, using ddx and ddy from the original unwarped texture coords, and that gives a high quality rock-solid result.

Anisotropic filtering is performed by the hardware, not by software. If your graphics hardware doesn't support anisotropic filtering on GL_NEAREST modes, then it doesn't matter a sweet flying blue damn whether or not the engine provides it as an option: you can't do it.

An alternative is to upscale the original source textures x2 or x4, then run a GL_LINEAR filter; that preserves most of the crunchy pixel look but allows anisotropic filtering. The original textures are so low-res that it won't cause you trouble at all on any reasonably modern hardware. Of course, if you try to do this with a high-res replacement pack your GPU and/or driver might have a heart attack on you.

The other thing to note is that the original low-res textures have a certain pixel-art style that is completely ruined by linear filtering (mag or min, not mip). Look at the details on, say, one of the health pickups and compare the filter modes. The upscaling trick also works well to preserve those details. 
C-C-C-Combo Breaker! 
Sorry, but I had to do this just to see if the thread was being revived because of ads... 
I have faith that Baker will return some day. It will be the same day that czg releases honey 2. 
21 posts not shown on this page because they were spam
First | Previous | Next | Last
Post A Reply:
Website copyright © 2002-2019 John Fitzgibbons. All posts are copyright their respective authors.