When I saw that the smoke is shaded (depending of the angle you look at it) I was impressed but had no idea how it works:

Sorry for the stuttering, i had to capture it with CamStudio and rotate the Camera by hand. At first I thought maybe they move a gradient along the particle textures depending on the angle to the sun but later I learned that’s they modified the normals of the particle (see the updates below).

Update 1
Eric Chadwick mentioned that a similar effect was already used in Shadow of the Colossus. His post links to a PDF where you can find the smoke shading on page 16.

If you’re interested in more thoughts about the issue, feel free to read the comments on the polycount thread.

Update 2
It’s a honour for me to present you this link which was posted into the comments by a really nice guy (i guess a Relic-Dev, but he wrote it anynom) which talks about the Relic-Fx-System and the also show the smoke particle shading.

Source: Relic

Update 3
Thanks to Denis we can read this incredible PDF about Brütal Legend with tons of effect explanations – for example the awesome smoke particle trick:

12 thoughts on “Company of Heroes – Shaded Smoke

  1. Arnage

    I don’t know how Relic did it in CoH, but one way to do this is to only calculate the lighting for the four corners of a particle quad with normals bend away from the particle center and interpolating instead of lighting them per pixel. This is quite a bit cheaper and although it will smooth out the details in the lighting that is often beneficial in the case of smoke.

    Two games that use that technique to light their particles are Bioshock and Shadow of the Colossus. If it was even possible on PS2, Relic might have done something similar.

    1. Simon

      What confuses me is, that not all particles are lit the same way. They all point at you and have more or less the same orientation. But sometimes the “shadow” clearly is stronger on the one side.

    2. Arnage

      Here’s an idea how it might be possible to achieve that effect:


      On the left is regular flat particle with normals pointing forward. In the center the normals are bend out from the particle center to achieve the effect I described before. Finally on the right I instead bent the normals away from the particle-systems center. This way you get a more clear light and shadowy side to the whole system. Maybe they did that?

  2. eRiC Werner

    the gif is not one sprite only is it? At least 2 I’d think. CryEngine has a similar feature. There you can say hov much a particle sprite bulges towards the cam. works without bumpmap too.

  3. Anonymous

    FWIW, we broke the lit quads into 4 triangles (pyramid) and bent the outside normals away. The lighting is a combination of the directional sunlight and an ambient colour. Quite manageable on good hardware in 2006.

    1. Simon

      First: Thank you so much for writing the comment! It seems you’re a Relic-Dev and every comment is a honour for me but a Dev-Comment mostly brings a mass of knowledge with it. Really cool!

      Second: Thanks for this link! It’s awesome! Really interesting how genius your Fx System is.


Leave a Reply

Your email address will not be published. Required fields are marked *