Thursday, May 4, 2017

VR Experiences: Performance Concerns

Despite the overclocking I undertook to prepare my system for VR, I wasn't surprise to find that certain titles couldn't maintain the solid 90 FPS recommended for VR. Check out the following graphs from MSI Afterburner, generated from a couple of sessions in Elite: Dangerous.

If you can make out the "Framerate, FPS" graphs in those two images (they're the 3rd from the top in both cases), you can see them fluctuating wildly, when ideally they should be a nice constant 90fps (you might find it difficult to make out, and in that case, you'll just have to trust me!):

As I mentioned in a previous post, I had already reached a bit of a ceiling WRT overclocking my system: my GPU was limited by power and/or voltage, while my CPU seemed to be restricted by voltage and temperature. It might have been possible to push my CPU further, but it would take a lot more time and effort, for very little return (maybe an extra 100MHz or so). The GPU is where the biggest improvement would be seen, but that would require a voltage mod... You'll have to wait for my next post to see what route I took though (and if you follow me on Twitter, you probably already know)!

Saturday, March 25, 2017

VR Experiences: Room-Scale

Getting the Vive set up in a larger room was not only necessary, but inevitable. Fortunately, my wife not only accepts my geekery, but actively encourages it! I wasn't initially sure how it would work in the lounge space (apart from the coffee table having to move temporarily!), so I ordered some items from Amazon to test out the theory:

To test the placement of the lighthouses in the lounge, I set up the poles in opposite corners of the room and attached the camera mounts, which had compatible 1/4" threaded heads I could screw the lighthouses to (see the picture on the right). The cables allowed me to have a longer run from the back of my PC, through the office into the lounge and plug into the Vive's link box. As an aside, the Vive supports the use of both USB 2 and 3 and ideally I would have chosen a USB 3 cable, but I couldn't find a 5m one that had been confirmed as working on the Vive subreddit. I think the only downside to using USB 2 is there's less bandwidth available for using the built in camera and any other peripherals you might connect to the Vive's secondary port.

After I ran the SteamVR room setup, I was delighted to find I had a play space of 2 x 2.4 metres, which meant I could finally enjoy room-scale experiences. This was amazing; I could finally walk around in VR space and try out titles previously considered unplayable! It only took me a few moments to get used to the play space boundaries that are presented by the Chaperone system, which appear when you approach them. Soon I could move around with confidence, which made the games so much more immersive!

Anyway, after a couple of days, I was happy enough with the results that I decided to make the installation permanent: I ordered a couple of wall-mount speaker brackets (again, with 1/4" threaded heads) and some conduit and installed the two lighthouses in a more discreet fashion.

Now, I just have to move the coffee table out of the way whenever I want to enjoy a room-scale experience.

Tuesday, March 14, 2017

Virtual Reality Experiences - Standing Room Only

After the first amazing evening with the Vive, I made the effort to properly mount the lighthouses in the office. This is a pretty simple affair as the supplied brackets just need two screws to fasten them to the wall. In fact, I found it more difficult to run power to them, as I had to run an extension cable around one wall of the room and up onto the bookcases!

Once the two lighthouses were in place, I re-ran the room setup, hoping that I might be able to tease a room-scale play area out of the space available, but alas, it was not to be. While I was still in the office, I'd be restricted to standing and seated experiences, which was disappointing to say the least; especially as how two of the titles I'd received with the Vive were designed for room scale, and there were countless more on Steam (including the Trials on Tatooine experience from Lucasfilm)!

On top of this restriction, I found that while playing standing experiences I would occasionally knock into our glass-fronted bookcases! As I was just getting to grips with being in VR, I had a tendency to be rather timid with my movements. However, even at this early juncture, I could see this becoming more of an issue, especially given the nature of some of the more intensive games/experiences. I'd also seen a lot of posts on the r/Vive subreddit where people have damaged TVs, lamp shades, etc. and it would be all too easy for me to punch right through the glass! I would need to move the setup to a larger play-space eventually for my own safety.

Despite this setback, I thought I'd have a crack at playing Elite: Dangerous, which is a seated experience that I had been aching to try ever since I found out the game had native VR support (back during the Oculus Rift DK1 era)! Once again I had my mind blown. Even after the approximate 120 hours I'd sunk into the the game by this point I wasn't prepared for how amazing it felt when I found myself actually sitting in the cockpit of my Asp. The large open glass canopy surrounded me, allowing me to stare around the hanger interior and the ships consoles curved around me and the holographic displays activating as I glanced at them.

Launching the ship gave me my first brief feeling of nausea, as I was propelled forward by the loading ramp, but this swiftly subsided as my ship rose up into the expansive hanger. Now, I'd been playing Elite with a cheap head-tracking solution up until this point and this had been invaluable in helping me to check clearance before I leave the landing pad and tracking targets during combat. VR allowed me to actually lean forward and check directly above my ship when taking off (invaluable when I switched to a Viper); the improvement over simple head-tracking was breathtaking. I could go-on, but suffice to say I still get goosebumps when I launch from a Coriolis station, or fly through planetary rings.

Sunday, October 16, 2016

Virtual Reality Experiences - The Arrival and Setup

I finally did it! I bought myself a HTC Vive! On the 4th of August 2016, I became the proud owner of my very own virtual reality kit...

I was so excited when it arrived during the middle of the day, which was problematic because I still had work to do. However, I soldiered on and once the end of the day rolled around I quickly opened the box... First thing that hit me was the odour; that wonderful new consumer electronics smell, but this was different somehow. Almost like I was smelling the future!

I have to apologise for not providing any photos of the un-boxing process; I was pretty damn excited about the new arrival and I didn't want to waste any time getting the the thing set up! As it turns out, I really needed it... But I'll get onto that in a moment, first here's what's in the box:

  • The head-mounted display (HMD).
  • A pair of controllers, complete with USB cables and chargers.
  • Two base-stations/lighthouses, with wall-mounts, power supplies and a link cable.
  • Link box and a power supply.
  • HDMI and USB cables.
  • In-ear headphones.
  • Two cloths for lens cleaning.

I may have missed something, but I think that's the majority of it! Now, onto the details of getting the Vive working!

Initial Setup

So, essentially, the Vive is pretty easy to set up:

  1. Set up base stations.
  2. Connect the link box to your PC.
  3. Connect the HMD to the link box./li>
  4. Run the room setup routine.

Because I wasn't sure how the lighthouses would work in my office, I came up with a novel technique for testing their placement: I carefully positioned one on top of the bookcases, the other balanced on a stack of boxes on top of my PC... I'm not usually as precarious as this, and I was extremely paranoid about knocking the base stations over, but I wanted to be sure the whole system worked before I went ahead and drilled holes in the wall!

The next step was to connect the link box to my PC. Fortunately for me, my 970 has just enough ports for me to connect the HDMI cable; the two DVI ports and single DisplayPort are each connected to a monitor already. With the display connected, I plugged in the USB cable, powered up the box and connected the HMD and watched all the various drivers install.

Error 108

So, at this point, I'm practically sick with excitement. I fire up SteamVR to set up my play space and...

Error 108: Headset not found

Huh. No matter, I thought, I'll just try to fire up SteamVR again. Error 108. Shit. This wasn't good. So, I started Googling around and I found out that error 108 could be related to driver problems or worse, a DOA headset. However, I was fairly certain I didn't have a broken HMD as the PC had recognised the new device; all the drivers installed when I first connected it, and I could also see an "HTC Vive" entry in my device list:

So, after some further research, I found a few tips that might help:

  • Rebooting the headset.
  • Completely disconnecting everything and reconnecting.
  • Trying another USB port.
  • Removing all the USB drivers related to the Vive and starting the whole installation process again.

I tried all of the above suggestions, none of which worked, but the troubleshooting process introduced me to a sweet little application called USBDeview. This allowed me to see was all the USB devices that had ever been connected to my PC and I used this application to forcibly remove all the USB drivers that had been installed recently.

A quick aside: have you ever noticed how Windows will see a new device each time you connect it to a different USB port? Over the years, I've ended up with a Razer Megalodon, Razer Megalodon-2, Razer Megalodon-3, Razer Megalodon-4 and even a Razer-Megalodon-5 listed as my audio device... Using USBDeview, I was able to see all the instances of this device and remove them all; this was a completely unnecessary step in fixing my Vive, but it allowed me to fix this particular bugbear of mine!

After several hours of tearing my hair out and it drawing late in the evening, I was ready to throw in the towel and (shudder), raise a support ticket, until I found one last suggestion... Executing Steam with the "Run as administrator" option. Now, I had tried running Steam in my admin account, as opposed to using my regular "limited" account, but I hadn't tried this. Sure enough, when I used this option and launched SteamVR, my headset was detected! I can't tell you how elated I was to see the SteamVR application finish loading and show all the connected devices:


With the Vive finally working I quickly got to setting up my space. There are two options here:

  • Room-Scale - this is the ideal option. You have the ability to literally walk about in the play space and certain titles require it (e.g. Job Simulator and Fantastic Contraption). In order for this to work, you need a minimum of 1.5m x 2m of space available.
  • Standing Only - if you have less than the minimum space, you can configure the Vive in this mode. Some titles will work fine with this setup (e.g. The Lab), especially if they're seated experiences (e.g. Elite: Dangerous).

I thought I'd be able to get away with a room-scale setup in our office, but it turned out I was wrong... It was standing room only for me, which was frustrating because two of the games I'd received as part of the Vive bundle required a room-scale setup; Fantastic Contraption and Job Simulator. However, despite the disappointment, I kicked off the tutorial to get myself acquainted with the system.

I had heard how accurately the Vive's controllers were tracked, but I almost couldn't believe how easily I was able to pick up the pair of them as they hung suspended in the air of the Aperture Science testing chamber (they were on the office desk)! After being introduced to the system by a helpful Core I spent a good few minutes messing with the different mechanics available to me. To be honest, I was blown away by even this "simple" demonstration. The sense of scale in the testing chamber was amazing, and I found myself giggling like a school-child at my ability to inflate different colour balloons, bat them away and zap them with a laser! I had to share the experience with my wife immediately, and she too was soon enjoying herself by creating colourful balloons and sending them drifting away from herself.

The thing we both agreed on was how impressive the sense of scale was "inside" the Vive... After both of us took the HMD off, we experienced a powerful feeling of disorientation; similar to the sensation of waking from a particularly vivid dream. What I've found interesting, is that over the past month or so since I've been using the Vive, I think this sensation has lessened. After particularly long sessions, there's a slight feeling of detachment, but I think my brain has become more used to being transported "between worlds". After the successful test run with the tutorial software, I fired up Valve's The Lab and tried out a couple of the activities available there; the archery scenario was particularly fun! However, by this time, it had gotten very late, so I packed up for the evening, with a plan to return to the world of VR as soon as possible!

Friday, September 16, 2016

Virtual Reality Experiences - PC Prep

When the consumer versions of both the Oculus Rift and HTC Vive were announced, I was pleasantly surprised to find they had similar minimum requirements:

So, it seemed as though I'd be set if I decided to splash out on a head mounted display (HMD)... Until Frontier Studios made a rather disconcerting announcement regarding their own requirements for playing Elite Dangerous in VR. The minimum specs they described were:

Oof, an i7 and a 980?!? I wonder if there's any leeway there?

"We are passionate about VR and Elite Dangerous is leading the way in cutting edge VR software development. This is what we consider to be a minimum spec to have a good experience on forthcoming consumer VR headsets."

OK, well maybe not.

This placed me in a bit of a dilemma: I really wanted to be able to play Elite in VR, but I wouldn't be able to afford to upgrade my GPU as well as buying a VR kit. After a brief period of personal crisis, I realised I would be able to squeeze some more performance out of my current system by attempting to overclock it. I never managed to get around to this when I originally built my main rig, Icarus, because of perceived thermal issues (something I have since resolved, and the potential subject of another blog post).

Overclocking and Benchmarking

I won't go into detail of my overclocking adventures, but suffice to say I spent a lot of time attempting trying to get my CPU to 4.3Ghz, but I couldn't quite achieve that, so I ended up with a 4.2Ghz overclock that seems stable. That's still a decent jump up from the stock 3.8GHz of the 4760K. The GPU was a tad easier; I managed to get the GPU clock of my MSI GTX 970 Gaming 4G from the stock 1253MHz boost clock to 1504MHz without too much trouble, while the memory clock I managed to get to 3.5GHz.

I actually think my 970 could clock much higher; the temperature of the GPU was still within acceptable limits (the maximum it reached during load tests was 75°C), but I appeared to be hitting voltage and power limits. This was despite me already having set the over-voltage as high as I can in MSI Afterburner. Check out this screen cap of the Afterburner profiling utility:

If you look at the power, volt and OV max limits, you can see them flapping between 0 and 1. The power limit is reached when the TDP of the card is hit and the GPU has to throttle, while the voltage and OV max limits are for when the voltage limit is reached. Now, I can't increase the voltage limit any further with Afterburner, nor is it possible to tweak the power limit through utilities like this. Instead, I'll need to consider the use of vBIOS modding... Something for the future maybe?

So, I'd achieved a stable overclock for both my CPU and graphics card, but what would I use to test how much performance I'd rung out of my hardware. In the past, I've used a combination of synthetic and real world tests to benchmark, but being in a bit of a hurry, I decided to keep it simple this time. I decided to use Unigine Valley, which is successor to the Unigine Heaven benchmark, but I also just become aware of a utility that Valve had released that I thought would be perfect to use as well: the SteamVR Performance Test. This runs a small section of Valve's own VR title, The Lab, and provides a score out of 11, based on how well your system can render the VR content at 90 frames-per-second (the current optimum frame-rate for consuming VR). It's also able to provide feedback based on the results, suggesting possible upgrades to your system.

As usual, I ran each benchmark 5 times at stock and again when the system was overclocked. Then I took the median of each set of results and used that to compare the before and after configurations.

Performance Comparison

So, as you can see from the below graphs, I managed to get an increase in performance of at least 10% in the two tests, which isn't bad for a few hours work. I'd love to see what I could achieve with a vBIOS mod increasing the power and voltage limits.

The most encouraging factor here is that even at stock settings, my system hardly had any frames rendered at less than the optimum 90fps, and once overclocked it never missed this target at all. However, the real question was how this would translate to VR performance in Elite: Dangerous. Something I couldn't really achieve without a VR headset... But that's another story!

Saturday, September 10, 2016

The Blog is Back!

I am resurrecting this blog after an absence of a couple of years! Back when I founded my own company, AzTek Native Ltd., I migrated all the content from here over to the new blog. Since then, I had written a few consumer-tech related posts on the company blog, but mostly I had been focusing on DevOps, infrastructure automation, etc. A few months back I realised that I was diluting the company message, but I still wanted to be able to write about the stuff I enjoy tinkering with in my spare time, hence the decision to bring this site back online. Even with the occasional consumer-related posts being made, I still have some updates that I probably should mention here. I may get around to writing individual posts for each of them, but for now, I'll just list 'em off:
  • I bought an MSI Geforce GTX 970 Gaming 4GB to replace my Sapphire Radeon 6950.

  • I managed to finally overclock my i5-4670K after isolating the heat dissipation issue.

  • My wife and I had our disused garage converted into a new home office, where we can both work and play side-by-side.

  • I bought myself an HTC Vive...

Oh, and there's one other, pretty important thing... My wife and I are expecting (hence the new office construction)!!

Sunday, July 12, 2015

Noise Pollution: Replacing Fans on a Sapphire Radeon HD 6950 2GB

A few years back, I bought a Sapphire Radeon HD 6950 2GB for my main gaming PC, which I've since replaced with an MSI GTX 970 Gaming 4GB card. However, towards the end of it's service, one or both of the fans on the card started to make a lot of noise; especially when they spun at faster speeds needed to keep the thing cool while I played games! I've wanted to put the card back into service in my wife's PC, but not before I'd done something about that racket, so I found some compatible fans on Ebay and went about replacing them. Here's my check list of items I used, in case you fancy giving this a go yourself
My trusty Sapphire Radeon HD 6950

Four screws holding the heat sink in place.

Heat sink removed

Removing the plastic shroud meant unscrewing these little fellas

Bleaurgh... Dust build up in the heat sink

The plastic shroud and noisy fan(s)

Shroud with fans removed

Replacement fans

New fans fitted to the shroud

GPU covered in thermal paste - this needs to go!

All clean - this was so reflective, taking a photo was almost impossible!

"Job's a good-un", as they say...

The procedure took me just under two hours to complete and so far seems to have been a complete success; the card has returned to normal noise levels when under load. Something interesting that I noticed when I had the heat sink off is that it doesn't appear to make direct contact with the video memory chips on the board, but the clearance between the two doesn't facilitate the installation of after-market heat sinks. This is a bit disappointing as video memory can get quite hot as well as the GPU itself!