Emission maps?

This. I cannot stress how much this helps. To give you an idea, if you look back on the Skull&Bones gameplay video from E3 2018, the largest “Diffuse Color” texture used in VFX was 16px by 128px. Everything else is just channel packed masks.

As a bonus, the same texture then can be used for different things.

For example:

From there, we use 2 ramp textures. Very small ones. The first ramp is an albedo ramp and the 2nd one an emissive ramp. For an explosion it would look like this:
Albedo Ramp: DXT1, 16x16 px
5

The reason this is not a simple vector color picker in material is so we can easily edit the tone of the smoke in our explosions across the game by opening this small texture in photoshop and changing the level of gray. This way, we don’t have to edit each effect individually and we maintain uniformity of colors when using more than 1 animated texture in a given fx, so they blend better together. A very small cost to pay to keep an easy pipeline.

Emissive ramp: BC7 128x16 px
RGB: Emissive Color
7
A: Emissive Pre Multiply
7

Basically, we directly assign the albedo ramp into the albedo term, but for the emissive ramp, we sample it using: UV = float2( 1.0 + (-animatedTextureMask2.r), 0.5); So the Mask2’s animated R channel animates the balance of smoke and fire.

Basically, you can skip the part about the smoke gray if you encode the lighting directly in your texture… and just do the emissive bit. Bit of advice, you should use your emissive mask to blend some black in your albedo (which is going to be covered by what you send into emissive) else your emissive color will be affected by lighting and your fire color might not be what you want depending on the sun color / time of day.

More detail about the process here: Smoke Lighting and texture re-usability in Skull & Bones

9 Likes