создание пиксельной окклюзии с помощью шейдеров

Я делаю изометрическую игру, и я хотел бы использовать данные о высоте/нормали, сгенерированные 3D-программой. Вот пример данных "объекта", которые у меня есть:

введите здесь описание изображения

первый - это фактический объект, второй определяет, насколько высоко в мировой координате находится каждый пиксель, а третий описывает, какова нормаль для каждого пикселя.

Теперь, если я случайным образом размещаю блоки на экране, я могу сказать с помощью карты высот для заданного пикселя экрана (x, y), какой пиксель блока должен фактически отображаться сверху, это то, что я называю «пиксельно-идеальным». окклюзия".

Каким будет наиболее эффективный способ вычислить окончательный результат сцены (с фактическими изображениями «box_color», отрисовываемыми в правильном порядке) с использованием этого метода? Я могу легко вычислить результирующую карту высот, которая появится на экране с помощью шейдера, но как можно использовать эту карту высот для правильного упорядочения цветных блоков?


person lezebulon    schedule 27.05.2014    source источник
comment
Не вижу, как это возможно эффективным способом. В каждом фрагменте вам необходимо знать положение (фактическое 3D-положение) всех объектов и возможность рассчитать их размеры, чтобы определить, какой из них должен быть отрендерен. Вместо этого вы можете просто отсортировать их по оси Z и использовать альфа-канал.   -  person JAre    schedule 28.05.2014
comment
Можете ли вы просто написать в gl_FragDepth (с включенным тестированием/записью глубины)?   -  person GuyRT    schedule 28.05.2014
comment
Возможно, вы, эксперты, знаете ответ на... stackoverflow. ком/вопросы/34952184/   -  person Fattie    schedule 22.01.2016