You can use any of Blender's pre-packaged lighting environments in your scene.
Starting with a basic material on Suzanne, looks great in Material Preview
Scene doesn't look right in Rendered Preview
Create a split screen, and change one area from 3D Viewport to Shader Editor.
Toggle Shader Type from Object to World.
Ensure Node Wrangler Add-on is ...
As a workaround, you could try the following:
Import your rendered PNG into Inkscape
use the "bucket fill"-Tool on the shadow, this will rather neatly trace the contour of the shadow (as long as the color is somewhat uniform)
Set line and fill of the traced area as you like
Import the Freestyle-generated SVG on top and move/scale as needed
You've limited the Max Bounces of the light to 6. The default value is 12. Fewer bounces mean faster render times (1:01 vs 1:12), but more noise and darker (glass) materials. Reset the value to 12 and your cup will look much brighter.
In your provided file the Denoising Data was not generated. You need to enable it in the View Layer Properties tab and ...
So, thanks for the comments and answers. Answering my own question for future readers that may end up here. I was looking through the OSL spec, and there actually is a phong-reflection function, but when using it in a OSL script node with cycles, I get a this function is not implemented by the current renderer error. Unfortunately, one cannot declare new OSL ...
There is probably a better answer, maybe using render layers, but I don't know it. It sounds like you can use a low poly proxy of your character though, for that scene and have the proxy be flat-black, where there will be no reflections. I know this is more a workaround but it may work for you. Otherwise I would play with render layers and the way the light ...
When you plug Color or Vector information straight into the Material Output Blender will display it as though it were passing through an Emission node with a Strength of 1. As such it will have no surface response because that shader just tells it to output light and says nothing of the surface.
You must use a BSDF to get the surface response you want.