Ну это не совсем HBAO. Это очень сильно упрощенное приближение к нему.
По поводу «самого простого способа» — ну, это, скажем так — далеко не самый простой. На самом деле намного легче пройтись по всем вершинам модели и от каждой пускать те же 1000 лучей по полусфере, ориентированной по нормали. Потом мы смотрим — уперся ли луч в какой-нибудь треугольник или нет, и как далеко этот треугольник находится от нашей проверяемой вершины — таким образом получить затенение. Но это, все-таки, ближе к трассировке лучей, чем к рендерингу.
Ага, логично.
По поводу G-буфера — у вас не объяснено что такое HDR RGB в третьем таргете, поэтому складывается ощущение, что он лишний. Могу предположить, что это что-то вроде интенсивности освещения, тогда может стоит подумать о RGBM/RGBE?
И еще хорошо бы нормали упаковать в две компоненты, а на освободившееся место засунуть остальную информацию. По идее, можно было бы втиснуть в 2 таргета все.
Хотя, конечно, все зависит от железа, на которое вы целитесь.
Не очень понял зачем вы делаете отдельный проход с восстановлением глубины? Можно ведь сразу писать глубину в R32F или восстанавливать уже в финальных шейдерах.
Можно добавить вот это в список литературы:
Moving Frostbite to Physically Based Rendering 3.0
https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf
обновленная дока от Диснея (про energy-conserving дифуз):
http://blog.selfshadow.com/publications/s2015-shading-course/burley/s2015_pbs_disney_bsdf_notes.pdf
И хотелось бы увидеть продолжение про IBL без importance sampling-a.
http://www.gamedev.ru/community/gameboost/
По поводу «самого простого способа» — ну, это, скажем так — далеко не самый простой. На самом деле намного легче пройтись по всем вершинам модели и от каждой пускать те же 1000 лучей по полусфере, ориентированной по нормали. Потом мы смотрим — уперся ли луч в какой-нибудь треугольник или нет, и как далеко этот треугольник находится от нашей проверяемой вершины — таким образом получить затенение. Но это, все-таки, ближе к трассировке лучей, чем к рендерингу.
По поводу G-буфера — у вас не объяснено что такое HDR RGB в третьем таргете, поэтому складывается ощущение, что он лишний. Могу предположить, что это что-то вроде интенсивности освещения, тогда может стоит подумать о RGBM/RGBE?
И еще хорошо бы нормали упаковать в две компоненты, а на освободившееся место засунуть остальную информацию. По идее, можно было бы втиснуть в 2 таргета все.
Хотя, конечно, все зависит от железа, на которое вы целитесь.