Применяется ли петля обратной связи к доступу к буферу в OpenGL ES? - PullRequest
0 голосов
/ 20 мая 2019

Я понимаю, что если чтение и рендеринг в одну и ту же текстуру в gles приведет к неопределенным результатам, спецификация называет это "обратной связью". Однако, похоже, здесь не упоминается, применяется ли это правило и к буферам.

Предположим, что побочные эффекты на стадии вершины поддерживаются, если вершинный шейдер читает из SSBO, и фрагментный шейдер того же рендеринга записывает в него, будут ли это также неопределенные результаты?

Даже если побочные эффекты на стадии вершины не поддерживаются, я думаю, что такая же ситуация также существует, например, если VBO привязывается как SSBO для записи фрагментным шейдером, это тоже "цикл обратной связи"?

1 Ответ

1 голос
/ 20 мая 2019

Правила с SSBO намного менее строгие, чем правила фрейм-буферов (без текстурный барьер ). Пока вы не читаете данные из местоположения, которое фактически пытается использовать фрагментный шейдер, это нормально. То есть ваши VS могут читать из одной области буфера, а FS - в другую.

Также хорошо, если есть зависимость между конкретными вершинными и фрагментными шейдерами. Если фрагментный шейдер выполняется, то вершинные шейдеры, которые создали конкретные вершины для примитива, который запустил эти фрагментные шейдеры , должны завершить выполнение. Таким образом, если читающие VS читают только из тех мест, в которые будут записаны FS в результате выполнения этих VS (и вы используете квалификатор памяти coherent), то все в порядке.

...