Fryatt, 28, will move to the City Ground on a free transfer when his contract expires on July 1.
The former Leicester forward, who has scored 129 career goals, rejected a new improved contract offer from the Tigers last week.
Forest manager Stuart Pearce was keen to bolster his strike force after seeing a number of forwards leave at the end of last season.
Fryatt had fallen down the pecking order at Hull behind Shane Long and Nikica Jelavic but still managed to finish top goalscorer in all competitions despite not starting a Premier League game.
"I am delighted to announce the signing of Matty Fryatt on a three-year contract, he is a player this club has admired for many years," Forest owner and chairman Fawaz Al Hasawi said via his official Twitter account.
"I am delighted to have finally got our man. I look forward to welcoming him into this great club when his contract starts on July 1."