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.


's picture

This seems related to

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

'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

'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.


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.


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?

logic and electric
Orion Granatir (Intel)'s picture

Hey CurrentLoops,

No, I have not tried running Smoke virtually. That an interesting idea... however, I believe the biggest problem will be the speed of virtualized DirectX. I'd love to hear about the results if you give it a try... enter you results in the Thread Like Wildfire contest here:
and you'll probably win a $100 gift card :D

currentloops's picture

Ok, I anticipate receiving our Blade Server and vSphere ESX in the coming month, so will try out my "Eye Of The Predator" Visual Adrenaline entry with the instrumented Intel metrics to record the comparison in fps. The objective is to separate out each networked player as a virtual participant for regression testing and use HP Loadrunner and HP Diagnostics to monitor system performance. I will report the results on the forum then. Cheers

logic and electric
Koichi Senada's picture

Has anyone managed to port Smoke to any other IDE than Visual Studio 2005?
I am trying to compile the Smoke solution with Visual Studio 2008.
Seems like these comments are more popular than Smoke related forum where I have posted my question at
Orion Granatir (Intel)'s picture

Hey koichisenada,

I'll post a longer reply on your forum post :)
Short answer: We did manage to get it running on VS2008, but there were some limiting factors to shipping that version.


's picture

hi intel smoke team,

thanks for this great technology. i've wanted/tried to make something similar - threading different subsystems for "realtime" applications - for a while and smoke definitly comes in handy. i'll need some time to look through the code and documentation though. one question i have right now - you mentioned in one of your presentations that changing the physics subsystem was very easy. do you have any information on that? i try to build a crossplatform solution (macosx and windows, maybe linux later) and i would love to use havok but it seems that it does not work with macosx. so i'll try bullet for now. do you have any information/tutorial/documentation on how to generally implement a new subsystem or how to change the physics system. which one did you use for swapping? did you use (O)PAL?

i hope you guys get more time from intel to maintain the code, develop and document it further, because this is an awesome and very valuable project! thank you very much and keep up the good work!