I hope you don't get me wrong. I am really appreciating all your hard work and improvements.
But I am currently thinking how to improve the image quality of the first 3D consoles and the first 3D Handhelds.
PSX, Saturn and even N64 have the issues of very pixelated graphics. Nowadays you can hardly play the games from those consoles.
You really need a) higher resolution with improvements of the GPU (e.g. GTE accuracy) and b) texture filtering.
The same applies for the DS and the PSP.
The issue I am always seeing with xBRZ is posterisation.
PSP with Monster Hunter is always the best example: http://forums.ppsspp.org/attachment.php?aid=4416
Even Bilinear Filtering is giving a better result: http://forums.ppsspp.org/attachment.php?aid=4415
The question is how to get the sharp structures of xBRZ but also the nice transitions of Bilinear.
PPSSPP has a great approach with the Hybrid+Bicubic and Deposterisation effect (currently my favorite)
Here is a very interesting blog entry about the approach: http://blog.metaclassofnil.com/?tag=textures
But the libretro team with the different shader combiniations can also give astonishing results.
So I am looking to the best filter/scaler combinations.
Currently I think Super XBR or XBRZ / Bicubic / Hybrid / Hybrid + Bicubic with the Deposterisation Option are the best features for scaling/fiterling.
But the biliteral filter removes the pixels also extremely well (here the c++ source: http://www.riken.jp/brict/Yoshizawa/Res … lter.html)
I would really like to test a little bit around which combinations are the best result, but unfortunately I don't have the time for that. :-(
]]>Needless to say, you can't see the true look of Deposterize+xBRZ in DeSmuME just yet, because we still need to get full 32-bit color support in the GPU emulation first. However, seeing some 32-bit support in testing makes Deposterize+xBRZ look fantastic, and arguably just as good if not better, than those Super xBR screenshots you just posted.
]]>Examples:
Super xBR:
Super xBR with fast Bilateral
Super xBR:
Super xBR with fast Bilateral
Super xBR:
Super xBR with fast Bilateral
Super xBR
Super xBR with fast Bilateral
The DS has the same issues like the PSX concerning filtering.
Together with the RGB888 change, it would be a great a addition to enhance the DS image quality.
Here is the C++ Code for Super xBR:
http://pastebin.com/raw/cbH8ZQQT
As said, I highly appreciate your work.
It's incredible what you achieved.
You are doing such a great job.
With regards to the PPSSPP filters: There was much experimentation that was done with the Hybrid and Bicubic filters for texture upscaling, but these were rejected due to performance reasons. DeSmuME has to load all textures on an as-needed basis due to the way we emulate the 3D rendering system. Therefore, we can't benefit from any texture preloading, which means that any texture processing has to be done as fast as possible in order to avoid random stuttering in-game. The Bicubic and Hybrid filters are too demanding on the CPU to work for us at this time.
Our texture upscaling code is still in its infancy. One of the big reasons why performance is a big issue is because all texture processing is performed on the CPU. While experimenting with the PPSSPP filters, I noticed that they would work extremely well if processed on the GPU. However, reworking our 3D rendering system to perform texture processing on the GPU is not a trivial task. The amount of work and testing involved would be huge. In order for the Bicubic and Hybrid filters to make it into DeSmuME's texture upscaler, it would mean that we would have to do texture processing on the GPU. Do not expect this to happen any time soon!
There is also the matter of color depth: All video output framebuffers are hardcoded to be 16-bit color right now, so you wouldn't be able to see any kind of smooth color gradients regardless of how nice the texture processing is or how nice the 3D rendering is. The color depth issue is currently being worked to eliminate the 16-bit limitation.
]]>I have just a small request. I know everything is still in development, and I highly appreciate the work you did with high resolution and texture scaling (as you can see in my images). But can you add in the future the texture scaling features from ppsspp?
Means beside "xBRZ", can you add following filters:
"Hybrid" (I guess it is linear scaling with xBRZ),
"Bicubic"
"Hybrid + Bicubic"?
In some games the xBRZ filter is just to comic like and doesn't fit to the style of the game. Therefore the Bicubic filter is much more efficient to keep the original style of the game.
PPSSPP Forum:
http://forums.ppsspp.org/showthread.php?tid=1757&page=4
PPSSPP Source:
https://github.com/hrydgard/ppsspp/blob … erCommon.h
https://github.com/hrydgard/ppsspp/blob … Common.cpp
The Legend of Zelda - Phantom Hourglass
Personally, I think that xBRZ is the best pixel scaler for Chrono Trigger due to the game's art style. Lots of games from the SNES era, and many 2D-only NDS games, work very well with xBRZ. But xBRZ doesn't look the best in all cases. You really have to experiment with each filter and see what you like. If your hardware can't handle xBRZ, you can use the previous generation scaler, HQnx, which renders similar results for the most part.
]]>In the Mac version, every filter listed under Source Filter or Output Filter are resolution-independent, which are: Deposterize, Bilinear, Bicubic (B-Spline), Bicubic (Michell-Netravali), Lanczos2, and Lanczos3. All filters listed under Pixel Scaler are resolution-fixed, such as EPX, 2xSaI, HQnx, xBRZ, and others.
In the Windows version, the only resolution-independent filter available is Bilinear. All the other filters are the pixel scalers listed in the Magnification Filter menu.
But everything I've just talked about are full-screen post-processing filters. What about applying filters to the individual 2D layers, like what Zeromus was talking about, so that both high-res 3D and upscaled 2D can exist in the same frame? That would require serious reworking of the GPU code. Keep in mind that what I did to get resolution-independent rendering is essentially extend the existing code. I did not change any of the existing emulation methodology whatsoever. Applying filters to the individual 2D layers would change how we emulate the GPU, which may open up a whole new can of worms...
]]>