Best way to make a scene look grungy

Making a scene of shelves in an old basement. Have some old bottles and a paint can. But it all looks too perfect and new. I want it to look more grungy, dusty, etc. Is there a way to do it in render settings (Eevee) or do something in post-processing later?

Try to add variety everywhere you can. From variations in lighting to factors of a material like roughness, albedo variations, etc to some geometric variations. Also depth of field, some color management in case you want to retro look.
So what I mean mainly: Add variation anywhere you think it makes sense for your scene.

I’d guess doing it globally with a couple of switches won’t get you very far. Best way to go would be via the material definitions. There might be some trickery to change the feel of the scene by changing lighting. Maybe sharper lights leaving more dark spots in the room could help. Also as Peetie says, color management, e.g. discoloring and giving the image that retro-style amber tint.

may be adding some lamps with textures to add more variations around!

happy bl

If you’re using material nodes, as you probably are, you could turn the existing nodes into a “node group” and then add other effects downstream of it. (What’s inside the group is “the pristine material,” and what’s outside is “grungifying(?) it.”)

You might, for instance, want to texture paint some blotches and imperfections … grab your digital paintbrush and wax creative … then use this painted texture as one of the “down-stream” materials in your node sequence to modify the “pristine” texture. You can do this as often as you care to, and that’s the way to do it because there are several unrelated factors in play: dirt, dust, rust. As much as you want to add. And the result, since it is human- generated, will not look procedural or “fake.”

If you’ve got several occurrences of the same object, take the time to grunge-paint them differently. (And/or fiddle with the UV-mapping.)

Then, yes, as others have said, "vary the environment." Especially the lighting. Consider modifying “hue and saturation” as part of what your grunge-effects do.

If you’re using 2.8 cycles then there’s a AO node that can be used quite effectively to mix grunge into the material. Otherwise baking AO can be really helpful. There’s also Derty Vertex Colours.

Also, if you’re using instanced objects, then Object Info Random is your friend. You can use it for shifting a grungemap or creating colour variations or whatever. Remember - it only creates one random number per object.

Adding some variation to the colouring and roughness of materials can go a long way. The latter especially.

I thought I would add a texture to the light (sun) but that does not currently work in Eevee. So I thought I would add a plane between the sun and the scene, and give the plane an alpha enabled texture. However, that didn’t cast shadows, even though the alpha was transparent.

“Sun” is a type of “everything light” that is designed to mimic El Sol. Probably not what you want here.

Sun lamps emit light in a given direction. Their position is not taken into account; they are always located outside of the scene, infinitely far away, and will not result in any distance falloff.

What you would have, as in a theater, is a set of lights with different intensity and shades that would light your subjects “dramatically.” (A lot of drama comes from shadows – "where the light isn’t.")

Also: "position your cameras first," then “light for the camera.” Don’t set up the scene to look good in the 3D Viewport and then stick a camera into it. Are the cameras going to be fixed or moving, and if moving, what moves do you plan for them to make? Determine this first, then light accordingly.

The camera and all objects are fixed, i.e. this will be a still image when rendered. I do have the camera positioned where I want it. I have switched to other light types other than “sun” and none of them will show a shadow cast onto a “wall” (plane) that results from an object (another textured plane) with transparent areas of the texture, which I place between the light and the “wall”. There is no shadow at all. But if I add any other mesh between the light and the “wall”, there is a shadow cast. So shadows are enabled.