Почему чтение из массива 2D хранилища всегда возвращает одно и то же значение в WebGPU?Javascript

Форум по Javascript
Ответить Пред. темаСлед. тема
Anonymous
 Почему чтение из массива 2D хранилища всегда возвращает одно и то же значение в WebGPU?

Сообщение Anonymous »

То, что я пытаюсь сделать,-это написать текстуру хранения в одном проходе рендеринга, а затем прочитать из этой текстуры во втором проходе, но значение, которое я получаю во втором проходе, всегда одинаково, независимо от того, что я пишу в первом проходе.

Код: Выделить всё

const storageTexture = this._device.createTexture({
dimension: '2d',
size: [512, 512, 1],
format: 'r32float',
usage: GPUTextureUsage.STORAGE_BINDING
})

const textureView = storageTexture.createView({
dimension: '2d-array',
format: 'r32float',
})

const bindGroup = this.device.createBindGroup({
layout: this.lightsBindGroupLayout,
entries: [
.....irrelevant stuff
{
binding: 3,
resource: textureView,
},
],
})

const firstPass = commandEncoder.beginRenderPass(this._renderPassDescriptor)
......
firstPass.setBindGroup(2, bindGroup)
......
firstPass.end()

const secondPass = commandEncoder.beginRenderPass(this._renderPassDescriptor)
.....
secondPass.setBindGroup(3, bindGroup)
.....
secondPass.end()
< /code>
Fragment Shader Code для первого прохода: < /p>
@fragment
fn fragment_main(in: VertexOutput) -> @location(0) float4 {

textureStore(texture, vec2u(0, 0), 0, vec4f(1, 1, 1, 1));

return in.position;
}
< /code>
Fragment Shader Code для второго прохода: < /p>
@fragment
fn fragment_main(in: VertexOutput) -> @location(0) float4 {

let a = textureLoad(texture, vec2u(0, 0), 0);

return vec4(a.r, 0, 0, 0);
}
То, что я ожидал получить во втором проходе A.R == 1 , поэтому все фрагменты полученного изображения должны быть красными, но я на самом деле получаю A.R == 0 , и все фрагменты черные. Ошибка, функция Texturestore не вызывается. Прямо сейчас я даже не могу понять, какой из этого случая у меня есть, но я не вижу, как может быть ошибка прочтения/записи с предопределенным местоположением.>

Подробнее здесь: https://stackoverflow.com/questions/796 ... lue-in-web
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Javascript»