Вы можете реализовать отложенное затенение путем рендеринга в текстуры, но вам нужно либо перерисовать всю геометрию для каждого прохода (рассеивание, глубина, еще много чего), либо придумать способ сохранить всю необходимую информацию в одну текстуру RGBA. Затем попробуйте эти текстуры в своем шейдере, чтобы получить окончательный результат.
Существует расширение для текстур с плавающей точкой, которое вы, возможно, захотите использовать, но не гарантировано, что оно будет работать везде.
Как вы, наверное, понимаете, deferred не является оптимальным в WebGL:)