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

Vulkan API (вышел!) (377 стр)

Страницы: 1376 377 378 379407 Следующая »
#5640
11:45, 10 сен. 2019

MikeNew
стадии?


#5641
11:57, 10 сен. 2019

innuendo
> стадии?
Геометрический шейдер как бы второй в стадии, а не четвертый. Или я не так "стадии" понял.

#5642
12:34, 10 сен. 2019

У меня два предложения, вряд ли помогут, но раз уж такой баг:

1. Попробовать во фрагментном шейдере тоже объявить

layout(push_constant) uniform PushConsts {
        mat4 depthMVP;
        int index;
} pushConsts;

2.Использовать ivec4:

layout(push_constant) uniform PushConsts {
        mat4 depthMVP;
        ivec4 index;
} pushConsts;

А вообще, ты уверен, что у тебя именно эти шейдеры на самом деле используются? Может ты из других путей грузишь или еще что.

#5643
12:35, 10 сен. 2019

MikeNew
> А что значат цифры 1 и 4 в (vertex shader 1 vs geometry shader 4)
Предполагаю, что "number of elements inside built in block"

#5644
(Правка: 12:42) 12:41, 10 сен. 2019

BingoBongo
> 1. Попробовать во фрагментном шейдере тоже объявить
Нету фрагментного шейдера, это рендер теневой кубмапы.

BingoBongo
> 2.Использовать ivec4:
Попробовал, не помогло.

BingoBongo
> А вообще, ты уверен, что у тебя именно эти шейдеры на самом деле используются?
> Может ты из других путей грузишь или еще что.
Три раза перепроверил за сегодня.

Время идти на багтрекер хроноса?

#5645
12:44, 10 сен. 2019

MikeNew
Ок... Кстати, а зачем ты это объявил? Попробуй убрать

out gl_PerVertex 
{
    vec4 gl_Position;
};

MikeNew
> Время идти на багтрекер хроноса?
Там помощи не дождешься.

#5646
12:44, 10 сен. 2019

MikeNew
> Геометрический шейдер как бы второй в стадии, а не четвертый
vs-hs-ds-gs-ps

#5647
12:47, 10 сен. 2019

BingoBongo
> Ок... Кстати, а зачем ты это объявил? Попробуй убрать
Вот блин.. сработало..
Красавчик, спасибо!

С каждой версией компилятор шейдеров все строже и строже.

#5648
(Правка: 13:01) 6:42, 11 сен. 2019

Код работает на Nvidia, но не работает на Intel HD - с чем может быть связано? Есть какие-нибудь общие моменты, которые нужно учитывать в вулкане на Intell HD?

Update: Похоже, надо паш-константы выравнивать. Если с Нвидией и АМД прокатывает без выравнивания, то с Интел такие номера не проходят.

#5649
7:39, 11 сен. 2019

MikeNew

#version 450

#extension GL_ARB_separate_shader_objects : enable
#extension GL_ARB_shading_language_420pack : enable

> Это так, небольшой бардак. :)
>
> Я это тоже проверял (только что еще раз перепроверил, на всякий случай),
> включал и выключал одновременно в обоих шейдерах - все равно эта ошибка.
> Я уже начал посматривать в сторону настроек конвейера, хотя они не должны иметь
> отношения к этой ошибке.
>
> Предыдущая версия сдк у меня была весенняя какая-то, там такой ошибки не было.
Рассмотри HLSL как альтернативу

#5650
7:59, 11 сен. 2019

Andrey
> Рассмотри HLSL как альтернативу
Мне glsl как-то больше нравится. Какой-то он более душевный.

#5651
8:34, 11 сен. 2019

Andrey
> Рассмотри HLSL как альтернативу
не перевозбуждайся - супермультирендер как у тебя мало кому нужен

#5652
15:37, 11 сен. 2019

MikeNew
> надо паш-константы выравнивать

зачем их юзал ?

#5653
15:42, 11 сен. 2019

innuendo
> зачем их юзал ?
А зачем мне городить дескрипторы и сопутствующие им хвосты в виде буферов, выделения памяти под эти буферы, обновление этих буферов, если всего-то надо mat4 и float в шейдер закинуть.

#5654
(Правка: 21:55) 21:49, 11 сен. 2019

Есть depth image формата VK_FORMAT_D32_SFLOAT. Из нее в compute шейдере незамысловатым образом по координатам вытаскиваются значения:

...
layout(binding = 1) dynamic_uniform sampler2D ufmTextureDepth;
...
texelFetch(ufmTextureDepth, g_id, 0).x

//тоже не работает
//texture(ufmTextureDepth, (vec2(g_id)+0.5)/vec2(imageSize(ufmViewZImage).xy)).x

Перед вызовом шейдера на depth image стоит барьер:

      pCmdList->barrier(
        m_gbuffer.depthTexture->getRHITexture(frameIndex), 0, 0,
        rhi::EPipelineStageBits::EarlyFragmentTests | rhi::EPipelineStageBits::LateFragmentTests, rhi::EAccessFlagBits::DepthStencilAttachmentWrite, rhi::EQueueType::Graphics,
        rhi::EPipelineStageBits::ComputeShader, rhi::EAccessFlagBits::ShaderRead, rhi::EQueueType::Graphics,
        rhi::ETextureLayout::DepthStensilReadOnlyOptimal);

И получается такой результат:

+ Показать

Однако, если в дескрипторе и барьере image layout изменить на General или на ShaderReadOnlyOptimal, то все работает. Но ведь из спецификации следует, что флаг VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL подходит - в чем может быть проблема?

upd. Только задал вопрос и, как обычно бывает в таких случаях, нашел вероятную причину. Флаг VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL несовместим с флагом VK_IMAGE_USAGE_STORAGE_BIT в image usage. Validation layer молчал.

Страницы: 1376 377 378 379407 Следующая »
ПрограммированиеФорумГрафика