Я пишу систему рендеринга с 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>