Smoke - Game Technology Demo - Retired

This demo has been retired as it was developed for earlier generation hardware.


The demo is still available for download if desired.


What If Home | Product Overview | Intel® TM ABI specification | Technical Requirements
FAQ | Primary Technology Contacts | Discussion Forum | Blog


Product Overview

Smoke is a tech demo that showcases a framework to support n-way threading of game technologies. By properly threading a game it can have more accurate physics, smarter AI, more particles, and/or a faster frame-rate. Smoke demonstrates one way to achieve better games.

All of the source code for Smoke is available for download.

The demo includes:

  • N-way threaded framework using Intel® Threading Building Blocks
  • Physics simulation using Havok Physics™
    • Download a free copy of Havok PC (5.5 or greater) from
  • Graphics and scene management using Ogre3D
    • Complex meshes/shaders
    • Skeletal animation
    • Particle systems
  • Procedurally generated fire that spreads dynamically and realistically
  • 3D audio using FMOD
  • Artificial Intelligence controlled animals
  • Input and interactivity using DirectInput
  • Performance profiling
What's new with Release 1.2
  • Smoke now has a simpler build and builds with Visual Studio 2008 SP1
  • Fixed occasional crash when subdividing objects, after physics collision
  • Fixed a number of memory leaks and uses of uninitialized memory
  • Ambient lighting now lights the shaded side of objects
  • Smoke runs faster, mostly due to speedups in fire object code


Product Info

Video:Smoke Overview Video & Tech Overview Video

Article: An Overview of Procedural Fire,  Designing a Parallel Game Engine, &

Optimizing Game Engines with the New Intel® Graphic Performance Analyzers 3.0 Platform View

Installation: You can download the installer for the demo.

You can download all the source code here. There are build instructions included in the source code zip file under smoke\docs

System Requirements

  • CPU: Intel® Core™ 2 Quad Processor or better (Intel® Core™> i7 recommend)
  • GFX: NVIDIA 8800 GTS or better (Smoke was developed using 8800 GTS cards)
  • OS: 32-bit Windows XP or Vista
  • MEM: 2 GB of RAM of better
  • Optional: Stereo speakers, Xbox 360 controller for Windows
  • Software: Latest version of DirectX and .NET


You can also watch the other video done to Take an in-depth look at Intel’s Smoke Demo

Frequently Asked Questions

Q: Where can I get the source?

A: All the source is available.

Q: How do I build the source code?

A: There are build instructions included in the source code zip file under Smoke\docs.

Q: How do I see the advantages of threading?

A: While the demo is running you can toggle the number of active threads.

  • Press Ctrl+1 for 1 thread
  • Press Ctrl+2 for 2 threads
  • Press Ctrl+4 for 4 threads
  • Press Ctrl+x for maximum threads (depends on the CPU)


Q: What is the license?

A: You can read the license here. The goal is to allow developers to use the Smoke code written by Intel for any purpose (including derivative works) with no limitations or obligations.


Primary Technical Contacts

Orion Granatir is a senior engineer in the Visual Computing Software Division. He is the Tech Lead on the Smoke project. Prior to joining Intel in 2007, Orion worked on several PlayStation 3 titles as a senior programmer with Insomniac Games. His most recent published titles are Resistance: Fall of Man and Ratchet and Clank Future: Tools of Destruction.


For more complete information about compiler optimizations, see our Optimization Notice.


Paul Lindberg (Intel)'s picture

Koichi, very cool videos! Which ones are actually running Smoke code?

Good idea to have something written on ways to extend Smoke, but you have everything we've written so far on the subject. :-( Let me think about the best ways to answer this and get back to you.

I haven't seriously thought about decoupling the input processing from the rest of the main loop in Smoke. What's your biggest concern - quick response time to input, minimal dropped input, easy access to your multi touch messages, or ...? Or all? :-)

Koichi Senada's picture

By the way, if anyone is intrested to see what we have managed to produce so far using Smoke and why is multitouch so important to our team, please check out our posted videos:
Most of the videos posted there are related to the Smoke based engine.
More to come soon!

Those who can speak russian can visit our blogs to read about our development activities:
You all can also use to read our blogs translated from russian, of course.

Thanks for the Smoke!

Koichi Senada's picture

Paul, thank you for the commitment!
I am downloading the Smoke Rev 1.2 Source.
That's a very nice gift for the Christmas!
Also, thank you for asking about the possible ways of further discussions.

I think I will share the common opinion, that everybody wants to do about Smoke is to extend and adapt it.
Thus, could you guys please let us know your vision on possible ways of extending and adapting it?

For example, how to replace and extend current systems for graphics and input, and probably others.
In our case, we are curious to know where to put the window message peeking and dispatching loop, where to create the window and DirectX entities so, that input system is also able to read keyboad, mouse, joystick, and especially multitouch data from the loop, yet to keep it robust.

That's a serious case, indeed, programmers often note that it's hard to separate input and graphics under Windows environment, while it's relatively easy to separate audio, physics, artifical intelligence, logics, scripts, etc from them.

The trouble is that windows, graphics, input all are tied to the window messaging loop and thread which creates the window.

Some more nuts'n'bolts about this spot is very appreciated.

Paul Lindberg (Intel)'s picture

I hope you found the info from this year's GDC tutorial useful, Koichi. We're looking at possibly doing it again in 2010. What would be the best kinds of material we could share in that tutorial? How could we best share it, with those in the room, and with everybody else in the game development community?

Paul Lindberg (Intel)'s picture

Smoke R1.2 is now out. More details at the top of this page and on the download page, but it now builds with Visual Studio 2008, runs faster, and has some bugs fixed.

Excellent comments about ways the forum could be organized, indexed, and searched, thanks Koichi and Abhay! We're looking at it now.

anonymous's picture

sorry sorry sorry

At 69 and a new comer to windows, with a inborn trait of questioning everything, it is driving me nuts.
I have just downloaded Audacity and as good as it is I am told, it too no doubt will drive me nuts too.

So, sorry to say and with no disrespect, only when I have become more PC mature will I be able to even contemplate smoke-game-technology-demo. but, thanks for the opportunity anyway and good luck to all who have entered..

Cheers and goodwill to all

Dave Willis

kunanaya's picture

Good Good Good Excellent Excellent Excellent WHAT ? This link tools and video , Intel software site is key ! to be master in IT.

Abhay Hegde's picture

I agree with Koichi . The forum needs to be organized in such a way that browsing can be easier.

Koichi Senada's picture

On the other hand, there are tags introduced for other modules, but the "Articles".
Those modules are:
- Knowledgebase
- Forums
- Videos
- Blogs
- Contests

"Smoke" tag for them is located here:

Is there a chance to have tags associated with articles, as well?

By the way, now I know, GDC related article provides a link to dowloading the "Intel Game Threading Tutorial" files:

Koichi Senada's picture

How came there's no hint on "Game Developer Conference 2009 Threading Tutorial" existence around here?

Any details more on that tutorial?

It takes time to navigate through all the branches of this website to find anything related to Smoke.
Organize with tags, labels, categories, please? knows how to do that.


Add a Comment

Have a technical question? Visit our forums. Have site or software product issues? Contact support.