Могу предложить немного изменить описанный выше подход с градиентами и 3хмерным описанием проблемы. Возьмите срезы по XZ для каждого Y, который соответствует пикселям на экране (надо помнить, что нам не надо расчитывать результат с точность, которая превышает разрешение монитора). Тогда каждый срез будет представлять из себя стандартную задачу по решению уравнения f(x)=0, тут уж можно какие-нибудь численные итеративные методы стандартные (метод ньютона например или что-то другое) использовать (которые по сути и используют градиенты в каком-то смысле). Проблемой с такими срезами будет то, что будут плохо отображаться горизонтальные линии. Можно попробовать последовательно делать с фиксированными Х и У, тогда должно получиться получше. Но все это мысли вслух так сказать, как бы я подходил к проблеме.