[Solved]Simple shader - light only faces.

Hello, I ran into a problem when trying to light a mesh with very distinct sharp shapes, which I need to keep. I checked every shader that Unity has to offer, and nothing suits my needs. Unity shaders try to round up the sharp edges of the mesh which is really great at most situations but not in particular.


I am using a directional light btw, and the material on the mesh is plain red, no textures. I’m really stuck here, any help would be appreciated, thanks in advance.

In general, you don’t do this in the shader, you do it in your normals.

In a rounded object, the normal at a vertex is the average of the surface normals meeting at that vertex.

In a non-rounded object, all the normals of a poly’s vertices are the same as the surface normal of the poly.

Whether you could fake this in a shader I don’t know, but I tend to doubt it as I believe that, by the time you get down
to the shader program, you no longer have the knowledge of which vertices belong to a common poly…

You could use a shader that “flat shaded” the poly but then you would lose the lighting which it looks to me like you want.