Why should I use lightmap instead of draw shadow in diffusemap

Hi! Great question. :slight_smile:

You can do any of these three, or a combination of them:

  • bake ambient occlusion (.aoMap)
  • bake light map (.lightMap)
  • bake everything (.map)

If you’re baking everything down to just a single map, that’s the cheapest/fastest option for rendering. Often this is a good choice for mobile devices with limited GPUs. If you do this, use MeshBasicMaterial instead of MeshStandardMaterial, since it’s cheaper and you don’t need the extra cost of lighting calculations. That’s called an “unlit” material in glTF terminology, and I don’t know if C4D can export them, but you can convert after export like this:

npm install --global @gltf-transform/cli

gltf-transform unlit input.glb output.glb

This does mean that you can’t use normal maps though, because the lighting is completely baked in.

Baking lighting or shadows while using MeshStandardMaterial is more expensive, and if you’re using punctual lighting (beyond just THREE.AmbientLight) you’ll get incorrect and muddy-looking results. So I wouldn’t necessarily call a texture with lighting baked in a “diffuse” map.


Baking to a .lightMap or .aoMap is more expensive to render than an unlit material, but allows you to keep some aspects of the lighting dynamic, and can look better than MeshStandardMaterial alone. For example, ambient occlusion gives soft shadows affected only by ambient/diffuse lights, like THREE.AmbientLight, and something like a spotlight pointed into areas with AO will hide those shadows.


General advice — use lightmaps and baked ambient occlusion to get nicer lighting and more realistic shadows than three.js can give you without them. Bake everything if you just need to get the best performance you can. Either of these options are very common in game engines.

7 Likes