Как правильный способ реализовать поддержку N Shadowmaps в рендерере WebGPU?Javascript

Форум по Javascript
Ответить Пред. темаСлед. тема
Anonymous
 Как правильный способ реализовать поддержку N Shadowmaps в рендерере WebGPU?

Сообщение Anonymous »

Я делаю базовый прямой рендеринг в Webgpu, который поддерживает несколько типов источников света и создания тени. Когда я выяснил часть тени, я связывал Shadowmaps с ShadowPass, писал им значения глубины, а затем прочитал эти значения в проходе рендеринга. Все работало нормально, но у меня было жесткое количество света (1 из каждого типа). < /P>
Теперь я хочу иметь возможность добавлять и удалять огни во время выполнения, но не могу понять, как. Алгоритм, который я сейчас пытаюсь, предназначен для каждого типа света (точка, направление, пятно), принять прожекторы, например: < /p>

Свяжите текстуру_depth_2d_array < /code> в виде глубины Texture с Spotlights Shadow Pass.

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

        const depthTextureSpot = this._device.createTexture({
dimension: '2d',
size: [512, 512, scene.spotLights.length || 1],
format: 'depth32float',
usage:
GPUTextureUsage.TEXTURE_BINDING |
GPUTextureUsage.COPY_DST |
GPUTextureUsage.RENDER_ATTACHMENT,
})

const depthTextureSpotView = depthTextureSpot.createView({
dimension: '2d-array',
})

const spotLightShadowPass = commandEncoder.beginRenderPass({
colorAttachments: [],
depthStencilAttachment: {
view: depthTextureSpotView,
depthClearValue: 1.0,
depthLoadOp: 'clear',
depthStoreOp: 'store',
},
})
< /code>

 Рассчитайте значения глубины из POV каждого света и сохраняют их в соответствующей «текстуре» в Texture_depth_2d_array < /code>, поэтому у меня есть теневые карты для всех светов этого типа (этот код не работает). < /li>
< /ol>
@vertex
fn vertex_main(vert: VertexInput) -> @builtin(position) vec4f {

for (var i = 0u; i < arrayLength(&pointLightsBuffer.lights); i++) {
let light_view_projection_matrix =
pointLightsBuffer.lights[i].light_projection_matrix * pointLightsBuffer.lights[i].light_view_matrix;

return light_view_projection_matrix * node_params.transform * float4(vert.position, 1.0);
};
return float4(vert.position, 1.0);
};
< /code>

 Пропустить полученную Texture_depth_2d_array < /code> для визуализации и прочтения значений глубины, чтобы вычислять конечный цвет. Texture_depth_2d_array 
. Или, если есть, я не могу понять это. Насколько я понимаю, единственным типом текстуры, позволяющей это, является это Texture_storage_2d_array , но тогда существует проблема, где я могу получить значения глубины от.
Все учебные пособия и бумаги, которые я читал до сих пор, справляется с предопределенным количеством света и имеет отдельный проход для каждого индивидуального света. Если это так, то как преодолеть препятствия, описанные выше? И если это не так (что, скорее всего), что является стандартным подходом к рендерингу n огней с теневыми картами в Webgpu?

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

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Деформация в рендерере raycaster, сделанном в Unity
    Anonymous » » в форуме C#
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Как в WebGPU можно объединить несколько источников WGSL, чтобы номера строк отображались правильно?
    Anonymous » » в форуме C++
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Как решить проблему прозрачности после установки глубины в WebGPU?
    Anonymous » » в форуме Javascript
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous
  • Emscripten & Webgpu - определенные звонки, сделанные из C ++
    Anonymous » » в форуме Javascript
    0 Ответы
    182 Просмотры
    Последнее сообщение Anonymous
  • Почему чтение из массива 2D хранилища всегда возвращает одно и то же значение в WebGPU?
    Anonymous » » в форуме Javascript
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous

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