Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Можно ли в Юнити задать начальные значения z-buffer

Можно ли в Юнити задать начальные значения z-buffer

concretemixerПостоялецwww10 окт. 201820:32#0
Приветствую

Есть сцена, игровой уровень. Уровень помещается на один экран, позиция камеры фиксирована. В сцене огромное количество фоновых объектов, которые также статичны.

Что хочется - хочется, раз у камера и объекты никуда не двигаются, отрендерить их один раз, а потом рисовать на билборде или еще как. Как такое сделать с изображением, понятно, а вот можно ли сделать это с буффером глубины? То есть я на первом кадре рендерю с отдельной камеры этот фон, сохраняю получившуюся картинку и значения z-buffer'a, а на всех последующих начала рисую эту картину, инициализирую z-buffer сохраненным значениями и дальше уже рисую динамические объекты. Возможно ли это в Юнити и возможно ли такое в принципе?

alexey.chУчастникwww10 окт. 201820:54#1
concretemixer
> Как такое сделать с изображением, понятно, а вот можно ли сделать это с
> буффером глубины?
Без проблем, это старая техника.

Из пиксельного шейдера возвращай структуру:

struct PSOutput
{
    half4 color : COLOR;
    float depth : DEPTH;
};

в color пишешь цвет, в depth - глубину.

concretemixerПостоялецwww10 окт. 201820:58#2
Ок, а потом? Как эти значения использовать при рендере с другой камеры?
alexey.chУчастникwww10 окт. 201821:03#3
Данные с первой камены отрендери в текстуру: цвет в rgb, глубину в альфу. Для второй камеры цвет и глубину выводи полноэкранным квадом.

Правка: 10 окт. 2018 21:04

concretemixerПостоялецwww11 окт. 20187:22#4
Спасибо, дружище! Сделал немного не так, но ты толкнул меня в правильном направлении

/ Форум / Программирование игр / Графика

2001—2018 © GameDev.ru — Разработка игр