извършване на перфектна за пиксели оклузия с шейдъри

Правя изометрична игра и бих искал да използвам данни за височина/нормална стойност, генерирани от 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. com/questions/34952184/   -  person Fattie    schedule 22.01.2016