The sheriff said the rifle jammed during the 22-year-old's attack, but he managed to get it working again. He later shot himself. Authorities don't yet have a motive but don't believe he was targeting specific people.
Two people — a 54-year-old woman and a 45-year-old man — were killed, and another, Kristina Shevchenko, 15, was wounded and in serious condition on Wednesday.
Roberts, wearing a hockey-style face mask, parked his 1996 green Volkswagen Jetta in front of the second-floor entrance to Macy's and walked briskly through the store, into the mall and began firing randomly, police said.
He fatally shot Steven Mathew Forsyth of West Linn and Cindy Ann Yuille of Portland, the sheriff said.
Roberts then fled along a mall corridor and into a back hallway, down stairs and into a corner where police found him dead from an apparent self-inflicted gunshot, authorities said.
People at the mall were heroic in helping get shoppers out of the building, including medical personnel who rendered aid, Roberts said.
In response to previous mass shootings elsewhere, the first arriving officers were trained to form teams and go inside instead of waiting for SWAT. Employees at the mall also received training to handle such a situation.
"This could have been much, much worse," Roberts said.
The first 911 call came at 3:29 p.m. Tuesday and officers arrived a minute later. By 3:51 p.m., all the victims and the gunman and rifle had been found. Four SWAT teams spent hours clearing the 1.4 million square-foot mall, leaving shoppers and workers to hide in fear.
Roberts rented a basement room in a modest, single-story Portland home and hadn't lived there long, said a neighbor, Bobbi Bates. Bates said she saw Roberts leave at 1:30 p.m. Tuesday wearing a dark jacket and jeans, carrying a guitar case. An occupant at the house declined to comment.
The mall Santa, Brance Wilson, was waiting for the next child's Christmas wish when shots rang out, causing the mall to erupt into chaos.
About to invite a child to hop onto his lap, Wilson instead dove for the floor and kept his head down as he heard shots being fired upstairs in the mall.
"I heard two shots and got out of the chair. I thought a red suit was a pretty good target," said Wilson, 68. Families waiting for Santa scattered. More shots followed, and Wilson crept away for better cover.
Witnesses heard the gunman saying, "I am the shooter," as he fired rounds from a semi-automatic rifle inside the Clackamas Town Center, a popular suburban mall several miles from downtown Portland.
Some were close enough to the shooter to feel the percussion of his gun.
Kayla Sprint, 18, was interviewing for a job at a clothing store when she heard shots.
"We heard people running back here screaming, yelling '911,'" she told The Associated Press.
Sprint barricaded herself in the store's back room until the coast was clear.
Jason DeCosta, a manager of a window-tinting company that has a display on the mall's ground floor, said when he arrived to relieve his co-worker, he heard shots ring out upstairs.
DeCosta ran up an escalator, past people who had dropped for cover and glass littering the floor.
"I figure if he's shooting a gun, he's gonna run out of bullets," DeCosta said, "and I'm gonna take him."
DeCosta said when he got to the food court, "I saw a gentleman face down, obviously shot in the head."
"A lot of blood," DeCosta said. "You could tell there was nothing you could do for him."
He said he also saw a woman on the floor who had been shot in the chest.
Austin Patty, 20, who works at Macy's, said he saw a man in a white mask carrying a rifle and wearing a bulletproof vest. There was a series of rapid-fire shots in short succession as Christmas music played. Patty said he dove for the floor and then ran.
His Macy's co-worker, Pam Moore, told the AP the gunman was short, with dark hair.
Kira Rowland told KGW-TV that she was shopping at Macy's with her infant son when the shots started.
"All of a sudden you hear two shots, which sounded like balloons popping," Rowland told the station. "Everybody got on the ground. I grabbed the baby from the stroller and got on the ground."
Rowland said she heard people screaming and crying.
"I put the baby back in the stroller and ran," Rowland said.
Kaelynn Keelin was working two stores down from Macy's when the gunfire began. She watched windows of another store get shot out. She and her co-workers ran to get customers inside their own store to take shelter.
"If we would have run out, we would have run right into it," she said.
Shaun Wik, 20, was Christmas shopping with his girlfriend and opened a fortune cookie at the food court. Inside was written: "Live for today. Remember yesterday. Think of tomorrow."
As he read it, he heard three shots. He heard a man he believes was the gunman shout, "Get down!" but Wik and his girlfriend ran. He heard seven or eight more shots. He didn't turn around.
"If I had looked back, I might not be standing here," Wik said. "I might have been one of the ones who got hit."
Clackamas Town Center is one of the Portland area's biggest and busiest malls, with 185 stores and a 20-screen movie theater.
Holli Bautista, 28, was shopping at Macy's for a Christmas dress for her daughter when she heard pops that sounded like firecrackers. "I heard people running and screaming and saying 'Get out, there's somebody shooting,'" she told the AP.
She said hundreds of shoppers and mall employees started running, and she and dozens of other people were trying to escape through a department store exit.
Tiffany Turgetto and her husband were leaving Macy's through the first floor when they heard gunshots coming from the second floor of the mall. They were able to leave quickly through a Barnes & Noble bookstore before the police locked down the mall.
"I had left my phone at home. I was telling people to call 911. Surprisingly, people are around me, no one was calling 911. I think people were in shock," she said.