When a camera ray hits a surface, it has a material at that position. The material is usually made of different Shaders that got mixed together. One ray will leave the surface. If you have a Mix Shader combining Diffuse and Glossy set to 0.5, there will be a 50% chance of sending a Diffuse ray and 50% chance of sending a Glossy ray. The direction the ray will take is also calculated randomly. With increased number of samples, these numbers will even out and create a smooth surface having 50% Glossy and 50% Diffuse. If the material doesn't contain a Transparent Shader, no transmission rays will be sent.
Branched Path Tracing
Let's say you have set Diffuse samples to 2 and Glossy to 4 and Transmission to 3 in your render settings. When the camera ray hits the surface, it will send out two Glossy rays (in the same random way as before) and four Diffuse rays. Their values will then be mixed together according to the Mix Shader. Since your material doesn't have a Transparent node, none of the six Transmission rays will be sent out, leaving the pass image black at that position. In the end, your Transmission Samples number won't affect render time on that specific material in a noticeable way.
I set up a simple test scene with a Material having 50% red Diffuse and 50% white Glossy on all objects (a plane and the default cube).
With 1 sample for Diffuse, 8 for Glossy, 1 for the rest and 4 AA samples, it takes me 31 seconds to render. Setting all values except Diffuse and Glossy to 128, it renders for 32 seconds.
What would happen if we set the values to zero?
Let's say we set the amount of Transmission samples to zero. If our material is not transparent, the value can be set to any number, so setting it to zero doesn't make a difference. But what if our material contains, let's say, a Glass Shader?
Blender won't send any transmission rays but will need some values to calculate the final material color. This is the same as sending a ray and then killing it immediately. So we can assume, that the transmission ray would return a black value. The transmission pass image would remain black, as wished. The glass would probably look very ugly like some glossy mixed with black emission.
Why is 1 the minimum?
I don't know. To find out, find the developer who made this feature or worked on it and ask him. You can start your search here. Possible reasons could be (just me guessing):
- Nobody thought it could be useful to someone, someday. Since having the ability to setting it to zero caused other problems (like, unexperienced users using it and getting black renders)
- Technical reasons. Perhaps it is more complicated than that to handle missing passes
- Time: Due to the reasons above it was not worth the effort implementing
If you want to work around the issue and get the possibility to disable passes, I found two (relatively) simple ways. A doesn't speed up render time, but should at least be accurate if you don't use volumetrics; B speeds up rendering, but requires more work to make accurate.
A - Compositor
Easy to set up, doesn't speed up render time. See here for how to combine them. Note, that you will have to separate the volumetric pass or you'll use the volumetrics if you are using them. Further information and node group download
B - Material node groups
Create a node group per shader type that allows you to disable it by mixing it with an Emission shader. Here's the node group for a new Glass Shader:
Create a node group for each Shader you are using and use them all the time. By setting the mix factor to 0 or 1, you can enable or disable certain shaders. This will do almost the same as setting the samples count for this ray type to 0. The difference is that one works on a per ray-type basis, the other on a per-shader basis. If you want to remove only transmission rays from a Glass Shader, you'll need to create your own one using Glossy and Refraction shaders.
This method shouldn't increase render time normally because node groups and Mix nodes with fac 0 or 1 get optimized automatically during compilation. If you disable some shaders, computation will be faster because Emission Shaders are fast to compute.