Wednesday, July 8, 2020

Intel stock CPU cooler vs. Cooler Master Hyper 212 EVO


Two or three years ago I bought Cooler Master Hyper 212 EVO cooler for my i5-4690k processor, but I never took the time to actually install it until now. I was using the stock Intel cooler, the thin aluminium one with a copper core, ever since I bought the new computer in late 2014.

I used the included thermal paste when I installed the new cooler. I used my AC to bring the room temperature down to 24°C when testing and removed the case side panel. I used CPU-Z stress test to keep the processor at 100% load and HWMonitor to keep track of the temperatures.

With Intel stock cooler the idle temperatures were around 30-32°C. After 10 minutes of stress test the maximum reported temperatures were 74-80°C depending on the core. The maximum fan RPM was 1860.

With Hyper 212 EVO cooler the idle temperatures were around 24-26°C. After 10 minutes of stress test the maximum reported temperatures were 45-51°C depending on the core. The maximum fan RPM was 1300. So, with default settings in idle the difference is around 5°C and during stress test it is around 30°C which I did not expect.

Then I repeated the test with fans set to "silent mode" in BIOS, where they only spin at 750 RPM, and even then the maximum temperature goes only to 55°C.

Then I tried overclocking the CPU to 4.4 GHz (stock is 3.5-3.9 GHz) with fan running at only 950 RPM and the temperatures went only up to 71°C, so I might even go for 4.5 GHz with higher RPM.

I was really surprised with the difference on default settings compared to the stock cooler and how well the new cooler can handle even overclocking.

Saturday, May 30, 2020

Lenovo G580 - first time cleaning after 7 years


My mother's Lenovo G580 laptop from 2013 started to sound like it will take off even when just watching videos online. Using Hardware Monitor program I could see it is hotter than it should be. I never tried disassembling a laptop before, but it was getting on my nerves, so I decided to do it. Luckily there are several videos available on YouTube showing the whole procedure.

I bought thermal paste (Arctic MX-2) and I also bought a 120 GB Western Digital Green SSD in hope it will speed up the laptop a little bit and I could use the 500 GB hard disk from the laptop for myself, since she doesn't really need any storage at all.



It is ridiculous I had to disassemble everything to get to the fan, it should have been designed better. As you can see the fan exhaust was completely blocked by dust. There was only a little 1 mm hole on the left where air could get out. I cleaned everything, applied new thermal paste and put in the SSD.

When watching YouTube or a 1080p movie in VLC the CPU temperature was around 65°C before, now it dropped to around 50°C. Room temperature was around 22°C. The maximum CPU temperature I got while testing was now 20°C lower, from 78°C to 58°C. It is also important to mention that these lower temperatures are achieved with the fan spinning at much lower speed which makes the laptop more silent. I was very happy with the results.

Replacing the old hard disk with a new SSD did not make much of an improvement since the laptop is mostly used for web browsing, so the speed of the SSD is not really noticeable. The biggest bottleneck there are basically ads or ad blocking plugins slowing everything down. At least it is completely quiet and I got myself a 500 GB hard disk I can use to store my stuff.

After everything was done I realized I could have also replaced the 2 core/2 thread Intel Pentium 2020m CPU with a better 2 core/4 thread i5 CPU which can be found for cheap now. It is not really necessary since the laptop still performs perfectly fine. The only use case where it fails are x265 encoded 1080p movies, where it can reach 100% processor utilization which causes stutters, but x264 encoded movies run without issues. Maybe in a few years when it is time to clean it again...

Tuesday, May 5, 2020

Baking a GPU in the oven - Part 2


Last September I wrote about how in May 2019 I had issues with my old Sapphire R9 270X GPU from 2013 and how I fixed it by baking it in the oven and how it was working with no issues for months.


Now I have to report that the GPU worked for 8 and half months in total, until February 2020, when it would again give only black screen when in Windows. I played and finished 8 games during that period with no issues, so it did serve its purpose well after being baked.

After making a short break from more demanding games and using my integrated Intel GPU for about a month, I baked the R9 270X again in March, this time for 10 minutes at 200°C. To my surprise it worked again. Unfortunately I managed to play and finish only 2 more games this time before I got a black screen once again, two days ago. So, this time it only worked for one and a half month.

I baked it again! At 200°C, but I left it inside for 15 minutes this time. After playing around with the oven thermostat a bit, I'm not sure how well the oven and the thermostat even work and if the temperatures are accurate. Nevertheless, it fixed my GPU again! Now, let's see how long will it last this time...

Sunday, February 16, 2020

Dungeon Siege - high resolution textures (ESRGAN) - Part 2



After more than 4 months of work I have uploaded the texture pack for Dungeon Siege that contains 3929 updated textures and is 5.97 GB large (compared to original 700 MB). All terrain textures have been updated, 750 world objects and decals, as well as bosses and some larger enemies and NPCs.

No custom textures have been used, everything is based on original textures. I think the new textures preserved the original look very faithfully. You can watch the comparison video on YouTube and download the texture pack on ModDB:



This is the first time I hit limitations of 32 bit programs. First when I went to pack the textures into dsres files (think of it like Dungeon Siege rar archives), the program would stop when hitting 4 GB. Then the game would not load dsres files larger than 2 GB. Luckily the game was designed to load multiple dsres files. It is surprising all this even works, considering the increase in size. One fun fact; game originally supported screen resolutions only up to 1024x768, but now many texture files themselves are larger than that at 1024x1024.

Probably more than 99.9% of textures were updated using the "Misc" model. "Misc" is a fantastic universal model, the author "Alsa" did an amazing job. Other models used were "Manga109Attempt", "Skyrim Wood" and "Ground". Manga109Attempt was used for things that are supposed to look cartoony, like paintings or carpets with colorful designs.

A lot of work went into fixing and tweaking the original textures in GIMP to prepare them for ESRGAN for optimal results. Original textures were often blurry, some were too pixelated, others had compression artifacts that would be further exaggerated when upscaling. Simple use of noise and denoise filters on original textures produced great results. Also some sharpening of original textures before sending it to processing can help a lot.

 Blurring pixelated parts and adding noise to original texture before upscaling improved poor original result.

Skyrim Wood model was useful in few occasions where the original texture was extremely grainy, this model gives a "grainy blur" result which worked well on few tapestry, some carpets and statues.
 
 Skyrim Wood model.

Sometimes models give good results for one part of texture, but fail in other parts. For the terrain around Fortress Kroth I had to cut the grass from the "Ground" model results and copy it over grass from the "Misc" model.


Adding a bit of HSV noise in GIMP to original texture can add a bit of detail in the final texture. In this example this helped making snow look less like shaving cream and more like snow. It is a very subtle difference. Adding too much noise would make it look more like sand.


In a completely opposite example denoising the swamp floor textures before using ESRGAN helped them look more like grass with leaves compared to original result that lacked any clear detail. Unfortunately for me GIMP denoising filter often creates dark spots in corners of the image, so I had to manually fix that for each texture, it was very annoying and time consuming.


To finish this on a positive note here is an example were the algorithm and the Misc model did an amaazing job without me doing anything. This is a very cery complex texture yet the ivy came out looking excellent, with defined individual leaves.


Sunday, October 27, 2019

Dungeon Siege - high resolution textures (ESRGAN) - Part 1


I spent several days upscaling Dungeon Siege textures using AI image upscaling ESRGAN. The initial plan was to just do Castle Ehb, but after I got great results on grass textures I got carried away. The end result is a texture pack that is 900 MB in size and contains 500 textures. Since the algorithm increases width and height of texture by 4, this means 16 times increase in surface and file size. The areas I worked on are Farmlands, Stonebridge, Glacern (only buildings and items) and upper parts of Castle Ehb. A lot of time went into this, since there was a lot of experimentation at the beginning and a lot of bottlenecks slowing the whole process down. After all the work it is still just around 15-20%(if not less) of the textures that have been enhanced.

You can see the final results in game in the video below (watch in fullscreen at 1080p to see the difference more clearly) or you can see direct comparison of textures in the next section. You can download the texture pack from ModDB.



***

HOW IT WAS MADE

Dungeon Siege modding tools can be found here:
https://sites.google.com/view/chickengeorgemods/modding

I used this tutorial to setup ESRGAN:
http://alphagarg.blogspot.com/2019/01/esrgan-neural-network-ai-for-upscaling.html 

Various upscaling models can be found here:
https://upscale.wiki/wiki/Model_Database

The vast majority of textures were upscaled using the MISC model. This model gives great results on wood, stone, bricks, grass mixed with dirt, etc... Below are several direct comparisons of the textures themselves. In top-left corner is the original texture in its original size, they are 128x128 or 256x256 pixels. Then left is that texture upscaled 4 times using linear filtering like in the game and on right is the new ESRGAN texture.

Example of MISC model working well on complex textures containing ground, wood and grass.

MISC model gives wood textures a lot of new fine detail.

Stone and bricks get their usual roughness of the surface (MISC).

[MISC model sometimes gets carried away. Some stone wall textures become too rough and grainy and outlines of individual rocks become less defined. That is why I sometimes used the MANGA109 model as well. This model gives "cartoony" results and is not good for realistic textures, but its advantage is that it enhances the lines. So what I would do is; take the MANGA109 result, increase the brightness and contrast by just few percent to further enhance the lines, then reduce the transparency/opacity in GIMP to about 60% and copy that texture over the MISC result. This results in more defined lines and also reduces the roughness of the original MISC result. This was used on some rock and brick walls and some wood floor textures].*

* This method was replaced by simply de-noising the original texture before using ESRGAN.

 
MANGA109(left), MISC(right) and final mixed version in the center.

The MANGA109 model gives great results on various carpets. The problem with this model is that it was trained on JPEG images, so it can produce some artifacts and noise, but this noise is actually good for carpets, since they are not a smooth surface to begin with.

MANGA109 model was great for carpets.

UPSCALING FAILURES

The quality of results depend on the quality of the upscaling model used and the size and quality of the texture itself. There is a lack of specialized upscaling models. By specialized I mean models trained on specific texture types like wood, stone walls, grass, leaves, ground, carpet, old architecture, windows, etc... This will probably improve over time when new upscaling models get made.

Many of the textures in Dungeon Siege are very low resolution, which means the upscaling algorithm does not have enough information to recognize specific patterns so it can enhance them and add new detail, so it just creates a mess**. There is nothing that can be done about it, unless an artists makes new textures. For example Dungeon Siege maps are full with various vegetation, but no model gave good results for those.

This carpet texture is too low resolution and upscaling gives poor result (MANGA109).

The algorithm fails to recognize the rock surface under the grass and creates a mess (MISC).

GROUND model creates good grass, but also turns ground/dirt to grass. 

Swamp textures lack any clear detail, so the upscaling gives poor results.

**  Carpet, rock and swamp eventually did give good enough results by simply de-noising the original texture before using ESRGAN.

MANUAL ENHANCEMENTS

Sometimes you need to help the algorithm a bit. When the result is too grainy and rough you can smoothen it out a bit by denoising the original texture in GIMP before the upscaling process. If the results are a bit blurry then adding a bit of HSV noise to those areas in the original texture can help sharpen those areas in final upscaled texture. This works best with wood or stone textures. In some cases (for example castle marble textures) I had to manually straighten out some lines on the original texture and also repeat the uspcaling process on a downscaled upscaled texture and also straighten the lines manually again. Sometimes you also have to be creative and use elements from another texture to enhance a different one.

Fixing texture by adding straw manually.

Algorithm made the face on this texture unrecognizable, so I used a face from another texture.

BOTTLENECKS

There are many things slowing down the whole process:
- Since I don't have a Nvidia GPU I have to do the upscaling on my CPU which is a very slow process. For a 128x128 texture it takes around 45 seconds and for a 256x256 more than 3 minutes on a i5-4690k.
- Original textures are in a custom RAW format and only available converters are from RAW to BMP and PSD, and from PSD back to RAW. The ESRGAN upscaling program does not work with PSD. So I need to convert original RAW files to BMP, then upscaled results from PNG to PSD, and finally PSD to RAW.
- Another problem is that textures have an alpha channel which is lost during the BMP conversion. So for each upscaled texture I have to manually add an alpha channel***. For textures that are partially transparent, like windows or spider web, I also have to extract the alpha channel, upscale it separately and then add it back in.
- The things already mentioned under "Upscaling failures" and "Manual enhancement".

*** Program called "xnconvert" can be used to do this on multiple textures at once.

FUTURE UPDATES

I don't know if I will upscale the whole game, after all this work I need a break from this. It takes too much time and some textures give poor results like forest, jungle and swamp floor textures. IMO for those I could resize the final results by half, so the flaws are less noticeable and textures would be at least a bit sharper. I think good results could be achieved for snow and desert terrain textures. I think icy caverns don't need to be upscaled, since ice is supposed to be a bit blurry. Some dungeons, like Wesrin Cross, also have very poor textures that lack detail so the algorithm doesn't really do much good.

Monday, September 2, 2019

Fixing a GPU by baking it in an oven - It actually works !


Back in May I was starting to have issues with my GPU. The monitor would suddenly turn black and few seconds later the computer would freeze. It would happen very rarely and after reconnecting the GPU and the cables everything would be fine. I thought it was some loose contact somewhere. But then one day after it happened I couldn't boot into Windows and in BIOS the screen was full of artifacts. My i5-4690k has an integrated GPU, so I could easily confirm it was my GPU, a Sapphire Dual-X R9 270X OC (2 GB) from 2013. It is an old card, but still good enough for me. This happened while I was playing Claw, a 2D platformer from 1997... not a very honorable death for a 2013 card.

I was already looking at the second-hand market and contacted few people to buy a used RX 570, when I read about people baking their GPUs in an oven and fixing it. Since the GPU is 6 years old, out of warranty and obviously broken, and I have an old oven in the garage that is barely ever used, I decided to give it a chance.

I preheated the oven to 190°C, put the GPU board inside and baked it for 8 minutes. Then I opened the oven slowly and let it cool down inside. People warned about being careful not to cool down the GPU too fast, because it could cause cracks in the solder. Also be sure to open all doors and windows, because it will smell of solder.

Since I didn't have thermal paste, for a quick test I put it in the computer without the cooler, I just put a case fan to cool it and was monitoring the temperatures. To my big surprise the artifacts were gone and I could boot to Windows again. Then I started Furmark and it would crash right at the start, even though the temperatures were still low. Luckily after getting thermal paste and mounting the cooler it worked fine. My guess is there is still some bad contact between the GPU chip and the board, but by mounting the cooler and adding pressure the contact is now stable.

It has been three months already and it still works. I have played and finished few games and even ran some benchmarks. Only once did I get that black screen, about a month ago, but it didn't repeat again.

Friday, October 12, 2018

1 000 000 views on YouTube !

About a month or two ago my YouTube channel reached 1 000 000 views ! When I uploaded my first few videos in 2010 I remember being excited reaching 100 views. I guess if I enabled monetisation I might have made a bit of money, but that was never the goal, I just wanted to share what I was working on.

My YouTube channel

Around 80% of those views are from The BloodCrafter video, a Minecraft joke made in 2011 that often went viral over the years. I made that thing in one afternoon, while other projects like Serious Sam 2D and Quake 2D, which took months to finish, have far less views, but still a respectable number.

To celebrate these 1 000 000 views I have prepared... nothing. Even this blog post took me few months to finally write. Everything is in a vegetative state. The Broken Mug Engine and the Quake 2D remake in that engine are not legally dead, but progress is extremely slow and it will never be as polished as I would like it to be. I fix a thing or two every few months when I'm bored of doing other things. The original campaign can be finished, but there are bugs all over the place, mostly because all new features I would make, I would leave unfinished and the project grew to a size that is very hard for me to manage. Also it doesn't help that the forums where I have been posting updates about these projects over the years have been shutting down left and right, I will have no one to share this with, but strangers.

Sunday, May 14, 2017

Chrome and Chrome SpecForce - Visual Fidelity (unofficial patch)

Another year, another patched old game(s). This time it is Chrome and the expansion/prequel Chrome SpecForce. All I wanted to do is play in 1080p with a FOV that would not give me headaches. Then I discovered Java source code that came with the games. Fix here, fix there, and is basically a whole patch that should be usable to others too.

The goal of this "patch" is to enable the games to be played in widescreen resolutions, ultra widescreen, multi monitor setups and in 4K and above by fixing text rendering and FOV issues and properly scaling some HUD elements. Another goal was to increase the visual fidelity of the game by forcing the game to render highest quality assets even when they are far away from the player. Only assets that will actually be changed are the HUD map textures. No gameplay changes have been made. Jackfuste from WSGF helped fix all the FOV issues and I used HUD map textures for Chrome from Chrome Widescreen Mod(Chrome HD Fix).

I have uploaded it to ModDB and there are more details and a list of changes there and in the included change log file. I wont post it all again here. Detailed instructions are also included.

md5:d4acfc676f0308ef65cea2ce18647199

Here is a short video comparison:


Here are some before/after screenshots (move the slider):