Можно ли сделать шейдер GLSL для хранения «промежуточных» результатов в целях отладки с помощью таких инструментов, как NSight? - PullRequest
0 голосов
/ 22 декабря 2018

Я пишу систему рендеринга с OpenGL 4.6 и отлаживаю ее с помощью NVIDIA NSight.Мне было неприятно отлаживать проблемы с моим освещением, картами нормалей / текстурами и т. Д. Мое обычное решение - временно добавить FragColor = (whatever value I want to debug) и затем преждевременно вернуть шейдер, что отнимает много времени и требует повторного запуска.,Однако:

Я заметил, что NSight хранит «ревизии» финального рендера после каждого вызова отрисовки, и я считаю, что было бы удобно сохранять свои собственные «ревизионные» состояния частично через шейдер.

Есть ли какой-нибудь механизм такого рода?например:

// <Some GLSL stuff goes here e.g. light calculations>

// Save an intermediate preview with lighting and no textures, for debugging
FragColor = vec4(lightValue, 1.0);
saveIntermediateRevisionState(FragColor);

// <More GLSL stuff before we set the real, final FragColor>
...