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.


currentloops's picture

Hello Orion,

I am investigating the use of VmWare to increase the quanitity of dedicated processes to simulation functions in my aerospace project. Have you tried running Smoke virtually?

Orion Granatir (Intel)'s picture

Hey Weicheng,

We did all the links between objects manually :-p
It was a pain and was obviously a hotspot for errors. One thing we always wanted but never had time to implement was a level editor, something that would output the XML file with all the links. It's still on our wish list... we just need to find time or someone to help.


anonymous's picture

I am curious that how you organize all the links between subject, observer, subjectsystem, observersystem? is there a tool or you just manually added them into scene files? I think this is the key issue for the framework going to production end.


anonymous's picture

come on guys.put a moster in it.just houses bruning.give it some real action.put a evil vilen in it that brun stuff

anonymous's picture

This seems related to

way to go keep it up for indies!!!!

Orion Granatir (Intel)'s picture

Hey Jon,

Check out Scene.cpp in SystemInput. This is the main file that sets up DirectX input to read the controller and keyboard. It should be easy enough to extend the functionality to make a key activate the water hose. Let me know how it goes!


anonymous's picture

Thanks for the great demo, the performance in 1920x1080 on my system (Core i7, ATI4870) is fantastic. Interactivity works well with Xbox 360 controller...where is the functionality for this implemented? I dont see anything in Input.sdf - I'd like to try and map the water hose function to a button on the controller.

anonymous's picture

Где русские? Хехе.

Orion Granatir (Intel)'s picture

Hey rg,

I can’t say a lot about Fix 5.0 or FAST 1.2; however, I believe those are both network protocols. Smoke is about sharing data among multiple threads running on the same processor. The Change Control Manager idea could be extended to work over a network, but this would introduce increased latency. The concurrency is fast and reliable (we did analysis for deadlocks, race conditions, etc). However, Smoke was designed for games, not mission critical applications. You can still apply the concepts to your field of expertise, but please do your own validation. The AI system is easy enough to rewrite for more traditional AI (e.g. for data stock analysis). This framework was designed for parallelism on full function and powerful cores (e.g. an x86 core) and parallelism scales well with the number of cores. Parallelism for something like CUDA would require major rewrites of code (especially in regards to data management and propagation). I hope this information helps. Please keep me informed about your work with Smoke :D


Orion Granatir (Intel)'s picture

Hey DDd, Thanks for the feedback. For those that don't know, you can see the GDC all day threading tutorial here: This includes some useful information about Smoke! Creating an entry for the Level Up 2009 contest would be fantastic. Please let me know how it goes :D


Add a Comment

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