UnityФорумПрограммирование

CommandBuffer Unity

#0
11:31, 8 ноя 2021

Такая проблема. Есть некоторые фичи, которые юзают CommandBuffer'ы. Но некоторые данные являются динамическими. Вся проблема в чем. В том, что к коммандному буфферу не привязать какой-нибудь пользовательский эвент для рассчета некоторых переменных (как пример RecalculateMatrix), которые потом отдаем в шейдеры. Ок, можем дергать расчеты в Update. но в таком случае есть некоторое отставание обновления нужных данных от рендера, это и логично, ибо Update дергается уже после отрисованного кадра. Как вариант - можно перерасчитывать нужные переменные в OnPreRender, но беда в том, что в режиме редактирования он никоим образом не вызывается. И тут я задался вопросом, как решить данную проблему? Можно ли как-то до выполнения CommandBuffer'ов вызывать нужные методы где идут предрассчеты на CPU?

#1
12:26, 8 ноя 2021

Можно использовать Camera.onPreCull, Camera.onPreRender, Camera.onPostRender. Вызывается для каждой камеры, в том числе и  SceneView.
https://docs.unity3d.com/ScriptReference/Camera.CameraCallback.html

#2
12:54, 8 ноя 2021

Target
> ибо Update дергается уже после отрисованного кадра
Апдэйт делается ДО отрисовки. А если тебе надо обновлять трансформы, то делай это в LateUpdate, там все трансформы уже обновились.

#3
12:58, 8 ноя 2021

Battle Angel Alita Ага, попутал, верно)

#4
12:59, 8 ноя 2021

Dampire
О щас чекну

#5
13:18, 8 ноя 2021

Dampire йюуху! Пасибо, то что было нужно)

UnityФорумПрограммирование

Тема в архиве.