Thứ Ba, 30 tháng 9, 2014

CPU Profiling Totally Rocks

Having a great time profiling the FPSC Reloaded Engine with VTune at the moment. I started by switching off every component and running the profiler on a completely empty scene, no terrain, objects, sky, physics, anything. I then had a look at what might be hogging things.  Turns out quite a few things.


Seems the engine would be monitoring ALL the objects, even if they where invisible for things like animation potential, mesh vertex update potential and other large loops. Completely redundant of course and hogged my CPU cycles. By changing them to use shortlists, I would only do a loop that consisted of the objects of interest, and the bottleneck completely disappeared.

At first I also thought the huge amount of time spent in NVD3DUM.DLL was something I could optimize but I think a good engine spends most of it's time in here as that is where the CPU is constantly giving things to the GPU to process, which means more frames and faster games. My current guideline is to ensure that the engine always spends more time in this module than it does in the remaining modules, thus ensuring a fast throughput of polygons to the card and zero CPU stalling.

I still have an outstanding issue which is causing a DirectX Error crash due to skipping the texture sort each frame (a MASSIVE hog) but once I track down the specific object(s) responsible I can fix it properly and massage the texture sort system so I am not breaking something elsewhere.


As you can see, by ensuring the texture sort only happened when the overall number of objects in the engine changes (i.e. something got added or removed) I went from 143 to 208 by adding two extra lines of code and a new variable!

After I've solved the texture sort crash bug, I need to spend some time playing the game and using the editor and features of the engine to ensure I have not broken anything major. Best to fix those now when I know what code I changed than a week from now when I won't have a clue.

I won't tease you with my current frame rate gains as they are very subjective but I am happy to report that for every bottleneck I find, and eliminate, the bottom line FPS jumps up.  There is still the unavoidable issue that the engine drops back down to the 40 range when I try to draw a thousand shaded objects, but that is something I plan to tackle separately as it relates back to visuals and how the rendering order and quantity is handled.

Pretty happy with the performance work so far, and my hope is to bring you some solid news of the gains before the week is out.  Until then, watch this space and keep your fingers crossed.

Thứ Hai, 29 tháng 9, 2014

Performance Week

At long last I have finally broke free of visual thoughts and hidden thread bugs to spend a whole week on performance. When not trying to find ways NOT get distracted with 'other things' I will be using Intel VTune to find all CPU bottlenecks and squash (or redirect) them as much as possible.  I have some major areas I think need work, but I will let the profiler be my guide this week (and my own task list of course).

Before I started this week of speed, I had one last visuals related conference call with one of our former top artists. Taking five minutes away from his cut and thrust industry artist lifestyle, he helped us come up with a plan on how we might balance the lighting system in our engine and create a more impressive final render.  I will only be starting this work mid-October but it's great to have another pair of eyes, attached to a brain and mouth that can talk in the language of code and the language of art. We can only benefit from his help!


I have arrived at the visuals settings that 'I' like, and when we do the light balancing we can come up with something both 'generic and cool'. There was even talk of disabling some of the sliders by default (released in SETUP.INI) so you can be protected from messing up the lighting balance. For example, no good comes from increasing ambience if we can provide the ambience via a skybox cube map (spherical, hemispheric or cube mapping) for the perfect natural lighting (i.e. when you change the sky to blue or red, the ambient contribution is affected by the colors in the sky and is very effective).  More on this when I start my experiments next month.

Experiments for the rest of this month include hunting down and eliminating lazy, bloated or overworked algorithms and teaching them the true meaning of speed.  My personal goal is to go from 35 fps which is what I am getting from my aged PC and Graphics card to well over 60 fps to achieve a smooth and exciting game play.  My hope is that I will find a single line of code which is the cause of all the slow down but I don't think I am going to be that lucky. It's more likely to come from some effective investigation, lateral problem solving and a few hard choices too.  Having been a victim of these slow patches, I am pretty excited to get stuck into the heart of this beast so going to grab a bite to eat now and then set forth on a journey of discovery to slay a few code sloths!

Thứ Sáu, 26 tháng 9, 2014

Through the Google lens: search trends September 19-25

Spoiler alert! Those of you not caught up with Scandal might want to skim this one. -Ed.

This week, searchers learned how to get away with murder—and how not to get away with public criticism of prominent figures with important business relationships with your employer.

Shonda, Shonda, Shonda
TV fans, rejoice! This week brought premiere episodes for old favorite shows as well as hotly anticipated new ones. Top returning shows on search include CBS’s The Big Bang Theory (natch), and NBC’s The Blacklist and Chicago Fire. New shows that shot up the search ratings include Batman prequel Gotham and new family comedy black-ish.

But premieres week really came to a head on Thursday night, which we prefer to call the Night of Shonda. Producer Shonda Rimes has got ABC’s lineup locked up with Scandal, Grey’s Anatomy (in its final season this year) and the new How To Get Away With Murder, starring Academy Award-nominee Viola Davis. All three shows were in the top 10 hot searches the day of their premiere. True to form, Scandal’s season 4 debut left people with more questions than answers. Here's a sampling (spoiler alert!) of what searchers were asking during the show:
The end of an era
Derek Jeter first took the field as a New York Yankee in May 1995. Five World Series, more than 3,000 hits and nearly 20 years later, this weekend he will take to the diamond for a final game at Fenway against his archrivals, the Boston Red Sox. Though neither the Yankees nor the Sox made this season’s playoffs, anticipation for Jeter’s farewell at-bat was already high. But last night, after giving baseball fans so many memorable moments over the years, he gave us one more. In his final game at Yankee Stadium, Jeter’s ninth-inning walk-off single gave the Yankees a win over the Orioles, provided the world another excuse to search for the star shortstop, and was a fitting ending to Jeter’s fairy-tale career.

Over on the political field, Attorney General Eric Holder announced on Thursday that he is stepping down. Holder will leave behind a large and sometimes complicated legacy on issues including same-sex marriage, voting rights, criminal justice, national security and government secrecy. He’ll go down in history as the fourth longest-serving and first black AG.
NFL in the news
The NFL continues to be in the news for more than just its games. First, NFL commissioner Roger Goodell gave a press conference on Friday addressing the league’s issues with domestic violence. Then, on Monday, prominent sportswriter Bill Simmons was suspended for three weeks by ESPN after he called Goodell a liar in his podcast “The B.S. Report.” Simmons is prohibited from tweeting or other public communications until October 15, but Sports Guy supporters took to the web on his behalf, fighting to #FreeSimmons. Finally, this week’s season premiere of South Park featured a malfunctioning “GoodellBot” and a plotline about the controversy over Washington’s team name.

Happy 5775
Shana Tova! That’s what a lot of people were saying (and searching) as people worldwide dipped apples in honey and celebrated Rosh Hashanah, the Jewish New Year. The holiday was the fourth hottest search trend on Wednesday.

Tip of the week
Google can help you get a good deal on your next airplane ticket. When the price drops on a flight you’ve been researching on Flight Search, you may see a Now card letting you know. Just tap the card to quickly and easily book your trip. This works on the latest version of the Google app on Android in the U.S.

Give Me Light!

Spent one hour and a half talking about the lighting question again, all very necessary stuff but it's slow progress making concrete decisions. You could not find a more subjective topic to talk about, and committing ideas to code requires a very clear understanding of what you want to do, versus what do not want to happen. After the call I was thrust into a further three hours of experimentation and analysis to attempt to create a situation where the surfaces of objects can be overexposed without using ambient light to artificially brighten other areas of the scene which became undesirable. The solution was a new slider value called 'Surface Level', and much like 'Ambient Level' controls the intensity of the multiplier within the shader, but this time for direct light.  I also added the remaining shader controls to the new static render effect to include shadow intensity and general ambient and surface colors.


While I was coding and testing this, I set my machine off pre-baking The Escape level with ambient occlusion but with a single threaded approach. I did some experimenting last night and discovered that if I completely eliminate the threading code, and run on the main processor thread, I can lightmap the whole scene without any corruption, freezing or crashing. A major clue, as I now know it has something to do with threads competing for use of the same data and getting it royally wrong.

Of course after 2 hours, when the pre-bake was finished, it turns out that by setting the ambient value to 0.0 instead of 0.6, the expensive occlusion effect was lost as inside buildings there is no light to subtract from. Ah well. Returned it to 0.5 and started the build process again.  The reason I dropped it was to allow the real shaders to fully control ambience, but as I want to have ambient occlusion mapping even where there is no light sources, I have decided to use 0.5 as the base-line and then deduct this value from the shader so I can effectively have negative light to apply the ambient occlusion effect again.

For today, in the spirit of getting things done, I have decided not to continue hunting for the threading bug and instead get the static shaders finished off and move onto in-game performance and continued visual touches. These items are now more important than making the light mapping process faster, but it's still high on the list, just slightly demoted while I get the engine into a state which can allow me to make some decent screenshots everyone is happy with.

Currently agonizing over creating a new shader (which will be almost identical to the entity_basic.fx) to allow normals, specular, fog, e.t.c. but with the addition of an extra UV data chunk and a texture re-shuffle.  Ideally it could all be in one shader but then I would have redundant resources in there on both sides (i.e. secondary UV not required for dynamic entities, occlusion texture not required for static entities). I also like the freedom of being able to tailor the static shader for speed given it's static state.  Despite the terrible 'code duplication' it will create I think I will opt for a specific static shader and just cut and paste 94% of the code from entity_basic.fx.

If anyone knows of a good technique to have 'common shader code' which can then be included into the HLSL file, it would make the above concern mute and would significantly clean up my shaders and also reduce the chance of errors creeping in such as typos.

For now I will proceed to create final static shaders, juggle the code to allow the extra textures in there and tie in the HIGHEST to LOWEST settings so they can change the static shader too.  That will then set me up nicely to produce some nice shots this evening, and have the engine ready to do some serious performance profiling with Intel VTune (the core duties of my tasks next week). Would have been nice to share a final render of the combined effects of this work, and maybe I will post one this evening if I am not too zonked, but for now here is me diving back into the land of shaders and putting some of the wires back in the box.

Thứ Năm, 25 tháng 9, 2014

Monster Crash Freeze

Every now again, once every few years, you encounter a bug which dwarfs the daily bug, reassuring the typical plodding coder that he still has a lot to learn. The bug in this case is one which flickers the whole screen, and then after around 5 seconds freezes everything, apps, processes, mouse, task manager, everything. The only escape is a hard reset and complete reboot of Windows. Now this type of super crash was quite common before processors got to Ghz speeds, when you only had one core and a hacky way to do threading.  So much in fact that when this new monster bug occurred, it was like a blast from the past.  Not a happy journey into nostalgia though as it is precisely in my way to creating nice looking scenes and fast games.

Actually stayed up until 2AM last night battling with it, to no avail. All my tricks to hunt it down resulted merely in the insight that it is definitely rogue memory writing that is to blame.  The corruption strikes in the object sort list, in the object data themselves and in the vertex buffer manager, so there is no specific target and the damage hits in a different place each execution. Even data based breakpoints failed as the area being monitored would be corrupt the first time but not the second.

Today I had the idea that I should amend the light mapper to use a single main thread and to create smaller light mapping batches with a smaller test level so I can concentrate the bug effect and have a chance of the program using the same address space on repeated runs.  I am now in the middle of this process and hopefully I can then use my data breakpoint trick to find the origin of the rogue who is randomly writing bytes into someone else's memory.  I've also been asked for some top notch light mapping screenshots so it's critical I get this fixed, new scenes designed and shots made before the newsletter comes out.  Wish me luck!

You don’t know what you don’t know: How our unconscious minds undermine the workplace

When YouTube launched their video upload app for iOS, between 5 and 10 percent of videos uploaded by users were upside-down. Were people shooting videos incorrectly? No. Our early design was the problem. It was designed for right-handed users, but phones are usually rotated 180 degrees when held in left hands. Without realizing it, we’d created an app that worked best for our almost exclusively right-handed developer team.

This is just one example of how unconscious biases influence our actions every day, even when—by definition—we don’t notice them. These biases are shaped by our experiences and by cultural norms, and allow us to filter information and make quick decisions. We’ve evolved to trust our guts. But sometimes these mental shortcuts can lead us astray, especially when they cause us to misjudge people. In the workplace, for example, the halo effect can cause us to inflate performance ratings or in-group bias can lead us to overlook great talent.

Combatting our unconscious biases is hard, because they don’t feel wrong; they feel right. But it’s necessary to fight against bias in order to create a work environment that supports and encourages diverse perspectives and people. Not only is that the right thing to do, but without a diverse workforce, there’s a pretty good chance that our products—just like that early YouTube app—won’t work for everyone. That means we need to make the unconscious, conscious.

The first step is education; we need to help people identify and understand their biases so that they can start to combat them. So we developed a workshop, Unconscious Bias @ Work, in which more than 26,000 Googlers have taken part. And it’s made an impact: Participants were significantly more aware, had greater understanding, and were more motivated to overcome bias.

In addition to our workshop, we’re partnering with organizations like the Clayman Institute and the Ada Initiative to further research and awareness. We’re also taking action to ensure that the decisions we make at work—from promoting employees to marketing products—are objective and fair. Here are four ways we're working to reduce the influence of bias:

  • Gather facts. It’s hard to know you’re improving if you’re not measuring. We collect data on things like gender representation in our doodles and at our conferences.
  • Create a structure for making decisions. Define clear criteria to evaluate the merits of each option, and use them consistently. Using the same standards to evaluate all options can reduce bias. This is why we use structured interviews in hiring, applying the same selection and evaluation methods for all.
  • Be mindful of subtle cues. Who’s included and who’s excluded? In 2013, Googlers pointed out that of the dozens of conference rooms named after famous scientists, only a few were female. Was this our vision for the future? No. So we changed Ferdinand von Zeppelin to Florence Nightingale—along with many others—to create more balanced representation. Seemingly small changes can have big effects.
  • Foster awareness. Hold yourself—and your colleagues—accountable. We’re encouraging Googlers to call out bias. For example, we share a “bias busting checklist” at performance reviews, encouraging managers to examine their own biases and call out those of others.

As we shared back in May, we’re not where we should be when it comes to diversity. But in order to get there, we need to have this conversation. We have to figure out where our biases lie, and we have to combat them. Tackling unconscious bias at work is just one piece of making Google a diverse workplace, but it’s absolutely essential if we’re going to live up to our promise to build technology that makes life better for as many people as possible.

Thứ Tư, 24 tháng 9, 2014

I Was Up, Then I Was Down

All the way up to 4PM I did some good work, creating a new task slicer for the lightmapper which will conserve the system memory even for massive levels. It does this by only lightmapping a chunk at a time, and then freeing up the used memory for the next job. I also found and fixed a few major memory leaks in the lightmapper too which helped hugely. Once I moved from my test scene to The Escape level, although it lightmapped fine as a single process, the sliced one now exhibits a very unique bug, which flashes the monitor (not the back-buffer of the app but the whole PC), and after ten seconds the whole machine freezes completely. Have to hard reset to get it back!  Not a fine ending to the day, but I will go through line by line and fine the culprit but it will have to be Thursday now.

I also managed to do an updated trace of all the CPU allocations when running the map editor, and also tacked on the lightmap resource usage from this morning.



Ignore the title, it should have read "CPU System Memory" but you can see the worst offenders are terrain, and the 21% is the memory created during the light mapping process itself (along with some other big LM chunks).  I am sticking with the lightmap resources for now as part of the ambient occlusion mapping work and then I will probably explore the terrain usage after I've done the priority performance tasks on my list.

It's a nice feeling when you finish a day and you've made progress and the software runs better than the day before. On this occasion, progress definitely made, but with a bug that literally forces a PC reset, I don't have that take-home feel good factor.  I may return this evening for a few more hours and at least find and fix the 'freeze my PC' feature, as I don't want that to greet me come Thursday!!

Thứ Ba, 23 tháng 9, 2014

Insert Amusing Title Here

A good day of work today with more progress on the lighting system, screenshot second one below.  Also continued having fun thinking up the new name for the product for our Steam launch.  You may have read the latest forum thread on this but the headline titles for this week have been Hyperion, Scorch, Titan, Breeze and Dark, with the addition of Viper during our call today. We're also been playing with dropping 'Game Creator' in favor of 'Maker', 'Kit' and 'Engine'. Give me coding any day, thinking up new names is HARD!  The hunt for the perfect name continues.


The above is what I started with this morning, with the obvious issue being the total shadow under the fallen fence gate. This was due to the light mapper not detecting semi-transparent textures in the process.

My task today was to get my shadows looking prettier, adding ambient occlusion back in, allowing semi-transparent textures to cast semi-transparent shadows, ensuring the whole Escape level can be processed, solving the edge artifacts and making it all blend together.  Apart from wasting four hours finding out why D3DXLoadSurfaceFromSurface was not working, everything else went smoothly. For DX coders out there, I must share the above solution. It seems you cannot use the Surface function to copy a compressed video memory texture to an uncompressed system memory texture. Any combination of the above fails. What you have to do is create a system memory texture and directly load the compressed texture into it using D3DXLoadSurfaceFromFile. Hopefully this little pearl can save you four hours of your life on day!


As you can see, the new lighting system brings out the depth of the building features and adds subtle shadows where required. It only costs a few extra frames and replaces the very crude LOWEST shadows, but gives a much higher resolution shadow, and even here the resolution of the lightmaps have been limited to 512 pixels wide. This can be increased to 2048 or even 4096, that is, once I have solved the management of the memory used by the light mapper. You find though that most games keep the pre-baked lightmapping relatively low resolution and subtle, mainly to conserve aforementioned memory. I have not yet batched the static geometry which might yield a return of these frames, and most likely gain some too.

Also bear in mind the above buildings and objects are not using any normals, specular or other per pixel refinement, just basic diffuse + lightmap. Hopefully when I add in specular and normals, the flattish surfaces will bump a little to create some more fidelity or they are too subtle and can be left out of all but the closest objects, we will see.

Next on my list is to squash the whole lightmapping process so it does not take up quite so much system memory.  It was originally written and tested against small objects, not whole levels and as a result the implementation proceeds to create allocations for the entire process at the start, AND creates more memory on the fly as it goes. Pretty hungry now, and it becomes positively ravenous when you increase the light mapping resolution quality.  My initial idea is to break the job up into 200MB or so of work, process that, then move onto the next 200MB using the previously freed memory. Might add a few seconds of set up to the whole thing, but allows light mapping to happen inside Test Game which is ideally where I want it.  Before that however, I shall spend some of Wednesday tracing through the 1338 static objects from The Escape level and investigate why they are collectively eating 500MB of system memory. It might be perfectly acceptable when you consider the addition of collision geometry for the ray caster, holding areas for the light accumulation buffers and the system memory copies of the transparent textures, but it's always worth checking out memory allocations of that magnitude.  It also means I am one step closer to starting my performance work, which I am very much looking forward to!

Thứ Hai, 22 tháng 9, 2014

For those who dream big: Announcing the winners of the 2014 Google Science Fair

Ciara Judge, Émer Hickey and Sophie Healy-Thow became interested in addressing the global food crisis after learning about the Horn of Africa famine in 2011. When a gardening project went awry, they discovered a naturally occurring bacteria in soil called Diazotroph. The girls determined that the bacteria could be used to speed up the the germination process of certain crops, like barley and oats, by 50 percent, potentially helping fulfill the rising demand for food worldwide. Oh—and they’re 16 years old.

Today, Ciara, Émer and Sophie were named the Grand Prize Winner and the 15-16 age category winners of our fourth annual Google Science Fair. They are some of thousands of students ages 13-18 who dared to ask tough questions like: How can we stop cyberbullying? How can I help my grandfather who has Alzheimer's from wandering out of bed at night? How can we protect the environment? And then they actually went out and answered them.

From thousands of submissions from 90+ countries, our panel of esteemed judges selected 18 finalists representing nine countries—Australia, Canada, France, India, Russia, U.K., Ukraine and the U.S.—who spent today impressing Googlers and local school students at our Mountain View, Calif. headquarters. In addition to our Grand Prize Winners, the winners of the 2014 Google Science Fair are:
  • 13-14 age category: Mihir Garimella (Pennsylvania, USA) for his project FlyBot: Mimicking Fruit Fly Response Patterns for Threat Evasion. Like many boys his age, Mihir is fascinated with robots. But he took it to the next level and actually built a flying robot, much like the ones used in search and rescue missions, that was inspired by the way fruit flies detect and respond to threats. Mihir is also the winner of the very first Computer Science award, sponsored by Google.
  • 17-18 age category: Hayley Todesco (Alberta, Canada) for her project Waste to Water: Biodegrading Naphthenic Acids using Novel Sand Bioreactors. Hayley became deeply interested in the environment after watching Al Gore’s documentary “An Inconvenient Truth.” Her project uses a sustainable and efficient method to break down pollutant substances and toxins found in tailing ponds water in her hometown, a hub of the oil sands industry.
  • The Scientific American Science in Action award: Kenneth Shinozuka (Brooklyn, New York) for his wearable sensors project. Kenneth was inspired by his grandfather and hopes to help others around the world dealing with Alzheimer's. The Scientific American award is given to a project that addresses a health, resource or environmental challenge.
  • Voter’s Choice award: Arsh Dilbagi (India) for his project Talk, which enables people with speech difficulties to communicate by simply exhaling.
Hayley, Mihir, Kenneth, Ciara, Sophie and Émer

As the Grand Prize winners, Ciara, Émer and Sophie receive a 10-day trip to the Galapagos Islands provided by National Geographic, a $50,000 scholarship from Google, a personalized LEGO prize provided by LEGO Education and the chance to participate in astronaut training at the Virgin Galactic Spaceport in the Mojave desert.

Thanks to all of our young finalists and to everyone who participated in this year’s Google Science Fair. We started the Science Fair to inspire scientific exploration among young people and celebrate the next generation of scientist and engineers. And every year we end up amazed by how much you inspire us. So, keep dreaming, creating and asking questions. We look forward to hearing the answers.

Good Day

A pretty good start to the week, having solved the 10 fps issue that struck last week. Turns out it was a batch of animating objects being forced into being static for the lightmapper but still trying to update the vertex buffer each cycle which made the DX pipeline crawl. Added code to convert such objects and extract the animation properties of these newly created static objects and the speed returned.

My main job for today was to create terrain shadows as part of the light mapping process and as at 5PM I have achieved. The shot above was an early shot of the prototype when I introduced the terrain geometry to the process and as you can see those shadow tears are a real eye sour. After much tweaking was able to solve it, but for the sake of expediency I have switched off the ability of the terrain to cast it's own shadows in the light map process. I am happy that they will do this eventually but my mission was to have the buildings cast shadows on the floor, and The Escape level now has floor shadows!

I still have a few things to do, such as re-activate the ambient occlusion mode and add transparent textures to the light mapping so that vegetation textures can let light through and exaggerate creases.  I also want to confirm I have solved the small artifacts that appeared on the first buildings I light mapped.


I also want to experiment with multiple colored static lights, especially for interior scenes as I think this is where the lightmapper will come into it's own, and I look forward to bringing you some screen shots of inside the buildings when my experiments are complete.

Soon I will be straying into performance territory now, so I just want to make sure the visual is where I need it for the time being and then ramp up the work to ensure I can get The Escape running at well over 60 fps on my aging machine with mid-range graphics card.  I also have Intel VTune set up and ready to roll now so I should have the tools I need when the time comes.

Thứ Sáu, 19 tháng 9, 2014

Through the Google lens: search trends Sept 12-18

-Welcome to this week’s search trends. May I take your order?
-Can I have a referendum on independence, a totally inappropriate flight passenger with a Hollywood baby on the side?
-Coming right up!

Flag and country
“They may take away our lives, but they'll never take our freedom!” That was Sir William Wallace battlecry for Scottish independence in the film Braveheart. While this week’s events in Scotland weren’t quite as cinematic, the results could have been revolutionary. On Thursday the world watched and searched as an unprecedented numbers of Scots went to the polls to answer the question, "Should Scotland be independent from the United Kingdom?" Turns out the majority of people don’t think it should, and voted to stay a member of the U.K. Party leaders have now promised significant constitutional changes for the entire kingdom. What would Wallace have made of that?

The comeback kings
Everybody loves a comeback and search had its fair share this week. First up, nostalgia for the 90’s brought Surge soda back from the dead. Thanks to a Facebook campaign called "The SURGE Movement," Coca-Cola will now sell its "fully-loaded citrus” soft drink for a limited time on Amazon. And the Chicago Bears denied the 49ers a win in their brand-spanking-new stadium when they rallied to overturn a 13-point deficit in the last quarter to beat San Francisco 28-20.



Airing dirty laundry
Hard plastic-y seats, broken recliner adjusters, zero leg room—flying economy isn’t always the most pleasant experience. And depending on who you’re sitting next to, your easy two-hour flight could turn into a nightmare before you even take off. But the passengers of the world aren’t having it, not anymore. This week, “passenger shaming” went viral on social media as traumatized travelers shared photos of the most absurdly obnoxious unconscientious things some passenger do on flights—we’re talking bare feet, bare skin... well, you should just see for yourself.

But at least those offending fliers were shielded in anonymity. Singer Robin Thicke wasn’t afforded the same luxury, revealing in a court deposition this week that he had little to do with the creation of last year’s song of the summer “Blurred Lines.” As part of his defense against a copyright infringement lawsuit, Thicke admitted that he was under the influence of drugs and alcohol for most of 2013—bringing a whole new meaning to the song’s title.

And the winner is ...
The hipster revolution has finally taken over the United States! Need proof? Searchers don’t. When New Yorker Kira Kazantsev won the the title of Miss America, the Internet discovered that the U.S.A’s new leading lady is a former food blogger. She’s even reported on her state’s crown foodie jewel, the cronut. Miss America wasn’t the only who got to bask in the limelight; boxing world champion Floyd “Money” Mayweather Jr. won his rematch with contender Marcos Maidana by an unanimous decision. The victory brings his undefeated tally to 47… somehow the title world champion is starting to sound like an understatement.

Love on the set!
For Orange is the New Black screenwriter Lauren Morelli, life imitated art a bit more than she probably expected. While writing the hit program, Morelli decided to divorce her husband and start a relationship with Samira Wiley, an actress from the show. Meanwhile, searchers learned that Mindy Kaling considers former The Office castmate and on-screen boyfriend B.J. Novak “the love that got away.” But while not all on-set relationships last, some couples not only make it work but also take their relationship to the next level. That’s the route taken by Ryan Gosling and Eva Mendes, who met while making the movie The Place Beyond the Pines. The power couple welcomed baby girl Gosling earlier this week.

Tip of the week
The NFL season’s just getting started so it’s time to hunker down and plan your football viewing schedule. Just say, “OK Google, show me the NFL schedule” to coordinate your life for the next four months. We’ll see you back in the spring.

A Low FPS Day

Be warned, programmer and back-end screenshots to follow. If you have a sensitive disposition, stop reading now.


My Friday began with the above shot, showing almost all the art hidden except for terrain and the new light mapped object collections.  I am currently struggling with an issue which mystery drains almost all performance from the engine when these objects gang up. The same number of regular entities with full shaders do not do this, but the new objects are playing silly buggers.


As part of my journey of experiments, and to find out where the bottleneck (or as I like to call it, squashed straw) I removed the camera cycle render loop and was pleased to see the FPS return in at just under 2000 frames per second :) Obviously very fast when you are not rendering any 3D but I have my HUDs, text and the engine running the background so it gave me hope that we could find some good gains when I started the performance work next week. 

My plan is still to finish the lightmapper and 'glass terrain' shadows but I wanted my test level to run at a decent speed, and 10 fps does not cut it. Alas I spent most of the day skipping functions to isolate the code responsible for the massive slow down but to no avail. At 4PM I decided to throw in the towel on the old school method of finding hot spots and instead broke out my new edition of the Intel VTune Amplifier XE 2015. Although this premiere tool is designed to find these kind of issues immediately, I am not too familiar with the latest version so my Friday evening has been spent learning how it works and how I can get it to work for me.

Once I can get The Escape running fast enough to run around and view lightmaps, I can revert to the Visual Camp and finish off the floor terrain shadows, small artifacts in the larger entities and squash the light mapping memory usage down as far as it will go.  Also had a few ideas how I can batch, group and consolidate the lightmap objects to reduce texture files, how to entirely skip using light map textures for very small polygon surfaces and even did some research into a way to create many instances of an object with a single draw call using a clever Vertex Shader 3.0 system of using multiple streams, one for vertex data and one for instance data.  Can't wait to get light mapping done so I can enjoy the theme park of performance optimization!

Thứ Năm, 18 tháng 9, 2014

Meeting Day

A full day of 'meet' today, covering all topics in and out of development, with some good short term goals set for the next three weeks. We also revisited the issue of lighting balance, which I am still at a loss to fully grasp the issue.


As you can see above, this is a variant of the 30 ambient, 50 contrast setting from yesterday which is now adjusted to 40 ambient and 40 contrast to create more of a day-time lighting effect.

We have also tentatively planned to bring in an artist to mock-up a typical scene inside the 3D modeller, complete with desired lighting and a fly through so we can compare his 'correct' lighting system with my 'obviously incorrect' lighting system.  As I say, I am still coming to terms with exactly what is incorrect in the above shot aside from the obvious lack of ambient occlusion shading, more scenery, more action and perhaps a few atmospheric effects.  I have handed off the production of this fly-through so I do not get distracted with my immediate mission to finish the pre-bake process, save some precious memory usages and move swiftly onto performance.  Hopefully it will yield results from an additional perspective on the visual finish of the engine, and certainly create some new assets in the process.

Development work resumes Friday, which should hopefully see the light mapper producing a fast light mapped object set for The Escape demo, which is my current test level.  Once that is in and working, I will be switching over to what I am calling my 'glass terrain' trick which will lightmap a film of geometry stretched over the terrain world to catch the floor shadows of every object in the scene, and then render that super-fast. I can then remove the static rendering of the shadows and thus improve performance as I hand over this responsibility to pre-baked shadows.  Should not be too many distractions on my radar so should get some good coding done.

As an amusing aside, I just discovered a band called "The Ukulele Orchestra of Great Britain" which played a great rendition of The Good, The Bad & The Ugly and also Leaning On A Lamp Post.  Made me smile a lot :)

Also, in case you missed the news or lost touch, Alpha 6 of AGK V2 is now available to all AGK V2 pledgers, details here:

https://www.kickstarter.com/projects/tgc/app-game-kit-v2/posts

If you have not checked out AGK in a while, you have to check out this latest alpha, it's coming on in leaps and bounds!  If you don't know what AGK is, it's the easy to use programming tool behind the number one Driving Test mobile app in the UK. Check out the platforms supported: http://theorytestapp.co.uk/

I am personally looking forward to the new 3D and Shader command additions, and especially keen to see the performance achievable from the new generation of really fast Android devices!

Thứ Tư, 17 tháng 9, 2014

A Much Better Day

It's always nice when you fix a bug, but when you fix a big, ugly, hidden, stealthy bug, now that's a day to be happy in.  For those readers from yesterday, you will have guessed by now that I have indeed found the source of the heap corruption, and for the tech heads out there I am going to explain some more.

It all came about when a rather LARGE vertex declaration was requested from DirectX, and that request failed (i.e. position, normal, two sets of UVs, tangents, bi-normals and bone data). Turns out my static shader for the lightmapper had a left-over matrix palette constant set-up which forced the shader effect handler to add bone data to my meshes, which in turn created a non viable custom FVF, and when it exited the mesh change state early it did not recreate the mesh buffer to match the already re-sized vertex data and the memory copy did all the rest. Boom!  I am now able to lightmap and load the models, and apply the shaders without the heap corruption and no more crashing. I still have them problem of understanding why some of the entities succeed the mesh change and some fail, which will no doubt lead to some conversion code, and I also need to expand my prototype to light map 'all' The Escape level rather than a subset but I am on the home stretch when it comes to getting this level lit properly so I can move onto finesse, video memory usage and finally performance.

Believe it or not but this was not the hog of the day!  For the first time in recorded TGC history, we had a 2 hour conference call covering the subject of lighting in the engine.  After much debate and many points of view (far more than the people in the call I might add), we arrived at settings which will be the new defaults for the next build.  In short, ambiance to 30, brightness to 0, contrast to 50 and we are also replacing Veg Specular with a Global Specular slider which will allow all specular effect to be regulated across entity, terrain, characters and any other official shader effects.  Also, to ensure end users who want to override a specific specular effect, I will be adding a new FPE field called specular which will allow the engine to select between the provided specular file, or to choose a pre-set none, low, medium and high specular on a per entity basis. It would also make a nice trick if you wanted to reduce the memory footprint of entities that have a consistent specular value (as the textures used will only be 1x1 in size and re-used).


As you can see above, this was our final agreed lighting between direct sunlight on the nearest building to low lighting on the building behind which is not directly facing the sun. Simon also discovered that all our lighting is based on a near sun-set style sun position, as demonstrated with his before and after shots.



To this end, we are adjusting the sky spec files to lift the sun higher in the sky to create a nicer overall blend of lighting between terrain and scenery objects. Seems in a single day I have the potential to add lightmapping and an improved overall colour balance to the engine.

In other news, we also had a chance to play the new multiplayer prototype, and Ravey has pulled it off once again with actual characters animating, running, shooting and generally behaving like the skeleton of a real death-match game. It was great to see, and the icing on the cake was that thanks to the Steam API, connection was a breeze. No router configuring, no firewall advice required, just go to Steam, click play, join lobby, game starts, run for your life, magic!  Next on his list is things like jumping, fragging, re-spawning and host migration. Nothing pretty so how yet, just raw functionality, but progress is going well on this front and we think you will approve.

Alas it is only 2:28 PM in the afternoon and I have a few good hours ahead of me, and thanks to the protracted call this morning the 4 PM call has been cancelled so it's plane sailing to tea time.  Just leaving my massive level to pre-bake while I add the global specular constant to all the shaders in anticipation of connecting the slider bar.  Happy days...

Thứ Ba, 16 tháng 9, 2014

Slow Day For Lee

After the torrent of small victories made yesterday, Tuesday has been stuck in the proverbial mud.  It took me four hours to get to this point:


As you can see, I have narrowed it down to a single function call, but it is called across hundreds of different objects and only one of them may be corrupting the heap. The heap in question in the stack of memory which holds all the data for the engine, and while applying a shader to one of the light mapped imported objects, the vertex data copy operation is overwriting neighboring blocks of memory and causing a heap crash. 

Finding it was a complete mare, but fixing it might be just as torturous. The good news is that I am tracking it down now and with a little luck I can solve it once and for all.

Fortunately this was not my only small win today, as I have also solved the issue of the light map image files saves from crashing by moving the DirectX copy texture and save code from the threaded process to the main one. A rival solution was to activate the DirectX multi-thread mutex feature but that would have incurred a very small performance hit which I am no longer willing to compromise.

It's about nine thirty PM now and still no joy in figuring out which object is messing up my heap so will do my usual back-ups and resume Wednesday with better eyes.  As un-glamorous as this type of code fixing is, it may solve several issues in one go as the unpredictable outcomes of silent heap corruption can be far and wide.  Thirty objects down, several hundred to go...

Thứ Hai, 15 tháng 9, 2014

My Bus-mans Holiday To IDF 2014

Regular blog readers will know full well that I have been absent last week from my normal posting duties to chill out and attend the annual Intel developer forum in San Francisco.



Three floors of technology and innovation, dispersed with sessions covering everything from chips to robots. My own duties were incredibly light this year as I attended as a mere mortal with only two speaking engagements on the subject of RealSense (formerly known as Perceptual Computing). Also managed to snatch some time attending sessions on integrated graphics performance acceleration for my return to the universe of Reloaded. 



While saying hello to a few friends in the 'Internet Of Things' lab, I happened across a project challenge to build a machine using the Galileo board. My creation was a pretty neat contraption which detected air motion, sampled the particles for ethanol and if high levels where detected, to sound an alarm and increment a sequence of LED lights by way of a detection alert. Although well received and prone to winning a prize for my efforts, it transpired that my close involvement as an Intel Innovator meant I was not eligible for the prize. That's politics for you!



My interest in Galileo lead me naturally to take an interest in it's older brother, Edison, which is a more powerful circuit board powered by an Atom processor. Powerful enough in fact to run the brain of a 22 jointed robot called Jimmy, capable of walking and talking, and built from a simple metal frame and 3D printed body parts. I have always had a passion for robotics, and were it not for the fact I am a better software developer than an electrician, I would be designing them even now.



Another take-away, and one mentioned in the keynote, was the wireless power system, which allows a laptop or other chargeable device to take power from a remote device located under your desk or table. Eliminating the last cable in the office was a great thing to see, and we should see peripherals by the end of the year using this tech, and by the end of next year have this integrated into our Ultrabooks! It's currently rated to 20 watts, so not quite powerful enough to run your desktop or huge monitor, but it will power mostly everything else and it's a great start to a glowing wires free future!


Of course the main reason for my attendance was to recharge the old batteries from several months solid work on FPS Creator Reloaded.  They say a change is as good as a rest, and with liberal quantities of Guinness and stuff that looked like it, my brain was happily sedated while my mouth rabbited on for queen and country.

We can find out about technology and gadgets from the internet, but there is no substitute for getting together and talking about it face to face, and IDF is one of my favorite times to escape the office and do this.

In my capacity as the only Welsh Intel Black Belt, one of my busmans holiday highlights was a trip to the Planetarium, set out like a cinema under a huge domed screen projecting a journey through the universe. Complete with welcome drinks, a gorgeous meal, equally gorgeous people, white crocodiles, uncut diamonds and a great talk by Genevieve Bell on the evolution of robots (and some great movie quotes). It remains a privilege to be invited back as a Black Belt developer, and a pleasure to continue to contribute my thoughts and deeds back into the developer community in the years ahead.

Alas I did not get to enjoy the last evening at my favorite Steak House and Irish Pub as the aircraft to take me home dragged me away in the middle of the last day of IDF.



As it turned out, despite the home-time traffic of San Francisco and threatened TSA security lines, I was sitting at the departure gate restaurant within two hours of leaving the hotel and recovering from a rather naughty pizza. The British Airways plane you see performing it's reverse taxi trick was the sister flight to mine, scheduled three hours later.  Rest assured I had plenty time to get through a few more chapters of Terry Pratchett's Raising Steam.

As I type, my inbox is mighty, my whole office is a dumping ground for miscellaneous tasks, both foreign and domestic, and my brain is still getting to grips with where it left off in the FPSC Reloaded universe.  Normal blogging will resume on Tuesday, just as soon as I figure out why all my characters have suddenly disappeared and what remained to be coded for the new Ambient Occlusion lightmapper.  Very pleased to see the progress made on the Multiplayer and Construction Kit, and hopefully it won't be long before we can show you some shots or even videos of these new components to the game engine.  I am not planning any more holidays or trips until Christmas now, so expect plenty uninterrupted development for the next few months :)

For the next five billion: Android One

Knowledge is a game changer. I’ve long been inspired by the Internet and how it opens the doors to opportunity. It provides access to knowledge, no matter who you are or where you are. For instance, it doesn’t matter if you’re a Nobel Laureate at a world-class research center or a young student at a rural school in Indonesia, with Google Search, you have the same information at your fingertips as anyone else.

If we look at how people are getting online and accessing information today, increasingly it’s through a smartphone. While 1.75 billion people around the world already have a smartphone, the vast majority of the world’s population—over five billion more—do not. That means most people are only able to make simple voice calls, rather than connect with family through a live video chat, use mapping apps to find the closest hospital, or simply search the web. We want to bring these experiences to more people.

That’s where Android One comes in. At I/O, we first talked about this initiative to make high-quality smartphones accessible to as many people as possible. And today we’re introducing the first family of Android One phones in India.
Addressing key barriers—hardware, software and connectivity
There are three big reasons why it’s hard for people in countries such as India, Indonesia or the Philippines to get their hands on a high-quality smartphone. First, is the hardware itself. Even entry-level smartphones still remain out of reach for many (bear in mind that in some of these countries the average monthly income is around $250). Second, many people in these markets do not have access to the latest Android software and popular applications. Finally, even where 3G and 4G networks are available, not enough people have phones that can support data and the plans can be expensive.

Android One aims to help tackle these challenges. By working closely with phone and silicon chip makers to share reference designs and select components, we’re making it easier for our partners to build phones that are not just great to use, but also affordable. They have lots of processing power, so you can get information quickly. They have high-quality front- and rear-facing cameras. And for all those pictures, along with your apps and videos, Android One phones will have expandable storage. We also added features that people in India will find particularly useful, like dual SIM cards, a replaceable battery and built-in FM radio.
To help ensure a consistent experience, Android One devices will receive the latest versions of Android directly from Google. So you’ll get all the latest features, up-to-date security patches, and peace of mind knowing your stuff is always backed up. It also means Android One devices will be some of the first to be updated to the Android L release later this year. For our hardware partners, they’ll be able to create customized experiences and differentiate their devices without having to change the core software.

In an effort to reduce data costs, if you have an Airtel SIM card, you’ll get these software updates for free for the first six months. As part of this same Airtel offer, you’ll also be able to download up to 200MB per month worth of your favorite apps (that’s about 50 apps overall) from Google Play—all without counting toward your mobile data usage.

More to come
This is just the beginning of the Android One journey. The first phones, from our hardware partners Micromax, Karbonn, Spice and chipmaker MediaTek, are available starting today in India from leading retailers starting at Rs 6,399. We’re also excited to welcome more partners to the program, including phone manufacturers Acer, Alcatel Onetouch, ASUS, HTC, Intex, Lava, Lenovo, Panasonic, Xolo, and chipmaker Qualcomm. We expect to see even more high-quality, affordable devices with different screen sizes, colors, hardware configurations and customized software experiences. Finally, we plan to expand the Android One program to Indonesia, the Philippines and South Asia (Bangladesh, Nepal, Pakistan, and Sri Lanka) by the end of the year, with more countries to follow in 2015.

Access for access’s sake is not enough. With Android One, we not only want to help people get online, we want to make sure that when they get there, they can tap into the wealth of information and knowledge the web holds for everyone.

Thứ Sáu, 12 tháng 9, 2014

Through the Google lens: search trends Sept 5-11

New phones, new games, new looks. Let’s take a peek at all the happenings this week in search:

All you can eat? 
The Olive Garden learned this week that it’s risky to get between people and their food. The restaurant chain’s new “Never Ending Pasta Pass” offered up to 1,000 people seven weeks of unlimited pasta, salad and those sneaky-good breadsticks for just $100. The rush of pasta lovers eager for a deal crashed the Olive Garden website before the pass was even for sale—and thousands more turned to search to learn more about the debacle.

The latest edition
It was a big week for our neighbors from Cupertino. Apple’s latest announcement this week flooded the search trends, with more than 10 million searches for the new iPhone 6, along with its release date and price. People were also curious about the new Apple Watch, the band U2—whose latest album Apple gave away for free to all iTunes users—and how the announcement was affecting AAPL stock.

And baby makes four for the Duke and Duchess of Cambridge, Prince William and Kate Middleton, who announced this week that they’re expecting a little brother or sister for one-year-old Prince George. People turned to the web to learn more about the news. Start your office naming pools now! 

Football frenzy 
A full 15 out of 20 top searches on Sunday were related to the first Sunday of football season, with the Cowboys, Steelers and Broncos topping the pack—on search, at least. But unfortunately, it was events off the field that had many people turning to the web this week. Baltimore Ravens running back Ray Rice was suspended indefinitely from the league on Monday, after TMZ released a video that appears to show him assaulting his then-fiancee in an elevator. More than 2 million searches for Rice followed—the highest spike ever. People were also looking for more information on NFL commissioner Roger Goodell in an effort to understand whether the league’s leadership had knowledge of the incident earlier in the year.


POTUS and ISIS
Just a day earlier, President Obama announced that the U.S. military would expand its air strikes in Iraq and now Syria, against the extremist group ISIS. Searches for ISIL, the term the President used for the group, climbed the day of his speech as people looked for more information on the news. 

Transformations 
The latest season of “The Biggest Loser” premiered yesterday with new trainers and a new concept—“Glory Days,” in which former athletes compete to regain their former fitness—leading people to the web to learn more. And “The Sixth Sense” star Haley Joel Osment was in the news this week—but we won’t blame you if you missed it, since he was nearly unrecognizable from his former self. Osment is filming a new Kevin Smith movie “Yoga Hosers,” in which he plays Canadian fascist journalist Adrien Arcand.

Tip of the week 
September is National Emergency Preparedness Month. With the Google Search App, you can get warnings from Google Public Alerts when bad weather is on its way. Take a few minutes to get prepared by learning more about Alerts, which are available on Google Now, Search and Maps.

Thứ Năm, 11 tháng 9, 2014

Google Drive and the Docs editors: designed with everyone in mind

Imagine trying to keep track of another person’s real-time edits in a document—using only your ears. Or trying to create a table from spreadsheet data—without being able to clearly see the cells. Whether you’re backing up a file in Drive or crunching some numbers in Sheets, it should be easy to bring your ideas to life using Google’s tools. But if you’re blind or have low vision, you may need to rely on assistive technologies such as screen readers and Braille displays—and that can make working in the cloud challenging. While screen readers can parse static webpages (like this blog) relatively easily, it’s much harder for them to know what to say in interactive applications like Google Docs because the actions they need to describe are much more complex.

With these reasons in mind, today we’re announcing some improvements to Drive and all our editors—Docs, Sheets, Slides, Drawings, and Forms—specifically designed with blind and low-vision users in mind.
Improved screen reader support in Drive and Docs 
In June, we introduced a new version of Drive that’s sleeker, easier to navigate and much faster. But just as importantly, the new Drive also includes better keyboard accessibility, support for zoom and high-contrast mode and improved usability with screen readers.

Across Docs, Sheets, Slides, Drawings and Forms, you’ll find that it’s now much easier to use a screen reader, with nicer text-to-voice verbalization and improvements to keyboard navigation. You’ll also notice other updates, including:
  • Support for alt text on images in Docs, so you can tell a screen reader what they should say to describe an image 
  • Better support for using a keyboard to edit charts and pivot tables in Sheets 
  • Additional screen reader improvements specifically for Docs, Sheets and Slides, including support for spelling suggestions, comments and revision history 
  • The ability to quickly search the menus and perform actions in Docs, Slides and Drawings (and soon Sheets and Forms)—even if you don’t know the action’s key sequence 
Collaborating with others is easier too: in Docs, Sheets, Slides or Drawings, screen readers announce when people enter or leave the document, and you’ll now also hear when others are editing alongside you.

Refreshable Braille display support 
If you use a Braille display, you can now use it to read and enter text in Docs, Slides and Drawings. Even if you don't use a Braille display, with Braille support, your screen reader’s settings for character echoing are automatically followed. Enabling Braille also dramatically reduces the lag between when you press a key and when it’s announced by your screen reader, and improves the announcements of punctuation and whitespace. Learn how to enable Braille support in our Help Center.

Get up and going faster
The first time you use a screen reader or a Braille display, getting up to speed can be a daunting task. But it’s simpler with new step-by-step guides for Drive, Docs, Sheets, Slides, Forms and Drawings.
You can also access the in-product “Help” menu at any time without interrupting your work, or use the updated shortcut help dialog to easily search through keyboard shortcuts if you don’t remember them.

Finally, we’re offering phone support for Google Drive accessibility questions. If you get stuck, visit support.google.com/drive to request a phone call and someone from our team will reach out to you.

What’s next
Referring to recent updates to Google Drive, Dr. Marc Maurer, President of the National Federation of the Blind, said at this year’s National Convention: “The progress...during the last few months has just been positively extraordinary.” We’re pleased the community has welcomed these improvements, and will continue to work with organizations like the NFB to make even more progress.

Everyone, regardless of ability, should be able to experience all that the web has to offer. To find out more about our commitment to a fully accessible web, visit the new Google Accessibility site at www.google.com/accessibility.

Thứ Tư, 10 tháng 9, 2014

Call me maybe? Introducing free voice calls from Hangouts

We know how important it is to keep in touch with friends and family, especially when they’re spread around the world. Hangouts already makes it easy to send a quick message, or start a group video chat. But sometimes it’s best to just call to say “I love you,” and with the new version of Hangouts you can.

Starting today you can make voice calls from Hangouts on Android, iOS and the web. It’s free to call other Hangouts users, it’s free to call numbers in the U.S. and Canada, and the international rates are really low. So keeping in touch is easier and more affordable than ever.

To get started on Android, just grab the new version of Hangouts (v2.3, rolling out over the next few days), then install the accompanying dialer to turn on voice calls. On iOS and the web, voice calls will be available the next time you open the app.

Voice calls in Hangouts: call history (left); dialer (middle); in a call (right)

Whether it’s your sister in Paris, your best friend in Boston or Jenny at 867-5309, Hangouts lets you call the people you care about at little or no cost. So download the app and dial your loved ones today!

A solar project on top of an old oil field in California’s Kern County

We recently finalized an investment that will put a 82MW solar power plant on top of an old oil and gas field in Kern County, Calif. The new deal with SunEdison will generate enough energy to power 10,000 homes.

Our investment in the Regulus solar project will give new life to a long-valued piece of land, and there's something a little poetic about creating a renewable resource on land that once creaked with oil wells. Over the years, this particular site in California has gone from 30 oil wells to five as it was exhausted of profitable fossil fuel reserves. The land sat for some time and today we’re ready to spiff things up. With the help of our $145 million equity commitment, SunEdison is draping it in high-tech, sleek panels that collect energy from the sun, while bringing 650 jobs to the Kern County area and 82MW of clean energy to the grid.
Like many states, California has a goal of increasing the amount of energy procured from renewable sources. This project helps support that quest and marks 17 renewable energy investments for Google since 2010, including five here in the Golden State.

We’re continually looking for newer, bigger and better projects that help us create a clean energy future. The more than $1.5 billion we’ve brought to these projects to date not only helps provide renewable energy to the grid and to the public, but as they perform, they allow us to invest in more renewable energy projects. This cycle makes financial sense for Google and our partners while supporting construction jobs in local communities and clean energy for the planet we share.

Walk like an Egyptian with Street View in Google Maps

Candlelight flickering on a stone wall covered in hieroglyphs. A proud queen brought low by the bite of a snake. Reeds rustling along a river, waiting to be turned into papyrus, or maybe a basket. The civilization of ancient Egypt stood for thousands of years and left behind a rich legacy of architecture, art, medicine, politics, culture and more. Today, it looms large in our imagination as the home of Cleopatra, Ptolemy, Tutankhamun, people who worshipped cats as gods and buried their embalmed dead in tombs filled with treasures and sustenance for the afterlife.

Now the Egypt of your imagination can be brought to life with new Street View imagery in Google Maps, and you can take a virtual walk among the stunning monuments and rich history of this ancient civilization.

Start where most tourists do: at the Pyramids of Giza, which rise from the vast expanse of the Sahara like man-made mountains. Just kilometers from the bustling, modern city of Cairo, the Pyramids have stood for nearly 5,000 years, a testament to the ingenuity and ambition of the ancient Egyptian people.

The Giza Necropolis is one of the most famous archaeological sites in the world, and is home to the last standing wonder of the ancient world: the Great Pyramid. Built as a tomb and a symbol of eternity for the Pharoah Khufu, it stands 139 meters high (the height of the world’s highest roller coaster!) and was the tallest man-made structure on Earth for 3,800 years. Look beyond it to the west, and you’ll see the pyramids of Khafre and Menkaure, built by Khufu's son and grandson.

Now turn east to the Great Sphinx, the oldest and largest known monumental sculpture in the world. With the body of a lion and the head of a human, it measures a grand 73 meters long and 20 meters high. Literally translating to “Father of Dread,” this mythical creature is believed to resemble Pharaoh Khafre, who was the ruler at the time of construction.

In addition to the Giza Necropolis, you can explore The Pyramid of Djoser, the ancient site of the world’s very first Pyramid designed by the great Egyptian Architect Imhotep in the ancient burial ground of Saqqara.

Other sites you can check out on your virtual tour include: Abu Mena, one of the oldest sites of Christianity in Egypt—the church, baptistry, basilicas and monasteries; the Hanging Church, one of the oldest Coptic Churches in the world; the Cairo Citadel, a medieval Islamic fortification and historic site; and the Citadel of Qaitbay, a 15th-century defensive fortress on the Mediterranean coast.

If wandering through the imagery of these historical sites has piqued your interest in Egyptology, head over to the Google Cultural Institute, where you can explore the treasures of ancient Egypt through a series of drawings, historic photographs and artifacts from the famed sites.

The Pyramids of Giza have survived nearly five millennia and are the planet’s oldest man-made wonder. Now their legacy—and the legacy of many other sites of ancient Egyptian culture—are preserved in a new way with panoramic and immersive Street View imagery. We hope you’ll take a moment to step back in time and explore what was once known as the Gift of the Nile.