Flatten shading on cylinder
I believe you are after this shading effect:



It is possible with some vector math on normals. The goal is to change normals to be pointing towards camera, but the Incoming output from Geometry node will override all normals equally, ignoring in which direction the curve is heading. Luckily we can determine the local vector of the tube's direction:

Can I color a curve in Cycles by the direction it&#39;s running?

The rest is a matter of 2 vector cross products to get a vector incoming to camera but also orthogonal to the curve's direction:



If you want to do this on meshes, you will have to write your own OSL shader.