Diffraction on 1D grating is covered in many physics books. Usually they cover simple case when incident light is coming along the normal to the grating. Sometimes they present slightly more complicated case when incident light is tilted in the plane perpendicular to the stripes (left case on the image below).
Does anybody have an idea how to treat diffraction on a grating when incident light comes from arbitrary direction ( gamma ≠ 0 and i ≠ 0 , right case on the image below )?

Spoiler

I tried to split the incident wave vector k in two components: k_{x} and k_{yz}.
First part (k_{x}) should diffract same way as in case of normal incidence (diffracted maxima will be symmetrically placed around the k across the grating stripes with diffraction angles Θ defined by d*sin(Θ)=n*λ ).
Second part (k_{yz}) seems to be the case presented in left part of the image (these maxima are also symmetrically placed around the k but this time incident angle i is taken into account so d*(sin(Θ)+sin(i))=n*λ ). After that I just added the resulting diffracted wave vectors for each n to get the final diffracted wave vectors. Is this approach correct?

I just played with a Laser printed grating few days ago.

For the Kx part there should be no change with i.
For the Ky part the only variable that changes with i is d. That should look like:
d*cos(i)*sin(Θ)=n*λ
Now i did suppose that the angle of incidence is changed by rotating the grating along the x and y axis for ease.