У меня длинный конвейер шейдеров в WebGL, где каждый шейдер читает из входной текстуры, отображает другую текстуру, а к концу последняя текстура содержит желаемый результат.Повторное использование текстур в WebGL при рендеринге
Можно ли повторно использовать текстуры в трубопроводе, как будто он работал синхронно?
// ... init texA to contain input ...
shader1.samplingFrom(texA).renderTo(texB);
shader2.samplingFrom(texB).renderTo(texA);
shader3.samplingFrom(texA).renderTo(texB);
return readPixels(texB); // Always the same answer?
В этом отношении, могу ли я даже полагаться на отделку шейдера до начала следующего этапа?
// ... init texA to contain input ...
shader1.samplingFrom(texA).renderTo(texB);
shader2.samplingFrom(texB).renderTo(texC);
shader3.samplingFrom(texC).renderTo(texD);
return readPixels(texD); // Always the same answer?
Первоначально я думал, что я мог бы повторно использовать текстуры, но я заметил странное поведение, которое уходит, если я стойло трубопровода (подразумевающий состояние гонки какого-то), так что теперь я не уверен, что гарантии предоставлена.
Оказалось, что ошибка, которую я видел, была вызвана визуализацией от текстуры, которая еще не была отображена. Не уверен * почему * у него был симптом, который он сделал, но это не проблема параллелизма. Тем не менее, все еще интересно узнать ответ на этот вопрос. –