public static Vector3 GetDirectionFromPixel(PotatoScene scene, float pixelPositionX, float pixelPositionY) { Vector3 V1 = Vector3.Multiply(scene.GetCamera().Right(), pixelPositionX); Vector3 V2 = Vector3.Multiply(scene.GetCamera().Up(), pixelPositionY); Vector3 pixelPos = Vector3.Add(Vector3.Add(scene.GetOptions().ScreenLeft, V1), V2); return(Vector3.Normalize(Vector3.Add(scene.GetCamera().Forward(), pixelPos))); }
public static void SetRayDirectionByPixelPosition(ref Ray ray, PotatoScene scene, float pixelPositionX, float pixelPositionY) { ray.Set(scene.GetCamera().Position, GetDirectionFromPixel(scene, pixelPositionX, pixelPositionY)); }