ПрограммированиеФорумГрафика

Directx 12 вопросы. (2 стр)

Страницы: 1 2 3 440 Следующая »
#15
19:11, 18 ноя 2019

Я не совсем понял что делают эти две строчки.

command_queCopy->Signal(dx12_fence, 1);
dx12_fence->SetEventOnCompletion(1,m_fenceEvent);

И почему тут именно число 1.

Как я понял в общем, мы так на CPU пытаемся ждать , пока GPU не окончит копирование.

И почему нельзя было по человечески сделать проще, типа:

command_queCopy->WaitFinish;
#16
19:54, 18 ноя 2019

ronniko
> И почему нельзя было по человечески сделать проще, типа:
>
> command_queCopy->WaitFinish;
Тогда теряется гибкость в синхронизации. ID3D12Fence и он может сбрасывать Win32 Event, его можно использовать WaitForSingleObject процессе/потоке, не касаясь Direct3D12 API. (В Vulkan для этого нужно использовать  VK_KHR_external_fence_win32, c POSIX версий не изучал)
>command_queCopy->WaitFinish;
я  так и обернул,

...
computeCommandQueue.WaitForFence(computeFence);
...
graphicsCommandQueue.WaitForFence(presentFence);
void Direct3D12Fence::Wait()
{
  event.Wait(); // WaitForSingleObject
  event.Reset(); // ResetEvent
}

HRESULT Direct3D12CommandQueue::WaitForFence(Direct3D12Fence& d3d12fence)
{
  const UINT64 fence = fenceValue;
  HRESULT hr = queue->Signal(d3d12fence, fence);
  assert(SUCCEEDED(hr) && "ID3D12CommandQueue::Signal failed");
  fenceValue++;
  // Wait until the previous frame is finished.
  if (d3d12fence->GetCompletedValue() < fence) {
    hr = d3d12fence->SetEventOnCompletion(fence, d3d12fence.event);
    assert(SUCCEEDED(hr) && "ID3D12Fence::SetEventOnCompletion failed");
    d3d12fence.Wait();
  }
  return hr;
 }
#17
22:48, 18 ноя 2019

Andrey
> (В Vulkan для этого нужно использовать  VK_KHR_external_fence_win32

можно подумать что без этого жить нельзя

#18
13:10, 26 ноя 2019

В DX12 надо для разных blend mode создавать свой PSO_pipeline ?
Ничего не нашел кроме как ID3D12GraphicsCommandList::OMSetBlendFactor
void OMSetBlendFactor(
  const FLOAT [4] BlendFactor
);

#19
13:14, 26 ноя 2019

https://docs.microsoft.com/en-us/windows/win32/api/d3d12/ns-d3d12… ne_state_desc

#20
13:17, 26 ноя 2019

Инуендо.
Ты не понял моего вопроса. 

Я спросил как быстро менять D3D12_BLEND_DESC.
И кроме как создавать PSO_pipeline с нужным D3D12_BLEND_DESC я ничего не нашел.

Меня же интересует , есть ли быстрый метод переключение разных D3D12_BLEND_DESC ?

#21
13:21, 26 ноя 2019

ronniko
> Ты не понял моего вопроса. 

ты не понял сути новых апи

#22
13:44, 26 ноя 2019

ronniko
Список прозрачных обектов рисуется отдельно, если будут идти несколько с одинаковым PSO с прозрачностью, достаточно не ставить повторно. Это снизит нагрузку на CPU. В общем да, нужно создавать отдельно другой PSO либо ставить Blend фактор параметры через
ID3D12GraphicsCommandList::OMSetBlendFactor.

#23
13:51, 26 ноя 2019

Andrey
> Список прозрачных обектов рисуется отдельно, если будут идти несколько с
> одинаковым PSO с прозрачностью, достаточно не ставить повторно.

причёт тут отдельно или нет ? если другой тип блендинга или шейдер то PSO нужно менять

> Это снизит нагрузку на CPU.

смена PSO это удар по GPU прежде всего

> либо ставить Blend фактор параметры через
> ID3D12GraphicsCommandList::OMSetBlendFactor.

там только цвет же

#24
15:46, 26 ноя 2019

Правильные новости про новый API от создателей DirectX 12... очень правильные... и там не какой-то хрен типа DXR... хотя даже там есть коррективы типа упрощенной версии...

https://www.igromania.ru/news/87663/V_Microsoft_rasskazali_o_novy… rectX_12.html

Там вот такое, вот...
- DirectX Mesh Shader (DMS)
- DirectX Sampler Feedback (DSF)
- Texture-Space Shading (TSS)

Вот только у меня очень правильный вопрос: А когда поддержку трассировки лучей завезут в OpenGL и DirectX 11? Неужели здесь все настолько сложно?

#25
17:07, 26 ноя 2019

helix.d
> Вот только у меня очень правильный вопрос: А когда поддержку трассировки лучей
> завезут в OpenGL и DirectX 11? Неужели здесь все настолько сложно?
да не сложно, просто нафиг вендорам не нужно. это боль - поддерживать старые АПИ.

#26
(Правка: 19:41) 19:02, 28 ноя 2019

Кто собирал DX12 пример простой треугольник для Win 10
Изображение

Напишите какой у вас FPS без vsync-a(то есть больше 60 FPS должно быть).
И напишите какая видеокарта и проц.

И обязательно рендер должен быть каждый раз, а не по window resize или move !

Можно отсюда для Win 10
https://www.3dgep.com/learning-directx-12-2/

Или этот:
https://github.com/GPUOpen-LibrariesAndSDKs/HelloD3D12/

Простой треугольник (пример HelloTriangle):
https://github.com/microsoft/DirectX-Graphics-Samples/tree/master… D12HelloWorld

#27
19:16, 28 ноя 2019

ronniko
>Кто собирал DX12 пример простой треугольник для Win 10
Где сорцы?

#28
19:34, 28 ноя 2019

В среднем кажет 670 фпс, вот для такой картинки:

+ Показать

ГПУ: GeForce GTX 660M.

#29
19:35, 28 ноя 2019

Ноутбук с Win 10 ?

Страницы: 1 2 3 440 Следующая »
ПрограммированиеФорумГрафика