turtleguy955 I thought you've got the texture part figured out. Simply make a quad mesh and assign viewport's texture to its material albedo. Later you can do it with a shader for some effects etc. Then call looking_at() on this quad's basis:
screen_quad.global_basis = screen_quad_global_basis.looking_at(normal)
Of course you also need to place it at the raycast hit position, probably slightly offset along the normal.