IBets
Получается что у тебя по 4 бита на две составляющие нормалей и по 4 бита на roughness / metallic. А не мало ли?
Для нормалей 8 бит это жесть.
vindast
Ну это хитрый фильтр. Разница между R16G6 не большая. Здесь проблема антиалиасинга возникает
IBets
Ну тут до да. Но вот попробуешь прикрутить sslr, и там уже будет заметно нормалям точности не хватает.
vindast
Ну посмотрим как прикручу, что будет
IBets
> 24 - Depth
Буфер глубины отдельный же rt?
vindast
Ты о чем. Я сделал так на Dx9
DX::ThrowIfFailed(pDevice->CreateTexture( desc.Width, desc.Height, 1, D3DUSAGE_RENDERTARGET, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, m_pBufferColor.GetAddressOf( ), nullptr)); DX::ThrowIfFailed( pDevice->CreateTexture( desc.Width, desc.Height, 1, D3DUSAGE_DEPTHSTENCIL, D3DFORMAT( MAKEFOURCC( 'I', 'N', 'T', 'Z')), D3DPOOL_DEFAULT, m_pBufferDepth.GetAddressOf( ), nullptr)); ........................... DX::ThrowIfFailed( m_pDevice->Clear( 0, nullptr, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB( 255, 255, 255), 0.0f, 0)); DX::ThrowIfFailed( m_pDevice->SetRenderTarget( 0, this->GetRTVColor( ).Get( ))); DX::ThrowIfFailed( m_pDevice->SetDepthStencilSurface( this->GetDSVDepth( ).Get( )));
IBets
Блен, в opengl глубина отдельный буфер.
DX::ThrowIfFailed(m_pDevice->SetDepthStencilSurface( this->GetDSVDepth( ).Get( )))
Вроде это установка буфера глубины.
vindast
Ну да, это хак на DX9. Кто не шарит делает отдельным RenderTarget-ом. На DX11 это уже не хак. На GL кодил более чем год назад и когда был большим нубом чем сейчас, поэтому не знаю как там обстоят дела
vindast
в GL можно заморочиться тоже, писать глубину самостоятельно.
g-cont
> в GL можно заморочиться тоже, писать глубину самостоятельно.
Да тогда получается что буфер глубины будет дублироваться.
Или что?
vindast
Ну я не верю что в GL нет установки буфера глубины, как бы люди тени пилили? Установил буфер глубины, буфер кадра отредерил весь мир. Вот тебе и G-Buffer
vindast
> Да тогда получается что буфер глубины будет дублироваться.
отключи запись в него и не будет
g-cont
А как тогда тест глубины проводить? )
vindast
вручную сравнивать в шейдере.
g-cont
> вручную сравнивать в шейдере.
В dx можно одновременно читать и писать в текстуру? Или у тебя есть второй буфер глубины?
Тема в архиве.