material.transparent + opacity just blends with whatever’s behind — no refraction, so it reads as "translucent color." MeshPhysicalMaterial’s transmission (0–1) is different: set it to 1 and the renderer separately re-renders what’s "behind" that object into a texture every frame, then redraws it bent (refracted) according to the surface normal, roughness, and ior (refractive index). So whatever is behind genuinely appears to warp along the glass’s shape.
The key parameters are ior (refractive index, glass sits near 1.5), thickness (how much material light travels through — more means stronger refraction), and roughness (near 0 for clear glass, higher for frosted). For reflections to look right too, you need an environment texture like in the environment-map entry — with nothing to reflect, glass looks flat.
The demo places a glass icosahedron in front of a colorful backdrop panel so you can see the pattern behind it bend through refraction. Transmission triggers an extra render pass per object, so it gets expensive fast — keep the number of glass objects on screen modest.
When to use
When a transparent material — a glass bottle, lenses, liquid — needs to read as physically real refraction, not just faded color.